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

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Komponen dan Perlengkapan

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini
Arduino MKR1000
× 1
Drone Balap Mini
× 1
Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini
Kapasitor 100 µF
× 4
Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini
Resistor 221 ohm
× 4
Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini
Kabel Jumper (umum)
× 12
Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini
Papan Roti (umum)
× 1
Mindwave Neurosky
× 1

Alat dan Mesin yang Diperlukan

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini
Pakuin (umum)
Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini
Obeng Digilent

Aplikasi dan Layanan Online

Processing 3
Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini
Arduino IDE

Tentang Proyek Ini

Latar Belakang

Saya merasa drone menakjubkan, mesin terbang kecil yang dapat melakukan hampir segalanya. Ketika saya mendapat kesempatan untuk melakukan proyek dengan teknologi canggih, saya memutuskan untuk mewujudkan mimpi anak laki-laki, mengontrol drone dengan pikiran Anda.

Dalam penelitian yang saya lakukan untuk proyek ini, saya tidak menemukan tutorial yang membahas cara mudah melakukan hack pada pengontrol drone. Sebagian besar tutorial yang tersedia tentang cara membuat drone Anda sendiri menggunakan Arduino atau cara melakukan hack protokol transmisi.

Tutorial ini mencakup konsep paling dasar tentang melakukan hack pada PCB untuk mengontrolnya secara digital. Tujuan tutorial ini adalah untuk mengajarkan konsep dasar yang akan memungkinkan Anda bereksperimen sendiri dengan drone dan menciptakan sesuatu yang menyenangkan.

Peringatan

Anda berpotensi dapat merusak drone atau pengontrolnya dan membuatnya tidak dapat digunakan.

Proyek ini tidak akan membahas cara mengarahkan drone Anda hanya lepas landas danendarat.

Anda tidak harus menggunakan sensor MindWave / EEG, Anda dapat menggunakan masukan apa pun yang Anda inginkan. Tetapi mengontrol drone dengan pikiran Anda adalah sesuatu yang luar biasa!

Video Tutorial

Keterampilan yang Anda Butuhkan

Tutorial ini mengasumsikan Anda memiliki pengalaman dalam mengelem dan mencabut lem.

Daftar Komponen

  • Drone + pengontrol
  • Stasiun Pengeleman + aksesori (kabel tembaga bermata, pompa penyedot lem, tangan bantu, kabel inti padat, timah)
  • Multimeter
  • Sensor MindWave
  • Arduino MKR1000
  • Papan Roti
  • 4x kapasitor 100uF
  • 4x Resistor 220Ω
  • 12x Kabel Jumper
  • 6 Kabel klip buaya (opsional)

Anda juga membutuhkan 4 resistor dengan nilai resistansi yang belum diketahui.

Fase 1: PCB Drone

Anda dapat menggunakan hampir drone apa pun yang Anda inginkan. Sebagian besar pengontrol bekerja dengan joystick dua sumbu. Joystick ini akan kita lewati.

Pertama, buka casing pengontrol Anda. Pengontrol ini menggunakan dua baterai 1.5v yang sekitar 3.3v. Nilai ini sama dengan output Arduino MKR1000.

Mungkin untuk menggunakan Arduino lain sesuai selera Anda, tetapi waspada Anda dapat merusak papan sirkuit jika Anda memberi tegangan lebih dari yang dapat ditangani PCB. ( Saya berbicara dari pengalaman. )

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Ukurlah dengan multimeter tegangan tengah, tinggi dan rendah dari joystick setelah diberi daya. Tulis mereka untuk nantinya digunakan.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Cabut komponen joystick dari PCB.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Dalam kenyataannya komponen joystick ini hanyalah potensiometer. Potensiometer adalah resistor variabel analog. Anda dapat mengukur resistansi maksimum dengan multimeter. Hubungkan multimeter ke + dan - untuk membaca resistansi.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Solder (dalam kasus ini resistor 10Ω) 4 resistor pada lubang + dan - dari joystick untuk melengkapi sirkuit.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Juga, solder kabel inti padat ke port + (B+ pada papan ini) dan - (B- pada papan ini) pada PCB. Dan solder kabel inti padat ke port sinyal joystick.

Sekarang Anda telah menyiapkan pengontrol Anda untuk langkah berikutnya.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Fase 2: Digital ke Analog

Ketika Anda menggunakan AnalogWrite pada Arduino Anda output akan sinyal PWM (Modulasi Lebar Pulsa). Sinyal akan mengubah nilainya sendiri HIGH dan LOW pada frekuensi yang ditentukan.

PCB yang sudah kita siapkan tidak suka PWM, itu mengharapkan tegangan stabil.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Untuk menciptakan nilai analog kita dapat menggunakan berbagai konverter digital ke analog seperti chip DAC atau filter Tangga RF.

Karena itu saya ingin menjaga proyek ini sederhana mungkin saya akan mengajarkan Anda cara menggunakan Filter Low Pass, yang akan memberi kita output yang diinginkan.

Untuk menciptakan Low pass filter Anda membutuhkan kapasitor dan resistor.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Salah satu ciri filter low pass adalah tegangan analog akan berubah secara bertahap (memerlukan waktu). Sirkuit ini paling bagus bagi saya karena memberikan hasil yang diinginkan dan menggunakan jumlah komponen yang sedikit.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Fase 3: Sirkuit Arduino

Bagian utama dari sirkuit kita adalah filter low pass yang baru kita ciptakan. Buat empat di baris dan kita memiliki tegangan analog untuk semua input pengontrol.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Hubungkan output yang benar ke input yang benar pada PCB pengontrol. Pastikan Anda mendapatkannya dengan benar sebelum mengunggah Sketsa Arduino.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Tata letak drone standar adalah sebagai berikut:

  • Throttle => atas / bawah di sisi kiri pengontrol
  • Yaw => kiri / kanan di sisi kiri pengontrol
  • Pitch => atas / bawah di sisi kanan pengontrol
  • Roll => kiri / kanan di sisi kanan pengontrol

Setelah semuanya terhubung Anda dapat mengunggah sketsa Anda ke Arduino MKR1000. Anda dapat menemukan sketsa di bagian bawah tutorial ini.

Arduino akan menggantikan baterai dan dapat mengirim sinyal (sebagai tegangan) ke joystick yang dilalui. Saat ini Anda dapat membangun program dan eksperimen Anda sendiri untuk mengontrol drone dengan PWM.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Saya akan menunjukkan kepada Anda cara menggunakan Processing dan sensor MindWave untuk mengangkat drone dari tanah.

Fase 4: Kontrol Pikiran

Instal semua driver pada komputer Anda. Sensor MindWave ini dilengkapi dengan CD.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Pasangkan sensor MindWave ke komputer Anda dengan Bluetooth. Tahan tombol atas selama 3 detik dan LED biru akan berkedip dua kali, sekarang dapat ditemukan.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Setelah terhubung Anda memulai processing.

Instal perpustakaan MindSet yang dibuat oleh Jorge C. S Cardoso untuk processing dari https://jorgecardoso.eu/processing/MindSetProcessing/#download

Ekstrak perpustakaan di folder perpustakaan Anda. Anda dapat menemukan folder perpustakaan di folder processing Anda.

Pastikan port com- Anda benar dalam setup, atau Anda akan akhirnya mendapat error. Anda dapat menemukan port com di manajer perangkat Anda.

Anda juga dapat menemukan port com Arduino di bawah "Alat" di Arduino IDE di "Port"

Anda juga dapat menemukan port com sensor MindWave di Preferensi ThinkGear Connector (Anda mendapat program ini saat Anda menginstal driver) di bawah "Opsi"

receiver = new Serial(this, "COM10", 115200); mindSet = new MindSet(this, "COM5"); 

Processing berkomunikasi dengan Arduino Anda melalui Serial. Anda dapat mengubah kode Processing sesuai selera Anda, baca komentar dalam sketsa untuk memahami apa yang terjadi.

Jalankan sketsa Processing Anda dan konsentrasikan pada drone Anda. Ketika tingkat konsentrasi Anda di atas 40% drone akan lepas landas. Semakin keras Anda berkonsentrasi semakin agresif drone akan menjadi. Anda dapat mendaratkan drone dengan membiarkan pikiran Anda melayang dan berhenti berkonsentrasi.

Drone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Kesimpulan

Saya berharap tutorial ini memberikan wawasan kepada Anda tentang betapa sederhana melakukan hack pada pengontrol drone (atau PCB apa pun) dan memberinya masukan lain. Anda dapat mengetahui melalui eksperimen cara mendapatkan masukan lain untuk mengontrol dan cara membuat gerakan lain selain lepas landas danendarat.

Saya bersemangat untuk melihat hal-hal canggih yang kalian buat!

Kode

  • Processing master
  • Drone Control
Processing masterProcessing
Connects to the MindWave sensor via Bluetooth Serial and sends the attention value as an 8-bits integer to the controller
/* * Drone mind control * * This sketch sends Serial values to an receiver receiver * * The input is generated via a Neurosky MindSet Mobile headset * * Created 21 March 2018 * By Wesley Hartogs * Communication and Multimedia Design * Avans University of Applied Sciences * * */ // import Serial libary import processing.serial.*; // Define receiver Serial Serial receiver ; // Import MindSet libary import pt.citar.diablu.processing.mindset.*; MindSet mindSet; // Set inital values int throttle = 0; int yaw = 127; int pitch = 127; int roll = 127; void setup() { size(150, 500); // Initiate Serial communication at COM10 receiver = new Serial(this, "COM10", 115200); // Initiate MindSet communication // The MindSet uses Bluetooth Serial communication, // Check the COM-pot in the ThinkGear Connector in your Device Manager mindSet = new MindSet(this, "COM5"); // Enable anti-aliassing smooth(); // Set stroke properties strokeWeight(5); stroke(255); strokeCap(SQUARE); // Set line colour fill(255); } // setup() void draw() { // Start with a black background background(0); // Draw horizontal line to at 40% from bottom // This line indicates the minimum (40%) attention needed line( 0, height*0.60, width, height*.60); // Draw a line from the horizontal center upwards // This line gives an indication of your attention // The height is mapped in reverse to get a percentage from top // Example: by 40% (0.4) attention the height value is (100 - 40) 60% (0.6) from top line( width*.5, height, width*.5, height*map( float( attentionLevel ) / 100, 0, 1, 1, 0 ) ); // Push the attention level to the throttle variable // 40 = minimum attention needed to do something // 100 = maximum attention // 30 = 8-bit min value for Arduino // 255 = 8-bit max value for Arduino throttle = int( map( attentionLevel, 40, 100, 30, 255 ) ); // Constrain values to 8 bit values to prevent errors throttle = constrain( throttle, 0, 255); pitch = constrain( pitch, 0, 255); roll = constrain( roll, 0, 255); yaw = constrain( yaw, 0, 255); // When there is communication possible send the values to the Arduino receiver if ( receiver .available() > 0) { println( "attentionLevel: "+attentionLevel+" throttle: "+throttle+" yaw: "+yaw+" pitch: "+pitch+" roll: "+roll ); receiver .write( "throttle: "+throttle+" yaw: "+yaw+" pitch: "+pitch+" roll: "+roll ); } } // draw() // Killswitch, press K to reset and close the program void keyPressed() { if (key == 'k' || key == ESC) { if ( receiver .available() > 0) { receiver .write("throttle: "+0+" yaw: "+127+" pitch: "+127+" roll: "+127); exit(); } } } // MindSet variables and functions int signalStrenght = 0; int attentionLevel = 0; public void attentionEvent( int attentionLevel_val ) { attentionLevel = attentionLevel_val; } // This function is activated when the connection with the MindSet is not optimal public void poorSignalEvent( int signalNoise ) { // MindSet is adjusting if ( signalNoise == 200 ) { println( "Mindset is not touching your skin!" ); } // Map the signal strenght to a percentage signalStrenght = int( map( ( 200-signalNoise ), 200, 0, 100, 0 ) ); println( "Signal strength: " + signalStrenght + "%" ); } 
Drone ControlArduino
his sketch receives Serial input values (from processing) and sends these values to the hacked controller.
/* * Drone control * * This sketch receives Serial input values (from processing) and sends these values to the hacked controller. * Use this program only with the Arduino MKR1000 (or another 3.3 volt output based Arduino) * * The circuit: * - 4 Low Pass filters with 100 µF capacitors and 220Ω resistors * - Hacked drone controller * * Created 21 March 2018 * By Wesley Hartogs * Communication and Multimedia Design * Avans University of Applied Sciences * * Use this sketch at your own risk. * */ // Set initial values int throttle = 0; int yaw = 255/2; // 3.3v / 2 int pitch = 255/2; // 3.3v / 2 int roll = 255/2; // 3.3v / 2 int throttlePin = 2; // PWM int yawPin = 3; // PWM int pitchPin = 4; // PWM int rollPin = 5; // PWM void setup() { // Begin Serial communication at 115200 baud Serial.begin( 115200 ); // Set pinModes pinMode( throttlePin, OUTPUT ); pinMode( yawPin, OUTPUT ); pinMode( pitchPin, OUTPUT ); pinMode( rollPin, OUTPUT ); } void loop() { // When there is an Serial connection available, get the values if ( Serial.available() > 0 ) { throttle = Serial.parseInt(); // Store first interger value from Serial buffer yaw = Serial.parseInt(); // Store second interger value from Serial buffer pitch = Serial.parseInt(); // Store third interger value from Serial buffer roll = Serial.parseInt(); // Store fourth interger value from Serial buffer } // Write values to the drone controller // Use a low pass filter or DAC (digital to analog converter) to convert PWM to an analog voltage analogWrite( throttlePin, throttle ); analogWrite( yawPin, yaw ); analogWrite( pitchPin, pitch ); analogWrite( rollPin, roll ); } 

Skematik

Convert PWM signal to analog voltageDrone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap MiniCircuit to wire Arduino MK1000 to the hacked controllerDrone Dikontrol Otak: Menggunakan EEG untuk Terbangkan Drone Balap Mini

Proses manufaktur

  1. Detektor Bahasa TinyML dengan Edge Impulse pada Arduino Nano 33 BLE Sense
  2. Buat Game Gyroskop Real-Time dengan Arduino Nano & Sensor MPU-6050
  3. Proyek Dadu Digital Arduino: Buat Generator Angka Acak berbasis LCD
  4. Buat Sendiri Game Roulette 37 LED dengan Arduino Nano
  5. ATtiny85 Mini Arcade: Snake – Buat Konsol Game OLED Tangan
  6. Detektor Jarak Portabel – Kit DIY Arduino Nano dengan HC‑SR04, Baterai 18650, dan Kotak Cetak 3D
  7. Pengontrol Kelembapan Arduino DIY dengan Relay – Pengaturan Tegangan Tinggi yang Aman
  8. Robot Pegang Terdahalih Jarak Jauh Lanjut untuk Pengendalian Presisi
  9. Proyek Pelapisan Tembaga: Bangun Sistem Cerdas dengan Arduino UNO
  10. Pong Matriks NeoPixel pada Arduino Nano: Buat Game Pong Neon