Ovaj tutorijal je dio: SunFounder Rasberry Pi Pico Pico 4WD pametni komplet za automobil
Datoteke povezane s ovom grupom bit će prikazane zajedno. Linkovi do drugih videozapisa nalaze se ispod ovog članka.
Kurs Lekcija 8 od 10: Raspberry Pi Pico pametni automobil – Lekcija 8: Servo motor i praćenje objekata
Ova lekcija iz kursa Raspberry Pi Pico Smart Car autora Robojaxa istražuje funkcionalnost servo motora i kako ga koristiti za kreiranje robota koji prati objekat ili "prati vašu ruku". Projekat ide dalje od jednostavne kontrole motora, demonstrirajući kako kombinirati servo upravljani ultrazvučni senzor s inteligentnom Python logikom kako bi se kreirao automobil koji aktivno traži i prati objekat unutar svog dometa. Ovo je fundamentalni koncept u robotici, koji vam omogućava da izgradite interaktivne projekte poput robota koji prati osobu, pametnog ljubimca koji donosi lopticu ili autonomne sigurnosne kamere koja prati pokret. Lekcija također pokriva i drugi, jednostavniji projekat: automobil koji se automatski približava, gura i udaljava od objekata unutar određene zone udaljenosti.
Hardver i komponente
Ovaj projekat se temelji na SunFounder Raspberry Pi Pico 4WD automobilskom kompletu. Ključne komponente korištene u ovoj lekciji su:
- Raspberry Pi Pico ploča
- 4WD Smart Car šasija s motorima
- Servo motor (idealno servo s metalnim zupčanicima radi izdržljivosti)
- Ultrazvučni senzor udaljenosti (HC-SR04)
- Ploča za upravljanje motorima (dio automobilskog kompleta)
- RGB LED (za vizualnu povratnu informaciju)
- Izvor napajanja (baterijski paket za automobil)
Servo motor je srce funkcionalnosti ove lekcije. Za razliku od standardnog DC motora koji se neprekidno okreće, servo motor je dizajniran da se rotira i zadrži specifičnu ugaonu poziciju, obično između 0 i 180 stepeni. To ga čini savršenim za precizno usmjeravanje ultrazvučnog senzora. Kvalitet serva često je određen materijalom zupčanika (plastika naspram metala) i njegovim obrtnim momentom, koji diktira njegovu snagu i izdržljivost.
Kako radi
Dijagram u nastavku objašnjava kako kod funkcionira.
Vodič za povezivanje
Povezivanje za ovu lekciju je jednostavno, jer se nadograđuje na prethodno sastavljeni automobilski komplet. Kritična veza je servo motor, koji mora biti spojen na specifičan GPIO pin na Pico ploči.
U videu, instruktor povezuje servo na pin broj 18 na Raspberry Pi Pico. Ultrazvučni senzor je montiran na vrh servo roga, što mu omogućava da se rotira lijevo i desno kako bi skenirao područje. Ostatak povezivanja za motore, RGB LED i napajanje pretpostavlja se da je već povezan iz prethodnih lekcija u kursu.
Za detaljan vizualni vodič, molimo pogledajte dijagram povezivanja ispod.
Objašnjenje koda
Python kod za ovu lekciju izgrađen je oko prilagođene pico_4wd biblioteke, koja pojednostavljuje složene hardverske interakcije. Dijelovi koje korisnik može konfigurirati nalaze se na vrhu skripte i kontroliraju ponašanje automobila.
Ovdje su ključne varijable koje možete prilagoditi kako biste prilagodili ponašanje vašeg robota "prati ruku":
car.RADAR_REFERENCE = 25: Ovo je maksimalna udaljenost u centimetrima koju senzor "vidi". Svaki objekat izvan ove udaljenosti se ignorira. Možete je povećati kako bi automobil bio osjetljiviji ili je smanjiti kako bi zahtijevao bliži objekat.car.RADAR_MAX_ANGLE = 45&car.RADAR_MIN_ANGLE = -45: Ove vrijednosti definiraju krajnji lijevi (45) i krajnji desni (-45) ugao koje servo skenira. Ovo stvara vidno polje od 90 stepeni ispred automobila.car.RADAR_STEP_ANGLE = 10: Ovo je korak (u stepenima) koji servo koristi za kretanje između tačaka skeniranja. Manji korak (npr. 5) daje finiju rezoluciju, ali zahtijeva više vremena za potpuno skeniranje. Veći korak (npr. 15) skenira brže, ali s nižom preciznošću.MOTOR_FORWARD_POWER = 40: Ovo postavlja snagu motora (0-100) koja se koristi kada se automobil kreće naprijed prema otkrivenom objektu. Prilagodite ovo kako biste promijenili brzinu automobila u potjeri.MOTOR_TURNING_POWER = 40: Ovo postavlja snagu motora koja se koristi kada se automobil okreće kako bi se suočio s objektom. Veća vrijednost učinit će da se automobil okreće agresivnije.
Glavna logika funkcije main() je kontinuirana petlja. Prvo poziva car.radar_scan(), koja vraća niz '1' i '0' koji predstavlja je li objekat otkriven na svakom uglu skeniranja ('1' znači da je objekat unutar referentne udaljenosti). Kod zatim analizira ovaj niz kako bi pronašao najveću grupu uzastopnih '1', što ukazuje na centar otkrivenog objekta. Na osnovu toga gdje se taj centar nalazi u polju skeniranja, automobilu se naređuje da se okrene lijevo, okrene desno ili krene naprijed kako bi se poravnao s objektom i pratio ga.
Demonstracija uživo projekta
Video pruža jasnu demonstraciju projekta u akciji. Instruktor prvo pokreće test skriptu kako bi pokazao kako se servo motor može pomjeriti na precizne uglove poput 90, 0 i -90 stepeni. Ovo je ključno za razumijevanje opsega serva i za pravilno montiranje ultrazvučnog senzora.
Nakon montiranja senzora, prikazana je funkcija "praćenje ruke". Dok instruktor pomjera ruku ispred auta, servo montirani senzor skenira lijevo i desno. Logika auta obrađuje podatke sa senzora i okreće točkove kako bi se usmjerilo prema detektovanoj ruci, efektivno je prateći po podu. Demonstracija naglašava kako auto može pratiti objekat dok se kreće i prilagođavati svoj smjer u skladu s tim. Prikazan je i drugi projekat, gdje je auto programiran da prilazi i gura objekat ako je detektovan na udaljenosti između 10 i 20 centimetara, te da se povuče ako je objekat preblizu (ispod 10 centimetara).
Ključne poruke
Ova lekcija je odličan uvod u korištenje servo motora za kreiranje interaktivnih robotskih ponašanja. Kombinovanjem serva sa senzorom udaljenosti, možete napraviti robota sa "osjećajem vida" koji može aktivno pratiti i reagovati na svoje okruženje. Mogućnost podešavanja parametara poput uglova skeniranja, veličine koraka i snage motora omogućava finu kontrolu nad ponašanjem robota, što je ključna vještina za svaki robotski projekat.
Poglavlja
- [00:00] Uvod u servo motor i praćenje objekata
- [01:48] Karakteristike i mogućnosti kompleta za kurs
- [03:08] Razumijevanje rada servo motora
- [06:08] Testiranje servo motora sa Python kodom
- [09:59] Objašnjenje funkcije "praćenje ruke"
- [10:49] Demonstracija funkcionalnosti "praćenje ruke"
- [15:37] Projekat: guranje objekta i povlačenje unazad
- [18:40] Demonstracija projekta guranja objekta
- [19:25] Zaključak i sljedeći koraci
Ovaj tutorijal je dio: SunFounder Rasberry Pi Pico Pico 4WD pametni komplet za automobil
- Kurs Lekcija 1 od 10: Raspberry Pi Pico 4WD pametni auto komplet od SunFounder od Robojax
- Kurs Lekcija 2 od 10: Osnovni Python za upravljanje Raspberry Pi Pico 4WD Smart Car Kitom
- Kurs Lekcija 3 od 10: Sastavljanje Raspberry Pi Pico 4WD pametnog autića kita od SunFounder-a od strane Robojax-a
- Kurs Lekcija 4 od 10: Raspberry Pi Pico ekspanzijska ploča za 4WD pametni automobil komplet
- Kurs Lekcija 5 od 10: Upravljanje RGB LED WS2812B pomoću Raspberry Pi Pico
- Kurs Lekcija 6 od 10: Upravljanje DC motorima koristeći Raspberry Pi Pico 4WD Smart Car Kit
- Lekcija 7 od 10: Praćenje linije, detekcija litice Kalibrirajte senzor sivih tonova Raspberry Pi Pico automobil
- Kurs Lekcija 9 od 10: Izbjegavanje prepreka koristeći Raspberry Pi Pico 4WD pametni automobil
- Kurs Lekcija 10 od 10: Upravljanje Raspberry Pi Pico 4WD pametnim automobilskim kompletom putem mobilne aplikacije
# Lesson 8/10 Pi Car Pico 4WD: Follow hand
# Download and resource page https://robojax.com/RJT630
import pico_4wd as car
car.RADAR_REFERENCE = 25
car.RADAR_MAX_ANGLE = 45
car.RADAR_MIN_ANGLE = -45
car.RADAR_STEP_ANGLE = 10
MOTOR_FORWARD_POWER = 40
MOTOR_TURNING_POWER = 40
def main():
while True:
radar_data = car.radar_scan()
if isinstance(radar_data, int):
continue
radar_data = [str(i) for i in radar_data]
radar_data = "".join(radar_data)
paths = radar_data.split("1")
length_list = []
for path in paths:
length_list.append(len(path))
if max(length_list) == 0:
car.move("stop")
else:
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:
car.move("right", MOTOR_TURNING_POWER)
elif pos > 2 * delta:
car.move("left", MOTOR_TURNING_POWER)
else:
#if radar_data[int(len(radar_data)/2-1)] == "0":
# car.move("stop")
#else:
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
Resursi i reference
Još nema resursa.
Datoteke📁
Nema dostupnih datoteka.