- Komponenter som krävs:
- Ultraljudssensormodul:
- Kretsförklaring:
- Hur det fungerar:
- Programmeringsförklaring:
Robotar är maskiner som minskar de mänskliga ansträngningarna i tunga arbeten genom att automatisera uppgifterna i industrier, fabriker, sjukhus etc. De flesta robotarna drivs med hjälp av någon kontrollenhet eller komponenter som en tryckknapp, fjärrkontroll, joystick, PC, gester och av kör något kommando med hjälp av styrenhet eller processor. Men idag är vi här med en automatisk robot som rör sig självständigt utan att externa händelser undviker allt hinder i dess väg, ja vi pratar om hinder som undviker robot. I det här projektet har vi använt Raspberry Pi och Motor driver för att driva roboten och ultraljudssensorn för att upptäcka föremål i robotens väg.
Tidigare har vi täckt många användbara robotar, du hittar dem i avsnittet Robotics-projekt.
Komponenter som krävs:
- Raspberry Pi
- Ultraljudsgivarmodul HC-SR04
- ROBOT Chassi komplett med skruv
- DC-motorer
- L293D IC
- Hjul
- Brödbräda
- Motstånd (1k)
- Kondensator (100nF)
- Anslutande ledningar
- Strömförsörjning eller kraftbank
Ultraljudssensormodul:
En hinderavvisningsrobot är en automatiserad robot och den behöver inte styras med någon fjärrkontroll. Dessa typer av automatiserade robotar har några "sjätte sinnes" -sensorer som hinderdetektorer, ljuddetektor, värmedetektor eller metalldetektorer. Här har vi gjort hinderavkänning med ultraljudssignaler. För detta ändamål har vi använt ultraljudssensormodul.
Ultraljudssensorer används ofta för att upptäcka föremål och bestämma avståndet från hindret från sensorn. Detta är ett utmärkt verktyg för att mäta avståndet utan någon fysisk kontakt, som vattennivåmätning i tank, avståndsmätning, hinderundvikande robot etc. Så här har vi upptäckt objektet och mätt avståndet med Ultrasonic Sensor och Raspberry Pi.
Ultraljudsensor HC-SR04 används för att mäta avstånd i intervallet 2 cm-400 cm med en noggrannhet på 3 mm. Sensormodulen består av en ultraljudssändare, mottagare och styrkrets. Ultraljudsensorn består av två cirkulära ögon, varav den ena används för att överföra ultraljudsvågen och den andra för att ta emot den.
Vi kan beräkna objektets avstånd baserat på den tid som ultraljudsvåg tar för att återvända till sensorn. Eftersom ljudets tid och hastighet är känd kan vi beräkna avståndet med följande formler.
- Avstånd = (Tid x Ljudets hastighet i luft (343 m / s)) / 2.
Värdet divideras med två eftersom vågen färdas framåt och bakåt och täcker samma avstånd. Då är tiden för att nå hinder bara hälften av den totala tiden det tar.
Så vi har beräknat avståndet (i centimeter) från hindret som nedan:
pulse_start = time.time () medan GPIO.input (ECHO) == 1: #Kontrollera om ECHO är HIGH GPIO.output (led, False) pulse_end = time.time () pulse_dauer = puls_end - pulsstart-avstånd = pulsvaraktighet * 17150 avstånd = avstånd (avstånd, 2) avgDistance = avgDistance + avstånd
Där puls_varaktighet är tiden mellan sändning och mottagning av ultraljudssignal.
Kretsförklaring:
Krets är väldigt enkelt för den här hinderundvikande roboten med Raspberry Pi. En ultraljudssensormodul, som används för att upptäcka objekt, är ansluten vid GPIO-stift 17 och 27 i Raspberry Pi. En motorförare IC L293D är ansluten till Raspberry Pi 3 för att driva robotens motorer. Motorförarens ingångsstift 2, 7, 10 och 15 är anslutna till Raspberry Pi GPIO-stift nummer 12, 16, 20 respektive 21. Här har vi använt två likströmsmotorer för att driva roboten i vilken en motor är ansluten till utgångsstiftet 3 & 6 på motordrivenhet IC och en annan motor är ansluten vid stift 11 och 14 på motorförare IC.
Hur det fungerar:
Att arbeta med den här autonoma roboten är väldigt enkelt. När roboten slås på och börjar köra, mäter Raspberry Pi avstånden för objekt framför den med hjälp av Ultraljudsensormodul och lagras i en variabel. Sedan jämför RPi detta värde med fördefinierade värden och fattar beslut i enlighet därmed för att flytta roboten åt vänster, höger, framåt eller bakåt.
Här i det här projektet har vi valt 15 cm avstånd för att fatta beslut av Raspberry Pi. Närhelst Raspberry Pi blir mindre än 15 cm avstånd från något objekt stoppar Raspberry Pi roboten och flyttar den tillbaka och vrider den sedan åt vänster eller höger. Innan Raspberry Pi flyttar framåt igen, kontrollerar Raspberry Pi igen om det finns något hinder inom intervallet 15 cm, om ja, upprepar sedan den tidigare processen, annars flyttar du roboten framåt tills den upptäcker något hinder eller objekt igen.
Programmeringsförklaring:
Vi använder Pythonspråk här för programmet. Innan kodning måste användaren konfigurera Raspberry Pi. Du kan kolla våra tidigare handledning för Komma igång med Raspberry Pi och Installera & Konfigurera Raspbian Jessie OS i Pi.
Programmeringsdelen av detta projekt spelar en mycket viktig roll för att utföra alla operationer. Först och främst inkluderar vi nödvändiga bibliotek, initierar variabler och definierar stift för ultraljudssensor, motor och komponenter.
importera RPi.GPIO som GPIO importtid #Importtidsbibliotek GPIO.setwarnings (Falskt) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Efter det har vi skapat några funktioner def framåt (), def bakåt (), def vänster (), def höger () för att flytta roboten i respektive framåt, bakåt, vänster eller höger riktning och def stopp () för att stoppa roboten, kontrollera funktionerna i Koden nedan.
Sedan, i huvudprogrammet, har vi initierat ultraljudssensor och lästid mellan sändning och mottagning av signalen och beräknat avståndet. Här har vi upprepat denna process fem gånger för bättre noggrannhet. Vi har redan förklarat processen för att beräkna avståndet med ultraljudssensor.
i = 0 avgDistance = 0 för i inom intervallet (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) medan GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () medan GPIO.input (ECHO) == 1: #Kolla om ECHO är HÖG GPIO.output (led, Falsk) pulsänd = tid.tid () pulsvarighet = pulsänd - pulsstartavstånd = pulsvarighet * 17150 avstånd = rund (avstånd, 2) avgDistance = avgDistance + distance
Slutligen, om roboten hittar något hinder framför den, har vi, efter att ha fått avstånd från hindret, programmerat roboten att ta en annan väg.
om avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag = = 0): right () flag = 1 annat: vänster () flagga = 0 tid. Sömn (1,5) stopp () tid. Sömn (1) annat: framåt () flagga = 0
Komplett kod för denna Raspberry Pi Obstacle Avoiding Robot ges nedan med en demonstrationsvideo.