Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Use a força ... Ou suas ondas cerebrais?

Componentes e suprimentos

Arduino UNO
Usado para o robô.
× 1
Arduino Mega 2560
O cérebro do projeto ...
× 1
Arduino Leonardo
Controlador do mouse
× 1
Partícula Photon
Registrador de dados do servidor da Web
× 1
Necomimi Brainwave Cat Ears
Sensor EEG
× 1
Drivers de motor SparkFun Dual H-Bridge L298
Compre se não quiser construir seu próprio driver de motor.
× 1
Módulo de retransmissão
Compre este módulo se não quiser soldar circuitos.
× 1
Módulo Bluetooth HC-05
× 1
LED (genérico)
× 3
Resistor 330 ohm
× 3
Transistor de uso geral NPN
× 3
Cabos de jumper masculino / feminino
× 1
Fios de jumpers (genérico)
× 1
Tábua de pão sem solda meio tamanho
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)

Aplicativos e serviços online

Brain Visualizer
É necessário apenas para experimentos.

Sobre este projeto


Quando criança, sempre quis ter uma habilidade especial, como mover objetos com pensamentos ou voar. Tentei mover objetos com “o poder da minha mente”, claro, sem sucesso. Bem, sim, eu era e eu Sou um grande fã de Star Wars, mas também gosto de eletrônica e programação, então por que não combinar essas duas coisas para construir um projeto incrível?

Você pode encontrar todas as peças, códigos e bibliotecas com links na seção Hardware e Software.

O conceito principal é que usando diferentes ondas cerebrais o usuário será capaz de controlar um robô, o cursor em seu PC ou ligar / desligar as luzes em sua casa, enquanto um microcontrolador (Particle Photon) cria uma análise online sobre as ondas cerebrais do usuário. Este é um método perfeito para detectar doenças ou estresse e declaração sonolenta. Isso também pode ser usado para ajudar as pessoas a viver melhor suas vidas, aprender a controlar suas emoções e como ser sempre felizes. O cérebro humano precisa de equilíbrio, para ser saudável, devemos dormir, pensar, nos mover ... Usando o Partícula Fóton e o servidor web criado pelos fundadores da Partícula podemos ajudar as pessoas a encontrar seu equilíbrio cerebral natural. Um sonho de infância me guiou até este projeto, e estou muito feliz por ter conseguido.

Mas se deixarmos StarWars e a Força de lado por um tempo, este dispositivo não é apenas para pessoas preguiçosas ou para fãs, ele foi feito para devolver uma capacidade para pessoas que lutam todos os dias com suas deficiências. O robô que projetei funciona da mesma forma que uma cadeira de rodas, o sistema de automação residencial ajudaria o usuário nos controles ou na TV, mesmo que ele não consiga se mover. O modo de controlador de PC pode ser útil mesmo para aqueles que estão em perfeita saúde. Acho que todos nós queremos jogar no computador ou apenas navegar na Internet usando apenas os pensamentos.

Assista a este breve vídeo de introdução sobre a história do projeto:



Você gostaria de construir o seu próprio? Aqui explicarei tudo o que você deve saber para este projeto. Eu compartilho códigos, esquemas e esta instrução detalhada, então aqueça seu ferro de solda ...





A ciência por trás do projeto


A eletroencefalografia (EEG) é um método de monitoramento eletrofisiológico para registrar a atividade elétrica do cérebro. É tipicamente não invasivo, com os eletrodos colocados ao longo do couro cabeludo, embora eletrodos invasivos às vezes sejam usados ​​em aplicações específicas. O EEG mede as flutuações de voltagem resultantes da corrente iônica dentro dos neurônios do cérebro. As aplicações de diagnóstico geralmente se concentram no conteúdo espectral do EEG, ou seja, o tipo de oscilações neurais (popularmente chamadas de "ondas cerebrais") que podem ser observadas nos sinais de EEG. (obrigado Wikipedia) Mas vamos usar dois valores muito precisos
  • Alpha é a faixa de frequência de 7 Hz a 14 Hz. Ele surge com o fechamento dos olhos e com relaxamento e atenua com a abertura dos olhos ou esforço mental.
  • Beta é a faixa de frequência de 15 Hz a cerca de 30 Hz. O beta de baixa amplitude com frequências múltiplas e variáveis ​​é frequentemente associado a pensamentos ativos, ocupados ou ansiosos e concentração ativa.





Como funciona?


Usei quatro microcontroladores para dar vida a este projeto:um Arduino Mega, um ArduinoLeonardo, um UNO e um fóton de partículas. O Mega é o cérebro do projeto que recebe os sinais do fone de ouvido, analisa e encaminha os comandos para os demais aparelhos. Transmite todos os dados para o Photon que cria o servidor web. O Leonardo controla o mouse em um PC e o Uno é usado para receber IR (sinais infravermelhos) e controlar o robô. Como eu disse, o dispositivo é capaz de controlar três coisas diferentes (ou mais se você quiser programar outra coisa). Agora vou chamar essas três coisas diferentes de canais. O dispositivo alterna entre esses canais se você fechar os olhos:
  • Feche os olhos por 1-2 segundos:muda para recurso de automação residencial
  • Feche os olhos por 2 a 4 segundos:muda para o modo de controlador do robô
  • Feche os olhos por 1 a 6 segundos:muda para o modo controlador do mouse

Usei relés para fazer o featurette de automação residencial, você pode conectar qualquer coisa a eles:TV, lâmpadas, tomadas de parede o que quiser

O fone de ouvido sem fio:

Eu adoro hackingtoys, então comprei um brinquedo com sensor de ondas cerebrais chamado Necomimi, que é capaz de mover seus ouvidos dependendo de suas ondas cerebrais (atenção, meditação). Este é o brinquedo mais inútil que eu já vi, mas há dentro de um pequeno chip que lê as ondas cerebrais, filtra o ruído e dá um sinal muito bom. Funciona com a interface UART (Serial), então com algum hacking podemos usar Arduinos para ler ondas cerebrais. A função deste fone de ouvido é transmitir ondas cerebrais sem fio para o servidor central. Ninguém quer cabos na cabeça, então criei este fone de ouvido confortável e fácil de usar.

Vá para baixo para ver como desmontar e fazer um fone de ouvido Bluetooth sem fio com ele.





Como usar?


Temos dois valores mensuráveis ​​eSense (valores NeuroSky):meditação de 0 a 100 e atenção de 0 a 100. Quanto mais focado você estiver, maior será o valor de atenção. Quanto mais relaxado você estiver, mais alto se tornará o nível de meditação.

O sistema está trabalhando com pensamentos, nada mais é necessário, apenas aprender como estar focado ou relaxado. Depois de uma semana de experiências, fui capaz de controlar meu valor de "atenção" com muita precisão. Posso definir meu nível de atenção conscientemente para cerca de 15, ou 39, 65 e 90. Você tem que descobrir como controlar seus valores, somos todos diferentes. Funcionou muito bem com as emoções. Pensar no amor, na amizade, na raiva ou no medo dá um contraste muito bom nos valores.

Para ligar o sistema, conecte um micro USB cabo no Arduino Leonardo. Isso também controlará seu mouse (se desejar) e garante 5 volts e 500 mA para o sistema.

Controle do sistema de automação residencial

Se você mudar para o modo de automação residencial, aumente o nível de atenção acima de 70 para ligar o primeiro relé , aumente o nível de meditação acima de 70 para ligar o segundo relé , e aumentar ambos acima de 70 para ligar o terceiro relé . É um pouco complicado, mas não é impossível depois de algum treinamento mental. Se já estiver ligado, use o mesmo comando para desligá-lo (portanto, se estiver ligado, alcance novamente 70 para desligá-lo). Quando o sistema estiver pronto, você pode conectar qualquer dispositivo de alta voltagem (luz, TV, PC, ventoinha de refrigeração, o que quiser) ao módulo de relé.

Controle do mouse

O cursor é controlado com emoções. Se o nível de atenção for menos de 25 movimentos para a esquerda , se estiver entre 25 e 50 movimentos para a direita , se estiver entre 50 e 75 movimentos para cima e se for entre 75 e 100 move para baixo . Você pode clicar aumentando o nível de meditação. Como eu disse antes, o nível de atenção pode ser facilmente controlado com emoções (para mim).

Controlando o Robô

O robô tem apenas três afirmações diferentes:pare, vire à esquerda e siga em frente. Por que apenas duas opções de movimento? Porque essas duas direções são suficientes para mover o robô para onde você quiser. Use seu nível de meditação para girar com o robô e quando você alcançar a direção para onde deseja se mover, pare o robô e siga em frente com o nível de atenção . É um método melhor para controlar o robô e até mesmo iniciantes, que não conseguem controlar seus valores de atenção / meditação tão bem, podem brincar com este robô.





Meu plano


Esta é uma imagem mais antiga do meu plano, mas consegui, então estou muito feliz com os resultados. O fone de ouvido transmite sinais BT (Bluetooth) para o Arduino Mega que analisa os bytes de entrada e, dependendo do pensamento do usuário, controla os diferentes recursos. Foi muito difícil descobrir as melhores formas de transmitir tantos dados, mas escolhi o Bluetooth em vez do WiFi. A princípio eu queria usar o Particle Photon como transmissor de dados, mas aquele carinha teve um papel melhor na confecção do servidor web. Essa foi a maior modificação em todo o projeto. (Na foto você pode ver o plano real). Usei módulos Arduino caseiros , porque adoro projetar meus próprios circuitos. Você pode comprar esses módulos online se quiser ou construir você mesmo comigo.





Meio ano de aprendizagem e experimentação


Trabalhei muito nesse projeto e sim, comecei quase meio ano atrás, mas com o Photon as coisas se aceleraram. Foi muito fácil usar o painel. Aliás, existem muitos tutoriais na internet sobre como hackear brinquedos de EEG, que me ajudaram um pouco, mas não tinham nenhuma função extra. Por isso decidi hackear este brinquedo Necomimi e com a minha criatividade criei este dispositivo que tem muito mais funcionalidades do que piscar um LED. Espero que gostem!

Vamos começar!





Hackeando o brinquedo Necomimi


Queremos modificar este brinquedo EEG para transmitir dados via Bluetooth, então primeiro desmonte a caixa. Os parafusos estão sob o adesivo. Remova o adesivo e as costas do dispositivo e você o encontrará dentro de um pequeno circuito. Aquele que está sob o circuito principal é o chip Neurosky TGAM. Este está conectado com quatro pinos principais à placa do microcontrolador principal, então pegue um ferro de solda e remova este circuito com cuidado. Agora solde três fios ao pino GND ao pino VCC e ao pino T. O pino T é o pino do transmissor com taxa de transmissão de 57600, que envia pacotes de dados para o nosso microcontrolador, mas o Iconnected isso diretamente para um módulo BT escravo HC-06 . O HC-06 está definido para a taxa de transmissão de 9600, mas não se preocupe, pois corrigiremos esse problema. Se você soldou os três fios ao, pode instalar sua própria fonte de alimentação recarregável. Usei uma bateria de íon de lítio de 500mAh, um circuito de carga USB, um circuito de aumento de 5v e dois resistores (100 ohm e 200 ohm) para garantir uma fonte de alimentação de 3,4 volts perfeita para o chip e para o módulo Bluetooth. Siga o esquema para construir o circuito que é necessário no fone de ouvido. Se o circuito estiver pronto, configure o módulo Bluetooth.

Sobre o chip:

O Neurosky ThinkGear AM foi projetado para filtrar, amplificar e enviar dados através de interface serial. Mais informações aqui.





O Esquemático / Eletrônica


Siga as instruções e as imagens abaixo e crie seu próprio fone de ouvido EEG sem fio.

Você precisará de uma bateria de íon de lítio de 500mAh, um módulo de aumento de voltagem de 5v para criar uma voltagem estável, em seguida, um resistor de 100 Ohm e 200 Ohm para reduzir a voltagem para 3,3 Volts estáveis. Soldei pinos de cabeçalho fêmeas para ligar e transmitir dados para o módulo bluetooth.

O a parte mais importante é conectar o pino "T" com o "RX" no módulo Bluetooth. Isso dá vida ao nosso projeto.





Configurando módulos Bluetooth


HC-06:Primeiro carregue o esboço denominado “HC_06_Bluetooth” a um Arduino UNO, em seguida, conecte o módulo Bluetooth como mostra a esquemática. Encontrei esse esquema no site da equipe da Artronix e me pareceu útil.



  void setup () {// Iniciar o hardware serial.Serial.begin (9600); // padrão HC-06 baud ratedelay (1000); Serial.print ("AT"); delay (1000); Serial.print ("AT + VERSION"); delay (1000); Serial.print ("AT + PIN "); // para remover passworddelay (1000); Serial.print ("AT + BAUD7"); // Defina a taxa de transmissão para 576000 - por exemplo, Necomimi dafaultdelay (1000); Serial.begin (57600); // atraso (1000);} void loop () {}  

Abra seu Serial Monitor no Arduino IDE e espere até que o Arduino configure o módulo BT. Agora seu módulo Bluetooth está definido para uma taxa de transmissão de 57600 . Você pode experimentar muitos aplicativos BCI (Brain Computer Interface), porque este Bluetooth hackeado Necomimi brinquedo será compatível com todos os aplicativos Neurosky.




Você pode usar esses aplicativos para aprender a controlar suas ondas cerebrais e valores, como atenção ou meditação. Você pode experimentar muitos jogos legais, mas recomendo estes aplicativos (eles são compatíveis com PC, iOS e Android):

http://store.neurosky.com/products/brainwave-visualizer-android



http://store.neurosky.com/products/eeg-analyzer

http://store.neurosky.com/collections/android/products/blink-camera-android




Em seguida, use o "HC_05_Bluetooth" e carregue no seu Arduino da mesma maneira que antes. Conecte o pino "EN" do HC-05 ao 3v3 do Arduino. Você deve escrever o endereço do seu módulo HC-06 no código. Verifique o endereço do módulo BT com um smartphone Android, como eu. Substitua ":" (pontos duplos) por "," vírgulas no código.

E você deve alterar o endereço no código:

20:15:09:15:17:82 ==> 2015,09,151782 Desta forma, o módulo HC-05 pode reconhecer o endereço. Então deixe alguns ":", porque eles não são necessários.
  // HC-05 configurationvoid setup () {// Iniciar o serial do hardware. Serial.begin (9600); // atraso da taxa de baud do HC-05 padrão (1000); Serial.print ("AT"); atraso (1000); Serial.print ("AT + VERSÃO"); atraso (1000); Serial.println ("AT + ROLE =1"); // define o HC-05 para o modo mestre delay (1000); Serial.println ("AT + LINK =" copie aqui o seu endereço "); // agora o módulo deve se conectar automaticamente delay (1000); Serial.print (" AT + UART =57600,1,0 "); // Definir taxa de transmissão para 576000 Serial.begin (57600); // delay (1000);} void loop () {}  



Finalmente, os dois módulos devem se conectar um ao outro. Se você tiver problemas, clique neste link para ler mais.





O robô controlado remotamente


Para fazer este robô barato, usei a tecnologia IR de 38 kHz , que é usado em controladores remotos de TV. Comprei da Amazon achassis para o meu robô. O receptor IR foi resgatado de uma TV antiga e o Arduino também é da Amazon. Eu adicionei links para as partes (veja abaixo na seção Hardware).

O circuito do driver do motor

Você precisará destas peças:
  • 2 terminais de parafuso
  • L293D IC
  • 3 Pin de cabeçalho
  • 9 pinos de cabeçalho (90 graus)
  • Resistor 1k
  • LED vermelho
  • fios
  • Uma placa PCB

Usei alguns fios de cobre e seguindo o esquema conectei os pinos do IC aos pinos do conector. Não importa qual pino vai para qual pino de cabeçalho, apenas lembre-se de onde você os conectou. O LED é conectado em série com o resistor e em paralelo com o VCC de 5v.

Monte o chassi

Essa etapa foi muito fácil, usei uma chave de fenda e algumas habilidades de desenho. Construí a estrutura em cinco minutos. Depois que isso vier a parte mais difícil, devemos construir um circuito acionador de motor. Para controlar meus motores, eu escolho o L293D IC que pode acionar dois motores. Observe o esquema para construir o circuito.

Conecte as peças ao Arduino

Usei fios de jumper para conectar o sensor e o driver do motor ao Arduino.

Arduino Pin ==> Motor Driver

4 ==> 15

5 ==> 10

6 ==> 7

7 ==> 2

VIN ==> 8

5v ==> 1, 9, 16

GND ==> 4, 5, 13, 12

Portanto, olhe o esquema do módulo L293D e conecte seus pinos ao Arduino UNO como escrevi aqui. O pino 5v do Arduino deve ser conectado aos 1, 9, 16 pinos para habilitar a função de driver de motor do IC. Então, finalmente, use os terminais de parafuso para ligar os motores.



Escrevendo códigos…

Usando a biblioteca IRremote, criei um código que lê sinais infravermelhos de 38kHz, decodifica-os e move o robô. (Baixe a biblioteca na seção Código).

Acrescentei explicações no código, mas a substância é que decodifica os sinais IR vindos do servidor principal, então, dependendo do que o usuário deseja, mova os motores que irão mover o robô para frente ou vire à esquerda. Faça o download do código: "Robot_Code" . Carregue isso no seu Arduino e seu robô será concluído.










O servidor principal (Arduino Mega, Leonardo, Photon)


O servidor lê os pacotes de dados recebidos do fone de ouvido sem fio. Usaremos o módulo BT configurado para garantir a conexão entre o fone de ouvido e o servidor. O Arduino Mega é o cérebro do circuito, tudo está conectado a este microcontrolador:Bluetooth, LED infravermelho transmissor, servidor web e controlador de mouse. O código é um pouco complicado, mas adicionei explicações para entender.

O Caso

É simples, mas parece ótimo. Cortei duas placas de 18x15 cm e alisei as bordas com uma lixa. Usando alguns parafusos, conectei-os um ao outro.

O circuito de retransmissão

Você precisará destas peças:
  • transistor 2n2222 (3 PCS)
  • diodos de germânio (3 PCS)
  • resistores de 330 ohms (3 PCS)
  • resistores de 1k Ohm (3 PCS)
  • relés 5v (3 PCS)
  • fios de conexão
  • pinos de cabeçalho
  • placa PCB

Uma imagem que vale mais do que mil palavras, então, em vez de tentar escrever como você deve conectar as partes no PCB, olhe para o esquemático. Se o pino “Sinal” receber o sinal do Arduino, o relé ligará. O transistor amplifica o sinal para garantir energia suficiente para os relés. Usaremos 37-38-39 pinos para controlar os níveis ALTO-BAIXO de cada relé.

Instale as peças na caixa

Para instalar as peças na caixa de vidro plexy usei fita adesiva dupla-face branca. Isso olha e segura os circuitos do case bem fortes.

O circuito do servidor

Este servidor é baseado em software, então fazer o circuito não é tão difícil. (Veja abaixo esquemático). Você só precisa ligar os microcontroladores e fazer a conexão entre eles. O LED IV está conectado ao pino D3 e os relés ao 37-38-39. O D16 do Arduino Mega vai para o RX do Photon e o D18 para o RX do Leonardo.

Conexão com o Robô




Os IR Leds são conectados ao pino digital D3 e com a biblioteca IRremote enviamos códigos para o robô. É muito simples. Os códigos IR devem ser os mesmos do código do robô. If you think you're done you can test it with your camera. The infrared light looks purple on a photo, cameras can detect the IR light. This trick always works.

O Código

Use the "Arduino_Mega_Server" code in the Software part.

I suffered a lot while wrote the codes. I should program three different microcontrollers, so it was a big challenge. I used IRremote, Brain, SofwareSerial and Mouse libraries. (see download links at the Software part). But now the code is done and works so you just should upload to your microcontrollers. Download the .ino file or copy/paste the code in your IDE and use it. The code to the Particle Photon should be uploaded via the browser IDE. To make this register to the Particle Build. And connect your laptop to your microcontroller. I was really surprised that this happened almost automatically, I just added my Device ID number. 

Before loading up the codes be sure nothing is connected to the RX/TX pins. So disconnect your BLuetooth module from the Mega, and disconnect the Mega from the Leonardo and the Photon.





The Mouse Controller 





The Webserver


I wanted to add an IoT (Internet of Things) function in my project, so I made an online data logger using the Particle Photon. Depending on what you make with the device the Photon creates a personal server, and writes the data in the Cloud.

This may seem scary at first time, but imagine that you can detect if you are stressful (attention level increases and decreases quickly ) or if you should sleep (meditation level is always higher than 80) . This webserver may help you to live healthlier.

The Particle also has an online dashboard where you can publish any kind of data with the "Particle.publish();" syntax. We should have to say a big "thank you" for the developers of the dashboard. They saved a lot of time for us.

Writing codes in a browser?

It was intresting to write codes on a web page, but worked the same way like the normal IDE. The code was uploaded wirelessly. This microcontroller would be a very useful tool in everyone's toolbox.




The dashboard looks somehow like this if you worked fine. Shows Attention and Meditation, and you can check them anytime, at your dashboard URL. For more info about the dashboards click here.





A quick upgrade for those who want to control only a robot with mindwaves:


You don't want to build the build the whole project, only a mindwave controlled robot? Don't worry if you're a beginner I thought even on you. I made a code with explanations that needs an Arduino Mini Pro and an IR LED and of course the headset to control the robot. I know that many of my readers wants to make a simple and fun weekend project so here's the description and the code for you.

Use the "RobotControlllerHeadset" code inthe Software section. Connect an IR LED to the D3 pin on the Mini Pro (Or Arduino UNO) and connect the T pin of the NeuroSky chip to the RX pin of the Arduino. Power up with 3.3 or 5 volts and you're done. So build the robot, then use this code in your headset: 
#include #include #include IRsend irsend;Brain brain(Serial);const int ledPin =3; long interval =500; long previousMillis =0;int ledState =LOW; int medValue;void setup() { // Set up the LED pin. pinMode (ledPin, OUTPUT); // Start the hardware serial. Serial.begin(57600);}void loop() { // Expect packets about once per second. if (brain.update()) { Serial.println(brain.readCSV()); // Attention runs from 0 to 100. medValue =brain.readMeditation(); } // Make sure we have a signal. if(brain.readSignalQuality() ==0) { // Send a signal to the LED. if (medValue> 65) {irsend.sendNEC(0xFF10EF, 32); atraso (40); } if (brain.readAttention()> 65) {irsend.sendNEC(0xFF18E7, 32); atraso (40); }}}  









Becoming an IoT Jedi (Testing)


After making everything that I explained here, only one thing is left: try it out . Use the power of your mind, use the Force of the neurons in your brain, move your little robot, control your home, control everything with thoughts...

Now you become a real IoT Jedi!

The device has many features and it's very fun to play with. But as I said before it isn't only a toy , featuring biology and electronics we created a device that may help for people, who fight each day with their disabilities, to get back their natural capabilities.

The robot can be controlled easily, the relays aren't big challange too. You only should learn how to control your attention levels to control the mouse. On the picture I'm trying to exit an app with my brainwaves. More practice guarantees better experience.





Thank you for watching!


I really hope that you liked my project and please write your opinion in comments. I wanted to make a video about the device, but coding was hard so I haven't enough time to make a short movie, but I'll publish it very soon on my Youtube channel and I'll update this project presentation too.

May the Force be with you, always!

Código

  • Particle Photon Code
  • Robot Controller Code
  • HC_05_Bluetooth.ino
  • Mouse Controller Code
  • Arduino_Mega_Server
  • RobotControllerHeadset.ino
Particle Photon CodeArduino
Copy this in your browser IDE then upload to the Particle Photon. Open the dashboard to see the results in real time.
//this is the code for the webserver for a "Use the Force... Or your Brainwaves?" project//creates a statistics for the user about his/her brainwaves meditation and attention level//thanked to the fully functioning dashboard of the Particle the code is very simpleint att;int med;int function;void setup() { Serial.begin(9600); }void loop() { // Publish data Spark.publish("Attention", (att) + "%"); atraso (2000); Spark.publish("Meditation", (med) + "%"); atraso (2000); Spark.publish("Last Function", (function) + ""); atraso (2000); if (Serial.available> 0) { char c =Serial.read(); } delay(10); switch(c) { case'a':att =10; pausa; case'b':att =20; pausa; case'c':att =30; pausa; case'd':att =40; pausa; case'e':att =50; pausa; case'f':att =60; pausa; case'g':att =70; pausa; case'h':att =80; pausa; case'i':att =90; pausa; case'j':att =100; pausa; case'k':med =10; pausa; case'l':med =20; pausa; case'm':med =30; pausa; case'n':med =40; pausa; case'o':med =50; pausa; case'p':med =60; pausa; case'q':med =70; pausa; case'r':med =80; pausa; case's':med =90; pausa; case't':med =100; pausa; case'x':function ="Home Automation" break; case'y':function ="Robot Controller Mode" break; case'z':function ="Mouse Controller" break; }} 
Robot Controller CodeArduino
This code controls the robot. Upload this to the Arduino UNO. You can change the IR codes if you want.
//Used for "Use the Force or your Brainwaves?" project#include int IRpin =3;IRrecv irrecv(IRpin);decode_results results;int motor_pin1 =4;int motor_pin2 =5;int motor_pin3 =6;int motor_pin4 =7;void setup (){ irrecv.enableIRIn(); pinMode(motor_pin1,OUTPUT); pinMode(motor_pin2,OUTPUT); pinMode(motor_pin3,OUTPUT); pinMode(motor_pin4,OUTPUT); Serial.begin(9600);}void loop() { if (irrecv.decode(&results)) { irrecv.resume(); // Receive the next value } if (results.value ==0xFF18E7) //if gets this code goes forward { digitalWrite(motor_pin1,LOW); digitalWrite(motor_pin2,HIGH); digitalWrite(motor_pin3,LOW); digitalWrite(motor_pin4,HIGH); { Serial.println("Go Forward!"); } } if (irrecv.decode(&results)){ irrecv.resume(); // Receive the next value } if (results.value ==0xFF4AB5) //if gets this code goes backward { digitalWrite(motor_pin1,HIGH); digitalWrite(motor_pin2,LOW); digitalWrite(motor_pin3,HIGH); digitalWrite(motor_pin4,LOW); { Serial.println("Go Backward!"); } }if (irrecv.decode(&results)){ irrecv.resume(); // Receive the next value } if (results.value ==0xFF10EF) //if gets this code turns left { digitalWrite(motor_pin1,HIGH); digitalWrite(motor_pin2,LOW); digitalWrite(motor_pin3,LOW); digitalWrite(motor_pin4,HIGH); { Serial.println("Turn Left!"); } }if (irrecv.decode(&results)){ irrecv.resume(); // Receive the next value } if (results.value ==0xFF5AA5) //if gets this code turns right { digitalWrite(motor_pin1,LOW); digitalWrite(motor_pin2,HIGH); digitalWrite(motor_pin3,HIGH); digitalWrite(motor_pin4,LOW); { Serial.println("Turn Right!"); } }if (irrecv.decode(&results)){ irrecv.resume(); // Receive the next value } if (results.value ==0xFF38C7) //if gets this code stops { digitalWrite(motor_pin1,LOW); digitalWrite(motor_pin2,LOW); digitalWrite(motor_pin3,LOW); digitalWrite(motor_pin4,LOW); { Serial.println("Stop!"); }}} 
HC_05_Bluetooth.inoArduino
Configures HC-05 module.
// HC-05 configurationvoid setup() { // Start the hardware serial. Serial.begin (9600); // default HC-05 baud rate delay(1000); Serial.print("AT"); atraso (1000); Serial.print("AT+VERSION"); atraso (1000); Serial.println("AT+ROLE=1"); //set the HC-05 to master mode delay(1000); Serial.println(" AT+PAIR=copy here your adress,9"); //now the module should connnect automatically delay(1000); Serial.print("AT+BAUD7"); // Set baudrate to 576000 - eg Necomimi dafault Serial.begin(57600); // delay(1000);}void loop() {}
Mouse Controller CodeArduino
Upload this to the Arduino Leonardo. Controls the cursor on your computer, depending on the signal that gets from the Arduino Mega.
//Code by Imets Tamas for the Use the Force... Or your Brainwaves? project//Moves the mouse cursor through serial signals#include void setup() { Serial.begin(9600); // initialize mouse control:Mouse.begin();}void loop() { // use serial input to control the mouse:if (Serial.available()> 0) { char inByte =Serial.read(); switch (inByte) { case 'u':// move mouse up Mouse.move(0, -8); pausa; case 'd':// move mouse down Mouse.move(0, 8); pausa; case 'l':// move mouse left Mouse.move(-8, 0); pausa; case 'r':// move mouse right Mouse.move(8, 0); pausa; case 'c':// perform mouse left click Mouse.click(MOUSE_LEFT); pausa; }}} 
Arduino_Mega_ServerArduino
Analzyzing brainwaves, controls everything...
/* Arduino Mega Code for "A Tool for the Mind" project by Imets Tams, 2nd of February, 2016 This code analyzes and organizes then sends forward incoming bluetooth serial signals from the brainwave sensor Feel free to edit, but don't forget to credit, For the variable values I used the characters of family's name, you can change them if you want:I. M. E. T. S. See more details at http://www.instructables.com/member/Imetomi/ or https://www.hackster.io/Imetomi */#include  // include the library #include  // include the library #include  // include the library #include  // include the library #include int led =13;int medled =50; //the LED to shows the meditation levelint attled =51; //the LED to shows the attention levelint blinkled =52;char robot;IRsend irsend; //IR led to pin 3SoftwareSerial mouse(18, 19); //RX, TX this goes to the Leaonardo BoardSoftwareSerial webserver(16, 15); //goes to the Particle Photon to create a web serverLiquidCrystal lcd(12, 11, 5, 4, 3, 2); // initialize the library with the numbers of the interface pinsBrain brain(Serial); //the Brainwaves are read with the help of the bluetooth module through hardware serialint closedeye =(brain.readLowAlpha()); //to detect blinkint attention =(brain.readAttention()); //to read attentionint brainsignal =(brain.readSignalQuality()); //to read signal qualityint meditation =(brain.readMeditation()); //to detect meditationint alpha =(brain.readHighAlpha()); //to detect closed eyeint lightatt;int lightmed;int blinklength;int prevsignal =0;void setup() { //here we're going to set the main settings:mouse.begin(9600); //set the baud rate webserver.begin(9600); //set the baud rate Serial.begin(57600); //set the baud rate (57600 is the Necomimi's bit/seconds rate) lcd.begin(16, 2); //start the LCD screen pinMode(led, OUTPUT); //set pinmodes for the leds and relays pinMode(attled, OUTPUT); //set pinmodes for the leds and relays pinMode(medled, OUTPUT); //set pinmodes for the leds and relays pinMode(blinkled, OUTPUT); //set pinmodes for the leds and relays pinMode(37, OUTPUT); //set pinmodes for the leds and relays pinMode(38, OUTPUT); //set pinmodes for the leds and relays pinMode(39, OUTPUT); //set pinmodes for the leds and relays lightatt =map(attention, 0, 100, 0, 255); //map the attention level for analogWrite the LED lightmed =map(meditation, 0, 100, 0, 255); //map the attention level for analogWrite the LED}void robotmode() { if (brain.update()) { if ((blinklength> 0) &&(blinklength <2000)) { //if you close eyour eyes for 2 seconds loop(); //you'll exit the robot controller mode } if (attention> 70) { irsend.sendNEC(0xFF18E7, 32); //go forward webserver.println("g"); atraso (40); } if (meditation> 70) { irsend.sendNEC(0xFF10EF, 32); //spin webserver.println("q"); atraso (40); } }}void loop() { if (brain.update()){ analogWrite(attled, lightatt); //analog write the attention led to show the actual attention level //the more focused you are, the stronger thee LED lights analogWrite(medled, lightmed); //analog write the attention led to show the actual attention level //the higher meditation level will light up the LED if ((closedeye> 30000) &&(alpha> 30000)) { //we use 2 values to be sure the user's eye is closed digitalWrite(blinkled, HIGH); //in english:if eyes are closed the LED will light up blinklength =millis(); // count milliseconds if eye closed } else if ((closedeye <30000) &&(alpha <30000)) { digitalWrite(blinkled, LOW); //in english:if eyes are opened the LED will turn off blinklength =0; } if ((blinklength> 0) &&(blinklength <2000)) { //if you close eyour eyes for 2 seconds webserver.println("a"); atraso (40); robotmode(); //you'll be able to control the robots } if ((blinklength> 2001) &&(blinklength <4000)) { //if you close eyour eyes for 3-4 seconds webserver.println("a"); atraso (40); relay(); //you'll be able to control the the home automation system } if ((blinklength> 4001) &&(blinklength <6000)) { //if you close eyour eyes for 4-6 seconds webserver.println("a"); atraso (40); mousecontrol(); //you'll be able to control the mouse } Serial.println(brain.readCSV()); //print the data on serial monitor, not necessary, it's only for testing }}void relay() { webserver.println(""); if (brain.update()) { if ((blinklength> 0) &&(blinklength <2000)) { //if you close eyour eyes for 2 seconds loop(); //you'll exit the relay controller mode } if(attention> 70) { //turn on relay1 digitalWrite(37, HIGH); webserver.println("g"); prevsignal =1; } if(meditation> 70) { //turn on relay2 digitalWrite(37, HIGH); webserver.println("q"); prevsignal =1; } if(1000> blinklength> 0) { //turn on relay3 digitalWrite(37, HIGH); webserver.println("qj"); prevsignal =1; } if((attention> 70) &&(prevsignal ==1)) { digitalWrite(37, LOW); webserver.println("q"); prevsignal =1; //check if is already turned on, then turn off } if((meditation> 70) &&(prevsignal ==1)) { digitalWrite(37, LOW); webserver.println("qj"); prevsignal =1; //check if is already turned on, then turn off } if((1000> blinklength> 0) &&(prevsignal ==1)) { digitalWrite(37, LOW); webserver.println("a"); prevsignal =1; //check if is already turned on, then turn off } }}void mousecontrol() { //you'll need a few hours of practice to control the cursor perfectly webserver.println("z"); //forward data to the webserver if(brain.update()) { if (0  70) { mouse.println('c'); //click webserver.println("t"); }}} 
RobotControllerHeadset.inoArduino
For those who want to build an IR robot.
#include #include #include IRsend irsend;Brain brain(Serial);const int ledPin =3; long interval =500; long previousMillis =0;int ledState =LOW; int medValue;void setup() { // Set up the LED pin. pinMode (ledPin, OUTPUT); // Start the hardware serial. Serial.begin(57600);}void loop() { // Expect packets about once per second. if (brain.update()) { Serial.println(brain.readCSV()); // Attention runs from 0 to 100. medValue =brain.readMeditation(); } // Make sure we have a signal. if(brain.readSignalQuality() ==0) { // Send a signal to the LED. if (medValue> 65) {irsend.sendNEC(0xFF10EF, 32); atraso (40); } if (brain.readAttention()> 65) {irsend.sendNEC(0xFF18E7, 32); atraso (40); } } }
Brain Library
Used to measure attention and meditation level.https://github.com/kitschpatrol/Brain
SoftwareSerial Library
Used to ensure multiple communication pins.https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/libraries/SoftwareSerial
IRremote Library
Decoding and sending IR signals.https://github.com/z3t0/Arduino-IRremote

Esquemas

Use this schematic to make the main server. Schematic for the DIY IR robot Schematic for the DIY 3 channel relay module. Used Arduino pins:D37, D38, D39. Schematic for the motor driver. Connect the pins to the Arduino. Schematic for the main server's electronics. Schematic for the Arduino UNO robot Schematic for the IR robot Use this schematic to make the main server. Schematic for the headset's electronics

Processo de manufatura

  1. Construindo uma rede de sensores sem fio em sua casa
  2. Os melhores acessórios para o seu Raspberry Pi
  3. Como usar a cola em bastão em sua base Mark One Print
  4. Capturando as gotas de água com Arduino
  5. Obstáculos para evitar o robô com servo motor
  6. Robô seguidor de linha
  7. Conheça a temperatura de sua casa de qualquer lugar com a nuvem Arduino!
  8. Quão fácil é usar um termistor ?!
  9. 4 principais sinais de que seu motor está chegando ao fim de sua vida útil
  10. Motor CC x CA:qual é a diferença?