Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Utilisez la force... ou vos ondes cérébrales ?

Composants et fournitures

Arduino UNO
Utilisé pour le robot.
× 1
Arduino Mega 2560
Le cerveau du projet...
× 1
Arduino Leonardo
Contrôleur de souris
× 1
Photon de particule
Enregistreur de données de serveur Web
× 1
Oreilles de chat Necomimi Brainwave
Capteur EEG
× 1
Drivers de moteur SparkFun Dual H-Bridge L298
Achetez ceci si vous ne voulez pas construire votre propre pilote de moteur.
× 1
Module relais
Achetez ce module si vous ne voulez pas souder des circuits.
× 1
Module Bluetooth HC-05
× 1
LED (générique)
× 3
Résistance 330 ohm
× 3
Transistor à usage général NPN
× 3
Câbles de raccordement mâle/femelle
× 1
Câbles de raccordement (générique)
× 1
Planche à pain sans soudure demi-taille
× 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Visualiseur cérébral
Cela n'est nécessaire que pour les expériences.

À propos de ce projet

Quand j'étais enfant, j'ai toujours voulu avoir une capacité spéciale, comme déplacer des objets avec des pensées ou voler. J'ai essayé de déplacer des objets avec "le pouvoir de mon esprit" bien sûr sans succès. Eh bien, oui, je l'étais et je suis un grand fan de Star Wars, mais j'aime aussi l'électronique et la programmation, alors pourquoi ne pas combiner ces deux choses pour construire un projet incroyable ?

Vous pouvez trouver toutes les pièces, codes et bibliothèques avec des liens dans la section Matériel et logiciels.

Le concept principal est qu'en utilisant différentes ondes cérébrales l'utilisateur pourra contrôler un robot, le curseur sur son PC ou allumer/éteindre les lumières de sa maison, tandis qu'un microcontrôleur (Particle Photon) crée une analyse en ligne des ondes cérébrales de l'utilisateur. C'est une méthode parfaite pour détecter les maladies ou le stress et la somnolence. Cela peut également être utilisé pour aider les gens à mieux vivre leur vie, à apprendre à contrôler leurs émotions et à être toujours heureux. Le cerveau humain a besoin d'équilibre, pour être en bonne santé, nous devons dormir, réfléchir, bouger... En utilisant theParticle Photon et le serveur web créé par les fondateurs de Particle, nous pouvons aider les gens à trouver leur équilibre cérébral naturel. Un rêve d'enfant m'a guidé vers ce projet, et je suis très heureux de l'avoir réalisé.

Mais si nous mettons un peu StarWars et la Force à l'écart, cet appareil n'est pas seulement pour les paresseux ou pour les fans, il est fait pour redonner une capacité aux personnes qui se battent chaque jour avec leur handicap. Le robot que j'ai conçu fonctionne de la même manière qu'un fauteuil roulant, le système domotique aiderait l'utilisateur à contrôler les lumières ou les téléviseurs même s'il ne peut pas bouger. Le mode contrôleur PC peut être utilemême pour ceux qui sont en parfaite santé. Je pense que nous voulons tous jouer à des jeux informatiques ou simplement surfer sur Internet en utilisant uniquement nos pensées.

Regardez cette courte vidéo d'introduction sur l'histoire du projet :

Voulez-vous créer le vôtre ? Ici, je vais vous expliquer tout ce que vous devez savoir pour ce projet. Je partage des codes, des schémas et cette instruction détaillée, alors faites chauffer votre fer à souder…

La science derrière le projet 

L'électroencéphalographie (EEG) est une méthode de surveillance électrophysiologique pour enregistrer l'activité électrique du cerveau. Il est généralement non invasif, les électrodes étant placées le long du cuir chevelu, bien que des électrodes invasives soient parfois utilisées dans des applications spécifiques. L'EEG mesure les fluctuations de tension résultant du courant ionique dans les neurones du cerveau. Les applications de diagnostic se concentrent généralement sur le contenu spectral de l'EEG, c'est-à-dire le type d'oscillations neuronales (généralement appelées « ondes cérébrales ») qui peuvent être observées dans les signaux EEG. (merci Wikipedia) Mais nous allons utiliser deux valeurs très précises

  • Alpha est la plage de fréquences de 7 Hz à 14 Hz. Il apparaît avec la fermeture des yeux et avec la relaxation, et s'atténue avec l'ouverture des yeux ou l'effort mental.
  • Bêta est la plage de fréquences de 15 Hz à environ 30 Hz. Un bêta de faible amplitude avec des fréquences multiples et variables est souvent associé à une pensée active, occupée ou anxieuse et à une concentration active.

Comment ça marche ?

J'ai utilisé quatre microcontrôleurs pour donner vie à ce projet :un Arduino Mega, un ArduinoLeonardo, un UNO et un Particle Photon. Le Mega est le cerveau du projet qui reçoit les signaux du casque, les analyse puis transmet les commandes aux autres appareils. Transmet toutes les données au photon qui crée le serveur Web. Le Leonardo contrôle la souris sur un PC et le Uno est utilisé pour recevoir les IR (signaux infrarouges) et contrôle le robot. Comme je l'ai dit, l'appareil est capable de contrôler trois choses différentes (ou plus si vous voulez programmer autre chose). Maintenant, je vais appeler ces trois canaux de choses différentes. L'appareil bascule entre ces canaux si vous fermez les yeux :

  • Fermez les yeux pendant 1-2 secondes :passe en fonction domotique
  • Fermez les yeux pendant 2 à 4 secondes :passe en mode contrôleur de robot
  • Fermez les yeux pendant 1 à 6 secondes :passe en mode contrôleur de souris

J'ai utilisé des relais pour faire de la fonction domotique vous pouvez y connecter n'importe quoi :TV, ampoules, prises murales tout ce que vous voulez

Le casque sans fil :

J'adore les hackingtoys alors j'ai acheté un jouet de détection d'ondes cérébrales appelé Necomimi, qui est capable de bouger ses oreilles en fonction de vos ondes cérébrales (attention, méditation). C'est le jouet le plus inutile que j'aie jamais vu, mais il y a à l'intérieur une petite puce qui lit les ondes cérébrales, filtre le bruit et donne un très bon signal. Fonctionne avec l'interface UART (Serial), donc avec un peu de piratage, nous pouvons utiliser Arduinos pour lire les ondes cérébrales. Le rôle de ce casque est de transmettre sans fil les ondes cérébrales au serveur central. Personne ne veut de câbles sur sa tête alors j'ai créé ce casque confortable et convivial.

Allez en bas pour voir comment le démonter et en faire un casque sans fil Bluetooth.

Comment l'utiliser ?

Nous avons deux valeurs eSense mesurables (valeurs NeuroSky) :la méditation de 0 à 100 et l'attention de 0 à 100. Plus vous êtes concentré, plus la valeur d'attention est élevée. Plus vous êtes détendu, plus le niveau de méditation augmente.

Le système fonctionne avec des pensées, rien d'autre n'est nécessaire, il suffit d'apprendre à être concentré ou détendu. Après une semaine d'expérimentation, j'ai pu contrôler ma valeur "d'attention" de manière très précise. Je peux régler consciemment mon niveau d'attention à environ 15, ou 39, 65 et 90. Vous devez découvrir comment contrôler vos valeurs, nous sommes tous différents. Cela a très bien fonctionné avec les émotions. Penser à l'amour, à l'amitié, à la colère ou à la peur donne un très bon contraste entre les valeurs.

Pour alimenter le système, branchez un micro USB câble dans l'Arduino Leonardo. Cela contrôlera également votre souris (si vous le souhaitez) et assurera 5 volts et 500 mA pour le système.

Contrôler le système domotique

Si vous êtes passé en mode domotique augmentez votre niveau d'attention supérieur à 70 pour activer le premier relais , augmentez le niveau de méditation supérieur à 70 pour activer le deuxième relais , et augmentez les deux au-dessus de 70 pour activer le troisième relais . C'est un peu délicat mais ce n'est pas impossible après un entraînement mental. Si est déjà activé, utilisez la même commande pour l'éteindre (donc, si est activé, atteignez à nouveau 70 pour l'éteindre). Lorsque le système est terminé, vous pouvez connecter n'importe quel appareil haute tension (lumière, téléviseur, PC, ventilateur de refroidissement, tout ce que vous voulez) au module de relais.

Contrôler la souris

Le curseur est contrôlé par des émotions. Si le niveau d'attention est moins de 25 passes vers la gauche , si est compris entre 25 et 50 coups vers la droite , si est compris entre 50 et 75 monte et si est entre 75 et 100 se déplace vers le bas . Vous pouvez cliquer en augmentant le niveau de méditation. Comme je l'ai déjà dit, le niveau d'attention peut être facilement contrôlé par les émotions (pour moi).

Contrôler le robot

Le robot n'a que trois instructions différentes :s'arrêter, tourner à gauche et avancer. Pourquoi seulement deux options de mouvement ? Car ces deux directions suffisent à déplacer le robot où vous le souhaitez. Utilisez votre niveau de méditation pour tourner avec le robot, et quand vous avez atteint la direction où vous voulez vous déplacer arrêtez le robot puis avancez avec le niveau d'attention . C'est une meilleure méthode pour contrôler le robot et même les débutants, qui ne peuvent pas si bien contrôler leurs valeurs d'attention/méditation, peuvent jouer avec ce robot.

Mon plan

Il s'agit d'une image plus ancienne de mon plan, mais qui a réussi, je suis donc très satisfait des résultats. Le casque transmet des signaux BT (Bluetooth) à l'Arduino Mega qui analyse les octets entrants et en fonction de la pensée de l'utilisateur contrôle les différentes fonctionnalités. Il était très difficile de trouver les meilleurs moyens de transmettre ce lot de données, mais j'ai choisi le Bluetooth au lieu du WiFi. Au début, je voulais utiliser le photon de particules comme transmetteur de données, mais ce petit gars a eu un meilleur rôle dans la création du serveur Web. C'était la plus grosse modification de tout le projet. (Sur la photo, vous pouvez voir le plan réel). J'ai utilisé des modules Arduino maison , parce que j'aime concevoir mes propres circuits. Vous pouvez acheter ces modules en ligne si vous le souhaitez ou construire vous-même avec moi.

Une demi-année d'apprentissage et d'expérimentation

J'ai beaucoup travaillé sur ce projet et oui, j'ai commencé il y a presque six mois, mais avec Photon les choses se sont accélérées. Il était très facile d'utiliser leur tableau de bord. Au fait, il existe de nombreux tutoriels sur Internet sur la façon de pirater des jouets EEG, qui m'ont un peu aidé, mais ils n'avaient aucune fonction supplémentaire. J'ai donc décidé de pirater ce jouet Necomimi et en utilisant ma créativité, j'ai créé cet appareil qui a beaucoup plus de fonctionnalités que de faire clignoter une LED. J'espère que vous apprécierez !

Commençons !

Piratage du jouet Necomimi

Nous souhaitons modifier ce jouet EEG pour transmettre des données via Bluetooth, alors démontez d'abord le boîtier. Les vis sont sous l'autocollant.Retirer l'autocollant et le dos de l'appareil et vous trouverez à l'intérieur un petit circuit. Celui qui se trouve sous le circuit principal est la puce Neurosky TGAM. Ceci est connecté avec quatre broches d'en-tête à la carte principale du microcontrôleur, donc prenez un fer à souder et retirez ce circuit avec attention. Soudez maintenant trois fils à la broche GND, à la broche VCC et à la broche T. La broche T est la broche de l'émetteur avec un débit en bauds de 57600, cela envoie des paquets de données à notre microcontrôleur, mais je l'ai connecté directement à un module HC-06 slaveBT . Le HC-06 est réglé sur un débit de 9600 bauds, mais ne vous inquiétez pas, nous allons résoudre ce problème. Si vous avez soudé les trois fils au, vous pouvez construire votre propre source d'alimentation rechargeable. J'ai utilisé une batterie Li-Ion 500mAh, un circuit chargeur USB, un circuit élévateur 5v et deux résistances (100 ohms et 200 ohms) pour assurer une alimentation parfaite de 3,4 volts pour la puce et pour le module Bluetooth. Suivez le schéma pour construire le circuit nécessaire dans le casque. Si le circuit est fait configurer le module Bluetooth.

À propos de la puce :

Le Neurosky ThinkGear AM est conçu pour filtrer, amplifier et envoyer des données via une interface série. Plus d'informations ici.

Le Schéma / Electronique

Suivez les instructions et les images ci-dessous et créez votre propre casque EEG sans fil.

Vous aurez besoin d'une batterie Lithium-Ion de 500 mAh, d'un module élévateur de tension de 5 V pour créer une tension stable, puis d'une résistance de 100 Ohm et 200 Ohm pour réduire la tension à 3,3 Volts stable. J'ai soudé des broches femelles pour alimenter et transmettre des données au module Bluetooth.

Le la partie la plus importante est de connecter la broche "T" avec le "RX" sur le module Bluetooth. Cela donne vie à notre projet.

Configuration des modules Bluetooth

HC-06 :chargez d'abord le croquis nommé« HC_06_Bluetooth » à un Arduino UNO puis connectez le module Bluetooth comme le montre le schéma. J'ai trouvé ce schéma sur le site Web de l'équipe Artronix et il m'a semblé utile.


void setup() {   // Démarrer le matériel serial.Serial.begin(9600); // par défaut HC-06 baudsrateddelay(1000);Serial.print("AT");delay(1000);Serial.print("AT+VERSION");delay(1000);Serial.print("AT+PIN "); // pour supprimer passworddelay(1000);Serial.print("AT+BAUD7"); // Définir le débit en bauds à 576000 - par exemple Necomimi dafaultdelay(1000);Serial.begin(57600); // delay(1000);}boucle vide() {} 

Ouvrez votre moniteur série dans l'IDE Arduino et attendez que l'Arduino configure le module BT. Votre module Bluetooth est maintenant réglé sur un débit de 57600 bauds . Vous pouvez essayer de nombreuses applications BCI (Brain Computer Interface), car ce jouet Bluetooth piraté Necomimi sera compatible avec toutes les applications Neurosky.


Vous pouvez utiliser ces applications pour apprendre à contrôler vos ondes cérébrales et vos valeurs, comme l'attention ou la méditation. Vous pouvez essayer de nombreux jeux sympas, mais je vous recommande ces applications (elles sont compatibles avec PC, iOS et 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


Ensuite, utilisez le "HC_05_Bluetooth" et chargez votre Arduino de la même manière qu'avant. Connectez la broche "EN" du HC-05 au 3v3 de l'Arduino. Vous devez écrire l'adresse de votre module HC-06 dans le code. Vérifiez l'adresse du module BT avec un smartphone Android, comme moi. Remplacez ":" (doubles points) par "," virgules dans le code.

Et vous devriez changer l'adresse dans le code :

20:15:09:15:17:82 ==> 2015,09,151782 De cette façon, le module HC-05 peut reconnaître l'adresse. Alors laissez juste quelques ":", car ils ne sont pas nécessaires.

// HC-05 configurationvoid setup() { // Démarre la série matérielle. Serial.begin(9600); // délai de débit en bauds HC-05 par défaut (1000); Serial.print("AT"); retard(1000); Serial.print("AT+VERSION"); retard(1000); Serial.println("AT+ROLE=1"); //définit le HC-05 sur le délai du mode maître (1000); Serial.println(" AT+LINK="copiez ici votre adresse"); // maintenant le module devrait se connecter automatiquement avec un délai (1000); Serial.print ("AT+UART=57600,1,0"); // Définir baudrate à 576000 Serial.begin(57600); // delay(1000);}void loop() {} 

Enfin, les deux modules doivent se connecter l'un à l'autre. Si vous rencontrez des problèmes, cliquez sur ce lien pour en savoir plus.

Le robot télécommandé

Pour fabriquer ce robot peu coûteux, j'ai utilisé la technologie IR 38 kHz , qui est utilisé dans les télécommandes TV. J'ai acheté sur Amazon un châssis pour mon robot. Le récepteur IR est récupéré d'un vieux téléviseur et l'Arduino est également de l'Amazonie. J'ai ajouté des liens vers les pièces (voir plus bas dans la section Matériel).

Le circuit de commande du moteur

Vous aurez besoin de ces pièces :

  • 2 bornes à vis
  • IC L293D
  • 3 broches d'en-tête
  • 9 broches d'en-tête (90 degrés)
  • Résistance 1k
  • LED rouge
  • Fils
  • Une carte PCB

J'ai utilisé des fils de cuivre et, en suivant le schéma, j'ai connecté les broches du circuit intégré aux broches de l'en-tête. Peu importe quelle broche va à quelle broche d'en-tête, souvenez-vous simplement de l'endroit où vous les avez connectées. La LED est connectée en série avec la résistance et en parallèle avec le 5v VCC.

Assembler le châssis

Cette étape était très facile, j'ai utilisé un tournevis et quelques compétences en artisanat, j'ai construit le cadre en cinq minutes. Après la partie la plus difficile, nous devrions construire un circuit de commande de moteur. Pour contrôler mes moteurs, je choisis le circuit intégré L293D qui peut piloter deux moteurs. Regardez le schéma pour construire le circuit.

Connectez les pièces à l'Arduino

J'ai utilisé des cavaliers pour connecter le capteur et le pilote du moteur à l'Arduino.

Arduino Pin ==> Pilote de moteur

 4 ==> 15

                   5 ==> 10

                   6 ==> 7

                   7 ==> 2

               VIN ==> 8

                 5v ==> 1, 9, 16

             GND ==> 4, 5, 13, 12

Regardez donc le schéma du module L293D, puis connectez ses broches à l'Arduino UNO comme je l'ai écrit ici. La pin 5v de l'Arduino doit être connecté aux 1, 9, 16 broches pour activer la fonction de pilote de moteur du circuit intégré. Puis utilisez enfin les bornes à vis pour alimenter les moteurs.

Codes d'écriture…

À l'aide de la bibliothèque IRremote, j'ai créé un code qui lit les signaux infrarouges à 38 kHz, les décode, puis déplace le robot. (Téléchargez la bibliothèque dans la section Code).

J'ai ajouté des explications dans le code, mais le fond est qu'il décode les signaux IR provenant du serveur principal, puis selon ce que veut l'utilisateur, déplacez les moteurs qui feront avancer le robot ou tournera à gauche. Téléchargez le code :"Robot_Code" . Chargez ceci sur votre Arduino et votre robot se terminera.



Le serveur principal (Arduino Mega, Leonardo, Photon)

Le serveur lit les paquets de données entrants du casque sans fil. Nous utiliserons le module BT configuré pour assurer la connexion entre le casque et le serveur. L'Arduino Mega est le cerveau du circuit, tout est connecté à ce microcontrôleur :Bluetooth, LED émetteur infrarouge, serveur web et contrôleur de souris. Le code est un peu compliqué, mais j'ai ajouté des explications pour comprendre.

L'affaire

C'est simple mais ça a l'air super. J'ai découpé deux plaques de 18x15 cm dont j'ai lissé les bords avec du papier de verre. À l'aide de vis, je les ai reliés les uns aux autres.

Le Circuit Relais

Vous aurez besoin de ces pièces :

  • Transistor 2n2222 (3 PCS)
  • diodes au germanium (3 pièces)
  • Résistances de 330 ohms (3 PCS)
  • Résistances de 1 kOhm (3 PCS)
  • Relais 5 V (3 PCS)
  • fils de raccordement
  • broches d'en-tête
  • Carte PCB

Une image valant plus de mille mots, donc au lieu d'essayer d'écrire comment connecter les pièces sur le PCB, regardez le schéma Si la broche "Signal" reçoit un signal de l'Arduino, le relais s'allumera. Le transistor amplifie le signal pour assurer une puissance suffisante pour les relais. Nous utiliserons 37-38-39 broches pour contrôler les niveaux HAUT-BAS de chaque relais.

Installer les pièces dans le boîtier

Pour installer les pièces sur le boîtier en plexiglas, j'ai utilisé du ruban adhésif blanc double face. Cela loks noce et maintient les circuits sur le boîtier assez fort.

Le serveur-circuit

Ce serveur est basé sur un logiciel, ce qui rend le circuit moins difficile. (Voir schéma downer). Il vous suffit de mettre les microcontrôleurs sous tension et d'établir une connexion entre eux. La LED IR est connectée à la broche D3 et les relais à 37-38-39. Le D16 de l'Arduino Mega va au RX du Photon et le D18 au RX du Leonardo.

Connexion avec le Robot


The IR Leds are connected to the digital pin D3 and with the IRremote library we send codes to the robot. It's pretty 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, SORTIE); // 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); retard (40); } if (brain.readAttention()> 65) {irsend.sendNEC(0xFF18E7, 32); retard (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!

Code

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

Schémas

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

Processus de fabrication

  1. Construire un réseau de capteurs sans fil dans votre maison
  2. Les meilleurs accessoires pour votre Raspberry Pi
  3. Comment utiliser le bâton de colle sur votre lit d'impression Mark One
  4. Capturer les gouttes d'eau avec Arduino
  5. Obstacles pour éviter le robot avec servomoteur
  6. Robot suiveur de ligne
  7. Est-il facile d'utiliser une thermistance ? !
  8. 4 signes clés que votre moteur arrive en fin de vie
  9. Moteur à courant continu ou à courant alternatif :quelle est la différence ?