Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Gunakan Kekuatan... Atau Gelombang Otak Anda?

Komponen dan persediaan

Arduino UNO
Digunakan untuk robot.
× 1
Arduino Mega 2560
Otak proyek ini...
× 1
Arduino Leonardo
Pengontrol Mouse
× 1
Foton Partikel
Pencatat Data Server Web
× 1
Telinga Kucing Gelombang Otak Necomimi
Sensor EEG
× 1
SparkFun Dual H-Bridge driver motor L298
Beli ini jika Anda tidak ingin membuat driver motor sendiri.
× 1
Modul Relai
Beli modul ini jika Anda tidak ingin menyolder sirkuit.
× 1
Modul Bluetooth HC-05
× 1
LED (generik)
× 3
Resistor 330 ohm
× 3
NPN Transistor Serbaguna
× 3
Kabel Jumper Pria/Wanita
× 1
Kabel jumper (generik)
× 1
Ukuran Setengah Papan Tempat Memotong Roti Tanpa Solder
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)

Aplikasi dan layanan online

Brain Visualizer
Hanya diperlukan untuk eksperimen.

Tentang proyek ini

Sebagai seorang anak saya selalu ingin memiliki kemampuan khusus, seperti memindahkan objek dengan pikiran atau terbang. Saya mencoba untuk memindahkan objek dengan "kekuatan pikiran saya" tentu saja tanpa hasil.Ya, saya dulu dan saya saya penggemar berat Star Wars, tetapi saya juga menyukai elektronik dan pemrograman, jadi mengapa tidak menggabungkan dua hal ini untuk membangun proyek yang luar biasa?

Anda dapat menemukan semua bagian, kode, dan pustaka dengan tautan di bagian Perangkat Keras dan Perangkat Lunak.

Konsep utama adalah dengan menggunakan gelombang otak yang berbeda pengguna akan dapat mengontrol robot,kursor pada PC atau menyalakan/mematikan lampu di rumahnya, sedangkan mikrokontroler(Partikel Foton) membuat analisis online tentang gelombang otak pengguna. Ini adalah metode yang sempurna untuk mendeteksi penyakit atau stres dan pernyataan mengantuk. Ini juga dapat digunakan untuk membantu orang menjalani kehidupan yang lebih baik, belajar mengendalikan emosi mereka dan bagaimana untuk selalu bahagia. Otak manusia membutuhkan keseimbangan, untuk menjadi sehat, kita harus tidur, berpikir, bergerak... Menggunakan Foton Partikel dan server web yang dibuat oleh pendiri Partikel, kita dapat membantu orang menemukan keseimbangan otak alami mereka. Sebuah mimpi masa kecil membimbing saya ke proyek ini, dan saya sangat senang bahwa saya berhasil.

Tetapi jika kita mengesampingkan StarWars and the Force sebentar, perangkat ini tidak hanya untuk orang malas atau untuk penggemar, itu dibuat untuk memberikan kembali kemampuan untuk orang-orang yang berjuang setiap hari dengan kecacatan mereka. Robot yang saya rancang bekerja dengan cara yang sama seperti kursi roda, sistem otomasi rumah akan membantu pengguna mengontrol lampu atau TV meskipun dia tidak dapat bergerak. Mode pengontrol PC dapat berguna bahkan bagi mereka yang sangat sehat. Saya rasa kita semua ingin bermain game komputer atau berselancar di internet hanya dengan menggunakan pikiran.

Tonton video pengantar singkat tentang kisah proyek ini:

Apakah Anda ingin membuat sendiri? Di sini saya akan menjelaskan semua yang harus Anda ketahui untuk proyek ini. Saya membagikan kode, skema, dan instruksi terperinci ini, jadi hangatkan setrika solder Anda…

Ilmu Pengetahuan di Balik Proyek 

Electroencephalography (EEG) adalah metode pemantauan elektrofisiologis untuk merekam aktivitas listrik otak. Biasanya non-invasif, dengan elektroda ditempatkan di sepanjang kulit kepala, meskipun elektroda invasif terkadang digunakan dalam aplikasi tertentu. EEG mengukur fluktuasi tegangan yang dihasilkan dari arus ionik dalam neuron otak. Aplikasi diagnostik umumnya berfokus pada konten spektral EEG, yaitu jenis osilasi saraf (populer disebut "gelombang otak") yang dapat diamati dalam sinyal EEG. (terima kasih Wikipedia) Tapi kami akan menggunakan dua nilai yang sangat akurat

  • Alfa adalah rentang frekuensi dari 7 Hz hingga 14 Hz. Ini muncul dengan menutup mata dan dengan relaksasi, dan melemah dengan membuka mata atau pengerahan tenaga mental.
  • Beta adalah rentang frekuensi dari 15 Hz hingga sekitar 30 Hz. Beta amplitudo rendah dengan frekuensi ganda dan bervariasi sering dikaitkan dengan pemikiran aktif, sibuk atau cemas dan konsentrasi aktif.

Bagaimana cara kerjanya?

Saya menggunakan empat mikrokontroler untuk menghidupkan proyek ini:Arduino Mega, ArduinoLeonardo, UNO, dan Foton Partikel. Mega adalah otak dari proyek yang menerima sinyal dari headset, menganalisis kemudian meneruskan perintah ke perangkat lain. Mengirimkan setiap data ke depan ke Foton yang membuat server web. Leonardo mengontrol mouse pada PC dan Uno digunakan untuk menerima IR (sinyal inframerah) dan mengontrol robot. Seperti yang saya katakan perangkat dapat mengontrol tiga hal yang berbeda (atau lebih jika Anda ingin memprogram hal lain). Sekarang saya akan menyebut ketiga saluran yang berbeda ini. Perangkat beralih di antara saluran ini jika Anda menutup mata:

  • Tutup mata Anda selama 1-2 detik:beralih ke fitur otomatisasi rumah
  • Tutup mata Anda selama 2-4 detik:beralih ke mode pengontrol robot
  • Tutup mata Anda selama 1-6 detik:beralih ke mode pengontrol mouse

Saya menggunakan relai untuk membuat fitur otomatisasi rumah, Anda dapat menghubungkan apa pun dengannya:TV, bola lampu, stopkontak, apa pun yang Anda inginkan

Headset nirkabel:

Saya suka hackingtoys jadi saya membeli mainan penginderaan gelombang otak yang disebut Necomimi, yang bisa menggerakkan telinganya tergantung pada gelombang otak Anda (perhatian, meditasi). Ini adalah mainan paling tidak berguna yang pernah saya lihat, tetapi ada di dalam chip kecil yang membaca gelombang otak, menyaring kebisingan, dan memberikan sinyal yang sangat bagus. Bekerja dengan antarmuka UART (Serial), jadi dengan beberapa peretasan kita dapat menggunakan Arduino untuk membaca gelombang otak. Peran headset ini adalah untuk mengirimkan gelombang otak secara nirkabel ke server pusat. Tidak ada yang menginginkan kabel di kepalanya, jadi saya membuat headset yang nyaman dan ramah pengguna ini.

Turun untuk melihat cara membongkar dan membuat headset Bluetooth nirkabel darinya.

Bagaimana cara menggunakannya?

Kami memiliki dua nilai eSense yang dapat diukur (nilai NeuroSky):meditasi dari 0 hingga 100 dan perhatian dari 0 hingga 100. Semakin fokus Anda, semakin tinggi nilai perhatiannya. Semakin santai Anda, semakin tinggi tingkat meditasinya.

Sistem bekerja dengan pikiran, tidak ada lagi yang diperlukan hanya belajar bagaimana untuk fokus atau santai. Setelah seminggu bereksperimen, saya dapat mengontrol nilai "perhatian" saya dengan sangat akurat. Saya dapat mengatur tingkat perhatian saya secara sadar menjadi sekitar 15, atau 39, 65 dan 90. Anda harus mencari tahu bagaimana mengontrol nilai-nilai Anda, kita semua berbeda. Ini bekerja sangat baik dengan emosi. Memikirkan cinta, persahabatan, kemarahan, atau ketakutan memberikan kontras yang sangat baik dalam nilai-nilai tersebut.

Untuk menyalakan sistem, colokkan USB mikro kabel di Arduino Leonardo. Ini juga akan mengontrol mouse Anda (jika Anda mau) dan memastikan 5 volt dan 500mA untuk sistem.

Mengontrol Sistem Otomasi Rumah

Jika Anda beralih ke mode otomatisasi rumah, tingkatkan tingkat perhatian Anda lebih dari 70 untuk mengaktifkan relai pertama , naikkan tingkat meditasi lebih dari 70 untuk mengaktifkan relai kedua , dan tingkatkan keduanya lebih dari 70 untuk mengaktifkan relai ketiga . Ini agak rumit tetapi tidak mustahil setelah beberapa pelatihan pikiran. Jika sudah dihidupkan, gunakan perintah yang sama untuk mematikannya (jadi jika dihidupkan capai lagi 70 untuk mematikannya). Setelah sistem selesai, Anda dapat menghubungkan perangkat bertegangan tinggi (lampu, TV, PC, kipas pendingin, apa pun yang Anda inginkan) ke modul relai.

Mengontrol Mouse

Kursor dikendalikan dengan emosi. Jika tingkat perhatian di bawah 25 langkah ke kiri , jika antara 25 dan 50 bergerak ke kanan , jika antara 50 dan 75 bergerak ke atas dan jika antara 75 dan 100 bergerak ke bawah . Anda dapat mengklik dengan meningkatkan tingkat meditasi. Seperti yang saya katakan sebelumnya, tingkat perhatian dapat dengan mudah dikontrol dengan emosi (untuk saya).

Mengontrol Robot

Robot hanya memiliki tiga pernyataan berbeda:berhenti, belok kiri, dan maju. Mengapa hanya dua pilihan gerakan? Karena dua arah ini cukup untuk menggerakkan robot kemanapun Anda mau. Gunakan tingkat meditasi Anda untuk berputar dengan robot, dan ketika Anda mencapai arah di mana Anda ingin bergerak, hentikan robot, lalu maju dengan tingkat perhatian . Ini adalah metode yang lebih baik untuk mengontrol robot dan bahkan pemula, yang tidak dapat mengontrol nilai perhatian/meditasi mereka dengan baik, dapat bermain dengan robot ini.

Rencana Saya

Ini adalah gambaran lama tentang rencana saya, tetapi berhasil, jadi saya sangat senang dengan hasilnya. Headset mentransmisikan sinyal BT (Bluetooth) ke Arduino Mega yang menganalisis byte yang masuk dan tergantung pada pemikiran pengguna yang mengontrol fitur yang berbeda. Sangat sulit untuk menemukan cara terbaik untuk mengirimkan banyak data ini, tetapi saya memilih Bluetooth daripada WiFi. Awalnya saya ingin menggunakan Particle Photon sebagai pengirim data, tetapi si kecil itu mendapat peran yang lebih baik dalam pembuatan webserver. Itu adalah modifikasi terbesar di seluruh proyek. (Pada gambar Anda dapat melihat rencana yang sebenarnya). Saya menggunakan modul Arduino buatan sendiri , karena saya suka mendesain sirkuit saya sendiri. Anda dapat membeli modul ini secara online jika Anda mau atau membangun sendiri bersama saya.

Setengah tahun belajar dan bereksperimen

Saya banyak bekerja pada proyek ini dan ya, saya mulai hampir setengah tahun yang lalu, tetapi dengan Foton hal-hal dipercepat. Sangat mudah untuk menggunakan dasbor mereka. Omong-omong, ada banyak tutorial di internet cara meretas mainan EEG, yang sedikit membantu saya, tetapi tidak memiliki fungsi tambahan. Jadi saya memutuskan untuk meretas mainan Necomimi ini dan menggunakan kreativitas saya, saya membuat perangkat ini yang memiliki lebih banyak fitur daripada mengedipkan LED. Semoga Anda menikmatinya!

Mari kita mulai!

Meretas Mainan Necomimi

Kami ingin memodifikasi mainan EEG ini untuk mengirimkan data melalui Bluetooth jadi pertama-tama bongkar casingnya. Sekrupnya ada di bawah stiker.Lepas stiker dan bagian belakang perangkat dan Anda akan menemukan di dalam sirkuit kecil. Yang berada di bawah sirkuit utama adalah chip Neurosky TGAM. Ini terhubung dengan empat pin header ke papan mikrokontroler utama jadi ambil besi solder dan lepaskan sirkuit ini dengan hati-hati. Sekarang solder tiga kabel ke pin GND ke pin VCC dan ke pin T. T-pin adalah pin pemancar dengan 57600 baud rate, ini mengirimkan paket data ke mikrokontroler kami, tetapi saya menghubungkannya langsung ke modul HC-06 slaveBT . HC-06 diatur ke 9600 baud rate tapi jangan khawatir kami akan memperbaiki masalah ini. Jika Anda menyolder tiga kabel ke kabel, Anda dapat membangun sumber daya Anda sendiri yang dapat diisi ulang. Saya menggunakan baterai Li-Ion 500mAh, rangkaian pengisi daya USB, rangkaian step up 5v dan dua resistor (100 ohm dan 200 ohm) untuk memastikan catu daya 3,4 volt yang sempurna untuk chip dan modul Bluetooth. Ikuti skema untuk membangun sirkuit yang dibutuhkan dalam headset. Jika rangkaian selesai, konfigurasikan modul Bluetooth.

Tentang chip:

Neurosky ThinkGear AM dirancang untuk menyaring, memperkuat, dan mengirim data melalui antarmuka serial. Info lebih lanjut di sini.

Skema / Elektronik

Ikuti petunjuk dan gambar di bawah dan buat headset EEG nirkabel Anda sendiri.

Anda memerlukan baterai Lithium-Ion 500mAh, modul peningkatan tegangan 5v untuk menghasilkan tegangan yang stabil, kemudian resistor 100 Ohm dan 200 Ohm untuk menurunkan tegangan menjadi stabil 3,3 Volt. Saya menyolder pin header perempuan untuk menyalakan dan mengirimkan data ke modul bluetooth.

Yang bagian terpenting adalah menghubungkan pin "T" dengan "RX" pada modul Bluetooth. Ini menghidupkan proyek kami.

Mengonfigurasi modul Bluetooth

HC-06:Pertama-tama muat sketsa bernama“HC_06_Bluetooth” ke Arduino UNO kemudian hubungkan modul Bluetooth seperti yang ditunjukkan oleh skema. Saya menemukan skema ini di situs web tim Artronix dan sepertinya berguna.


void setup() {   // Mulai serial perangkat keras.Serial.begin(9600); // default HC-06 baud ratedelay(1000);Serial.print("AT");delay(1000);Serial.print("AT+VERSION");delay(1000);Serial.print("AT+PIN "); // untuk menghapus passworddelay(1000);Serial.print("AT+BAUD7"); // Setel baudrate ke 576000 - misalnya Necomimi dafaultdelay(1000);Serial.begin(57600); // delay(1000);}void loop() {} 

Buka Serial Monitor Anda di Arduino IDE dan tunggu hingga Arduino mengonfigurasi modul BT. Sekarang modul Bluetooth Anda disetel ke kecepatan 57600baud . Anda dapat mencoba banyak aplikasi BCI (Brain Computer Interface), karena bluetooth yang diretas mainan Necomimi ini akan kompatibel dengan semua aplikasi Neurosky.


Anda dapat menggunakan aplikasi ini untuk belajar mengontrol gelombang otak dan nilai-nilai Anda, seperti perhatian atau meditasi. Anda dapat mencoba banyak game keren, tetapi saya merekomendasikan aplikasi ini (kompatibel dengan PC, iOS, dan 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


Kemudian gunakan "HC_05_Bluetooth" dan memuat ke Arduino Anda dengan cara yang sama seperti sebelumnya. Hubungkan pin "EN" dari HC-05 ke 3v3 Arduino. Anda harus menulis alamat modul HC-06 Anda dalam kode. Periksa alamat modul BT dengan smartphone Android, seperti saya. Ganti ":" (titik ganda) dengan "," koma dalam kode.

Dan Anda harus mengubah alamat dalam kode:

20:15:09:15:17:82 ==> 2015,09,151782 Dengan cara ini modul HC-05 dapat mengenali alamat. Jadi tinggalkan beberapa ":", karena tidak perlu.

// HC-05 configurationvoid setup() { // Mulai serial perangkat keras. Serial.begin(9600); // default HC-05 baud rate delay(1000); Serial.print("AT"); penundaan (1000); Serial.print("AT+VERSI"); penundaan (1000); Serial.println("AT+ROLE=1"); //set HC-05 ke mode master delay(1000); Serial.println(" AT+LINK="copy here your address"); //sekarang modul akan terhubung secara otomatis delay(1000); Serial.print("AT+UART=57600,1,0"); // Set baudrate ke 576000 Serial.begin(57600); // delay(1000);}void loop() {} 

Akhirnya kedua modul harus terhubung satu sama lain. Jika Anda mengalami masalah, klik tautan ini untuk membaca lebih lanjut.

Robot Terkendali Jarak Jauh

Untuk membuat robot murah ini, saya menggunakan teknologi IR 38kHz , yang digunakan di remote kontrol TV. Saya membeli dari Amazon achassis untuk robot saya. Penerima IR diambil dari TV lama dan Arduino juga dari Amazon. Saya menambahkan tautan ke bagian-bagiannya (lihat di bagian Perangkat Keras).

Sirkuit driver motor

Anda memerlukan bagian ini:

  • 2 Terminal Sekrup
  • IC L293D
  • 3 Pin Tajuk
  • 9 Pin Header (90 derajat)
  • Resistor 1k
  • LED Merah
  • Kabel
  • Papan PCB

Saya menggunakan beberapa kabel tembaga dan mengikuti skema menghubungkan pin IC ke pin header. Tidak masalah pin mana yang mengarah ke pin header mana, ingatlah bahwa Anda telah menghubungkannya. LED dihubungkan secara seri dengan resistor dan paralel dengan VCC 5v.

Merakit sasis

Langkah ini sangat mudah, menggunakan obeng dan beberapa keterampilan membuat bingkai dalam lima menit. Setelah ini datang bagian yang lebih sulit, kita harus membangun sirkuit driver motor. Untuk mengendalikan motor saya pilih IC L293D yang bisa menggerakkan dua motor. Lihatlah skema untuk membangun sirkuit.

Hubungkan bagian-bagian ke Arduino

Saya menggunakan kabel jumper untuk menghubungkan sensor dan driver motor ke Arduino.

Pin Arduino ==> Pengemudi Motor

 4 ==> 15

                   5 ==> 10

                   6 ==> 7

                   7 ==> 2

               VIN ==> 8

                 5v ==> 1, 9, 16

             GND ==> 4, 5, 13, 12

Jadi lihat skema modul L293D, lalu sambungkan pinnya ke Arduino UNO seperti yang saya tulis di sini. Pin 5v Arduino harus terhubung ke 1, 9, 16 pin untuk mengaktifkan fungsi driver motor IC. Kemudian terakhir gunakan sekrup untuk menyalakan motor.

Menulis kode…

Dengan menggunakan perpustakaan IRremote, saya membuat kode yang membaca sinyal inframerah 38kHz, menerjemahkannya, lalu menggerakkan robot. (Unduh perpustakaan di bagian Kode).

Saya menambahkan penjelasan dalam kode, tetapi intinya adalah bahwa menerjemahkan sinyal IR yang datang dari server utama, kemudian tergantung pada apa yang diinginkan pengguna, gerakkan motor daripada yang akan menggerakkan robot ke depan atau ke kiri. Unduh kode:"Robot_Code" . Muat ini ke Arduino Anda dan robot Anda akan selesai.



Server Utama (Arduino Mega, Leonardo, Foton)

Server membaca paket data yang masuk dari headset nirkabel. Kami akan menggunakan modul BT yang dikonfigurasi untuk memastikan koneksi antara headset dan server. Arduino Mega adalah otak dari rangkaian, semuanya terhubung ke mikrokontroler ini:Bluetooth, LED pemancar inframerah, server web, dan pengontrol mouse. Kodenya agak rumit, tapi saya menambahkan penjelasan untuk dipahami.

Kasus

Ini sederhana tapi terlihat hebat. Saya memotong dua piring berukuran 18x15 cm yang ujungnya dihaluskan dengan amplas. Menggunakan beberapa sekrup, saya menghubungkannya satu sama lain.

Sirkuit Relay

Anda memerlukan bagian ini:

  • Transistor 2n2222 (3 PCS)
  • dioda germanium (3 PCS)
  • Resistor 330 ohm (3 PCS)
  • Resistor 1k Ohm (3 PCS)
  • Relai 5v (3 PCS)
  • kabel penghubung
  • pin header
  • Papan PCB

Sebuah gambar bernilai lebih dari seribu kata, jadi alih-alih mencoba menulis bagaimana Anda menghubungkan bagian-bagian pada PCB, lihat skema Jika pin "Sinyal" mendapat sinyal dari Arduino, relai akan menyala. Transistor memperkuat sinyal untuk memastikan daya yang cukup untuk relai. Kami akan menggunakan 37-38-39 pin untuk mengontrol level TINGGI-RENDAH setiap relai.

Pasang Bagian dalam Casing

Untuk memasang bagian-bagian pada kotak kaca plexy saya menggunakan selotip putih dua sisi. Ini mengunci dan menahan sirkuit pada casing dengan cukup kuat.

Sirkuit Server

Server ini berbasis software sehingga membuat rangkaian tidak terlalu sulit. (Lihat skema downer). Anda hanya perlu menyalakan mikrokontroler dan membuat koneksi di antara mereka. LED IR terhubung ke pin D3 dan  relai ke 37-38-39. D16 dari Arduino Mega pergi ke RX dari Foton dan D18 ke RX dari Leonardo.

Koneksi dengan 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();" sintaksis. We should have to say a big "thank you" for the developers of the dashboard. They saved a lot of time for us.

Writing codes in a browser?

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


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

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

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

Use the "RobotControlllerHeadset" code inthe Software section. Connect an IR LED to the D3 pin on the Mini Pro (Or Arduino UNO) and connect the T pin of the NeuroSky chip to the RX pin of the Arduino. Power up with 3.3 or 5 volts and you're done. So build the robot, then use this code in your headset: 

#include #include #include IRsend irsend;Brain brain(Serial);const int ledPin =3; long interval =500; long previousMillis =0;int ledState =LOW; int medValue;void setup() { // Set up the LED pin. pinMode(ledPin, OUTPUT); // Start the hardware serial. Serial.begin(57600);}void loop() { // Expect packets about once per second. if (brain.update()) { Serial.println(brain.readCSV()); // Attention runs from 0 to 100. medValue =brain.readMeditation(); } // Make sure we have a signal. if(brain.readSignalQuality() ==0) { // Send a signal to the LED. if (medValue> 65) {irsend.sendNEC(0xFF10EF, 32); penundaan (40); } if (brain.readAttention()> 65) {irsend.sendNEC(0xFF18E7, 32); penundaan (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!

Kode

  • 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) + "%"); penundaan(2000); Spark.publish("Meditation", (med) + "%"); penundaan(2000); Spark.publish("Last Function", (function) + ""); penundaan(2000); if (Serial.available> 0) { char c =Serial.read(); } delay(10); switch(c) { case'a':att =10; merusak; case'b':att =20; merusak; case'c':att =30; merusak; case'd':att =40; merusak; case'e':att =50; merusak; case'f':att =60; merusak; case'g':att =70; merusak; case'h':att =80; merusak; case'i':att =90; merusak; case'j':att =100; merusak; case'k':med =10; merusak; case'l':med =20; merusak; case'm':med =30; merusak; case'n':med =40; merusak; case'o':med =50; merusak; case'p':med =60; merusak; case'q':med =70; merusak; case'r':med =80; merusak; case's':med =90; merusak; case't':med =100; merusak; 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"); penundaan (1000); Serial.print("AT+VERSION"); penundaan (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); merusak; case 'd':// move mouse down Mouse.move(0, 8); merusak; case 'l':// move mouse left Mouse.move(-8, 0); merusak; case 'r':// move mouse right Mouse.move(8, 0); merusak; case 'c':// perform mouse left click Mouse.click(MOUSE_LEFT); merusak; } }}
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"); penundaan (40); } if (meditation> 70) { irsend.sendNEC(0xFF10EF, 32); //spin webserver.println("q"); penundaan (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"); penundaan (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"); penundaan (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"); penundaan (40); mousecontrol(); //you'll be able to control the mouse } Serial.println(brain.readCSV()); //print the data on serial monitor, not necessary, it's only for testing }}void relay() { webserver.println(""); if (brain.update()) { if ((blinklength> 0) &&(blinklength <2000)) { //if you close eyour eyes for 2 seconds loop(); //you'll exit the relay controller mode } if(attention> 70) { //turn on relay1 digitalWrite(37, HIGH); webserver.println("g"); prevsignal =1; } if(meditation> 70) { //turn on relay2 digitalWrite(37, HIGH); webserver.println("q"); prevsignal =1; } if(1000> blinklength> 0) { //turn on relay3 digitalWrite(37, HIGH); webserver.println("qj"); prevsignal =1; } if((attention> 70) &&(prevsignal ==1)) { digitalWrite(37, LOW); webserver.println("q"); prevsignal =1; //check if is already turned on, then turn off } if((meditation> 70) &&(prevsignal ==1)) { digitalWrite(37, LOW); webserver.println("qj"); prevsignal =1; //check if is already turned on, then turn off } if((1000> blinklength> 0) &&(prevsignal ==1)) { digitalWrite(37, LOW); webserver.println("a"); prevsignal =1; //check if is already turned on, then turn off } }}void mousecontrol() { //you'll need a few hours of practice to control the cursor perfectly webserver.println("z"); //forward data to the webserver if(brain.update()) { if (0  70) { mouse.println('c'); //click webserver.println("t"); } }}
RobotControllerHeadset.inoArduino
For those who want to build an IR robot.
#include #include #include IRsend irsend;Brain brain(Serial);const int ledPin =3; long interval =500; long previousMillis =0;int ledState =LOW; int medValue;void setup() { // Set up the LED pin. pinMode(ledPin, OUTPUT); // Start the hardware serial. Serial.begin(57600);}void loop() { // Expect packets about once per second. if (brain.update()) { Serial.println(brain.readCSV()); // Attention runs from 0 to 100. medValue =brain.readMeditation(); } // Make sure we have a signal. if(brain.readSignalQuality() ==0) { // Send a signal to the LED. if (medValue> 65) {irsend.sendNEC(0xFF10EF, 32); penundaan (40); } if (brain.readAttention()> 65) {irsend.sendNEC(0xFF18E7, 32); penundaan (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

Skema

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

Proses manufaktur

  1. Membangun Jaringan Sensor Nirkabel di Rumah Anda
  2. Aksesori terbaik untuk Raspberry Pi Anda
  3. Cara Menggunakan Lem pada Tempat Tidur Cetak Mark One
  4. Mengambil Tetesan Air Dengan Arduino
  5. Hambatan Menghindari Robot Dengan Motor Servo
  6. Robot Pengikut Baris
  7. Ketahui Suhu Rumah Anda Dari Mana Saja dengan Arduino Cloud!
  8. Seberapa Mudah Menggunakan Termistor?!
  9. 4 Tanda Utama Motor Anda Mencapai Akhir Masa Pakainya
  10. Motor DC vs. AC:Apa Bedanya?