- Nødvendige komponenter:
- Ultralydssensormodul:
- Forklaring af kredsløb:
- Hvordan det virker:
- Programmeringsforklaring:
Robotter er maskiner, der reducerer den menneskelige indsats ved tunge arbejder ved at automatisere opgaverne i industrier, fabrikker, hospitaler osv. De fleste robotter drives ved hjælp af en eller flere kontrolenheder eller komponenter som en trykknap, fjernbetjening, joystick, pc, bevægelser og af udførelse af en kommando ved hjælp af controller eller processor. Men i dag er vi her med en automatisk robot, der bevæger sig autonomt uden eksterne begivenheder, der undgår al hindring i vejen, ja vi taler om forhindring, der undgår robot. I dette projekt har vi brugt Raspberry Pi og motor driver til at køre robotten og ultralydssensoren til at detektere objekter i vejen for robotten.
Tidligere har vi dækket mange nyttige robotter, du kan finde dem i vores afsnit om robotprojekter.
Nødvendige komponenter:
- Hindbær Pi
- Ultralydssensormodul HC-SR04
- ROBOT Chassis komplet med skrue
- DC-motorer
- L293D IC
- Hjul
- Brødbræt
- Modstand (1k)
- Kondensator (100nF)
- Tilslutning af ledninger
- Strømforsyning eller strømbank
Ultralydssensormodul:
En Hindring Avoider-robot er en automatiseret robot, og den behøver ikke at blive styret med nogen fjernbetjening. Disse typer automatiserede robotter har nogle 'sjette sans'-sensorer som forhindringsdetektorer, lyddetektor, varmedetektor eller metaldetektorer. Her har vi udført hindringsdetektion ved hjælp af ultralydssignaler. Til dette formål har vi brugt ultralydssensormodul.
Ultralydssensorer bruges ofte til at detektere genstande og bestemme hindringens afstand fra sensoren. Dette er et godt værktøj til at måle afstanden uden fysisk kontakt, som f.eks. Vandstandsmåling i tank, afstandsmåling, forhindringsundgåelsesrobot osv. Så her har vi registreret objektet og målt afstanden ved hjælp af Ultrasonic Sensor og Raspberry Pi.
Ultralydssensor HC-SR04 bruges til at måle afstand i området 2cm-400cm med en nøjagtighed på 3mm. Sensormodulet består af en ultralydssender, modtager og kontrolkredsløbet. Ultralydssensor består af to cirkulære øjne, hvoraf den ene bruges til at transmittere ultralydsbølgen og den anden til at modtage den.
Vi kan beregne afstanden på objektet baseret på den tid, det tager af ultralydsbølgen at vende tilbage til sensoren. Da lydens tid og hastighed er kendt, kan vi beregne afstanden ved hjælp af følgende formler.
- Afstand = (Tid x Lydhastighed i luft (343 m / s)) / 2.
Værdien divideres med to, da bølgen bevæger sig fremad og bagud, der dækker samme afstand. Dermed er tiden til at nå forhindring kun halvdelen af den samlede tid, der er taget.
Så vi har beregnet afstanden (i centimeter) fra forhindringen som nedenfor:
pulse_start = time.time () mens GPIO.input (ECHO) == 1: # Kontroller om ECHO er HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start afstand = pulse_varighed * 17150 distance = round (distance, 2) avgDistance = gennemsnitlig afstand + afstand
Hvor pulse_varighed er tiden mellem afsendelse og modtagelse af ultralydssignal.
Forklaring af kredsløb:
Kredsløb er meget simpelt til denne hindring, der undgår robot ved hjælp af Raspberry Pi. Et ultralydssensormodul, der bruges til at detektere objekter, er tilsluttet ved GPIO-pin 17 og 27 i Raspberry Pi. En motordriver IC L293D er tilsluttet Raspberry Pi 3 til at køre robotmotorer. Motordriverens indgangsstifter 2, 7, 10 og 15 er tilsluttet henholdsvis Raspberry Pi GPIO-pin nummer 12, 16, 20 og 21. Her har vi brugt to jævnstrømsmotorer til at drive robotten, hvor den ene motor er forbundet til udgangsstiften 3 & 6 på motordriver IC, og en anden motor er forbundet ved pin 11 & 14 i motordriver IC.
Hvordan det virker:
Arbejdet med denne autonome robot er meget let. Når robotten tændes og begynder at køre, måler Raspberry Pi afstanden på objekter foran den ved hjælp af ultralydssensormodul og gemmes i en variabel. Derefter sammenligner RPi denne værdi med foruddefinerede værdier og træffer beslutninger i overensstemmelse hermed for at flytte robotten til venstre, højre, fremad eller bagud.
Her i dette projekt har vi valgt en afstand på 15 cm til at tage enhver beslutning truffet af Raspberry Pi. Når Raspberry Pi nu er mindre end 15 cm afstand fra ethvert objekt, stopper Raspberry Pi robotten og flytter den tilbage og drejer den derefter til venstre eller højre. Nu før Raspberry Pi flyttes frem igen, kontrollerer Raspberry Pi igen, om der er nogen forhindring inden for området 15 cm, hvis ja igen gentager den foregående proces, ellers skal du flytte robotten fremad, indtil den registrerer nogen forhindring eller genstand igen.
Programmeringsforklaring:
Vi bruger Python-sprog her til programmet. Før kodning skal brugeren konfigurere Raspberry Pi. Du kan tjekke vores tidligere vejledninger til Kom godt i gang med Raspberry Pi og installation og konfiguration af Raspbian Jessie OS i Pi.
Programmeringsdelen af dette projekt spiller en meget vigtig rolle for at udføre alle operationer. Først og fremmest inkluderer vi nødvendige biblioteker, initialiserer variabler og definerer ben til ultralydssensor, motor og komponenter.
importer RPi.GPIO som GPIO importtid # Importtidsbibliotek GPIO.setwarnings (Falsk) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Efter det har vi oprettet nogle funktioner def fremad (), def tilbage (), def venstre (), def højre () for at bevæge robotten i henholdsvis fremad, bagud, venstre eller højre retning og def stop () for at stoppe robotten, tjek funktionerne i nedenstående kode.
Derefter har vi i hovedprogrammet startet ultralydssensor og læst tid mellem transmission og modtagelse af signalet og beregnet afstanden. Her har vi gentaget denne proces 5 gange for bedre nøjagtighed. Vi har allerede forklaret processen med at beregne afstanden ved hjælp af ultralydssensor.
i = 0 avgDistance = 0 for i inden for rækkevidde (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) mens GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () mens GPIO.input (ECHO) == 1: # Kontroller om ECHO er HØJ GPIO.output (ledet, Falsk) pulsend = tid.tid () pulsvarighed = pulsend - pulsstartafstand = pulsvarighed * 17150 afstand = rund (afstand, 2) avgDistance = gennemsnitDistance + afstand
Endelig hvis Robot finder nogen forhindring foran den, har vi efter at have fået afstand til forhindringen programmeret Robotten til at tage en anden rute.
hvis gennemsnitlig afstand <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 andet: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
Komplet kode til denne Raspberry Pi Hindring, der undgår robot, er angivet nedenfor med en demonstrationsvideo.