Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Benutze die Macht... oder deine Gehirnwellen?

Komponenten und Verbrauchsmaterialien

Arduino UNO
Wird für den Roboter verwendet.
× 1
Arduino Mega 2560
Das Gehirn des Projekts...
× 1
Arduino Leonardo
Maussteuerung
× 1
Particle Photon
Webserver-Datenlogger
× 1
Necomimi Brainwave Katzenohren
EEG-Sensor
× 1
SparkFun Dual H-Bridge Motortreiber L298
Kaufen Sie dies, wenn Sie keinen eigenen Motortreiber bauen möchten.
× 1
Relaismodul
Kaufen Sie dieses Modul, wenn Sie keine Schaltkreise löten möchten.
× 1
HC-05 Bluetooth-Modul
× 1
LED (generisch)
× 3
Widerstand 330 Ohm
× 3
Allzwecktransistor NPN
× 3
Überbrückungsdrähte männlich/weiblich
× 1
Jumper (generisch)
× 1
Lötbares Breadboard Half Size
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Brain Visualizer
Wird nur für Experimente benötigt.

Über dieses Projekt

Als Kind wollte ich immer eine besondere Fähigkeit haben, wie Objekte mit Gedanken bewegen oder fliegen. Ich habe versucht, Objekte mit „der Kraft meines Geistes“ zu bewegen, natürlich ohne Erfolg.Nun ja, ich war und ich bin ein großer Star Wars-Fan, aber ich mag auch Elektronik und Programmierung, warum also nicht diese beiden Dinge kombinieren, um ein unglaubliches Projekt zu bauen?

Alle Teile, Codes und Bibliotheken mit Links finden Sie im Abschnitt Hardware und Software.

Das Hauptkonzept ist, dass der Benutzer mit verschiedenen Gehirnwellen in der Lage sein wird, einen Roboter zu steuern, den Cursor auf seinem PC oder das Licht in seinem Zuhause ein- und auszuschalten, während ein Mikrocontroller (Particle Photon) eine Online-Analyse der Gehirnwellen des Benutzers erstellt. Dies ist eine perfekte Methode, um Krankheiten oder Stress und schläfrige Aussagen zu erkennen. Dies kann auch verwendet werden, um Menschen zu helfen, ihr Leben besser zu leben, ihre Emotionen zu kontrollieren und immer glücklich zu sein. Das menschliche Gehirn braucht Balance, um gesund zu sein, wir sollten schlafen, denken, uns bewegen... Mit theParticle Photon und dem Webserver, der von den Gründern des Particle entwickelt wurde, können wir den Menschen helfen, ihr natürliches Gehirn-Gleichgewicht zu finden. Ein Kindheitstraum hat mich zu diesem Projekt geführt und ich bin sehr glücklich, dass ich es geschafft habe.

Aber wenn wir StarWars und die Macht für eine Weile beiseite legen, ist dieses Gerät nicht nur für faule Leute oder für Fans, es ist gemacht, um Menschen, die jeden Tag mit ihrer Behinderung kämpfen, eine Fähigkeit zurückzugeben. Der Roboter, den ich entworfen habe, funktioniert genauso wie ein Rollstuhl, das Hausautomationssystem würde dem Benutzer helfen, Lichter oder Fernseher zu steuern, auch wenn er sich nicht bewegen kann. Der PC-Controller-Modus kann sogar für vollkommen gesunde Personen nützlich sein. Ich denke, jeder von uns möchte Computerspiele spielen oder einfach nur mit Gedanken im Internet surfen.

Sehen Sie sich dieses kurze Einführungsvideo zur Geschichte des Projekts an:

Möchtest du deine eigenen bauen? Hier erkläre ich dir alles, was du für dieses Projekt wissen solltest. Ich teile Codes, Schaltpläne und diese detaillierte Anleitung, also wärme deinen Lötkolben auf…

Die Wissenschaft hinter dem Projekt 

Die Elektroenzephalographie (EEG) ist eine elektrophysiologische Überwachungsmethode zur Aufzeichnung der elektrischen Aktivität des Gehirns. Es ist normalerweise nicht invasiv, wobei die Elektroden entlang der Kopfhaut platziert werden, obwohl invasive Elektroden manchmal in bestimmten Anwendungen verwendet werden. Das EEG misst Spannungsschwankungen, die aus Ionenstrom innerhalb der Neuronen des Gehirns resultieren. Diagnostische Anwendungen konzentrieren sich im Allgemeinen auf den spektralen Inhalt des EEG, d. h. auf die Art der neuronalen Schwingungen (im Volksmund als "Gehirnwellen" bezeichnet), die in EEG-Signalen beobachtet werden können. (Danke Wikipedia) Aber wir werden zwei sehr genaue Werte verwenden

  • Alpha ist der Frequenzbereich von 7 Hz bis 14 Hz. Es tritt beim Schließen der Augen und beim Entspannen auf und schwächt sich beim Öffnen der Augen oder geistiger Anstrengung ab.
  • Beta ist der Frequenzbereich von 15 Hz bis etwa 30 Hz. Beta mit niedriger Amplitude und mehreren und unterschiedlichen Frequenzen wird oft mit aktivem, beschäftigtem oder ängstlichem Denken und aktiver Konzentration in Verbindung gebracht.

Wie funktioniert es?

Ich habe vier Mikrocontroller verwendet, um dieses Projekt zum Leben zu erwecken:einen Arduino Mega, einen ArduinoLeonardo, einen UNO und einen Particle Photon. Das Mega ist das Gehirn des Projekts, das Signale vom Headset empfängt, analysiert und dann Befehle an die anderen Geräte weiterleitet. Überträgt alle Daten an das Photon, das den Webserver erstellt. Der Leonardo steuert die Maus auf einem PC und der Uno wird verwendet, um IR (Infrarotsignale) zu empfangen und den Roboter zu steuern. Wie gesagt, das Gerät kann drei verschiedene Dinge steuern (oder mehr, wenn Sie etwas anderes programmieren möchten). Jetzt nenne ich diese drei verschiedenen Dinge Kanäle. Das Gerät schaltet zwischen diesen Kanälen um, wenn Sie die Augen schließen:

  • Augen für 1-2 Sekunden schließen:Wechselt zur Heimautomatisierungsfunktion
  • Schließen Sie Ihre Augen für 2-4 Sekunden:Wechselt in den Robotersteuerungsmodus
  • Augen für 1-6 Sekunden schließen:Wechselt in den Maussteuerungsmodus

Ich habe Relais verwendet, um die Hausautomation zu ermöglichen, an die Sie alles anschließen können:Fernseher, Glühbirnen, Steckdosen, alles was Sie wollen

Das kabellose Headset:

Ich liebe Hackingtoys, also habe ich mir ein Gehirnwellensensor-Spielzeug namens Necomimi gekauft, das in der Lage ist, seine Ohren abhängig von Ihren Gehirnwellen (Aufmerksamkeit, Meditation) zu bewegen. Dies ist das nutzloseste Spielzeug, das ich je gesehen habe, aber im Inneren befindet sich ein kleiner Chip, der Gehirnwellen liest, Rauschen filtert und ein sehr gutes Signal abgibt. Funktioniert mit der UART (Seriell) Schnittstelle, so dass wir mit etwas Hacking Arduinos verwenden können, um Gehirnwellen zu lesen. Die Aufgabe dieses Headsets besteht darin, Gehirnwellen drahtlos an den zentralen Server zu übertragen. Niemand möchte Kabel am Kopf haben, also habe ich dieses komfortable und benutzerfreundliche Headset entwickelt.

Gehen Sie nach unten, um zu sehen, wie Sie ein drahtloses Bluetooth-Headset auseinandernehmen und daraus machen können.

Wie benutzt man es?

Wir haben zwei messbare eSense-Werte (NeuroSky-Werte):Meditation von 0 bis 100 und Aufmerksamkeit von 0 bis 100. Je fokussierter Sie sind, desto höher wird der Aufmerksamkeitswert. Je entspannter du bist, desto höher wird das Meditationsniveau.

Das System arbeitet mit Gedanken, es braucht nichts weiter, nur lernen, fokussiert oder entspannt zu sein. Nach einer Woche des Experimentierens konnte ich meinen "Aufmerksamkeits"-Wert sehr genau kontrollieren. Ich kann meine Aufmerksamkeitsstufe bewusst auf etwa 15, oder 39, 65 und 90 einstellen. Du musst herausfinden, wie du deine Werte kontrollierst, wir sind alle verschieden. Es funktionierte sehr gut mit Emotionen. Das Nachdenken über Liebe, Freundschaft, Wut oder Angst ergibt einen sehr guten Kontrast in den Werten.

Schließen Sie zum Einschalten des Systems einen Micro-USB . an Kabel im Arduino Leonardo. Dies steuert auch Ihre Maus (wenn Sie möchten) und stellt 5 Volt und 500 mA für das System sicher.

Steuerung des Hausautomationssystems

Wenn Sie in den Heimautomatisierungsmodus wechseln, erhöhen Sie Ihre Aufmerksamkeitsstufe auf über 70, um das erste Relais einzuschalten , erhöhe das Meditationslevel auf über 70, um das zweite Relais einzuschalten , und beide auf über 70 erhöhen, um das dritte Relais einzuschalten . Es ist ein bisschen knifflig, aber nach einigem Geistestraining nicht unmöglich. Wenn es bereits eingeschaltet ist, verwenden Sie denselben Befehl, um es auszuschalten (wenn es also eingeschaltet ist, erreichen Sie erneut 70, um es auszuschalten). Wenn das System fertig ist, können Sie jedes beliebige Hochspannungsgerät (Licht, Fernseher, PC, Kühlerlüfter, alles was Sie wollen) an das Relaismodul anschließen.

Steuerung der Maus

Der Cursor wird mit Emotionen gesteuert. Wenn das Aufmerksamkeitsniveau weniger als 25 Züge übrig ist , wenn zwischen 25 und 50 Zügen nach rechts , wenn zwischen 50 und 75 steigt und wenn zwischen 75 und 100 Züge nach unten liegen . Sie können klicken, indem Sie die Meditationsstufe erhöhen. Wie ich schon sagte, kann die Aufmerksamkeitsstufe (für mich) leicht mit Emotionen gesteuert werden.

Steuerung des Roboters

Der Roboter hat nur drei verschiedene Anweisungen:anhalten, links abbiegen und vorwärts bewegen. Warum nur zwei Bewegungsoptionen? Denn diese beiden Richtungen reichen aus, um den Roboter überall hin zu bewegen. Verwenden Sie Ihr Meditationsniveau, um sich zu drehen mit dem Roboter, und wenn Sie die Richtung erreicht haben, in die Sie sich bewegen möchten, stoppen Sie den Roboter und gehen Sie mit der Aufmerksamkeitsstufe vorwärts . Es ist eine bessere Methode, den Roboter zu kontrollieren, und sogar Anfänger, die ihre Aufmerksamkeits- / Meditationswerte nicht so gut kontrollieren können, können mit diesem Roboter spielen.

Mein Plan

Dies ist ein älteres Bild über meinen Plan, aber es ist gelungen, daher bin ich mit den Ergebnissen sehr zufrieden. DasHeadset überträgt BT-Signale (Bluetooth) zum Arduino Mega, der die eingehenden Bytes analysiert und je nach Gedanken des Benutzers die verschiedenen Funktionen steuert. Es war sehr schwer herauszufinden, wie man so viele Daten am besten überträgt, aber ich habe mich für Bluetooth anstelle von WiFi entschieden. Zuerst wollte ich das Particle Photon als Datensender verwenden, aber dieser kleine Kerl bekam eine bessere Rolle bei der Entwicklung des Webservers. Das war die größte Änderung im ganzen Projekt. (Auf dem Bild sehen Sie den tatsächlichen Plan). Ich habe selbstgemachte Arduino-Module verwendet , weil ich es liebe, meine eigenen Schaltungen zu entwerfen. Du kannst diese Module nach Belieben online kaufen oder bei mir selber bauen.

Ein halbes Jahr Lernen und Experimentieren

Ich habe viel an diesem Projekt gearbeitet und ja, ich habe vor fast einem halben Jahr angefangen, aber mit den Photonen haben sich die Dinge beschleunigt. Es war sehr einfach, ihr Dashboard zu verwenden. Übrigens gibt es im Internet viele Tutorials zum Hacken von EEG-Spielzeug, die mir ein bisschen geholfen haben, aber keine zusätzlichen Funktionen hatten. Also beschloss ich, dieses Necomimi-Spielzeug zu hacken und mit meiner Kreativität habe ich dieses Gerät geschaffen, das viel mehr Funktionen hat als das Blinken einer LED. Ich hoffe, Sie werden es genießen!

Lass uns beginnen!

Das Necomimi-Spielzeug hacken

Wir möchten dieses EEG-Spielzeug so modifizieren, dass es Daten über Bluetooth überträgt, also nehmen Sie zuerst das Gehäuse auseinander. Die Schrauben befinden sich unter dem Aufkleber.Entfernen Sie den Aufkleber und der Rücken des Geräts und Sie finden es in einem kleinen Schaltkreis. Derjenige, der sich unter dem Hauptstromkreis befindet, ist der Neurosky TGAM-Chip. Dies ist mit vier Header-Pins mit der Hauptplatine des Mikrocontrollers verbunden, also nimm einen Lötkolben und entferne diesen Schaltkreis sorgfältig. Löten Sie nun drei Drähte an den GND-Pin an den VCC-Pin und an den T-Pin. Der T-Pin ist der Sender-Pin mit 57600 Baudrate, dieser sendet Datenpakete an unseren Mikrocontroller, aber ich habe diesen direkt an ein HC-06-SlaveBT-Modul angeschlossen . Der HC-06 ist auf 9600 Baud eingestellt, aber keine Sorge, wir beheben dieses Problem. Wenn Sie die drei Drähte an die gelötet haben, können Sie Ihre eigene wiederaufladbare Stromquelle einbauen. Ich habe einen 500mAh Li-Ion-Akku, eine USB-Ladeschaltung, eine 5V-Aufwärtsschaltung und zwei Widerstände (100 Ohm und 200 Ohm) verwendet, um eine perfekte 3,4-Volt-Stromversorgung für den Chip und das Bluetooth-Modul zu gewährleisten Stromkreis, der im Headset benötigt wird. Wenn die Schaltung fertig ist, konfigurieren Sie das Bluetooth-Modul.

Über den Chip:

Der Neurosky ThinkGear AM wurde entwickelt, um Daten zu filtern, zu verstärken und über die serielle Schnittstelle zu senden. Mehr Infos hier.

Der Schaltplan / Elektronik

Folgen Sie den Anweisungen und den Bildern unten und erstellen Sie Ihr eigenes drahtloses EEG-Headset.

Sie benötigen einen 500-mAh-Lithium-Ionen-Akku, ein 5-V-Spannungserhöhungsmodul, um eine stabile Spannung zu erzeugen, und einen 100-Ohm- und 200-Ohm-Widerstand, um die Spannung auf stabile 3,3 Volt zu reduzieren. Ich lötete Buchsenleistenstifte zum Einschalten und Übertragen von Daten an das Bluetooth-Modul.

Die Der wichtigste Teil ist, den "T"-Pin mit dem "RX" am Bluetooth-Modul zu verbinden. Dies erweckt unser Projekt zum Leben.

Bluetooth-Module konfigurieren

HC-06:Laden Sie zuerst die Skizze mit dem Namen „HC_06_Bluetooth“ an ein Arduino UNO anschließen und dann das Bluetooth-Modul wie im Schema gezeigt anschließen. Ich habe diesen Schaltplan auf der Website des Artronix-Teams gefunden und schien nützlich zu sein.


void setup() {   // Starten Sie die Hardware serial.Serial.begin(9600); // Standard HC-06 Baud Rate (1000);Serial.print("AT");delay(1000);Serial.print("AT+VERSION");delay(1000);Serial.print("AT+PIN "); // zum Entfernen von passworddelay(1000);Serial.print("AT+BAUD7"); // Baudrate auf 576000 setzen - zB Necomimi dafaultdelay(1000);Serial.begin(57600); // delay(1000);}void loop() {} 

Öffnen Sie Ihren Serial Monitor in der Arduino IDE und warten Sie, bis der Arduino das BT-Modul konfiguriert. Jetzt ist Ihr Bluetooth-Modul auf 57600 Baud eingestellt . Sie können viele BCI-Apps (Brain Computer Interface) ausprobieren, da dieses gehackte Bluetooth Necomimi-Spielzeug mit allen Neurosky-Apps kompatibel ist.


Sie können diese Apps verwenden, um zu lernen, Ihre Gehirnwellen und Werte wie Aufmerksamkeit oder Meditation zu kontrollieren. Sie können viele coole Spiele ausprobieren, aber ich empfehle diese Apps (sie sind mit PC, iOS und Android kompatibel): 

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


Dann verwende "HC_05_Bluetooth" und laden Sie Ihren Arduino auf die gleiche Weise wie zuvor. Verbinden Sie den "EN" -Pin des HC-05 mit dem 3v3 des Arduino. Sie sollten die Adresse Ihres HC-06-Moduls in den Code schreiben. Überprüfen Sie die Adresse des BT-Moduls mit einem Android-Smartphone wie mir. Ersetzen Sie ":" (doppelte Punkte) durch "," Kommas im Code.

Und Sie sollten die Adresse im Code ändern:

20:15:09:15:17:82 ==> 2015,09,151782 Auf diese Weise kann das HC-05-Modul die Adresse erkennen. Lassen Sie also einfach ein paar ":", da diese nicht erforderlich sind.

// HC-05 configurationvoid setup() { // Starten Sie die Hardware-Seriennummer. Serial.begin (9600); // Standard HC-05 Baudratenverzögerung (1000); Serial.print ("AT"); Verzögerung (1000); Serial.print ("AT+VERSION"); Verzögerung (1000); Serial.println("AT+ROLE=1"); // HC-05 auf Master-Mode-Verzögerung einstellen (1000); Serial.println("AT+LINK="hier deine Adresse kopieren"); // jetzt sollte sich das Modul automatisch verbinden delay(1000); Serial.print("AT+UART=57600,1,0"); // Set Baudrate auf 576000 Serial.begin(57600); // delay(1000);}void loop() {} 

Schließlich sollten die beiden Module miteinander verbunden werden. Wenn Sie Probleme haben, klicken Sie auf diesen Link, um mehr zu erfahren.

Der ferngesteuerte Roboter

Um diesen kostengünstigen Roboter herzustellen, habe ich die 38-kHz-IR-Technologie verwendet , die in TV-Fernbedienungen verwendet wird. Ich habe bei Amazon achassis für meinen Roboter gekauft. Der IR-Empfänger stammt aus einem alten Fernseher und der Arduino stammt ebenfalls aus dem Amazonas. Ich habe Links zu den Teilen hinzugefügt (siehe unten im Abschnitt Hardware).

Die Motortreiberschaltung

Sie benötigen diese Teile:

  • 2 Schraubklemmen
  • L293D-IC
  • 3 Header-Pin
  • 9 Kopfstift (90 Grad)
  • 1k Widerstand
  • Rote LED
  • Drähte
  • Eine Leiterplatte

Ich habe einige Kupferdrähte verwendet und nach dem Schema die Pins des ICs mit den Header-Pins verbunden. Es spielt keine Rolle, welcher Pin zu welchem ​​Header-Pin geht, denken Sie nur daran, wo Sie sie angeschlossen haben. Die LED ist in Reihe mit dem Widerstand und parallel mit 5V VCC geschaltet.

Chassis zusammenbauen

Dieser Schritt war sehr einfach, mit einem Schraubendreher und einigen handwerklichen Fähigkeiten baute ich den Rahmen in fünf Minuten. Nachdem dies der schwierigere Teil ist, sollten wir eine Motortreiberschaltung aufbauen. Um meine Motoren zu steuern Ich wähle den L293D IC, der zwei Motoren antreiben kann. Sehen Sie sich den Schaltplan an, um eine Schaltung zu erstellen.

Verbinde die Teile mit dem Arduino

Ich habe Überbrückungsdrähte verwendet, um den Sensor und den Motortreiber mit dem Arduino zu verbinden.

Arduino Pin ==> Motortreiber

 4 ==> 15

                   5 ==> 10

                   6 ==> 7

                   7 ==> 2

               FIN ==> 8

                 5v ==> 1, 9, 16

             GND ==> 4, 5, 13, 12

Schauen Sie sich also den Schaltplan des L293D-Moduls an und verbinden Sie dann seine Pins mit dem Arduino UNO, wie ich hier geschrieben habe. Der 5-V-Pin des Arduino sollte mit den 1, 9, 16 Pins verbunden werden um die Motortreiberfunktion des ICs zu aktivieren. Verwenden Sie dann zum Schluss die Schraubklemmen zum Hochfahren der Motoren.

Codes schreiben…

Mit der IRremote-Bibliothek habe ich einen Code erstellt, der 38-kHz-Infrarotsignale liest, decodiert und dann den Roboter bewegt. (Laden Sie die Bibliothek im Abschnitt Code herunter).

Ich habe dem Code Erklärungen hinzugefügt, aber der Inhalt ist, dass IR-Signale vom Hauptserver dekodiert werden, je nachdem, was der Benutzer wünscht, bewegen Sie die Motoren, um den Roboter vorwärts zu bewegen oder nach links abzubiegen. Laden Sie den Code herunter:"Robot_Code" . Laden Sie dies auf Ihren Arduino und Ihr Roboter wird fertig.



Der Hauptserver (Arduino Mega, Leonardo, Photon)

Der Server liest eingehende Datenpakete vom drahtlosen Headset. Wir verwenden das konfigurierte BT-Modul, um die Verbindung zwischen Headset und Server sicherzustellen. Der Arduino Mega ist das Gehirn der Schaltung, alles ist mit diesem Mikrocontroller verbunden:Bluetooth, Infrarotsender LED, Webserver und Mauscontroller. Der Code ist etwas kompliziert, aber ich habe Erklärungen hinzugefügt, um sie zu verstehen.

Der Fall

Es ist einfach, sieht aber toll aus. Ich habe zwei 18x15 cm große Platten geschnitten und die Kanten mit Schleifpapier geglättet. Mit einigen Schrauben habe ich sie miteinander verbunden.

Die Relaisschaltung

Sie benötigen diese Teile:

  • 2n2222-Transistor (3 PCS)
  • Germaniumdioden (3 Stk.)
  • 330-Ohm-Widerstände (3 PCS)
  • 1 kOhm-Widerstände (3 Stk.)
  • 5 V-Relais (3 PCS)
  • Anschlusskabel
  • Header-Pins
  • Leiterplatte

Ein Bild sagt mehr als tausend Worte. Anstatt zu schreiben, wie Sie die Teile auf der Platine verbinden sollten, schauen Sie sich den Schaltplan an. Wenn der "Signal" -Pin ein Signal vom Arduino erhält, schaltet sich das Relais ein. Der Transistor verstärkt das Signal, um genügend Leistung für die Relais zu gewährleisten. Wir verwenden 37-38-39 Pins, um die HIGH-LOW-Pegel jedes Relais zu steuern.

Teile in das Gehäuse einbauen

Um die Teile auf dem Plexiglasgehäuse zu installieren, habe ich doppelseitiges weißes Klebeband verwendet. Dies hält die Stromkreise am Gehäuse ziemlich stark.

Die Server-Schaltung

Dieser Server ist softwarebasiert, sodass die Schaltung nicht so schwer ist. (Siehe schematische Downer). Sie müssen nur die Mikrocontroller einschalten und eine Verbindung zwischen ihnen herstellen. Die IR-LED ist an Pin D3 und die Relais an 37-38-39 angeschlossen. D16 des Arduino Mega geht an den RX des Photons und der D18 an den RX des Leonardo.

Verbindung mit dem Roboter


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.

Der Kodex

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

Schaltpläne

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

Herstellungsprozess

  1. Aufbau eines drahtlosen Sensornetzwerks in Ihrem Zuhause
  2. Das beste Zubehör für Ihren Raspberry Pi
  3. So verwenden Sie den Klebestift auf Ihrem Mark One Druckbett
  4. Einfangen der Wassertropfen mit Arduino
  5. Hindernisse vermeiden Roboter mit Servomotor
  6. Linienfolger-Roboter
  7. Kennen Sie die Temperatur Ihres Zuhauses von überall mit der Arduino Cloud!
  8. Wie einfach ist es, einen Thermistor zu verwenden?!
  9. 4 wichtige Anzeichen dafür, dass Ihr Motor das Ende seiner Lebensdauer erreicht
  10. Gleichstrom- und Wechselstrommotor:Was ist der Unterschied?