Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

¿Usa la fuerza ... o sus ondas cerebrales?

Componentes y suministros

Arduino UNO
Usado para el robot.
× 1
Arduino Mega 2560
El cerebro del proyecto ...
× 1
Arduino Leonardo
Controlador del mouse
× 1
Particle Photon
Registrador de datos del servidor web
× 1
Orejas de gato Necomimi Brainwave
Sensor EEG
× 1
Controladores de motor SparkFun Dual H-Bridge L298
Compre esto si no quiere construir su propio controlador de motor.
× 1
Módulo de relé
Compre este módulo si no desea soldar circuitos.
× 1
Módulo Bluetooth HC-05
× 1
LED (genérico)
× 3
Resistencia de 330 ohmios
× 3
Transistor de uso general NPN
× 3
Cables de puente macho / hembra
× 1
Cables de puente (genéricos)
× 1
Protoboard sin soldadura de tamaño medio
× 1

Herramientas y máquinas necesarias

Soldador (genérico)

Aplicaciones y servicios en línea

Brain Visualizer
Solo se necesita para experimentos.

Acerca de este proyecto

Cuando era niño siempre quise tener una habilidad especial, como mover objetos con pensamientos o volar. Traté de mover objetos con “el poder de mi mente” por supuesto sin éxito. Bueno, sí, lo estaba y yo Soy un gran fan de Star Wars, pero también me gusta la electrónica y la programación, así que ¿por qué no combinar estas dos cosas para construir un proyecto increíble?

Puede encontrar todas las piezas, códigos y bibliotecas con enlaces en la sección Hardware y software.

El concepto principal es que usando diferentes ondas cerebrales el usuario podrá controlar un robot, el cursor en su PC o encender / apagar luces en su casa, mientras que un microcontrolador (Particle Photon) crea un análisis en línea sobre las ondas cerebrales del usuario. Este es un método perfecto para detectar enfermedades o estrés y estado de sueño. Esto también se puede utilizar para ayudar a las personas a vivir mejor su vida, aprender a controlar sus emociones y a ser siempre felices. El cerebro humano necesita equilibrio, para estar sanos, debemos dormir, pensar, movernos ... Usando el Fotón de Partículas y el servidor web creado por los fundadores de Partícula podemos ayudar a las personas a encontrar su equilibrio cerebral natural. Un sueño de la infancia me guió a este proyecto y estoy muy feliz de haberlo logrado.

Pero si dejamos de lado StarWars y la Fuerza por un tiempo, este dispositivo no es solo para personas perezosas o para fanáticos, está hecho para devolver una habilidad a las personas que luchan todos los días con su discapacidad. El robot que diseñé funciona de la misma manera que una silla de ruedas, el sistema de automatización del hogar ayudaría al usuario a controlar las luces o los televisores incluso si no puede moverse. El modo de controlador de PC puede ser útil incluso para aquellos que están perfectamente sanos. Creo que todos queremos jugar juegos de computadora o simplemente navegar en Internet usando solo pensamientos.

Mire este breve video de introducción sobre la historia del proyecto:

¿Le gustaría construir el suyo propio? Aquí te explicaré todo lo que debes saber para este proyecto. Comparto códigos, esquemas y estas instrucciones detalladas, así que calienta tu soldador ...

La ciencia detrás del proyecto

La electroencefalografía (EEG) es un método de control electrofisiológico para registrar la actividad eléctrica del cerebro. Por lo general, no es invasivo y los electrodos se colocan a lo largo del cuero cabelludo, aunque a veces se utilizan electrodos invasivos en aplicaciones específicas. El EEG mide las fluctuaciones de voltaje que resultan de la corriente iónica dentro de las neuronas del cerebro. Las aplicaciones de diagnóstico generalmente se enfocan en el contenido espectral del EEG, es decir, el tipo de oscilaciones neurales (popularmente llamadas "ondas cerebrales") que se pueden observar en las señales del EEG. (gracias Wikipedia) Pero vamos a utilizar dos valores muy precisos

  • Alfa es el rango de frecuencia de 7 Hz a 14 Hz. Surge con el cierre de los ojos y con la relajación, y se atenúa con la apertura de los ojos o el esfuerzo mental.
  • Beta es el rango de frecuencia de 15 Hz a aproximadamente 30 Hz. La beta de baja amplitud con frecuencias múltiples y variables a menudo se asocia con el pensamiento activo, ocupado o ansioso y la concentración activa.

¿Cómo funciona?

Usé cuatro microcontroladores para darle vida a este proyecto:un Arduino Mega, un ArduinoLeonardo, un UNO y un Particle Photon. El Mega es el cerebro del proyecto que recibe señales de los auriculares, analiza y luego envía comandos a los otros dispositivos. Transmite todos los datos al Photon que crea el servidor web. El Leonardo controla el mouse en una PC y el Uno se usa para recibir IR (señales infrarrojas) y controla el robot. Como dije, el dispositivo puede controlar tres cosas diferentes (o más si desea programar algo). Ahora llamaré a estos tres canales de cosas diferentes. El dispositivo cambia entre estos canales si cierra los ojos:

  • Cierra los ojos durante 1-2 segundos:cambia a la función de automatización del hogar
  • Cierra los ojos durante 2-4 segundos:cambia al modo de controlador de robot
  • Cierra los ojos entre 1 y 6 segundos:cambia al modo de controlador del mouse

Usé relés para hacer la función de automatización del hogar, puedes conectarles cualquier cosa:TV, bombillas, enchufes de pared, lo que quieras

El auricular inalámbrico:

Me encantan los juguetes piratas, así que compré un juguete sensor de ondas cerebrales llamado Necomimi, que puede mover sus oídos dependiendo de tus ondas cerebrales (atención, meditación). Este es el juguete más inútil que he visto en mi vida, pero en su interior hay un pequeño chip que lee las ondas cerebrales, filtra el ruido y da una muy buena señal. Funciona con la interfaz UART (Serial), por lo que con algunos pirateos podemos usar Arduinos para leer ondas cerebrales. La función de este auricular es transmitir ondas cerebrales de forma inalámbrica al servidor central. Nadie quiere cables en la cabeza, así que creé estos auriculares cómodos y fáciles de usar.

Ve hacia abajo para ver cómo desarmar y hacer un auricular inalámbrico Bluetooth con él.

¿Cómo se usa?

Tenemos dos valores de eSense medibles (valores de NeuroSky):meditación de 0 a 100 y atención de 0 a 100. Cuanto más concentrado esté, mayor será el valor de atención. Cuanto más relajado esté, mayor será el nivel de meditación.

El sistema está trabajando con pensamientos, no se necesita nada más, solo aprender a estar concentrado o relajado. Después de una semana de experimentar pude controlar mi valor de "atención" con mucha precisión. Puedo fijar conscientemente mi nivel de atención en alrededor de 15, o 39, 65 y 90. Tienes que averiguar cómo controlar tus valores, todos somos diferentes. Funcionó muy bien con las emociones. Pensar en el amor, la amistad, la ira o el miedo da un muy buen contraste en los valores.

Para encender el sistema, conecte un micro USB cable en el Arduino Leonardo. Esto también controlará su mouse (si lo desea) y asegura 5 voltios y 500 mA para el sistema.

Control del sistema de automatización del hogar

Si cambia al modo de automatización del hogar, aumente su nivel de atención a más de 70 para activar el primer relé , aumenta el nivel de meditación por encima de 70 para activar el segundo relé y aumente ambos por encima de 70 para activar el tercer relevo . Es un poco complicado, pero no es imposible después de un poco de entrenamiento mental. Si ya está encendido, use el mismo comando para apagarlo (por lo tanto, si está encendido, alcance nuevamente el 70 para apagarlo). Cuando el sistema esté listo, puede conectar cualquier dispositivo de alto voltaje (luz, TV, PC, ventilador de refrigeración, lo que desee) al módulo de relé.

Controlar el mouse

El cursor se controla con emociones. Si el nivel de atención es menos de 25 movimientos a la izquierda , si está entre 25 y 50 movimientos a la derecha , si está entre 50 y 75 sube y si está entre 75 y 100 se mueve hacia abajo . Puede hacer clic aumentando el nivel de meditación. Como dije antes, el nivel de atención se puede controlar fácilmente con las emociones (para mí).

Controlando el robot

El robot tiene solo tres declaraciones diferentes:detenerse, girar a la izquierda y avanzar. ¿Por qué solo dos opciones de movimiento? Porque estas dos direcciones son suficientes para mover el robot a cualquier lugar que desee. Usa tu nivel de meditación para girar con el robot, y cuando llegues a la dirección en la que quieres moverte, detén el robot y luego avanza con el nivel de atención . Es un método mejor para controlar el robot e incluso los principiantes, que no pueden controlar tan bien sus valores de atención / meditación, pueden jugar con este robot.

Mi plan

Esta es una imagen más antigua de mi plan, pero tuvo éxito, así que estoy muy contento con los resultados. El auricular transmite señales BT (Bluetooth) al Arduino Mega que analiza los bytes entrantes y, dependiendo del pensamiento del usuario, controla las diferentes funciones. Fue muy difícil encontrar las mejores formas de transmitir esta gran cantidad de datos, pero elijo Bluetooth en lugar de WiFi. Al principio quería usar Particle Photon como transmisor de datos, pero ese pequeño consiguió un papel mejor en la creación del servidor web. Esa fue la mayor modificación de todo el proyecto. (En la foto se puede ver el plan actual). Usé módulos Arduino caseros , porque me encanta diseñar mis propios circuitos. Puede comprar estos módulos en línea si lo desea o construir usted mismo conmigo.

Medio año de aprendizaje y experimentación

Trabajé mucho en este proyecto y sí, empecé hace casi medio año, pero con Photon las cosas se aceleraron. Fue muy fácil usar su tablero. Por cierto, hay muchos tutoriales en Internet sobre cómo hackear juguetes EEG, eso me ayudó un poco, pero no tenían funciones adicionales. Así que decidí piratear este juguete Necomimi y, usando mi creatividad, creé este dispositivo que tiene muchas más funciones que parpadear un LED. ¡Espero que lo disfrutes!

¡Empecemos!

Hackear el juguete Necomimi

Queremos modificar este juguete EEG para transmitir datos a través de Bluetooth, así que primero desarme el estuche. Los tornillos están debajo de la pegatina. Quita la pegatina y la espalda del dispositivo y encontrará dentro un pequeño circuito. El que está debajo del circuito principal es el chip Neurosky TGAM. Esto está conectado con cuatro pines de cabecera a la placa principal del microcontrolador, así que tome un soldador y retire este circuito con cuidado. Ahora suelde tres cables al pin GND al pin VCC y al pin T. El pin T es el pin del transmisor con una velocidad de 57600 baudios, esto envía paquetes de datos a nuestro microcontrolador, pero Iconnectó esto directamente a un módulo HC-06 slaveBT . El HC-06 está configurado a una velocidad de 9600 baudios, pero no se preocupe, solucionaremos este problema. Si soldó los tres cables al, puede construir su propia fuente de energía recargable. Usé una batería de iones de litio de 500 mAh, un circuito de carga USB, un circuito elevador de 5 V y dos resistencias (100 ohmios y 200 ohmios) para asegurar una fuente de alimentación perfecta de 3,4 voltios para el chip y para el módulo Bluetooth. circuito que se necesita en el auricular. Si el circuito está listo, configure el módulo Bluetooth.

Acerca del chip:

Neurosky ThinkGear AM está diseñado para filtrar, amplificar y enviar datos a través de una interfaz en serie. Más información aquí.

El esquema / electrónica

Siga las instrucciones y las imágenes a continuación y cree su propio auricular EEG inalámbrico.

Necesitará una batería de iones de litio de 500 mAh, un módulo de aumento de voltaje de 5 V para crear un voltaje estable y luego una resistencia de 100 ohmios y 200 ohmios para reducir el voltaje a 3.3 voltios estables. Soldé pines de encabezado hembra para encender y transmitir datos al módulo bluetooth.

El La parte más importante es conectar el pin "T" con el "RX" en el módulo Bluetooth. Esto le da vida a nuestro proyecto.

Configuración de módulos Bluetooth

HC-06:Primero cargue el boceto llamado “HC_06_Bluetooth” a un Arduino UNO y luego conecte el módulo Bluetooth como muestra el esquema. Encontré este esquema en el sitio web del equipo de Artronix y me pareció útil.


  void setup () {// Inicie el hardware serial.Serial.begin (9600); // por defecto HC-06 baud ratedelay (1000); Serial.print ("AT"); delay (1000); Serial.print ("AT + VERSION"); delay (1000); Serial.print ("AT + PIN "); // para eliminar passworddelay (1000); Serial.print ("AT + BAUD7"); // Establezca la velocidad en baudios en 576000, por ejemplo, Necomimi dafaultdelay (1000); Serial.begin (57600); // retraso (1000);} bucle vacío () {}  

Abra su Serial Monitor en el IDE de Arduino y espere hasta que Arduino configure el módulo BT. Ahora su módulo Bluetooth está configurado a una velocidad de 57600 baudios . Puedes probar muchas aplicaciones BCI (Brain Computer Interface), porque este juguete bluetooth Necomimi pirateado será compatible con todas las aplicaciones de Neurosky.


Puede utilizar estas aplicaciones para aprender a controlar sus ondas y valores cerebrales, como la atención o la meditación. Puedes probar muchos juegos geniales, pero te recomiendo estas aplicaciones (son compatibles con PC, iOS y 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


Luego usa el "HC_05_Bluetooth" y cárguelo en su Arduino de la misma manera que antes. Conecte el pin "EN" del HC-05 al 3v3 del Arduino. Debe escribir la dirección de su módulo HC-06 en el código. Verifique la dirección del módulo BT con un teléfono inteligente Android, como yo. Reemplace ":" (puntos dobles) con "," comas en el código.

Y debes cambiar la dirección en el código:

20:15:09:15:17:82 ==> 2015,09,151782 De esta forma el módulo HC-05 puede reconocer la dirección. Así que deja algunos ":", porque no son necesarios.

  // HC-05 configurationvoid setup () {// Inicie la serie de hardware. Serial.begin (9600); // retardo por defecto de la tasa de baudios del HC-05 (1000); Serial.print ("AT"); retraso (1000); Serial.print ("EN + VERSION"); retraso (1000); Serial.println ("AT + ROLE =1"); // establece el HC-05 en modo maestro delay (1000); Serial.println ("AT + LINK =" copia aquí tu dirección "); // ahora el módulo debería conectarse automáticamente delay (1000); Serial.print (" AT + UART =57600,1,0 "); // Establecer velocidad en baudios a 576000 Serial.begin (57600); // delay (1000);} void loop () {}  

Finalmente, los dos módulos deben conectarse entre sí. Si tiene problemas, haga clic en este enlace para leer más.

El robot controlado a distancia

Para hacer este robot económico utilicé tecnología IR de 38kHz , que se utiliza en los mandos a distancia de televisores. Compré en Amazon un chasis para mi robot. El receptor de infrarrojos se rescató de un televisor antiguo y el Arduino también es del Amazonas. Agregué enlaces a las partes (ver más abajo en la sección de Hardware).

El circuito del controlador del motor

Necesitará estas piezas:

  • 2 terminales de tornillo
  • L293D IC
  • 3 Pin de encabezado
  • 9 Pin de encabezado (90 grados)
  • Resistencia de 1k
  • LED rojo
  • Cables
  • Una placa PCB

Usé algunos cables de cobre y siguiendo el esquema conecté los pines del IC a los pines del cabezal. No importa qué pin vaya a qué pin de encabezado, solo recuerde dónde los conectó. El LED está conectado en serie con la resistencia y en paralelo con el VCC de 5v.

Ensamblar el chasis

Este paso fue muy fácil, usé un destornillador y algunas habilidades de artesanía y construí el marco en cinco minutos. Después de que esto llegue a la parte más difícil, deberíamos construir un circuito de controlador de motor. Para controlar mis motores, elijo el L293D IC que puede impulsar dos motores. Mire el esquema para construir el circuito.

Conecta las partes al Arduino

Usé cables de puente para conectar el sensor y el controlador del motor al Arduino.

Pin Arduino ==> Controlador de motor

4 ==> 15

5 ==> 10

6 ==> 7

7 ==> 2

VIN ==> 8

5v ==> 1, 9, 16

GND ==> 4, 5, 13, 12

Así que mire el esquema del módulo L293D, luego conecte sus pines al Arduino UNO como escribí aquí. El pin de 5v del Arduino debe estar conectado a los 1, 9, 16 pines para habilitar la función de controlador de motor del IC. Luego, finalmente use los terminales de tornillo para encender los motores.

Escribiendo códigos…

Usando la biblioteca IRremote, creé un código que lee señales infrarrojas de 38 kHz, las decodifica y luego mueve el robot. (Descargue la biblioteca en la sección de Código).

Agregué explicaciones en el código, pero la sustancia es que decodifica las señales IR provenientes del servidor principal, luego, dependiendo de lo que quiera el usuario, mueva los motores que harán que el robot avance o gire a la izquierda. Descargue el código: "Robot_Code" . Carga esto en tu Arduino y tu robot se completará.



El servidor principal (Arduino Mega, Leonardo, Photon)

El servidor lee los paquetes de datos entrantes de los auriculares inalámbricos. Usaremos el módulo BT configurado para asegurar la conexión entre el auricular y el servidor. El Arduino Mega es el cerebro del circuito, todo está conectado a este microcontrolador:Bluetooth, transmisor de infrarrojos LED, servidor web y controlador de mouse. El código es un poco complicado, pero agregué explicaciones para entender.

El caso

Es simple pero se ve genial. Corté dos placas de 18x15 cm y alisé los bordes con papel de lija. Usando algunos tornillos, los conecté entre sí.

El circuito de relés

Necesitará estas piezas:

  • Transistor 2n2222 (3 piezas)
  • diodos de germanio (3 piezas)
  • Resistencias de 330 ohmios (3 PCS)
  • Resistencias de 1k Ohm (3 PCS)
  • Relés de 5v (3 PCS)
  • cables de conexión
  • Pines de encabezado
  • placa PCB

Una imagen que vale más de mil palabras, así que en lugar de intentar escribir cómo conectar las partes en el PCB, mire el esquema. Si el pin "Señal" recibe señal del Arduino, el relé se encenderá. El transistor amplifica la señal para asegurar suficiente potencia para los relés. Usaremos 37-38-39 pines para controlar los niveles ALTO-BAJO de cada relé.

Instalar piezas en la carcasa

Para instalar las piezas en la caja de plexy-glass utilicé cinta blanca de doble cara. Esto bloquea el ruido y mantiene los circuitos en la carcasa bastante fuertes.

El sistema de circuitos del servidor

Este servidor está basado en software, por lo que el circuito no es tan difícil. (Ver tranquilizador esquemático). Solo necesita encender los microcontroladores y hacer la conexión entre ellos. El LED de infrarrojos está conectado al pin D3 y los relés al 37-38-39. D16 del Arduino Mega va al RX del Photon y el D18 al RX del Leonardo.

Connection with the Robot


The IR Leds are connected to the digital pin D3 and with the IRremote library we send codes to the robot. Es bastante simple. The IR codes must be the same in the robot's code. 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.

The Code

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, SALIDA); // 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); retraso (40); } if (brain.readAttention()> 65) {irsend.sendNEC(0xFF18E7, 32); retraso (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) + "%"); retraso (2000); Spark.publish("Meditation", (med) + "%"); retraso (2000); Spark.publish("Last Function", (function) + ""); retraso (2000); if (Serial.available> 0) { char c =Serial.read(); } retraso (10); switch(c) { case'a':att =10; descanso; case'b':att =20; descanso; case'c':att =30; descanso; case'd':att =40; descanso; case'e':att =50; descanso; case'f':att =60; descanso; case'g':att =70; descanso; case'h':att =80; descanso; case'i':att =90; descanso; case'j':att =100; descanso; case'k':med =10; descanso; case'l':med =20; descanso; case'm':med =30; descanso; case'n':med =40; descanso; case'o':med =50; descanso; case'p':med =60; descanso; case'q':med =70; descanso; case'r':med =80; descanso; case's':med =90; descanso; case't':med =100; descanso; 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"); retraso (1000); Serial.print("AT+VERSION"); retraso (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); descanso; case 'd':// move mouse down Mouse.move(0, 8); descanso; case 'l':// move mouse left Mouse.move(-8, 0); descanso; case 'r':// move mouse right Mouse.move(8, 0); descanso; case 'c':// perform mouse left click Mouse.click(MOUSE_LEFT); descanso; }}} 
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"); retraso (40); } if (meditation> 70) { irsend.sendNEC(0xFF10EF, 32); //spin webserver.println("q"); retraso (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"); retraso (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"); retraso (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"); retraso (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, SALIDA); // 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); retraso (40); } if (brain.readAttention()> 65) {irsend.sendNEC(0xFF18E7, 32); retraso (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

Proceso de manufactura

  1. Creación de una red de sensores inalámbricos en su hogar
  2. Los mejores accesorios para tu Raspberry Pi
  3. Cómo usar la barra de pegamento en su cama de impresión Mark One
  4. Capturando las gotas de agua con Arduino
  5. Obstáculos que evitan el robot con servomotor
  6. Robot seguidor de línea
  7. ¡Conoce la temperatura de tu hogar desde cualquier lugar con Arduino Cloud!
  8. Plataforma de entrenamiento Arduino
  9. ¡¿Qué tan fácil es usar un termistor ?!
  10. 4 señales clave de que su motor está llegando al final de su vida útil
  11. Motor de CC frente a motor de CA:¿cuál es la diferencia?