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

Drone Kontrol Pikiran

Komponen dan persediaan

Arduino MKR1000
× 1
Drone Balap Mikro
× 1
Kapasitor 100 F
× 4
Resistor 221 ohm
× 4
Kabel jumper (generik)
× 12
Breadboard (generik)
× 1
Mindwave Neurosky
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Obeng Rajin

Aplikasi dan layanan online

Memproses 3
Arduino IDE

Tentang proyek ini

Latar belakang

Saya menemukan drone menarik, mesin terbang kecil yang dapat melakukan apa saja. Ketika saya mendapat kesempatan untuk melakukan proyek dengan teknologi keren, saya memutuskan untuk mewujudkan impian anak laki-laki, mengendalikan drone dengan pikiran Anda.

Dalam penelitian yang saya lakukan untuk proyek ini saya tidak menemukan tutorial yang mencakup bagaimana Anda dapat meretas pengontrol drone dengan mudah. Sebagian besar tutorial yang tersedia adalah tentang bagaimana Anda dapat membuat drone Anda sendiri menggunakan Arduino atau cara meretas protokol transmisi.

Tutorial ini mencakup konsep paling dasar meretas PCB untuk mengontrolnya secara digital. Tujuan dari tutorial ini adalah untuk mempelajari konsep dasar yang memungkinkan Anda bereksperimen sendiri dengan drone dan menciptakan sesuatu yang menyenangkan.

Pemberitahuan

Anda berpotensi dapat membunuh drone atau pengontrol dan membuatnya tidak dapat digunakan.

Proyek ini tidak akan membahas cara mengarahkan drone Anda hanya saat lepas landas dan mendarat.

Anda tidak perlu sensor MindWave / EEG, Anda dapat menggunakan input apa pun yang Anda inginkan. Tapi mengendalikan drone dengan pikiran Anda adalah hal yang luar biasa!

Video tutorial

Keterampilan yang Anda butuhkan

Tutorial ini mengasumsikan Anda memiliki semacam pengalaman dengan penyolderan dan pematrian.

Daftar bagian

  • Drone + pengontrol
  • Stasiun Solder + aksesori (kawat tembaga dikepang, pompa desolder, uluran tangan, kabel inti padat, timah)
  • Multimeter
  • Sensor Gelombang Pikiran
  • Arduino MKR1000
  • Papan tempat memotong roti
  • kapasitor 4x 100uF
  • Resistor 4x 220Ω
  • 12x Kabel jumper
  • 6 kabel penjepit buaya (opsional)

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

Fase 1:Drone PCB

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

Pertama, buka casing pengontrol Anda. Kontroler ini menggunakan dua baterai 1.5v yang kira-kira 3.3v. Nilai ini sama dengan keluaran Arduino MKR1000.

Dimungkinkan untuk menggunakan Arduino lain yang Anda sukai, tetapi perlu diketahui bahwa Anda dapat merusak papan sirkuit jika Anda memberikan tegangan lebih yang dapat ditangani oleh PCB. (Saya berbicara dari pengalaman.)

Ukur dengan multi-meter berapa tegangan tengah, tinggi dan rendah dari joystick setelah dinyalakan. Tuliskan untuk digunakan nanti.

Lepas solder komponen joystick dari PCB.

Pada 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.

Solder (dalam hal ini resistor 10Ω) 4 resistor pada lubang + dan - joystick untuk menyelesaikan rangkaian.

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

Sekarang Anda telah menyiapkan pengontrol untuk langkah selanjutnya.

Fase 2:Digital ke analog

Saat Anda menggunakan AnalogWrite dengan Arduino Anda, outputnya akan menjadi sinyal PWM (Pulse Width Modulation). Kemenangan akan mengubah nilainya sendiri TINGGI dan RENDAH dalam frekuensi yang ditentukan.

PCB yang kami siapkan tidak menyukai PWM, ia mengharapkan tegangan yang stabil.

Untuk membuat nilai analog, kita dapat menggunakan berbagai konverter digital ke analog seperti chip DAC atau filter RF Ladder.

Karena itu saya ingin membuat proyek ini sesederhana mungkin. Saya akan mempelajari cara menggunakan Filter Lulus Rendah, yang akan memberi kita keluaran yang diinginkan.

Untuk membuat filter lolos rendah Anda memerlukan kapasitor dan resistor.

Salah satu karakteristik filter lolos rendah adalah tegangan analog akan berubah secara bertahap (membutuhkan beberapa waktu). Sirkuit ini paling cocok untuk saya karena memberi saya hasil yang diinginkan dan menggunakan sedikit suku cadang.

Fase 3:Sirkuit Arduino

Bagian utama dari rangkaian kami adalah filter lolos rendah yang kami buat baru-baru ini. Buat empat dari mereka berturut-turut dan kami memiliki tegangan analog untuk keempat input pengontrol.

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

Tata letak drone standar adalah sebagai berikut:

  • Throttle => atas / bawah di sisi kiri pengontrol
  • Yaw => kiri / kanan di sisi kiri pengontrol
  • Pitch => naik / turun di sisi kanan pengontrol
  • Gulung => kiri / kanan di sisi kanan pengontrol

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

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

Sekarang saya akan menunjukkan cara menggunakan Processing dan sensor MindWave untuk melepaskan drone.

Fase 4:Kontrol pikiran

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

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

Setelah terhubung, Anda mulai memproses.

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

Buka zip perpustakaan di folder perpustakaan Anda. Anda dapat menemukan folder perpustakaan di folder pemrosesan Anda.

Pastikan com-port Anda benar dalam pengaturan, atau Anda akan berakhir dengan kesalahan. Anda dapat menemukan com-port di pengelola perangkat Anda.

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

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

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

Pemrosesan berkomunikasi dengan Arduino Anda melalui Serial. Anda dapat mengubah kode Pemrosesan sesuai keinginan Anda, baca komentar di sketsa untuk memahami apa yang sedang terjadi.

Jalankan sketsa Pemrosesan Anda dan berkonsentrasilah pada drone Anda. Ketika tingkat konsentrasi Anda di atas 40% drone akan lepas landas. Semakin keras Anda berkonsentrasi, drone akan semakin agresif. Anda dapat mendaratkan drone dengan membiarkan pikiran Anda mengembara dan berhenti berkonsentrasi.

Kesimpulan

Saya harap tutorial ini memberi Anda beberapa wawasan tentang betapa sederhananya meretas pengontrol drone (atau PCB apa pun) dan memberikan masukan lain. Anda dapat mengetahui dengan eksperimen cara mendapatkan input lain untuk dikontrol dan cara membuat gerakan lain selain lepas landas dan mendarat.

Saya senang melihat hal-hal keren apa yang akan kalian buat!

Kode

  • Pengolahan master
  • Kontrol Drone
Pengolahan masterPemrosesan
Terhubung ke sensor MindWave melalui Bluetooth Serial dan mengirimkan nilai perhatian sebagai bilangan bulat 8-bit ke pengontrol
/* * Kontrol pikiran drone * * Sketsa ini mengirimkan nilai Serial ke penerima penerima * * Input dihasilkan melalui Neurosky MindSet Mobile headset * * Dibuat 21 Maret 2018 * Oleh Wesley Hartogs * Desain Komunikasi dan Multimedia * Avans University of Applied Sciences * * */// import Serial libaryimport processing.serial.*;// Define receiver SerialSerial receiver;// Import MindSet libaryimport pt.citar.diablu.processing.mindset.*;MindSet mindSet;// Tetapkan nilai awalint throttle =0;int yaw =127;int pitch =127;int roll =127;void setup() { size(150, 500); // Memulai komunikasi Serial pada penerima COM10 =Serial baru(ini, "COM10", 115200); // Memulai komunikasi MindSet // MindSet menggunakan komunikasi Bluetooth Serial, // Periksa COM-pot di Konektor ThinkGear di Device Manager Anda mindSet =new MindSet(this, "COM5"); // Aktifkan anti-alias halus(); // Mengatur properti stroke strokeWeight(5); pukulan (255); strokeCap(KOTAK); // Setel isian warna garis (255); } // setup()void draw(){ // Mulai dengan latar belakang hitam (0); // Gambar garis horizontal hingga 40% dari bawah // Garis ini menunjukkan garis minimum (40%) perhatian yang dibutuhkan ( 0, tinggi*0,60, lebar, tinggi*,60); // Gambar garis dari pusat horizontal ke atas // Garis ini memberikan indikasi perhatian Anda // Ketinggian dipetakan secara terbalik untuk mendapatkan persentase dari atas // Contoh:dengan 40% (0.4) perhatian, nilai ketinggian adalah ( 100 - 40) 60% (0.6) dari garis atas( width*.5, height, width*.5, height*map( float( attentionLevel ) / 100, 0, 1, 1, 0 ) ); // Dorong tingkat perhatian ke variabel throttle // 40 =perhatian minimum yang diperlukan untuk melakukan sesuatu // 100 =perhatian maksimum // 30 =Nilai min 8-bit untuk Arduino // 255 =Nilai maksimum 8-bit untuk throttle Arduino =int( peta( Tingkat perhatian, 40, 100, 30, 255 ) ); // Batasi nilai ke nilai 8 bit untuk mencegah kesalahan throttle =constrain( throttle, 0, 255); nada =kendala( nada, 0, 255); gulung =kendala( gulung, 0, 255); yaw =kendala (yaw, 0, 255); // Bila ada komunikasi yang memungkinkan, kirim nilai ke penerima Arduino 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, tekan K untuk mereset dan menutup programvoid keyPressed() { if (key =='k' || key ==ESC) { if ( receiver .available()> 0) { receiver .write("throttle:"+0+" yaw:"+127+" pitch:"+127+" roll:"+127); keluar(); } }}// Variabel dan fungsi MindSetint signalStrenght =0;int attentionLevel =0;public void attentionEvent( int attentionLevel_val ) { attentionLevel =attentionLevel_val;}// Fungsi ini diaktifkan ketika koneksi dengan MindSet tidak optimalpublic void poorSignalEvent( int signalNoise ) { // MindSet sedang menyesuaikan if ( signalNoise ==200 ) { println( "Mindset tidak menyentuh kulitmu!" ); } // Memetakan kekuatan sinyal ke persentase signalStrenght =int( map( ( 200-signalNoise ), 200, 0, 100, 0 ) ); println("Kekuatan sinyal:" + kekuatan sinyal + "%" );}
Kontrol DroneArduino
sketsanya menerima nilai input Serial (dari pemrosesan) dan mengirimkan nilai ini ke pengontrol yang diretas.
/* * Kontrol drone * * Sketsa ini menerima nilai input Serial (dari pemrosesan) dan mengirimkan nilai ini ke pengontrol yang diretas. * Gunakan program ini hanya dengan Arduino MKR1000 (atau Arduino berbasis output 3,3 volt lainnya) * * Sirkuit:* - 4 Filter Low Pass dengan kapasitor 100 F dan resistor 220Ω * - Pengontrol drone yang diretas * * Dibuat 21 Maret 2018 * Oleh Wesley Hartogs * Desain Komunikasi dan Multimedia * Avans University of Applied Sciences * * Gunakan sketsa ini dengan risiko Anda sendiri. * */// Tetapkan nilai awalint throttle =0;int yaw =255/2; // 3.3v / 2int pitch =255/2; // 3.3v / 2int gulungan =255/2; // 3.3v / 2int throttlePin =2; // PWMint yawPin =3; // PWMint pitchPin =4; // PWMint rollPin =5; // PWMvoid setup() { // Mulai komunikasi Serial pada 115200 baud Serial.begin( 115200 ); // Atur pinModes pinMode( throttlePin, OUTPUT ); pinMode(yawPin, OUTPUT); pinMode(pitchPin, OUTPUT); pinMode( rollPin, OUTPUT );}void loop() { // Ketika ada koneksi Serial yang tersedia, dapatkan nilai if ( Serial.available()> 0 ) { throttle =Serial.parseInt(); // Simpan nilai interger pertama dari Serial buffer yaw =Serial.parseInt(); // Simpan nilai interger kedua dari Serial buffer pitch =Serial.parseInt(); // Simpan nilai interger ketiga dari Serial buffer roll =Serial.parseInt(); // Simpan nilai interger keempat dari Serial buffer } // Tulis nilai ke pengontrol drone // Gunakan filter lolos rendah atau DAC (konverter digital ke analog) untuk mengubah PWM ke analog tegangan analogWrite( throttlePin, throttle ); analogWrite( yawPin, yaw ); analogWrite(pitchPin, pitch ); analogWrite( rollPin, roll );}

Skema

Ubah sinyal PWM menjadi tegangan analog Sirkuit untuk menghubungkan Arduino MK1000 ke pengontrol yang diretas

Proses manufaktur

  1. Detektor Bahasa TinyML Berbasis Edge Impulse &Arduino
  2. Game Arduino Gyroscope dengan MPU-6050
  3. Arduino Digital Dice
  4. Game Roulette LED 37 DIY
  5. ATtiny85 Mini Arcade:Ular
  6. Detektor Jangkauan Portabel
  7. Kontrol Humidifier Arduino
  8. Bot Gripper Kontrol Jarak Jauh
  9. Elektroplating dengan Tembaga
  10. NeoMatrix Arduino Pong