- Components necessaris:
- Mòdul de sensor d'ultrasons:
- Explicació del circuit:
- Com funciona:
- Explicació de la programació:
Els robots són màquines que redueixen els esforços humans en treballs pesats automatitzant les tasques en indústries, fàbriques, hospitals, etc. executant alguna ordre mitjançant controlador o processador. Però avui som aquí amb un robot automàtic que es mou de forma autònoma sense que cap esdeveniment extern eviti tots els obstacles que hi ha al seu pas, sí que parlem de robot per evitar obstacles. En aquest projecte, hem utilitzat el controlador Raspberry Pi i Motor per conduir el robot i el sensor d'ultrasons per detectar objectes en el camí del robot.
Anteriorment hem tractat molts robots útils, els podeu trobar a la nostra secció de projectes de robòtica.
Components necessaris:
- Raspberry Pi
- Mòdul de sensor d'ultrasons HC-SR04
- ROBOT Xassís complet amb cargol
- Motors DC
- L293D IC
- Rodes
- Taula de pa
- Resistència (1 k)
- Condensador (100nF)
- Connexió de cables
- Font d'alimentació o banc d'energia
Mòdul de sensor d'ultrasons:
Un robot que evita els obstacles és un robot automatitzat i no cal controlar-lo mitjançant cap comandament a distància. Aquest tipus de robots automatitzats tenen alguns sensors del "sisè sentit", com ara detectors d'obstacles, detectors de so, detectors de calor o detectors de metalls. Aquí hem fet la detecció d’obstacles mitjançant senyals d’ultrasons. Per a aquest propòsit, hem utilitzat el mòdul de sensor ultrasònic.
Els sensors d’ultrasons s’utilitzen habitualment per detectar objectes i determinar la distància de l’obstacle al sensor. Aquesta és una gran eina per mesurar la distància sense cap contacte físic, com ara la mesura del nivell d’aigua al dipòsit, la mesura de la distància, el robot que evita els obstacles, etc.

El sensor d'ultrasons HC-SR04 s'utilitza per mesurar la distància entre 2cm-400cm amb una precisió de 3mm. El mòdul sensor està format per un transmissor d'ultrasons, un receptor i un circuit de control. El sensor d'ultrasons consisteix en dos ulls circulars dels quals un s'utilitza per transmetre l'ona ultrasònica i l'altre per rebre-la.
Podem calcular la distància de l’objecte en funció del temps que triga l’ona ultrasònica a tornar al sensor. Com que es coneix el temps i la velocitat del so, podem calcular la distància mitjançant les següents fórmules.
- Distància = (Temps x Velocitat del so a l’aire (343 m / s)) / 2.
El valor es divideix per dos, ja que l’ona es desplaça cap endavant i cap enrere cobrint la mateixa distància.
Per tant, hem calculat la distància (en centímetres) de l’obstacle com es mostra a continuació:
pulse_start = time.time () mentre GPIO.input (ECHO) == 1: #Comproveu si ECHO és HIGH GPIO.output (led, fals) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round (distance, 2) avgDistance = avgDistance + distance
On pulse_duration és el temps transcorregut entre l'enviament i la recepció del senyal ultrasònic.
Explicació del circuit:
El circuit és molt senzill per a aquest robot per evitar obstacles amb Raspberry Pi. Un mòdul de sensor d'ultrasons, utilitzat per detectar objectes, està connectat als pins 17 i 27 de GPIO de Raspberry Pi. Un controlador de motor IC L293D està connectat a Raspberry Pi 3 per conduir motors del robot. Els pins d’entrada 2, 7, 10 i 15 del controlador del motor estan connectats al pin número 12, 16, 20 i 21 del Raspberry Pi GPIO, respectivament. Aquí hem utilitzat dos motors de corrent continu per conduir el robot en què un motor està connectat al pin de sortida 3 i 6 del controlador IC del motor i un altre motor està connectat als pins 11 i 14 del controlador IC del motor.

Com funciona:
Treballar aquest robot autònom és molt fàcil. Quan el robot s’encén i comença a funcionar, Raspberry Pi mesura les distàncies dels objectes, davant seu, mitjançant l’ús del mòdul de sensor d’ultrasons i emmagatzema en una variable. A continuació, RPi compara aquest valor amb valors predefinits i pren decisions en conseqüència per moure el robot cap a l'esquerra, cap a la dreta, cap endavant o cap enrere.

Aquí, en aquest projecte, hem seleccionat una distància de 15 cm per prendre qualsevol decisió de Raspberry Pi. Ara, cada vegada que Raspberry Pi aconsegueix menys de 15 cm de distància de qualsevol objecte, Raspberry Pi atura el robot i el fa retrocedir i el gira a l'esquerra o a la dreta. Ara, abans de tornar-lo a avançar, Raspberry Pi torna a comprovar si hi ha algun obstacle dins de la distància de 15 cm; si és així, torna a repetir el procés anterior, sinó que mogui el robot cap endavant fins que detecti cap altre obstacle o objecte.

Explicació de la programació:
Aquí fem servir el llenguatge Python per al programa. Abans de codificar, l'usuari ha de configurar Raspberry Pi. Podeu consultar els nostres tutorials anteriors per a Introducció a Raspberry Pi i Instal·lació i configuració de Raspbian Jessie OS a Pi.
La part de programació d’aquest projecte té un paper molt important per realitzar totes les operacions. En primer lloc, incloem les biblioteques necessàries, inicialitzem variables i definim pins per a sensors, motors i components d'ultrasons.
importar RPi.GPIO com a temps d'importació GPIO #Importar biblioteca de temps GPIO.setwarnings (fals) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Després d’això, hem creat algunes funcions def forward (), def back (), def left (), def right () per moure el robot cap endavant, enrere, esquerra o dreta respectivament i def stop () per aturar el robot, comproveu les funcions del codi que es mostra a continuació.
Després, al programa principal, hem iniciat el sensor ultrasònic i hem llegit el temps entre la transmissió i la recepció del senyal i hem calculat la distància. Aquí hem repetit aquest procés cinc vegades per obtenir una precisió millor. Ja hem explicat el procés de càlcul de la distància mitjançant el sensor d'ultrasons.
i = 0 avgDistance = 0 for i in range (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) mentre GPIO.input (ECHO) == 0: GPIO.output (led, fals) pulse_start = time.time () mentre GPIO.input (ECHO) == 1: #Comproveu si ECHO és HIGH GPIO.output (led, Fals) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round (distance, 2) avgDistance = avgDistance + distance
Finalment, si el robot troba algun obstacle al seu davant, després d’aconseguir la distància de l’obstacle, hem programat el robot per fer una ruta diferent.
if avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 else: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
A continuació es mostra el codi complet d’aquest robot Raspberry Pi per evitar obstacles amb un vídeo de demostració.
