- Vereiste componenten:
- Ultrasone sensormodule:
- Circuit uitleg:
- Hoe het werkt:
- Programmering Toelichting:
Robots zijn machines die de menselijke inspanningen bij zware werkzaamheden verminderen door de taken in industrieën, fabrieken, ziekenhuizen enz. Te automatiseren. De meeste robots worden bestuurd met behulp van een besturingseenheid of componenten zoals een drukknop, afstandsbediening, joystick, pc, gebaren het uitvoeren van een commando met behulp van een controller of processor. Maar vandaag zijn we hier met een automatische robot die autonoom beweegt zonder externe gebeurtenissen en alle obstakels op zijn pad ontwijkt, ja we hebben het over obstakel vermijdende robot. In dit project hebben we Raspberry Pi en motorstuurprogramma gebruikt om de robot aan te drijven en ultrasone sensor voor het detecteren van objecten in het pad van de robot.
Eerder hebben we veel nuttige robots behandeld, u kunt ze vinden in onze sectie Robotica-projecten.
Vereiste componenten:
- Raspberry Pi
- Ultrasone sensormodule HC-SR04
- ROBOT Chassis compleet met schroef
- DC-motoren
- L293D IC
- Wielen
- Broodplank
- Weerstand (1k)
- Condensator (100nF)
- Draden aansluiten
- Voeding of Powerbank
Ultrasone sensormodule:
Een Obstacle Avoider Robot is een geautomatiseerde robot en hoeft niet met een afstandsbediening te worden bediend. Dit soort geautomatiseerde robots hebben enkele 'sixth sense'-sensoren zoals obstakeldetectoren, geluidsdetectoren, hittedetectoren of metaaldetectoren. Hier hebben we obstakeldetectie gedaan met behulp van ultrasone signalen. Voor dit doel hebben we een ultrasone sensormodule gebruikt.
Ultrasone sensoren worden vaak gebruikt om objecten te detecteren en de afstand van het obstakel tot de sensor te bepalen. Dit is een geweldig hulpmiddel om de afstand te meten zonder enig fysiek contact, zoals waterpeilmeting in tank, afstandsmeting, obstakelvermijdingsrobot enz. Dus hier hebben we het object gedetecteerd en de afstand gemeten met behulp van een ultrasone sensor en Raspberry Pi.
Ultrasone sensor HC-SR04 wordt gebruikt om afstanden te meten in het bereik van 2 cm - 400 cm met een nauwkeurigheid van 3 mm. De sensormodule bestaat uit een ultrasone zender, ontvanger en het stuurcircuit. Ultrasone sensor bestaat uit twee cirkelvormige ogen waarvan de ene wordt gebruikt om de ultrasone golf uit te zenden en de andere om deze te ontvangen.
We kunnen de afstand van het object berekenen op basis van de tijd die de ultrasone golven nodig hebben om terug te keren naar de sensor. Omdat de tijd en snelheid van het geluid bekend zijn, kunnen we de afstand berekenen met de volgende formules.
- Afstand = (tijd x geluidssnelheid in lucht (343 m / s)) / 2.
De waarde wordt door twee gedeeld omdat de golf voorwaarts en achterwaarts beweegt over dezelfde afstand. De tijd om een obstakel te bereiken is dus slechts de helft van de totale tijd die nodig is.
We hebben dus de afstand (in centimeter) vanaf het obstakel berekend zoals hieronder:
pulse_start = time.time () while GPIO.input (ECHO) == 1: #Controleer of de ECHO HOOG is GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start afstand = pulse_duration * 17150 afstand = rond (afstand, 2) avgDistance = avgDistance + afstand
Waarbij pulse_duration de tijd is tussen het verzenden en ontvangen van ultrasoon signaal.
Circuit uitleg:
Circuit is heel eenvoudig voor deze Obstacle vermijden Robot met Raspberry Pi. Op GPIO-pen 17 en 27 van de Raspberry Pi is een ultrasone sensormodule aangesloten, die wordt gebruikt voor het detecteren van objecten. Een Motor Driver IC L293D is aangesloten op Raspberry Pi 3 voor het aandrijven van robotmotoren. De ingangspennen 2, 7, 10 en 15 van de motordriver zijn respectievelijk verbonden met Raspberry Pi GPIO-pinnen 12, 16, 20 en 21. Hier hebben we twee gelijkstroommotoren gebruikt om de robot aan te drijven, waarbij een motor is aangesloten op de uitgangspen 3 en 6 van de motoraandrijving IC en een andere motor is aangesloten op pen 11 en 14 van de motoraandrijving IC.
Hoe het werkt:
Het werken met deze autonome robot is heel eenvoudig. Wanneer de robot wordt ingeschakeld en begint te lopen, meet Raspberry Pi de afstanden van objecten ervoor, met behulp van een ultrasone sensormodule en slaat deze op in een variabele. Vervolgens vergelijkt RPi deze waarde met vooraf gedefinieerde waarden en neemt dienovereenkomstig beslissingen om de robot naar links, rechts, vooruit of achteruit te bewegen.
Hier in dit project hebben we een afstand van 15 cm geselecteerd voor het nemen van een beslissing door Raspberry Pi. Wanneer Raspberry Pi nu minder dan 15 cm afstand van een object krijgt, stopt Raspberry Pi de robot en beweegt hem terug en draait hem vervolgens naar links of rechts. Voordat de Raspberry Pi nu weer naar voren beweegt, controleert hij opnieuw of er een obstakel aanwezig is binnen het bereik van 15 cm, zo ja, dan herhaalt hij opnieuw het vorige proces, anders beweegt de robot naar voren totdat hij weer een obstakel of object detecteert.
Programmering Toelichting:
We gebruiken hier Python-taal voor het programma. Voordat de gebruiker kan coderen, moet hij de Raspberry Pi configureren. Je kunt onze eerdere tutorials bekijken voor Aan de slag met Raspberry Pi en Raspbian Jessie OS installeren en configureren in Pi.
Het programmeergedeelte van dit project speelt een zeer belangrijke rol bij het uitvoeren van alle bewerkingen. Allereerst nemen we de benodigde bibliotheken op, initialiseren we variabelen en definiëren we pinnen voor ultrasone sensor, motor en componenten.
importeer RPi.GPIO als GPIO importeer tijd # Importeer tijdbibliotheek GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Daarna hebben we een aantal functies gemaakt def vooruit (), def terug (), def links (), def rechts () om de robot respectievelijk vooruit, achteruit, links of rechts te bewegen en def stop () om de robot te stoppen, controleer de functies in de onderstaande code.
Vervolgens hebben we in het hoofdprogramma de ultrasone sensor gestart en de tijd tussen verzending en ontvangst van het signaal afgelezen en de afstand berekend. Hier hebben we dit proces 5 keer herhaald voor een betere nauwkeurigheid. We hebben het proces van het berekenen van de afstand met een ultrasone sensor al uitgelegd.
i = 0 avgDistance = 0 voor i in bereik (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) while GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () while GPIO.input (ECHO) == 1: #Controleer of de ECHO HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start afstand = pulse_duration * 17150 afstand = rond (afstand, 2) avgDistance = avgDistance + afstand
Als de robot uiteindelijk een obstakel voor zich vindt, hebben we, nadat we afstand hebben genomen van het obstakel, de robot geprogrammeerd om een andere route te nemen.
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 () vlag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () vlag = 0
Volledige code voor deze Raspberry Pi Obstakel vermijdende robot wordt hieronder gegeven met een demonstratievideo.