Arduino Proyek "Mesin Robot RoboCar4W"

Anda mengerti, "editor itu menjelaskan," itu harus menghibur, segar, penuh petualangan yang menarik ... sehingga pembaca tidak bisa lepas.
I. Ilf, E. Petrov "Bagaimana diciptakan Robinson" .


Memulai dengan Arduino, seperti halnya dengan platform perangkat lunak atau perangkat keras lainnya, selalu lebih menarik dari beberapa proyek nyata. Pada saat yang sama, programmer menulis kode yang menampilkan "Hello, world", para arduinists berkedip LED. Dan semua orang bahagia sebagai anak-anak.


Saya memutuskan untuk memulai dengan proyek lanjutan, termasuk dengan harapan rahasia untuk merobek generasi muda dari Counter-Strike (gagal).


Seperti yang bisa Anda tebak dari nama RoboCar4W, proyek pertama adalah mobil robot roda empat. Mulai bekerja, saya sudah memiliki pengalaman pemrograman, saya pernah tahu cara menyolder untuk waktu yang lama, tetapi saya bahkan tidak tahu pinout Arduino sama sekali dan tidak membaca dokumentasi sama sekali. Saya mempelajari semua kebijaksanaan dalam permainan dan Google untuk membantu.


Karena proyek itu sendiri pada dasarnya bukan hal baru, deskripsi seperti dalam jaringan sudah cukup, semua komponen diketahui, tidak ada kejutan yang diharapkan. Oleh karena itu, idenya dirumuskan dalam istilah yang paling umum dan tujuan utamanya adalah untuk membenamkan diri dalam "dunia benda" menggunakan Arduino, sebagai platform untuk prototyping cepat. Dalam karya ini, mungkin seseorang mengenali dirinya di awal perjalanan.


Semua perangkat keras dibeli di ebay, dan dari pengalaman saya sendiri, saya ingin mengatakan bahwa lebih mudah untuk membeli starter kit segera (cari dalam kata-kata dari Starter Kit Arduino), daripada merakitnya secara rinci. Ya, dan semuanya datang bersamaan. Diputuskan untuk tidak meremehkan, untuk membeli sasis normal, roda normal, motor normal, sehingga itu "mahal".


Rahasia utama untuk pembelian yang sukses di eBay adalah membeli dari penjual berperingkat teratas dan membaca deskripsi produk dengan cermat. Ada banyak artikel tentang ini di Internet.


Papan Arduino mana yang harus dipilih?


Saya mengambil Arduino UNO, banyak proyek dengan deskripsi untuk itu. Tetapi sekarang saya akan menggunakan Arduino Mega 2560, ia memiliki lebih banyak keluaran digital dan analog dan kompatibilitas penuh pada proyek-proyek dengan UNO.


Deskripsi umum proyek


Dalam dunia pengembangan perangkat lunak, ini juga disebut "persyaratan sistem."


Gagasan proyek adalah sebagai berikut. Versi pertama dari mesin robot yang disebut RoboCar4W harus melakukan tindakan sederhana:


  • bergerak maju, mundur, lakukan putaran
  • mengukur jarak ke rintangan
  • dapat secara otomatis mengatasi kendala di depan.

Versi kedua dari mesin harus dikontrol secara manual melalui bluetooth dari ponsel Android.


Sehingga Anda lebih baik bekerja di sini adalah seluruh proyek RoboCar4W akhir dirakit (di sini tanpa bluetooth).


Arduino RoboCar4W


Berikut adalah video uji coba laut.


Dalam video pertama, RoboCar4W drive secara otomatis dengan penghindaran kendala pada dua versi "firmware" yang berbeda, yaitu. sketsa, oleh karena itu, jika seseorang adalah yang paling tajam dan memperhatikan bahwa perilaku robot dalam episode yang berbeda sedikit berbeda.


Robot mobil RoboCar4W


Dalam video kedua, RoboCar4W bergerak dengan bantuan perintah yang dikirimkan oleh "driver" melalui Bluetooth dari ponsel di bawah Android. "Bluetooth RC Car" diinstal di telepon. Terlebih lagi, jika ada rintangan di depan, robot berhenti, mis. menabrak sesuatu tidak akan berfungsi (namun, ada tombol "rahasia" yang menonaktifkan mode aman).


Robot mobil RoboCar4W


Dalam video ketiga, RoboCar4W menunjukkan program gerakan demo yang diprogram sebelumnya secara bergantian. Program demo diaktifkan berdasarkan perintah dari ponsel Android yang sama. Robot hanya naik untuk sementara waktu dan berbelok.


Robot mobil RoboCar4W


Algoritma kontrol gerak


Adalah suatu kesalahan untuk memanggil metode kami "algoritme penghindaran rintangan" atau "pencarian jalur". Ini adalah disiplin matematika yang terpisah, matematika murni. Jika Anda benar-benar menyukai matematika, maka google frasa ini, Anda akan diberikan membaca selama enam bulan.


Sementara itu, kami lebih tertarik pada hal-hal yang lebih mudah. Oleh karena itu, kami akan menyebutnya sederhana - algoritma kontrol gerak robot 4-roda. Tentu saja, kita berbicara tentang kontrol otomatis tanpa campur tangan manusia.


Berikut ini adalah algoritma sederhana yang dituliskan dalam kata-kata, untuk algoritma yang lebih kompleks diperlukan (apakah Anda mau atau tidak) untuk membuat diagram blok.


Sekarang pada saat yang sama lihat kode sumber untuk sketsa RoboCar4W-1.ino .


  1. Kami mengukur jarak ke hambatan di depan.
  2. Jika jarak yang diukur ini kurang dari nilai DST_TRH_BACK (kependekan dari jarak ambang batas), maka kami berhenti dan bergerak mundur sambil memutar. Arah rotasi dipilih sebagai berikut: jika sebelumnya Anda belok kiri, lalu belok kanan dan sebaliknya.
  3. Jika jarak yang diukur lebih besar dari DST_TRH_BACK , tetapi kurang dari DST_TRH_TURN , maka cukup putar. Arah rotasi dipilih secara acak.
  4. Jika Anda jauh dari rintangan, maka silakan saja.
  5. Kami ulangi lagi.

Apa bagusnya kita punya 4 roda dan all-wheel drive? Kami dapat melakukan (program) beberapa jenis belokan:


  • Rotasi halus. Semua roda berputar, tetapi roda di satu sisi berputar lebih cepat.
  • Belokan tajam. Roda hanya berputar di satu sisi.
  • Putar balik ke tempatnya. Seperti traktor, roda di satu sisi berputar ke belakang dan yang lain ke depan.

Dalam versi kedua program, ketika mengendalikan dari ponsel Android, safe mode, ketika robot mencoba untuk mencegah tabrakan frontal, dapat dimatikan jika program ditekan dua kali
Tombol


dan dihidupkan kembali dengan menekan sekali.


Catatan Penting . Semua logika berada di bawah kendali Arduino. Android di sini bertindak seperti konsol game (tanpa otak) dari konsol, tugasnya adalah mentransmisikan tombol secara bodoh (mis. Perintah) melalui Bluetooth ke Arduino RoboCar4W.


Komponen


Awalnya, alat berat ini termasuk servo drive yang mengubah pengukur jarak ultrasonik sudut tertentu untuk pengukuran dalam tiga arah. Tetapi selama pengujian, karena penanganan yang ceroboh, servo terbakar, jadi sekarang sensor jarak hanya dengan kaku dipasang di depan kasing.


Tidak ada garis perak, tetapi sketsa menjadi sedikit lebih mudah.


Untuk masa depan, beli servo yang paling sederhana dan termurah, tenaga khusus, kecepatan dan ketepatan rotasi pada sudut tertentu tidak diperlukan, dan ternyata cukup mudah untuk menonaktifkan servo, seperti yang terjadi. SG90 senilai $ 2 sangat cocok.


Jadi komponen dari proyek RoboCar4W, deskripsi dalam bahasa Inggris diberikan untuk memudahkan pencarian di ebay dan sejenisnya:


  • Arduino UNO R3
  • Sasis siap pakai 4 Drive Platform Mobile Robot Platform Chassis Mobil Pintar Arduino Kompatibel
  • Motor DC dengan rotasi di kedua arah - 4 pcs.
  • Roda - 4 pcs.
  • Board untuk mengendalikan 4 motor DC Motor Drive Shield L293D
  • Ultrasonic Distance Meter HC-SR04 Modul Pengukur Jarak Modul Ultrasonik
  • Baterai Ni-MH 1.2 V - 8 pcs.
  • Dudukan kotak plastik untuk baterai, Dudukan kotak baterai 4 Baterai AA - 2 pcs.
  • Jenis baterai "Krona" 8,4 V - 1 pc.
  • Sakelar sakelar opsional - sakelar daya

Chassis, motor DC dan roda dibeli langsung di kit dan bahkan dengan instruksi perakitan.


Pinout


Input analog dapat digunakan sebagai pin digital port I / O. Pin Arduino yang sesuai dengan input analog diberi nomor 14 hingga 19. Ini hanya berlaku untuk pin Arduino, bukan nomor pin fisik mikrokontroler Atmega.


Anda tidak perlu menggambar, Anda cukup meletakkan semuanya di atas meja. Saya melakukannya dengan cara ini.


Pinout


Pin D4, D7, D8, D12 akan sibuk jika motor DC atau motor stepper digunakan.


Pin D9 (kontrol Servo # 1), D10 (kontrol Servo # 2) hanya akan digunakan jika servomotor digunakan.


Pin Arduino tidak menempati pin Arduino untuk mengendalikan Motor Drive Shield L293D.


Pin daya 3,3 V, 5 V, dan ground digandakan pada Motor Drive Shield dalam jumlah yang cukup. Karena itu, tidak perlu khawatir tentang kekurangan mereka.


Jika Anda masih ingin menggambar dengan indah, maka program Fritzing gratis akan membantu Anda.


Nutrisi


Ini adalah poin kedua yang sangat penting. Banyak tergantung pada nutrisi. Sebagai contoh, motor servo ketika memutar poros pada sudut tertentu mulai mengkonsumsi banyak arus. Pada saat yang sama, jika servo ini ditenagai oleh Arduino 5 V, maka ada "drawdown" pada tegangan dan sisa rangkaian mulai gagal, dan Arduino bahkan dapat reboot pada waktu yang sama.


Bagaimanapun, jika Anda menggunakan motor dalam pesawat, maka Motor Drive Shield diperlukan (atau sirkuit serupa).


Jadi, kami memiliki 4 motor DC, drive servo, papan Arduino itu sendiri, dan beberapa sensor. Motor adalah yang paling rakus, tetapi sensor dapat berhasil didukung dari konektor papan Arduino itu sendiri, jadi semuanya sederhana dengan mereka. Untuk kenyamanan, saya telah mengurangi seluruh ekonomi dalam satu tabel.


Tegangan yang direkomendasikan atau tipikal. Konsumsi saat iniTegangan maksimumApa yang direncanakan untuk diberi makanCatatan
Arduino UNO R3 Board7 - 12V, 200mA (rata-rata)6 - 20"Krone 9V" Li-ion 650mAh, 8.4VKonektor Tengah
Servo Motor MG-9955-6 V, 0,1 - 0,3A (puncak)4.8 - 7.2Baterai (5) pcs. Ni-Mh 1.2V = 6VMakanan hanya dari sumber yang terpisah. Jika Anda berkuasa bersama Arduino, maka semuanya akan gagal. Tegangan baterai Ni-Mh 4pcs * 1.2V = 4.8V tidak cukup. Beberapa berpendapat bahwa servo ini tidak boleh digunakan pada 6 volt hanya 4,8
Motor DC (4 pcs.)6 - 8V, arus dari 70mA hingga 250mA3 - 12baterai (5 + 3) pcs. Ni-Mh 1.2V = 9.6VAnda tidak akan dapat menghidupkan mesin secara normal dari baterai 9V, jadi jangan buang waktu (dan baterai)!
Pelindung Drive Motor L293Dtidak wajib4,5 - 36tidak wajib
Modul Bluetooth HC-05063,3 V, 50 mA1.8-3.6Dengan pin 3.3V papan Arduino
Pengukur Jarak Ultrasonik HC-SR045 V, 2 mA5Dengan pin papan Arduino 5V

Saya tidak memiliki konverter tegangan DC / DC. Krona 9V bukan sumber kekuatan yang sangat baik, saya baru saja memilikinya.


Tetapi saya menolak untuk menggunakan baterai berkapasitas tinggi Li-ion. Pertama, karena biayanya yang tinggi, dan kedua, dalam belanja online Cina mudah untuk menjadi palsu. Lebih tepatnya, bukan "mudah", tetapi "selalu." Selain itu, Li-ion membutuhkan penanganan khusus, dan itu tidak aman.


Jadi, seperti yang kita lihat dari tabel, kita membutuhkan 3 sumber daya independen:


  • Untuk papan dan sensor Arduino.
  • Untuk servomotor.
  • Untuk 4 motor DC.

Di mana saya bisa mendapatkan begitu banyak? Bagaimanapun, papan Arduino itu sendiri harus diberdayakan dari sumber yang terpisah, seperti ketika tegangan “sags”, misalnya, dari menyalakan motor, papan mungkin restart atau gagal. Di sini kita menggunakan baterai faktor bentuk Krona 9V, dan konektor yang akan dihubungkan ke Arduino harus dengan "plus di tengah".


Untuk motor servomotor dan 4 DC, Anda dapat melakukannya dengan satu sumber daya. Satu-satunya masalah adalah servomotor dirancang untuk tegangan 5-6V (maksimum 7.2V) dan arus 100-300mA (puncak), dan motor DC membutuhkan 6-8V (maksimum 12V) dan arus 250mA.


Untuk mengatasi masalah ini, ada konverter DC-DC, tetapi saya tidak memilikinya. Akibatnya, saya menerapkan diagram kabel "eksklusif" (tanpa sirkuit elektronik step-down, hanya tegangan dan arus yang ramah lingkungan!): Saya menghubungkan 8 pcs. Baterai 1.2V secara seri dan membuat keran di tempat yang tepat, seperti yang ditunjukkan pada diagram.


Nutrisi


6V pergi ke servomotor, dan 9,6 pergi ke motor DC. Jelas bahwa baterai 1-5 akan mengalami peningkatan beban.


Untuk mengendalikan motor servo dan DC, saya menggunakan Motor Drive Shield 4-channel berdasarkan chip L293D.


Majelis


Merakit sasis jadi adalah masalah kecil. Tetapi jangan berpikir bahwa tanpa doping Anda akan segera mendapatkan semuanya. Karena itu, siapkan file.


Majelis


Majelis


Tidak mungkin untuk menghubungkan beberapa motor secara normal, motor servo atau stepper langsung ke Arduino. Karena pin (kesimpulan) dari Arduino adalah arus rendah. Untuk mengatasi masalah tersebut, ada modul kontrol drive tambahan - Motor Drive Shield berdasarkan chip L293D, yang merupakan salah satu chip paling umum yang dirancang untuk tujuan ini. Chip L293D juga dikenal sebagai H-Bridge.


Saya menggunakan papan yang menyediakan 4 saluran untuk menghubungkan pada dua chip L293D dan register geser. Dibeli di eBay seharga $ 5.


Papan modul kontrol drive ini memiliki spesifikasi sebagai berikut.


  • L293D Motor Drive Shield kompatibel dengan Arduino Mega 1280 dan 2560, UNO, Duemilanove, Diecimila
  • Kontrol 4 saluran
  • motor bertenaga dari 4.5V ke 36V
  • arus muat yang diijinkan 600mA per saluran, arus puncak - 1.2A
  • perlindungan overheat
  • 2 antarmuka dengan timer Arduino yang tepat (tidak akan ada "jitter") untuk menghubungkan servomotors ke 5V, jika tegangan suplai perlu lebih tinggi, maka koneksi daya harus diperbaiki seperti dijelaskan di bawah ini
  • 4 motor pengumpul DC dua arah atau 2 stepper dan 2 servomotors dapat dikontrol secara bersamaan
  • 4 motor DC dua arah masing-masing terhubung ke bus 8-bit untuk pemilihan kecepatan individu
  • koneksi hingga 2 langkah drive (unipolar atau bipolar), dengan satu koil, koil ganda atau langkah bolak-balik
  • konektor untuk menghubungkan sumber eksternal untuk catu daya terpisah dari logika kontrol dan motor
  • RESET Tombol Arduino
  • Perpustakaan AFMotor Adafruit digunakan untuk manajemen.

Motor Drive Shield membutuhkan sedikit penyempurnaan agar Anda dapat menghubungkan apa pun setelahnya. Saya menyolder konektor yang diperlukan di atas, inilah yang terjadi.


Pelindung drive motor


Motor dapat dihubungkan ke catu daya tambahan relatif ke papan Arduino. Saya merekomendasikan metode koneksi ini saja. Untuk melakukan ini, hapus, buka jumper, seperti yang ditunjukkan pada gambar.


4-channel L293D Motor Drive Shield.  Jumper untuk daya eksternal


Dalam hal ini, Arduino diberi daya dan motor diberi daya secara independen satu sama lain.


LED pada pelindung motor menyala ketika ada daya untuk motor, jika tidak menyala, maka motor tidak akan bekerja.


Masalah baru


Posisi power jumper tidak berlaku untuk servos, mereka masih akan ditenagai oleh Arduino 5V. Karena servomotors biasanya mengkonsumsi banyak arus dan jika daya tidak mencukupi, maka seluruh perangkat mulai gagal, dalam kasus "terbaik", hanya drive servo yang akan gagal - itu tidak akan berputar pada sudut yang ditetapkan, atau sepanjang waktu sebelum setiap belokan pertama berputar pada 0 derajat, dan hanya kemudian pada sudut tertentu (dan jika Anda bisa mengikuti). Oleh karena itu, saya merekomendasikan untuk menyalakan servo juga dari sumber daya tambahan. Untuk melakukan ini, Anda harus sedikit mengulang diagram koneksi: gigit kabel plus (biasanya merah) dari konektor standar dan sambungkan ke plus sumber daya secara langsung.


Finalisasi untuk menghubungkan kekuatan servomotor


Saat menghubungkan Motor Drive Shield, pin analog tidak digunakan. Pin digital 2, 13 tidak digunakan.


Pin berikut hanya digunakan jika motor DC atau motor stepper yang sesuai terhubung dan digunakan:


  • D11: Motor DC # 1 / Stepper # 1 (aktivasi dan kontrol kecepatan)
  • D3: Motor DC # 2 / Stepper # 1 (aktivasi dan kontrol kecepatan)
  • D5: Motor DC # 3 / Stepper # 2 (aktivasi dan kontrol kecepatan)
  • D6: Motor DC # 4 / Stepper # 2 (aktivasi dan kontrol kecepatan)

Pin ini akan sibuk jika DC / steppers digunakan: D4, D7, D8, D12.


Pin berikut akan ditempati hanya jika servomotors yang sesuai digunakan:


  • D9: Kontrol Servo # 1
  • D10: Kontrol Servo # 2

Tabel koneksi


Untuk memulai dengan Motor Drive Shield, Anda perlu mengunduh dan menginstal perpustakaan AFMotor Adafruit .


Contoh kode untuk mengendalikan motor:


 #include <AFMotor.h> //   Adafruit #include <Servo.h> //     AF_DCMotor motor(1); //   ,    DC    Motor Shiled , ,  frequency Servo servo; //    servo.attach(10); //     9  10 (    Motor Shiled) motor.setSpeed(speed); //   DC   0 ()  255 ( ) motor.run(RELEASE); // DC   motor.run(FORWARD); // DC   motor.run(BACKWARD); // DC   servo.write(90); //    90 . 

Motor DC mulai berputar hanya ketika menunjukkan kecepatan lebih besar dari 100, jika kurang, itu hanya berdengung. Anda harus menentukan kecepatan minimum motor Anda secara eksperimental.


Untuk motor yang terhubung ke M1 dan M2, Anda dapat mengatur frekuensi: MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_2KHZ, MOTOR12_1KHZ. Kecepatan rotasi tertinggi dicapai pada 64KHz, frekuensi ini akan terdengar, frekuensi dan kecepatan lebih rendah pada 1KHz tetapi juga menggunakan lebih sedikit energi. Motor 3 dan 4 selalu berjalan pada 1KHz, nilai-nilai lain diabaikan. Standarnya adalah 1KHz di mana-mana.


Setelah itu, perlu dilakukan uji motor. Sketsa untuk pengujian dapat diambil di sini . Di awal sketsa, ubah nomor motor dalam satu baris (atau garis) dari jenis:


 AF_DCMotor motor(); 

Sketsa untuk beberapa waktu memutar motor ke depan di sepanjang pergerakan robot, dan kemudian kembali. Perhatikan baik-baik untuk melihat apakah motor berputar ke arah itu, dan ubah polaritas sambungan jika perlu.


Kami menghubungkan meteran jarak ultrasonik HC-SR04 Modul Ultrasonik. Pinout:


  • Vcc
  • Trig (T)
  • Echo (r)
  • GND

Waktu yang dihabiskan oleh pencari jangkauan ultrasonik untuk pengukuran (ditentukan secara empiris):


  • maksimum 240 ms jika jaraknya terlalu panjang (di luar jangkauan)
  • setidaknya 1 ms jika jaraknya terlalu pendek
  • jarak 1,5 m ditentukan dalam sekitar 10 ms

Pengukur Jarak Ultrasonik HC-SR04 Modul Ultrasonik


Sensor pencari jarak ultrasonik, karena sifat fisiknya, dan bukan karena China, dalam beberapa kasus buruk menentukan jarak ke hambatan:


  • jika hambatannya kompleks, maka USG dipantulkan pada sudut yang berbeda dan sensor salah,
  • ultrasound diserap dengan sempurna (mis. tidak tercermin) oleh furnitur atau mainan berlapis kain, dan sensor percaya bahwa tidak ada apa-apa di depannya.

Dengan kata lain, untuk pengintai ultrasonik, idealnya akan sangat baik jika semua hambatan dalam bentuk bidang padat yang tegak lurus dengan arah radiasi ultrasonik.


Beberapa masalah dapat diselesaikan dengan sensor jarak inframerah. Tapi itu juga tidak sempurna:


  • rentang maksimum kecil dibandingkan dengan ultrasound: 0,3-0,8 m versus 4 m
  • jarak minimum yang besar dibandingkan dengan ultrasound: 10 cm vs 2 cm
  • ketergantungan sensitivitas sensor pada pencahayaan keseluruhan

Meskipun jika Anda memasang pengukur jarak ini secara berpasangan, maka efisiensi pekerjaan mereka akan meningkat secara signifikan.


Hubungkan Bluetooth HC-05


Seperti yang dapat Anda lihat dari lembar data pin utama "telanjang" HC-05:


  • Transmisi TX (pin 1)
  • Penerimaan RX (pin 2)
  • Catu daya 3.3V (pin 12) 3.3V
  • Tanah GND (pin 13)
  • Indikator mode PIO8 (pin 31)
  • PIO9 (pin 32) status koneksi, jika koneksi dibuat, output akan tinggi
  • PIO11 (pin 34) untuk mengaktifkan mode perintah AT

Modul kami disolder ke Breakout / Base Board, di mana sudah ada pembagi tegangan, sehingga memiliki rentang tegangan kerja dari 3,3V hingga 6V.


Kami menghubungkan unit modul Bluetooth kami:


  • Arduino (TX) - (RX) HC-05
  • Arduino (RX) - (TX) HC-05
  • Arduino (+ 5V) - (VCC) Bluetooth
  • Arduino (GND) - (GND) Bluetooth
  • LED, pin KUNCI tidak digunakan

Setelah daya disuplai ke modul Bluetooth HC-05, LED di atasnya akan berkedip, yang berarti bluetooth berfungsi.


Nyalakan bluetooth di ponsel, cari perangkat dengan nama HC-05 dan hubungkan, kata sandi 1234.


Untuk pengujian, isi sketsa sederhana dalam Arduino:


 int count = 0; void setup() { Serial.begin(9600); Serial.println("Test Arduino + Bluetooth. http://localhost"); } void loop() { count++; Serial.print("Count = "); Serial.println(count); delay(1000); } 

Di ponsel Android, instal Terminal Bluetooth. Kami terhubung ke perangkat HC-05 dan kami mengamati pada layar ponsel merayap garis dengan penghitung yang meningkat.


Agar modul dapat menerima perintah AT, Anda harus memasukkannya ke mode yang sesuai - untuk ini Anda perlu mengatur output KUNCI (PIO11) menjadi logis 1. Pada beberapa Papan Breakout / Basis, alih-alih output KUNCI, ada output EN (ENABLE), yang mungkin atau tidak mungkin untuk output. disolder ke pin pada chip itu sendiri. Ini hanya berlaku untuk chip HC05. Itu hanya output terminal EN saya tidak disolder di mana pun. Oleh karena itu, dapat disolder dengan kawat terpisah ke terminal KUNCI (PIO11) chip. Atau, selama operasi, untuk menempatkan HC05 ke mode AT-command, hubung singkat output chip KEY (PIO11) ke output daya Vcc selama beberapa detik. Untuk HC06, pin KUNCI tidak diperlukan.


Perangkat lunak


Catatan Setiap kali sebelum mengunduh program ke Arduino, pastikan modul Bluetooth tidak terhubung ke Arduino. Ini akan menyebabkan masalah isi sketsa. Putuskan sambungan daya dari modul Bluetooth atau kabel yang menghubungkan pin modul Arduino dan RX, TX.


Di awal sketsa, ubah nomor motor pada baris jenis:


 AF_DCMotor motor(); 

Buat sketsa untuk mode otomatis dengan unduhan penghindaran kendala di sini .


Jika Anda mengganti string


 byte debug = 0; 

pada


 byte debug = 10; 

Ini akan mengaktifkan mode debug.


Dalam mode debugging, RoboCar4W tidak akan benar-benar mengemudi atau memutar. Sebaliknya, aktifkan monitor port serial dan di sana Anda akan melihat bagaimana "drive" secara virtual. Alih-alih drive yang sebenarnya maju, string "Maju" akan ditulis ke monitor port serial, bukannya mundur dengan belokan ke kiri, "Putar Kembali L (eft)", dll. Sensor jarak ultrasonik juga tidak melakukan apa-apa, sebaliknya jarak ke rintangan dihasilkan secara terprogram dan acak.


Mode debugging ini nyaman jika Anda mengubah algoritma gerakan dan alih-alih menangkap mesin tik di sekitar ruangan, cukup periksa semuanya saat idle.


Sketsa Bluetooth untuk pengunduhan kontrol manual di sini . Sketsa tidak memiliki mode debug, karena semuanya transparan di sana. Anda menekan tombol - robot berjalan.


Program untuk Adnroid Bluetooth RC Car .


Yah, itu dia! Semoga perjalananmu menyenangkan!


Semoga perjalananmu menyenangkan!

Source: https://habr.com/ru/post/id426097/


All Articles