Isi kandungan:

UCL Embedded - B0B the Linefollower: 9 Langkah
UCL Embedded - B0B the Linefollower: 9 Langkah

Video: UCL Embedded - B0B the Linefollower: 9 Langkah

Video: UCL Embedded - B0B the Linefollower: 9 Langkah
Video: George Hotz | to organize the world's information | Science & Technology 2024, Julai
Anonim
UCL Embedded - B0B the Linefollower
UCL Embedded - B0B the Linefollower

Ini adalah B0B. *

B0B adalah sebuah kereta yang dikendalikan Radio generik, sementara berfungsi sebagai asas robot berikut.

Seperti banyak robot yang mengikuti Line di hadapannya, dia akan melakukan yang terbaik untuk terus berada di garisan yang disebabkan oleh peralihan antara lantai dan bahan yang berbeza, dalam pita saluran kami.

Tidak seperti robot lain yang mengikuti Line, B0B juga mengumpulkan data dan menghantarnya melalui WiFi.

Terlalu banyak untuk projek hobi, ia melibatkan sebilangan subjek yang mungkin menarik bagi anda. Panduan ini menerangkan kelahirannya, fungsinya dan bagaimana anda dapat menjadikannya seperti dia.

Ini juga melibatkan marah pada pelbagai elektronik kerana tidak berfungsi seperti yang kita mahukan, dan langkah-langkah yang kita ambil untuk mengatasi kesulitan tersebut, (saya melihat anda ESP 8266-01).

Terdapat 2 kod untuk membuat projek berfungsi. Kod pertama adalah untuk modul ESP8266 yang kita gunakan Arduino sebagai pengaturcara, dan kod kedua akan dijalankan di Arduino.

Langkah 1: Komponen

Untuk projek ini, anda memerlukan:

Perkakasan:

• 1x kereta pengawal radio, (mesti mempunyai ESC dan servo stereng).

Kami menggunakan Traxxas 1/16 E-Revo VXL yang kebanyakan stoknya, terutamanya kerana itulah yang kami ada, dan cukup yakin bahawa kami dapat mengawalnya dengan Arduino. Juga kerana ia akhirnya membawa jumlah perkakasan tambahan yang tidak signifikan, kami yakin ini tidak akan menjadi masalah untuk E-Revo 1/16.

Walau bagaimanapun, kebanyakan kereta yang dikendalikan radio (yang boleh dipisahkan dengan mudah) mungkin boleh digunakan sebagai gantinya, dan prosesnya akan serupa.

• Sebanyak pita saluran.

Warnanya harus membezakan lantai sebanyak mungkin. Dalam persekitaran ujian kami menggunakan pita putih di lantai gelap.

• 1x Arduino Mega 2560.

Arduino yang lebih kecil mungkin juga baik, tetapi anda akan ditekan untuk pin.

• 1x papan roti besar.

Satu sudah cukup, tetapi kami juga mempunyai yang lebih kecil untuk memisahkan talian kuasa voltan lain untuk mengurangkan risiko kesilapan pengguna.

• 1x sensor analog TCRT5000 IR (digunakan untuk mengelakkan perlanggaran).

Jenama / model yang tepat tidak kira sama ada Arduino serasi dan mengukur jarak. Cari kata kunci seperti sensor "Jarak", "halangan". Secara teknikal sensor digital akan berfungsi dengan baik dengan perubahan kod kecil, tetapi kami menggunakan yang analog.

• Graviti 1x atau 2x: Sensor Skala Kelabu Analog v2

Salah satunya adalah keperluan untuk pengikut baris. Model tepat tidak menjadi masalah, asalkan melihat intensiti cahaya yang dipantulkan dan mengeluarkan isyarat analog. Yang kedua untuk pengesanan ‘ruangan’ tidak berfungsi sebagaimana yang diharapkan dan dapat dihilangkan, atau alternatifnya, seperti sensor warna RGB dapat dijumpai, mungkin untuk kesan yang lebih baik. Kami belum menguji ini.

• 1 x ESP 8266-01.

Terdapat banyak versi ESP 8266 yang ada. Kami hanya mempunyai pengalaman dengan 8266-01, dan tidak dapat menjamin kod ESP akan berfungsi dengan versi yang berbeza.

• 1 x perisai Wi-Fi ESP8266-01.

Secara teknikal pilihan, tetapi jika anda tidak menggunakannya, semua yang melibatkan modul Wi-Fi akan menjadi lebih rumit. Walau bagaimanapun, panduan ini akan menganggap anda memilikinya, (jika tidak, cari panduan dalam talian untuk memasang ESP-01 ke Arduino dengan betul), kerana melakukan ini dengan betul dan mungkin akan merosakkan modul.

• Bateri untuk kenderaan itu sendiri dan bateri untuk menghidupkan elektronik tambahan.

Kami menggunakan sepasang kapasiti 2.2 AH, bateri Lipo 7.4V selari untuk menggerakkan segalanya. Anda seharusnya dapat menggunakan bateri apa pun yang biasanya anda gunakan dengan kenderaan pilihan anda. Sekiranya anda berada di atas 5V tetapi di bawah 20V, kapasiti lebih penting daripada voltan nominal.

• Banyak kabel pelompat.

Saya sudah berhenti menghitung jumlah yang tepat. Sekiranya anda rasa anda cukup, anda mungkin tidak.

• Akhirnya, untuk memasang semuanya, anda perlu memasang Arduino, sensor, papan roti dan modul Wi-Fi ke kenderaan pilihan anda. Hasil anda akan berbeza-beza bergantung pada apa yang anda gunakan sebagai asas, dan bahan apa yang ada.

Kami menggunakan:

• Ikatan zip.

• Beberapa gam super.

• Potongan kecil kertas sekerap / tiub resin yang kita miliki dengan diameter yang sesuai.

• Plat belakang Masonite lama dari bingkai gambar, dipotong mengikut ukuran.

• Pita saluran lebih sedikit.

• Mana-mana alat yang diperlukan untuk berfungsi pada kereta pilihan radio anda.

Kami kebanyakan menggunakan set pemacu skru kecil dengan beberapa bit, tetapi kadang-kadang terpaksa mengeluarkan set alat stok yang disertakan dengan kereta.

Perisian:

• Node-red

Bahagian penting dalam pengumpulan data.

• Pelayan MQTT.

Orang tengah antara kenderaan kami dan Node-red. Pada mulanya, untuk ujian, kami menggunakan test.mosquitto.org

Kemudian kami menggunakan:

• CloudMQTT.com

Ini jauh lebih dipercayai yang lebih daripada sekadar dibuat lebih rumit untuk disiapkan.

• WampServer.

Bahagian terakhir pengumpulan data. Secara khusus, kami akan menggunakan pangkalan data SQL untuk menyimpan data yang kami kumpulkan.

Langkah 2: Diagram Elektrik

Rajah Elektrik
Rajah Elektrik

Langkah 3: Pembinaan Fizikal

Pembinaan Fizikal
Pembinaan Fizikal
Pembinaan Fizikal
Pembinaan Fizikal
Pembinaan Fizikal
Pembinaan Fizikal

Penyelesaian kami mempunyai pendekatan lurus ke arah pemasangan fizikal.

Penerima asal dan penutup kalis airnya dikeluarkan dari kereta RC, kerana ia tidak diperlukan.

Kami mendapati bahawa ada satu lokasi yang sesuai di antara roda depan untuk sensor ikuti barisan kami, jadi kami menahannya di tempat dengan menggulung ziptie di atas plat selip depan.

Sensor yang kami gunakan untuk anti-perlanggaran adalah semacam baji di belakang bumper depan. Ia masih dilindungi dari hentaman, dan geserannya sesuai. Ini akhirnya memandang ke depan pada sudut ke atas yang sangat sedikit. Ini sempurna.

Plat Masonite, (plat belakang dari bingkai gambar lama), di atasnya mempunyai bahagian kecil dari kertas / pipa resin yang dipotong sesuai ukuran dan dilekatkan pada bahagian bawah. Ini sejajar dengan pelekap untuk tiang badan dan hanya duduk di atas, menahan semuanya dengan selamat. Dengan mengandaikan gam yang melekatkan paip ke penahan piring, dan jika tidak condong secara berlebihan, ini akan tetap di tempatnya. Perlu juga diperhatikan bahawa pelat berada dalam ruang pelindung roda dan bumper. Arduino Mega dan dua papan roti telah dilekatkan pada piring dengan pita sisi dua sisi, atau dengan gelung pita saluran yang dililit di sekeliling, lem.

Tidak ada langkah khas yang diambil untuk mengamankan modul WiFi. Ini bukan milik kita, jadi terpaku, atau mengetuknya dianggap tidak perlu kerana sangat ringan sehingga tidak akan bergerak banyak, dan kabelnya cukup untuk menahannya.

Akhirnya, kami mempunyai sensor untuk mengesan 'bilik' ini dipasang pada komponen suspensi oleh salah satu roda belakang. Semasa operasi, ini perlu dijauhkan dari garis yang digunakan kenderaan untuk menavigasi.

Langkah 4: Modul ESP8266

Modul ESP8266
Modul ESP8266
Modul ESP8266
Modul ESP8266

Modul WiFi, ESP8266, memerlukan dua penyediaan pin yang berbeza. Satu persediaan akan digunakan ketika mem-flash modul dengan program baru dan menggunakan Arduino Mega 2560 sebagai pengaturcara. Penyediaan lain adalah untuk modul ketika sedang digunakan dan menghantar maklumat ke MQTT Broker.

Dengan menggunakan Arduino IDE untuk memuat naik kod ke modul ESP8266, anda perlu memasang pengurus papan dan pengurus papan tambahan

Di bawah pengurus papan pasang pengurus papan esp8266. Ia mudah dijumpai dengan mencari "esp". Anda perlu memasang versi 2.5.0, tidak lebih lama, tidak lebih baru.

Di bawah tetapan dalam URL pengurus papan tambahan, salin dalam baris ini:

arduino.esp8266.com/stable/package_esp8266c…

Untuk dapat memuat naik apa-apa ke modul ESP8266, anda perlu menggunakan penyediaan pin tertentu supaya anda dapat mem-flash modul. Ini perlu dilakukan setiap kali anda ingin membuat perubahan pada kod semasa yang berjalan pada modul. Jangan lupa memilih modul ESP8266 yang betul dari pengurus lembaga sebelum memancarkan modul. Dalam projek ini kami memilih papan ESP8266 generik. Penyediaan pin untuk mem-flash modul terdapat pada gambar pertama di segmen ini.

Setelah menukar modul ESP8266, anda perlu menukar penyediaan pin. Anda juga boleh memilih untuk menggunakan penyesuai untuk memudahkan penyediaannya. Dalam projek ini, kami memilih untuk mempunyai adaptor setiap kali modul berjalan. Penyediaan pin dengan penyesuai terdapat pada gambar kedua dalam segmen ini.

Kod yang akan dimasukkan ke modul ESP8266 mengatur sambungan ke WiFi dan MQTT Broker, dalam hal ini dengan nama pengguna dan kata laluan, tetapi boleh dilakukan tanpa jika anda membuat perubahan yang diperlukan yang dijelaskan dalam komen kod. Untuk projek ini Broker kami memerlukan nama pengguna dan kata laluan untuk berfungsi. Modul membaca mesej masuk dari port bersiri yang disambungkannya. Ia akan membaca setiap baris baru yang dibuat oleh kod Arduino, menguraikan mesej dan mencipta semula mesej. Selepas itu ia menghantar mesej kepada MQTT Broker yang telah dinyatakan dalam kod. Kod untuk Modul ESP8266:

Langkah 5: Arduino

Setelah mengkonfigurasi modul WiFi, kami melihat program yang akan digunakan untuk mengendalikan motor dan servo pada kereta RC. Kereta akan bertindak balas mengikut maklumat skala kelabu dari sensor pusat, yang juga dikenali sebagai "Line Detector" dalam projek ini. Secara jelas ia bertujuan untuk memastikan maklumat dari Line Detector berada di dekat nilai pratetap yang sama dengan maklumat yang dicatat pada perubahan antara cahaya dan gelap atau dalam projek ini, putih dan hitam. Oleh itu, jika nilainya berbeza jauh, output yang sepadan dengan servo akan mengarahkan kereta dekat dengan nilai garis yang telah ditetapkan.

Program ini mempunyai dua butang yang berfungsi sebagai butang mula dan berhenti untuk kereta RC. Secara teknikal butang "stop" adalah butang "arming" yang dari segi sama dengan nilai PWM yang dihantar ke motor yang menyebabkan kereta RC berhenti. Butang mula menghantar nilai PWM yang sama dengan kereta RC yang hampir tidak bergerak kerana ia akan memandu terlalu pantas jika mendapat momentum terlalu banyak.

Pengesan penghindaran perlanggaran ditambahkan ke bahagian depan kereta RC untuk mengesan sama ada jalan di hadapan jelas atau tersekat. Sekiranya tersekat, kereta RC akan berhenti sehingga halangan hilang / ditanggalkan. Isyarat analog dari pengesan digunakan untuk menentukan ada atau tidaknya sesuatu yang menghalangi jalan dan dijadikan kriteria untuk dapat bergerak maju serta berhenti.

Sensor skala kelabu sekunder, "Room Detector", digunakan untuk mengesan ruangan mana yang dimasuki oleh kereta RC. Ia berfungsi berdasarkan prinsip yang sama dengan Line Detector, tetapi tidak mencari perubahan antara cahaya dan gelap, melainkan untuk nilai dalam julat tertentu yang sesuai dengan ruangan yang berbeza bergantung pada nilai yang dilihat dari Room Detector.

Terakhir program ini membuat sebilangan maklumat dari sensor untuk modul WiFi untuk dibaca dan kemudian dihantar ke MQTT Broker. Garis maklumat dibuat sebagai rentetan dan ditulis ke siri yang bersangkutan di mana modul WiFi disambungkan. Penting bahawa penulisan ke siri hanya berlaku sekerap modul WiFi dapat membaca mesej masuk, tetapi ingat untuk tidak menggunakan kelewatan kod ini kerana akan mengganggu kemampuan kereta RC untuk mengikuti garis tersebut. Sebaliknya gunakan "millis" kerana ia akan membolehkan program berjalan tanpa berlengah tetapi setelah jumlah mil yang ditentukan berlalu sejak Arduino dihidupkan, akan menulis mesej ke serial tersebut tanpa menyekat kod dengan kelewatan yang sama.

Kod untuk Arduino Mega 2560:

Langkah 6: Pangkalan Data MySQL

WampServer adalah persekitaran pengembangan web untuk Windows yang memungkinkan kita membuat aplikasi dengan PHP dan pangkalan data MySQL. PhpMyAdmin membolehkan kami menguruskan pangkalan data kami dengan cara yang mudah.

Untuk memulakan, pergi ke:

Dalam projek ini kami menggunakan versi 3.17 x64 bit untuk Windows. Selepas pemasangan pastikan semua perkhidmatan berjalan yang mana bermaksud ikon kecil berubah menjadi hijau dan bukannya merah atau oren. Sekiranya ikon berwarna hijau, anda boleh mengakses PhpMyAdmin untuk menguruskan pangkalan data MySQL anda.

Akses MySQL menggunakan PhpMyAdmin dan buat pangkalan data baru. Namakan sesuatu yang sesuai yang anda ingat, dalam projek ini disebut "line_follow_log". Setelah membuat pangkalan data, anda harus membuat jadual dalam pangkalan data. Pastikan bilangan lajur sesuai. Dalam projek ini kami menggunakan 4 lajur. Satu lajur adalah untuk cap waktu dan tiga yang terakhir digunakan untuk menyimpan data dari kenderaan. Gunakan jenis data yang betul untuk setiap lajur. Kami menggunakan "longtext" untuk kolom cap waktu dan "mediumtext" untuk yang lain.

Itulah yang harus anda lakukan dalam PhpMyAdmin dan MySQL. Ingat pangkalan data anda dan jadual untuk bahagian mengenai Node-Red.

Langkah 7: Node-Red

Untuk menangani pengumpulan data, kami akan menggunakan aliran yang cukup sederhana dalam Node-red. Ia menghubungkan ke pelayan MQTT kami, dan menulis ke pangkalan data MYSQL kami.

Untuk melakukan ini, kita memerlukan beberapa palet agar pelbagai fungsi berfungsi, dan kita memerlukan beberapa kod sebenar untuk dijalankan.

Perkara pertama didahulukan. Kami memerlukan palet berikut.

Node-red-contrib-mqtt-broker: Ini adalah hubungan dengan broker MQTT kami.

Node-red-dashboard: Dashboard kami, diperlukan untuk menggambarkan data yang dikumpulkan secara visual.

Node-red-node-mysql: Sambungan kami ke pangkalan data SQL.

Ini tidak bertujuan untuk menjadi panduan lengkap untuk Node-red, tetapi saya akan menerangkan apa yang dilakukan oleh aliran Node-red.

Sejak awal, kami mempunyai masalah dengan pelayan MQTT pilihan mati / pemutusan, nampaknya secara rawak, yang membuat perubahan apa pun menjadi usaha yang mengecewakan kerana tidak jelas apakah perubahan itu bermanfaat, atau tidak ketika kami tidak dapat melihat hasilnya. Jadi butang 'Adakah pelayan mati?' menyuntik 'Tidak' blok berikut menyuntikkannya ke pelayan MQTT kami. Sekiranya tidak mati, 'Tidak' akan muncul di tetingkap Debug. Ini dilakukan bukan hanya untuk menguji, tetapi untuk memaksa Node-red untuk cuba menyambung semula ke pelayan MQTT.

'Uji rentetan' menghantar tali kostum kepada broker MQTT. Kami memformat rentetan ini agar serupa dengan yang kami dapat dari Arduino. Ini untuk memiliki waktu yang lebih mudah untuk mengkonfigurasi jaringan yang mendekode pesan, tanpa perlu menjalankan proyek, mengumpulkan data.

Aliran terakhir di ruang kerja boleh dibahagikan kepada dua segmen. Cawangan bawah hanya membaca mesej masuk, menghantarnya ke tetingkap debug dan menyimpannya ke pelayan SQL.

Rangkaian besar suis bersambung mengikuti simpul fungsi jika di mana 'sihir' yang sebenarnya berlaku.

Fungsi meneruskan membaca rentetan masuk, membelahnya dengan setiap titik koma dan melewati bahagian pada setiap output. Suis berikut mencari satu daripada dua maklumat yang berbeza. Satu maklumat tertentu selalu dikeluarkan dari satu output, pilihan yang lain dikeluarkan oleh output kedua. Berikutan itu, adalah sekumpulan blok suis kedua. Mereka hanya akan diaktifkan dengan satu input tertentu, dan mengeluarkan sesuatu yang lain.

Contohnya, 'halangan', seperti yang lain adalah pilihan binari, baik untuk memandu, atau tidak. Jadi ia akan menerima 0, atau 1. A 0 akan dihantar ke cawangan 'jelas', 1 akan dihantar ke cawangan 'Halangan'. Suis 'Clear', 'Disumbat', jika diaktifkan akan mengeluarkan sesuatu yang spesifik, Clear, atau terhalang. Blok prosiding hijau akan diposkan di tetingkap debug, biru akan menulis ke papan pemuka kami.

Cabang 'status' dan 'lokasi' berfungsi sama.

Langkah 8: Broker MQTT

Broker adalah pelayan yang menghantar mesej dari klien ke klien destinasi yang sesuai. Broker MQTT adalah di mana pelanggan menggunakan Perpustakaan MQTT untuk berhubung dengan broker melalui rangkaian.

Untuk projek ini, kami membuat MQTT Broker menggunakan perkhidmatan CloudMQTT dengan langganan percuma untuk versi "Cute Cat". Ada hadnya tetapi kami tidak melebihi yang ada dalam projek ini. Modul WiFi boleh berhubung dengan broker dan broker kemudian menghantar mesej ke pelanggan destinasi yang sesuai. Dalam kes ini, pelanggan adalah Node-Red kami. Perkhidmatan CloudMQTT menetapkan nama pengguna dan kata laluan untuk pelayan mereka, jadi kami dijamin keselamatan yang lebih tinggi. Pada dasarnya bermaksud bahawa hanya mereka yang mempunyai nama pengguna dan kata laluan yang boleh mengakses perkhidmatan CloudMQTT khusus ini. Nama pengguna dan kata laluan sangat penting semasa membuat sambungan pada kod ESP8266 dan juga Node-Red.

Statistik berterusan untuk mesej yang diterima oleh Broker adalah ciri yang menyenangkan, yang dapat digunakan untuk melihat seberapa baik rancangan langganan anda menangani maklumat yang dilaluinya.

Ciri yang bagus adalah kemungkinan untuk menghantar mesej dari Broker ke modul WiFi tetapi kami tidak menggunakannya dalam projek ini.

Langkah 9: Hobi Elektronik

Sebelum memulakan, kami tahu dari projek lalu bahawa servo stereng stok dapat dikendalikan dari Arduino dengan isyarat PWM, mempunyai pendawaian yang serupa, dan memasang saluran yang berbeza pada penerima radio stok yang sama, kami menganggap Kawalan Kelajuan Elektronik, (ESC dari sekarang), yang mengawal motor, juga dapat dikendalikan melalui PWM dari Arduino.

Untuk menguji teori ini, kami membuat lakaran kecil Arduino. Sketsa membaca input analog dari potensiometer, memetakan semula nilai dari 0, 1024 hingga 0, 255 dan mengeluarkan nilai yang dihasilkan ke pin PWM, menggunakan analogWrite () ketika mempunyai kereta R / C pada kotak kecil, dan memiliki roda dikeluarkan.

Setelah menyapu jarak di meteran panci, ESC sepertinya 'bangun' dan kami dapat menekannya ke atas dan ke bawah, kami juga meminta Arduino mencetak nilai ke sambungan bersiri sehingga kami dapat memantau mereka.

ESC nampaknya tidak menyukai nilai di bawah ambang tertentu, dalam hal ini 128. Ia melihat isyarat 191 sebagai pendikit neutral, dan 255 adalah pendikit maksimum.

Kami tidak perlu mengubah kelajuan kenderaan dan dengan sempurna melaju pada kelajuan paling perlahan yang akan membuatnya bergerak. 192 adalah nilai terendah yang akan menghidupkan motor, namun kita belum memasangkan semuanya dan tidak pasti apakah output ini cukup untuk menggerakkan kenderaan setelah pemasangan terakhir, namun memasukkan nilai yang sedikit lebih besar semestinya remeh.

Melancarkan potensiometer dan memasukkan nilai tetap ke dalam kod, bagaimanapun, tidak berjaya. Stok ESC hanya berkelip dan tidak akan memutar motor, 'sesuaikan pemangkasan pendikit' mengikut manual.

Kesalahan menembak, melemparkan pelbagai nilai ke arahnya, menggunakan wayar yang berbeza, dan bahkan bereksperimen dengan menukar frekuensi PWM yang digunakan Arduino semuanya menghasilkan lebih banyak keanehan.

Ia seolah-olah menjadi masalah yang berselang-seli, kadang-kadang ia akan berjalan, pada masa yang lain ia menolak untuk melakukan apa-apa. Ia terus berkelip. Ujian dengan pengawal dan penerima asal mengesahkan bahawa ESC masih berfungsi persis seperti yang diharapkan, yang menjadikan masalahnya semakin asing. Nilai yang lebih tinggi, ia diabaikan dan terus berkedip, nilai yang lebih rendah ESC kembali bersinar hijau gembira, tetapi masih tidak berubah.

Apa yang berbeza dari pengaturan dengan potensiometer, atau pemancar dan penerima stok, dan versi yang memberikan nilai tetap?

Kadang-kadang bekerja seperti yang diharapkan dan bekerja seperti yang diharapkan tidak terlalu banyak tumpang tindih pada rajah Venn. Dalam hal ini, sebagai mainan, seharusnya tidak ada kemungkinan model hanya melepaskan atau mematahkan jari atau rambut tersangkut di roda atau kereta api ketika model dihidupkan, walaupun sesuatu seperti memegang pemancar dengan aneh memiliki pendikit masuk kedudukan lain selain berkecuali.

'Laraskan trim pendikit', itulah maksudnya. ESC mengharapkan isyarat netral ketika dihidupkan, sebelum mendapatkannya tidak akan melakukan apa-apa. Biasanya pemancar akan sentiasa berkecuali ketika ESC dihidupkan dan dari situ dengan senang hati akan memandu. Sekiranya tidak, ia mungkin kembali berkecuali sekurang-kurangnya sekali pada masa modelnya berada di atas tanah dan pengendali merasa bersedia untuk berlumba.

Semasa menggunakan potensiometer, kami 'menyapu' jarak, dan kemudian ia akan mula berfungsi. Ia hanya bersenjata ketika potensiometer melepasi kedudukan neutral, dan kemudian ia berfungsi.

Julat yang lebih rendah, namun masih kelihatan tidak menyenangkan ESC. Ini ternyata adalah produk kitaran tugas PWM.

Sama ada dengan reka bentuk atau dibuat untuk alasan teknikal, kedua-dua servo stereng dan ESC mengabaikan isyarat di bawah 50% kitaran tugas. Ini mungkin berlaku sekiranya penerima / pemancar berhenti berfungsi atau kehabisan daya, model akan kembali ke neutral, dan tidak bergerak jauh dari pendikit terbalik sepenuhnya. Sama, servo hanya berputar 180 darjah, dan tidak memerlukan jarak penuh.

Dengan pengetahuan baru ini, lakaran Arduino baru dibuat. Versi awal menerima rentetan yang dimasukkan ke dalam monitor Serial, mengubahnya menjadi bilangan bulat dan memindahkannya ke pin PWM, menggunakan pustaka servo dan menulis () *. Sekiranya nilai baru dimasukkan dalam monitor bersiri, nilai tulis () akan dikemas kini.

Semasa ujian, stok Traxxas ESC diganti dengan Mtroniks G2 Micro, namun ia harus berfungsi sama, walaupun nilai yang tepat mungkin sedikit berbeza.

Perpustakaan ini menganggap ESC sebagai servo, nampaknya baik-baik saja. Fungsi write () dari pustaka Servo.h bermula dari 0 hingga 180, sinyal persenjataan dijangka berada di sekitar tengah.

Lengan Mikro G2 pada nilai () dalam jarak nilai dekat 90 namun sukar untuk dinyatakan kerana nampaknya 'ingat' telah bersenjata.

Traxxas VXL-s3 dijangka menggunakan nilai tulis () sebanyak 91.

Selepas isyarat menyenangi, sama ada ESC dengan senang hati menerima isyarat PWM, tidak kira fungsi Arduino dipanggil untuk menjana mereka, dan mengendalikan motor dengan sewajarnya.

Bercakap mengenai fungsi; analogWrite standard (), serta menulis () dan menulisMikrodetik () dari pustaka Servo.h semuanya boleh digunakan secara bergantian, hanya perlu diingat apa yang melakukan apa, dan akhirnya tidak ada yang penting selain kitaran tugas. WriteMicroseconds () dapat digunakan jika butiran yang lebih besar diperlukan, hanya perlu diingat bahawa julat di sini adalah dari 1000 hingga 2000, dengan persenjataan atau 'netral' dijangka pada 1500. Dengan analogWrite standard () julat yang digunakan diharapkan dapat dari 128 hingga 255 dengan sekitar 191 berkecuali.

Disyorkan: