Remote Control Car dengan Micropython

, , Leave a comment

Hello, this blog is intentionally written in local language for local community. To translate this page to English, you may use the widget found on the header section. FYI, English is not found in the list by default, choose any language first, wait until the whole page is translated and then and click the widget again. This time you will find English as the 1st language in the list (top left corner).

PS. please bear with google translation ūüėČ


Halo selamat datang kembali di andidinata.com. Pada kesempatan kali ini saya ingin membagikan sebuah project untuk membuat mobil remote control dengan waktu yang singkat, biaya yang terjangkau dan hasil yang WOW. Bagi saya proyek ini sudah pernah dilakukan dengan Raspberry Pi. Pertama saya gunakan Pi 2, lalu Pi 2 dipakai sebagai Event Reminder dirumah dan akhirnya pindah ke Pi Zero. Lalu Pi Zero dipakai sebagai speedometer yang connect ke Geolocator Service, maka sekarang remote control diserahkan ke ESP8266 dalam balutan baju NodeMCU.

ESP8266 sangat popular dalam dunia IoT karena board sekecil ini punya wifi dan protocol TCP/IP sehingga bisa berkomunikasi dengan internet bahkan bisa menjadi sebuah webserver. Oleh karena kemampuan wirelessnya maka project ini dibagi menjadi dua bagian. Pertama tentang kontrol fisik motor dan kedua membuat webserver sebagai front-end controller.

NodeMCU memiliki 9 pin digital yang bekerja pada logic level 3.3 volt. Oleh karena itu board tidak bisa disambungkan langsung dengan DC motor yang bertegangan besar dengan arus yang besar pula. Kalau disambung langsung maka, jin Aladdin muncul dari board dalam NodeMCU, alias terbakar dan kemungkinan besar rusak. Untuk mengkontrol motor dengan aman kita memerlukan bantuan chip driver L293D.

Untuk alasan kepraktisan, saya menggunakan motor shield NodeMCU yang sangat-sangat praktis. Menurut saya, shield ini didesign dengan cermat dan sangat baik. Tidak hanya posisi untuk channel untuk motor dan power yang berbaris di satu sisi, pin-pin NodeMCU juga disusun ulang dan dikelompokkan berdasarkan fungsinya (UART, I2C, SPI, Digital, Analog, Power), bahkan setiap Pin digital dipasangkan dengan power rail 5 volt dan ground. Hasilnya, shield ini ini memudahkan kita untuk mengakses fungsi-fungsi tersebut dengan cepat, praktis karena tidak perlu buka mapping pin out dan kabel-kabel pun menjadi rapi. Tidak hanya itu, shield ini juga menyertakan tombol on/off untuk power source board.

Shield ini menyediakan dua jalur power VM dan VIN. VM digunakan untuk motor dan VIN digunakan untuk board. Jika kita ingin memisahkan power antara motor dan board, maka gunakan masing-masing channel. Jika kita ingin menggabungkan power motor dan board, maka berikan jumper  antara VM dan VIN. Perhatikan kebutuhan tegangan masing-masing. Motor 4.5 Р36 volt dan board 4.5 Р9 volt.

Bahan yang diperlukan untuk membuat project ini antara lain:

  • Chasis
  • 2 DC Motor
  • NodeMCU
  • NodeMCU Motor Shield
  • Kabel
  • 4x Battery AA sebagai power motor
  • Batery AA holder, rangkaian seri
  • Power bank sebagai power board

Peralatan:

  • solder & timah
  • obeng

 

Wiring

Script untuk mengendalikan motor dan webserver didevelop dengan menggunakan bahasa micropython. Jika belum menginstall micropython, ikuti tahapan-tahapannya pada tulisan saya yang berjudul Micropython 123. Script untuk project ini sudah saya publish di github (under MIT License) untuk memudahkan proses instalasinya.

Instalasi

  1. Clone repository https://github.com/mdinata/micropython.git
  2. Masuk ke direktori micropython/rc_car
  3. Copykan rover.py dan RCSlider.py ke dalam ESP8266

Pastikan motor berputar sesuai dengan arah yang diinginkan. sebaiknya lakukan test motor terlebih dahulu dengan meggunakan fungsi-fungsi yang ada pada modul rover.py. Untuk menginisiasi modul ini gunakan perintah

from rover import Motor
m=Motor()

Ada banyak fungsi yang ada di dalam class Motor. Untuk remote control ini saya hanya menggunakan fungsi Motor.move() dan Motor.turn(). Detil argumen yang bisa dimasukkan dalam fungsi tersebut bisa dilihat lebih lanjut di dalam script. Lakukan eksperimen dengan fungsi-fungsi dan argumen tersebut agar terbiasa.

Apabila motor sudah bisa dikendalikan sesuai dengan keinginan, sekarang kita lakukan inisiasi webserver. Untuk memulai websocket, ketikkan perintah import webrepl_setup pada micropython REPL, ikuti perintah pada layar. Saat tahapan selesai hingga board akan melakukan reset. Tahapan ini hanya perlu dilakukan satu kali saja, kecuali jika ingin merubah password  webrepl. Hingga tahap ini, kita sudah bisa melihat sebuah access point yang dicreate oleh micropython dengan nama ESSID MicroPython-XXXXX, XXXXX adalah MAC address dari ESP8266. Sambungkan HP dengan network tersebut dengan password micropythoN  (huruf N kapital). Inisiasi ini diperlukan agar kita dapat mengakses HTML pada IP address 192.168.4.1.

Setelah itu kita webserver dengan mengetikan perintah ini di micropython REPL.

from RCSlider import Webserver
w=Webserver()
w.start()

Saat ini webserver dalam keadaan idle, menunggu untuk sebuah request. Masukkan IP address 192.168.4.1 dan seketika slider akan muncul seperti gambar dibawah ini. Silahkan coba menggerakkan untuk melihat reaksi motor. Kalau motor bergerak sesuai dengan yang diharapkan maka kamu sudah berhasil.

 

Jika belum berhasil, periksa kembali sambungan motor, baterai untuk motor, atau periksa individual motor.

Script yang saya publish tidak hanya dapat dipakai untuk mengendalikan DC Motor, tapi juga servo motor seperti pada video ini. Script tersebut bisa dikembangkan lebih lanjut dengan menambahkan banyak slider sesuai kebutuhan project yang lebih menarik lagi.

 


Sekian sharing kali ini, terima kasih sudah membaca dan semoga bermanfaat. Mohon dukungan untuk like, share dan subscribe apabila belum. Sampai bertemu kembali dalam tulisan berikutnya.

Source:

“https://www.gitbook.com/book/smartarduino/user-mannual-for-esp-12e-motor-shield/details”

 

 

 

 

Facebook Comments
 

Leave a Reply