Tutorial ini adalah bagian dari: SunFounder Raspberry Pi Pico Pico 4WD Smart Car Kit
File-file yang terkait dengan grup ini akan ditampilkan bersama. Tautan ke video lain berada di bawah artikel ini.
Kursus Pelajaran 9 dari 10: Penghindaran Rintangan menggunakan Mobil Pintar 4WD Raspberry Pi Pico
Pendahuluan
Panduan ini, berdasarkan Pelajaran Kursus 9 dari 10 dari Robojax, menunjukkan cara membangun robot penghindar rintangan menggunakan kit SunFounder Raspberry Pi Pico 4WD Smart Car. Proyek ini menggabungkan sensor ultrasonik yang digerakkan servo dengan kontrol motor untuk menciptakan robot yang dapat menavigasi lingkungannya secara otonom. Dengan mengayunkan sensor seperti radar, mobil mendeteksi rintangan dan secara cerdas memilih jalur yang jelas untuk melanjutkan, menjadikannya pengenalan yang sempurna untuk robotika, integrasi sensor, dan navigasi otonom.
Proyek ini bukan sekadar mainan; ini adalah fondasi untuk banyak aplikasi praktis. Berikut adalah beberapa ide untuk menginspirasi Anda:
- Robot Eksplorasi Otonom: Bangun robot yang dapat memetakan dan menjelajahi ruangan atau area luar ruangan tanpa campur tangan manusia.
- Penyedot Debu Pintar: Gunakan prinsip yang sama untuk membuat robot yang menavigasi ruangan, menghindari furnitur dan dinding sambil membersihkan.
- Bot Patroli Keamanan: Program mobil untuk berpatroli di sekeliling area dan gunakan sensor ultrasonik untuk mendeteksi serta melaporkan rintangan atau intrusi yang tidak terduga.
- Platform Pendidikan untuk AI: Gunakan proyek ini sebagai batu loncatan untuk mempelajari algoritma yang lebih kompleks seperti pencarian jalur dan pemetaan serta lokalisasi simultan (SLAM).
Pelajaran ini berfokus pada logika inti dan kode yang memungkinkan mobil membuat keputusan. Mobil menggunakan motor servo untuk memutar sensor ultrasonik, bertindak sebagai radar untuk mengukur jarak dari 0 hingga 180 derajat. Kode menganalisis data ini untuk menemukan jalur kosong terluas dan mengarahkan mobil untuk bergerak maju, kiri, atau kanan sesuai kebutuhan. Video ini mendemonstrasikan seluruh proses, dari menguji komponen individual hingga menjalankan algoritma penghindaran rintangan akhir di labirin dunia nyata.
Perangkat Keras/Komponen
Proyek ini didasarkan pada kit SunFounder Raspberry Pi Pico 4WD Smart Car. Komponen penting yang digunakan dalam pelajaran ini adalah:
- Papan mikrokontroler Raspberry Pi Pico
- Sasis SunFounder 4WD Smart Car dengan empat motor
- Papan penggerak motor
- Sensor jarak ultrasonik (tipe HC-SR04)
- Motor servo (untuk memutar sensor ultrasonik)
- Catu daya (baterai untuk mobil)
Panduan Pengkabelan
Kit SunFounder dirancang untuk perakitan yang mudah, dan pengkabelan biasanya sudah terhubung sebelumnya melalui papan ekspansi khusus. Sensor ultrasonik dipasang pada motor servo, yang kemudian dihubungkan ke papan kontrol utama. Pengaturan ini memungkinkan sensor diputar untuk memindai lingkungan. Untuk diagram pengkabelan terperinci yang spesifik untuk kit Anda, silakan merujuk ke dokumentasi resmi SunFounder.
Koneksi inti melibatkan pin pemicu dan gema sensor ultrasonik, serta pin sinyal motor servo, semuanya terhubung ke pin GPIO tertentu di Raspberry Pi Pico. Penggerak motor juga terhubung ke Pico untuk mengontrol empat motor penggerak. Video menyebutkan bahwa dokumentasi lengkap, termasuk diagram pengkabelan, tersedia untuk diunduh dengan kit.
Penjelasan Kode
Pelajaran ini berfokus pada logika dalam contoh `obstacle_avoid`. Kode ditulis dalam MicroPython. Meskipun program lengkap tersedia untuk diunduh, kami akan fokus pada parameter kunci yang dapat dikonfigurasi pengguna yang mengontrol perilaku mobil. Ini biasanya ditemukan di bagian atas skrip.
Berikut adalah variabel utama yang dapat Anda sesuaikan untuk menyempurnakan kinerja robot Anda:
# Parameter radar dan pergerakan
radar_reference = 20 # Jarak minimum dalam cm yang dianggap aman
step_angle = 10 # Kenaikan sudut untuk setiap langkah pemindaian radar
forward_speed = 30 # Kecepatan motor untuk bergerak maju (0-100)
turn_speed = 50 # Kecepatan motor untuk berbelok (0-100)
forward_scan_angle = 50 # Sudut pemindaian servo saat tidak ada rintangan terdeteksi
- radar_reference: Ini adalah jarak aman penting dalam sentimeter. Jika rintangan terdeteksi lebih dekat dari nilai ini, mobil akan menganggapnya sebagai "bahaya" dan memulai manuver penghindaran. Dalam video, ini diatur ke 20 cm.
- step_angle: Ini menentukan resolusi pemindaian radar. Nilai yang lebih kecil (misalnya, 10 derajat) berarti pemindaian lebih terperinci tetapi membutuhkan waktu lebih lama. Nilai yang lebih besar akan lebih cepat tetapi bisa melewatkan rintangan sempit.
- forward_speed & turn_speed: Ini mengontrol daya yang dikirim ke motor. Anda dapat menyesuaikannya untuk mengubah kecepatan keseluruhan dan kelincahan mobil. Kecepatan belok sering diatur lebih tinggi untuk memastikan mobil dapat berputar secara efektif.
- forward_scan_angle: Ketika tidak ada bahaya langsung di depan, mobil mempersempit pemindaiannya ke sudut ini (berpusat ke depan) untuk memeriksa rintangan lebih sering di jalur langsungnya, memungkinkan pergerakan maju yang lebih mulus.
Video ini juga menjelaskan logika pengambilan keputusan utama. Fungsi `get_direction()` menganalisis daftar pembacaan jarak (diubah menjadi 1 dan 0 untuk aman/tidak aman) untuk menemukan jalur kontinu terluas dari angka "1". Berdasarkan lokasi jalur terluas ini, fungsi tersebut mengembalikan arah: "maju", "kiri", atau "kanan". Loop utama kemudian menjalankan tindakan yang sesuai, memutar mobil dan memindai ulang hingga jalur di depan jelas.
Proyek Langsung/Demonstrasi
Video ini memberikan demonstrasi menyeluruh tentang proyek tersebut. Dimulai dengan menguji sensor ultrasonik saja untuk menunjukkan cara mengukur jarak dan mencetak nilai ke shell. Instruktur kemudian menjelaskan algoritma penghindaran rintangan menggunakan diagram alir, merinci proses pengambilan keputusan untuk berbelok kiri dan kanan. Terakhir, mobil ditempatkan di labirin kecil yang dibuat dari kotak untuk mendemonstrasikan perilaku penghindaran rintangan secara lengkap dalam aksi. Mobil berhasil menavigasi labirin, berbelok kiri dan kanan untuk menemukan jalur yang jelas ke depan.
Bab Video
- [00:00] Pengenalan Penghindaran Rintangan
- [01:31] Gambaran Umum Kit Mobil Pintar SunFounder dan Fitur-fiturnya
- [02:47] Cara Kerja Fitur Penghindaran Rintangan
- [03:34] Menguji Sensor Ultrasonik
- [07:45] Menjelaskan Algoritma Penghindaran Rintangan dan Diagram Alir
- [12:49] Menganalisis Kode Utama Penghindaran Rintangan
- [15:43] Demonstrasi Langsung Logika Penghindaran Rintangan
- [22:53] Demonstrasi Akhir dengan Labirin Rintangan
- [24:35] Kesimpulan dan Langkah Berikutnya
Tutorial ini adalah bagian dari: SunFounder Raspberry Pi Pico Pico 4WD Smart Car Kit
- Kursus Pelajaran 1 dari 10: Kit Mobil Pintar 4WD Raspberry Pi Pico dari SunFounder oleh Robojax
- Kursus Pelajaran 2 dari 10: Python Dasar untuk Mengendarai Kit Mobil Pintar 4WD Raspberry Pi Pico
- Kursus Pelajaran 3 dari 10: Merakit Kit Mobil Pintar 4WD Raspberry Pi Pico dari SunFounder oleh Robojax
- Kursus Pelajaran 4 dari 10: Papan Ekspansi Raspberry Pi Pico untuk Kit Mobil Pintar 4WD
- Kursus Pelajaran 5 dari 10: Mengendalikan RGB LED WS2812B Menggunakan Raspberry Pi Pico
- Kursus Pelajaran 6 dari 10: Mengendalikan Motor DC menggunakan Kit Mobil Pintar 4WD Raspberry Pi Pico
- Pelajaran 7 dari 10: Pelacakan Garis, Deteksi Tebing Kalibrasi Sensor Skala Abu-abu Mobil Raspberry Pi Pico
- Kursus Pelajaran 8 dari 10: Mobil Pintar Raspberry Pi Pico – Pelajaran 8: Motor Servo dan Mengikuti Objek
- Kursus Pelajaran 10 dari 10: Mengendalikan Kit Mobil Pintar 4WD Raspberry Pi Pico dengan Aplikasi Seluler
# Lesson 9/10 Pi Car Pico 4WD: Obstacle avoid
# Download and resource page https://robojax.com/RJT631
import pico_4wd as car
import time
car.RADAR_REFERENCE = 20
car.RADAR_STEP_ANGLE = 10
MOTOR_FORWARD_POWER = 30
MOTOR_TURNING_POWER = 50
FORWARD_SCAN_ANGLE = 50
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
status = "Danger"
def get_dir(radar_data):
# get scan status of 0, 1
# print(radar_data)
radar_data = [str(i) for i in radar_data]
radar_data = "".join(radar_data)
# Split 0, leaves the free path
paths = radar_data.split("0")
# print(paths)
# print("paths: %s" % paths)
length_list = []
# Calculate where is the widest
for path in paths:
length_list.append(len(path))
if max(length_list) < 4:
return "left"
# Calculate the direction of the widest
i = length_list.index(max(length_list))
pos = radar_data.index(paths[i])
pos += (len(paths[i]) - 1) / 2
delta = len(radar_data) / 3
if pos < delta:
return "left"
elif pos > 2 * delta:
return "right"
else:
return "forward"
def main():
global status
# General
while True:
radar_data = car.radar_scan()
# print("radar_data: %s" % radar_data)
# If radar data return a int, means scan not finished, and the int is current angle status
if isinstance(radar_data, int):
if radar_data == 0 and status != "Danger":
print("Danger!")
status = "Danger"
car.move("stop")
car.set_radar_scan_angle(180)
continue
else:
status = "Save"
direction = get_dir(radar_data)
if direction == "left":
print("turn left")
distance = car.get_radar_distance_at(-FORWARD_SCAN_ANGLE/2)
time.sleep(0.5)
car.move("left", MOTOR_TURNING_POWER)
while True:
distance = car.get_radar_distance_at(-FORWARD_SCAN_ANGLE/2)
status = car.get_radar_status(distance)
if status == 1:
break
car.move("stop")
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
elif direction == "right":
print("turn right")
distance = car.get_radar_distance_at(FORWARD_SCAN_ANGLE/2)
time.sleep(0.5)
car.move("right", MOTOR_TURNING_POWER)
while True:
distance = car.get_radar_distance_at(FORWARD_SCAN_ANGLE/2)
status = car.get_radar_status(distance)
if status == 1:
break
car.move("stop")
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
else:
print("forward")
car.set_radar_scan_angle(FORWARD_SCAN_ANGLE)
car.move("forward", MOTOR_FORWARD_POWER)
try:
main()
finally:
car.move("stop")
car.set_light_off()
Common Course Links
- Purchase SunFounder Pico 4WD Smart Car Kit from AliExpress
- Purchase SunFounder Pico 4WD Smart Car Kit from eBay
- Amazon Canada: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon France: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Germany: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Italy: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Japan: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon Spain: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon UK: Purchase Pico 4WD Smart Car Kit by SunFounder
- Amazon USA: Purchase Pico 4WD Smart Car Kit buy SunFounder
- Purchase Pico 4WD Smart Car Kit from SunFounder.com
- SunFounder Pico-4wd Car Kit Documentation
- Video Play List of 10 lesson on SunFounder Pico 4WD Smart Car Kit
Hal-hal yang mungkin Anda butuhkan
-
eBay
-
AliExpressPurchase SunFounder Pico 4WD Smart Car Kit from AliExpresss.click.aliexpress.com
Sumber daya & referensi
Belum ada sumber daya.
Berkas📁
Kode Raspberry Pi
-
Kode kartu Sunfounder Raspberry Pi Pico 4WDSemua kode untuk Sunfounder Raspberry Pi Pico 4WD
pico_4wd_car-main.zip0.02 MB