Hierdie tutorialie is deel van: SunFounder Framboos Pi Pico Pico 4WD Slimmotorstel
Lêers wat met hierdie groep verband hou, sal saam vertoon word. Skakels na ander video's is onder hierdie artikel.
Kursusles 8 van 10: Raspberry Pi Pico Slim Motor – Les 8: Servomotor en Voorwerpvolging
Hierdie les uit die Raspberry Pi Pico Smart Car-kursus deur Robojax ondersoek die funksionaliteit van 'n servomotor en hoe om dit te gebruik om 'n voorwerp-volgende of "volg jou hand"-robot te skep. Die projek gaan verder as eenvoudige motorbeheer en demonstreer hoe om 'n servo-aangedrewe ultrasoniese sensor met intelligente Python-logika te kombineer om 'n motor te skep wat aktief 'n voorwerp binne sy reeks soek en volg. Dit is 'n fundamentele konsep in robotika, wat jou in staat stel om interaktiewe projekte te bou soos 'n robot wat 'n persoon volg, 'n slim troeteldier wat bal speel, of 'n outonome sekuriteitskamera wat beweging volg. Die les dek ook 'n tweede, eenvoudiger projek: 'n motor wat outomaties na voorwerpe binne 'n spesifieke afstandsonde nader, stoot en terugbeweeg.
Hardeware en Komponente
Hierdie projek is gebaseer op die SunFounder Raspberry Pi Pico 4WD-motorkit. Die sleutelkomponente wat in hierdie les gebruik word, is:
- Raspberry Pi Pico-bord
- 4WD Slimmotorsasi met motors
- Servomotor (ideaal 'n metaalrat-servo vir duursaamheid)
- Ultrasoniese afstandsensor (HC-SR04)
- Motorbestuurderbord (deel van die motorkit)
- RGB-LED (vir visuele terugvoer)
- Kragbron (batterypak vir die motor)
Die servomotor is die kern van hierdie les se funksionaliteit. Anders as 'n standaard GS-motor wat voortdurend draai, is 'n servomotor ontwerp om na 'n spesifieke hoekposisie te draai en dit te hou, gewoonlik tussen 0 en 180 grade. Dit maak dit perfek om die ultrasoniese sensor presies te rig. Die kwaliteit van 'n servo word dikwels bepaal deur sy ratmateriaal (plastiek vs. metaal) en sy wringkrag, wat sy sterkte en duursaamheid bepaal.
Hoe dit werk
Die diagram hieronder verduidelik hoe die kode werk.
Bedradingsgids
Die bedrading vir hierdie les is eenvoudig, aangesien dit voortbou op die vooraf-geassembleerde motorkit. Die kritieke verbinding is die servomotor, wat aan 'n spesifieke GPIO-pen op die Pico gekoppel moet word.
In die video koppel die instrukteur die servo aan pen nommer 18 op die Raspberry Pi Pico. Die ultrasoniese sensor is bo-op die servohoring gemonteer, wat dit toelaat om links en regs te draai om die area te skandeer. Die res van die bedrading vir die motors, RGB-LED en krag word aanvaar as vooraf gekoppel van vorige lesse in die kursus.
Vir 'n gedetailleerde visuele gids, verwys asseblief na die bedradingdiagram hieronder.
Kodeverduideliking
Die Python-kode vir hierdie les is gebou rondom 'n pasgemaakte pico_4wd-biblioteek, wat komplekse hardeware-interaksies vereenvoudig. Die gebruikerskonfigureerbare dele is bo-aan die skrif en beheer die motor se gedrag.
Hier is die sleutelveranderlikes wat jy kan aanpas om jou robot se "volg hand"-gedrag te personaliseer:
car.RADAR_REFERENCE = 25: Dit is die maksimum afstand in sentimeter wat die sensor sal "sien." Enige voorwerp verder as hierdie afstand word geïgnoreer. Jy kan dit verhoog om die motor meer sensitief te maak of verlaag om 'n nader voorwerp te vereis.car.RADAR_MAX_ANGLE = 45&car.RADAR_MIN_ANGLE = -45: Dit definieer die mees linkse (45) en mees regse (-45) hoeke wat die servo sal skandeer. Dit skep 'n 90-grade gesigsveld voor die motor.car.RADAR_STEP_ANGLE = 10: Dit is die inkrement (in grade) wat die servo gebruik om tussen skandeerpunte te beweeg. 'n Kleiner stap (bv. 5) gee 'n fyner resolusie maar neem langer om 'n volle skandering te voltooi. 'n Groter stap (bv. 15) skandeer vinniger maar met laer presisie.MOTOR_FORWARD_POWER = 40: Dit stel die motorkrag (0-100) wat gebruik word wanneer die motor vorentoe beweeg na die opgespoorde voorwerp. Pas dit aan om die motor se jaagspoed te verander.MOTOR_TURNING_POWER = 40: Dit stel die motorkrag wat gebruik word wanneer die motor draai om die voorwerp te konfronteer. 'n Hoër waarde sal die motor meer aggressief laat draai.
Die hoof-logika van die main()-funksie is 'n deurlopende lus. Dit roep eers car.radar_scan() aan, wat 'n string van '1'e en '0'e teruggee wat voorstel of 'n voorwerp by elke skandeerhoek opgespoor is (a '1' beteken 'n voorwerp is binne die verwysingsafstand). Die kode ontleed dan hierdie string om die grootste groep opeenvolgende '1'e te vind, wat die middelpunt van die opgespoorde voorwerp aandui. Gebaseer op waar hierdie middelpunt in die skandeerveld is, word die motor beveel om links te draai, regs te draai, of vorentoe te beweeg om homself met die voorwerp in lyn te bring en dit te volg.
Lewende Projekdemonstrasie
Die video bied 'n duidelike demonstrasie van die projek in aksie. Die instrukteur voer eers 'n toetskrip uit om te wys hoe die servomotor na presiese hoeke soos 90, 0 en -90 grade beweeg kan word. Dit is noodsaaklik om die servo se reeks te verstaan en om die ultrasoniese sensor korrek te monteer.
Na die montering van die sensor word die "volg hand"-funksie ten toon gestel. Terwyl die instrukteur sy hand voor die motor beweeg, skandeer die servo-gemonteerde sensor links en regs. Die motor se logika verwerk die sensordata en draai die wiele om na die bespeurde hand te stuur, en volg dit effektief oor die vloer. Die demonstrasie beklemtoon hoe die motor 'n voorwerp kan volg terwyl dit beweeg en sy rigting dienooreenkomstig aanpas. 'n Tweede projek word ook gewys, waar die motor geprogrammeer is om 'n voorwerp te nader en te stoot as dit tussen 10 en 20 sentimeter weg bespeur word, en om terug te trek as die voorwerp te naby kom (onder 10 sentimeter).
Kernpunte
Hierdie les is 'n uitstekende inleiding tot die gebruik van servomotors vir die skep van interaktiewe robotgedrag. Deur 'n servo met 'n afstandsensor te kombineer, kan jy 'n robot met 'n "sin van sig" bou wat sy omgewing aktief kan volg en daarop kan reageer. Die vermoë om parameters soos skandeerhoeke, stapgrootte en motorkrag te verstel, maak fyn beheer oor die robot se gedrag moontlik, wat 'n kritieke vaardigheid vir enige robotikaprojek is.
Hoofstukke
- [00:00] Inleiding tot Servomotor en Voorwerpvolging
- [01:48] Kursuspakket Kenmerke en Vermoëns
- [03:08] Verstaan Servomotorwerking
- [06:08] Toets van Servomotor met Python-kode
- [09:59] Verduideliking van die "Volg Hand"-funksie
- [10:49] Demonstrasie van die "Volg Hand"-funksionaliteit
- [15:37] Projek: Voorwerpstoot en Terugtrek
- [18:40] Demonstrasie van die Voorwerpstootprojek
- [19:25] Gevolgtrekking en Volgende Stappe
Hierdie handleiding is deel van: SunFounder Framboos Pi Pico Pico 4WD Slimmotorstel
- Kursusles 1 van 10: Raspberry Pi Pico 4WD Slimmotor-motorstel van SunFounder deur Robojax
- Kursusles 2 van 10: Basiese Python om Raspberry Pi Pico 4WD Slimmotorstel te bestuur
- Kursusles 3 van 10: Samestelling van Raspberry Pi Pico 4WD Slimmotorstel van SunFounder deur Robojax
- Kursusles 4 van 10: Raspberry Pi Pico-uitbreidingsbord vir 4WD Slimmotorstel
- Kursusles 5 van 10: Beheer van RGB-LED WS2812B met behulp van Raspberry Pi Pico
- Kursusles 6 van 10: Beheer van GS-motors met behulp van Raspberry Pi Pico 4WD Slimmotorstel
- Les 7 van 10: Lynvolging, Randbespeuring Kalibreer Grysskaal-sensor Raspberry Pi Pico-motor
- Kursusles 9 van 10: Hindernisvermyding met behulp van Raspberry Pi Pico 4WD Slimme Motor
- Kursusles 10 van 10: Beheer van Raspberry Pi Pico 4WD Slimmotorkit met mobiele toepassing
# 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
Hulpbronne en verwysings
Geen hulpbronne nog.
Lêers📁
Geen lêers beskikbaar.