Innholdsfortegnelse:
- Trinn 1: Deleliste
- Trinn 2: Konfigurere Raspberry Pi
- Trinn 3: Raspberry Pi og kamerafeste
- Trinn 4: Trafikklysmontering
- Trinn 5: Kabling (del 1)
- Trinn 6: Bygg miljøet
- Trinn 7: Fullfør PVC -rammen
- Trinn 8: Kabling (del 2)
- Trinn 9: Ferdig
- Trinn 10: Tillegg (bilder)
Video: Trafikkmønsteranalysator ved hjelp av gjenkjenning av levende objekter: 11 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
I dagens verden er trafikklys avgjørende for en trygg vei. Imidlertid kan trafikklys mange ganger være irriterende i situasjoner der noen nærmer seg lyset akkurat som det blir rødt. Dette kaster bort tid, spesielt hvis lyset hindrer et enkelt kjøretøy i å komme seg gjennom krysset når det ikke er noen andre på veien. Min innovasjon er et smart trafikklys som bruker gjenkjenning av levende objekter fra et kamera for å telle antall biler på hver vei. Maskinvaren jeg vil bruke til dette prosjektet er en Raspberry Pi 3, en kameramodul og diverse elektronisk maskinvare for selve lyset. Ved bruk av OpenCV på Raspberry Pi vil informasjonen som samles inn bli kjørt gjennom kode som styrer lysdiodene via GPIO. Avhengig av disse tallene vil trafikklyset endres, slik at biler slipper gjennom i den mest optimale rekkefølgen. I dette tilfellet ville kjørefeltet med flest biler slippes gjennom slik at kjørefeltet med færre biler gikk på tomgang og reduserte luftforurensning. Dette ville eliminere situasjoner når mange biler blir stoppet mens det ikke er biler på kryssende vei. Dette sparer ikke bare tid for alle, men det sparer også miljøet. Tiden folk stoppes ved et stoppskilt med motoren på tomgang, øker mengden luftforurensning, så ved å lage et smart trafikklys kan jeg optimalisere lysmønstrene slik at biler bruker minst mulig tid på å stoppe bilen.. Til syvende og sist kan dette lyskryssystemet implementeres i byer, forsteder eller til og med på landsbygda for å være mer effektivt for folk ville redusere luftforurensning.
Trinn 1: Deleliste
Materialer:
Raspberry Pi 3 Model B v1.2
Raspberry Pi -kamera v2.1
5V/1A mikro -USB -strømforsyning
HDMI -skjerm, tastatur, mus -SD -kort med Raspbian Jessie
Raspberry Pi GPIO breakout -kabel
Røde, gule, grønne lysdioder (2 av hver farge)
Kvinnelige kontakter for Raspberry Pi (7 unike farger)
Assortert 24 gauge ledning (forskjellige farger) + krympeslange
2'x2 'trepanel eller plattform
Treskruer
Svart overflate (papp, skumbrett, plakatbrett, etc.)
Hvit (eller annen farge enn svart) tape for veimerking
Svart spraymaling (for PVC)
½”PVC -rør med 90 graders albueledd (2), T -sokkel (1), hunnadapter (2)
Verktøy
Loddejern
3D -skriver
Bor med forskjellige bor
Brødbrett
Varmepistol
Trinn 2: Konfigurere Raspberry Pi
Legg SD -kortet i Raspberry Pi og start opp.
Følg denne veiledningen for å installere nødvendige OpenCV -biblioteker. Sørg for at du har tid til å gjøre dette trinnet, da det kan ta et par timer å installere OpenCV -biblioteket. Sørg for å også installere og sette opp kameraet her.
Du bør også installere pip:
picamera
gpiozero
RPi. GPIO
Her er den ferdige koden:
fra picamera.array import PiRGBArray
fra picamera import PiCamera
importer picamera.array
importer numpy som np
importtid
importer cv2
importer RPi. GPIO som GPIO
importtid
GPIO.setmode (GPIO. BCM)
for i in (23, 25, 16, 21):
GPIO.setup (i, GPIO. OUT)
cam = PiCamera ()
cam.resolution = (480, 480)
cam.framerate = 30
raw = PiRGBArray (kamera, størrelse = (480, 480))
time.sleep (0,1)
colorLower = np.array ([0, 100, 100])
colorUpper = np.array ([179, 255, 255])
initvert = 0
inithoriz = 0
teller = 0
for ramme i cam.capture_continuous (rå, format = "bgr", use_video_port = True):
ramme = ramme. matrise
hsv = cv2.cvtColor (ramme, cv2. COLOR_BGR2HSV)
mask = cv2.inRange (hsv, colorLower, colorUpper)
maske = cv2.blur (maske, (3, 3))
mask = cv2.dilate (maske, Ingen, iterasjoner = 5)
mask = cv2.erode (maske, Ingen, iterasjoner = 1)
mask = cv2.dilate (maske, Ingen, iterasjoner = 3)
meg, tersk = cv2.threshold (maske, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours (tersk, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]
senter = Ingen
vert = 0
horisont = 0
hvis len (cnts)> 0:
for c i cnts:
(x, y), radius = cv2.minEnclosingCircle (c)
senter = (int (x), int (y))
radius = int (radius)
cv2.circle (ramme, senter, radius, (0, 255, 0), 2)
x = int (x)
y = int (y)
hvis 180 <x <300:
hvis y> 300:
vert = vert +1
elif y <180:
vert = vert +1
ellers:
vert = vert
hvis 180 <y <300:
hvis x> 300:
horizon = horizon +1
elif x <180:
horizon = horizon +1
ellers:
horison = horisont
hvis vert! = initvert:
print "Biler i vertikal kjørefelt:" + str (vert)
initvert = vert
print "Biler i horisontal kjørefelt:" + str (horizon)
inithoriz = horizon
skrive ut '----------------------------'
if horizon! = inithoriz:
print "Biler i vertikal kjørefelt:" + str (vert)
initvert = vert
print "Biler i horisontal kjørefelt:" + str (horizon)
inithoriz = horizon
skrive ut '----------------------------'
hvis vert <horizon:
GPIO.output (23, GPIO. HIGH)
GPIO.output (21, GPIO. HIGH)
GPIO.output (16, GPIO. LOW)
GPIO.output (25, GPIO. LOW)
hvis horisont <vert:
GPIO.output (16, GPIO. HIGH)
GPIO.output (25, GPIO. HIGH)
GPIO.output (23, GPIO. LOW)
GPIO.output (21, GPIO. LOW)
cv2.imshow ("Ramme", ramme)
cv2.imshow ("HSV", hsv)
cv2.imshow ("Thresh", tresk)
rå. avkort (0)
hvis cv2.waitKey (1) & 0xFF == ord ('q'):
gå i stykker
cv2.destroyAllWindows ()
GPIO.cleanup ()
Trinn 3: Raspberry Pi og kamerafeste
3D -utskrift av etui og kamerafeste og montering.
Trinn 4: Trafikklysmontering
Test lyskrysset med et brødbrett. Hvert sett med lysdioder deler en anode, og alle deler en felles katode (jord). Det bør være totalt 7 inngangskabler: 1 for hvert par LEDS (6) + 1 jordledning. Lodd og sett sammen trafikklysene.
Trinn 5: Kabling (del 1)
Lodd den kvinnelige toppstiften til omtrent 5 fot wire. Dette er sidene som Disse ledningene vil slange gjennom PVC -rørene senere. Sørg for å kunne skille de forskjellige settene med lys (2 x 3 farger og 1 bakke). I dette tilfellet merket jeg endene på et annet sett med røde, gule og blå ledninger med sharpie, så jeg vet hvilken som er hvilken.
Trinn 6: Bygg miljøet
Bygg miljøet Lag en 2 fot kvadratisk trepall som denne. Skrapvirke er fint, da det blir dekket til. Bor et hull som akkurat passer til adapteren din. Bor skruer gjennom sidene av pallen for å feste PVC -røret på plass. Skjær det svarte skumbrettet slik at det matcher trepallen under. Bor et hull som passer rundt PVC -røret. Gjenta på motsatt hjørne. Merk veiene med hvit tape.
Trinn 7: Fullfør PVC -rammen
På det øverste røret borer du et hull som kan passe til en bunt med ledninger. Et grovt hull er fint så lenge du får tilgang til innsiden av rørene. Slå ledningene gjennom PVC -rørene og albueleddene for en testtilpasning. Når alt er ferdig, maler du PVC -en med svart spraymaling for å rydde ut utseendet på hovedrammen. Skjær et lite hull i et av PVC-rørene for å passe til en T-skjøt. Legg et PVC-rør til denne t-skjøten for trafikklyset å henge ned fra. Diameteren kan være den samme som hovedrammen (1/2 ), men hvis du bruker et tynnere rør, må du kontrollere at de 7 ledningene kan slange gjennom. Bor et hull gjennom dette røret for trafikklyset å henge fra.
Trinn 8: Kabling (del 2)
Koble alt på nytt som testet tidligere. Dobbeltsjekk lyskrysset og ledninger med et brødbrett for å bekrefte at alle tilkoblingene er gjort. Lodd lyskrysset til ledningene som kommer gjennom T-leddet. Pakk de eksponerte ledningene med elektrisk tape for å forhindre shorts og for et renere utseende.
Trinn 9: Ferdig
For å kjøre koden, må du sette kilden din som ~/.profil og cd til prosjektstedet ditt.
Trinn 10: Tillegg (bilder)
Anbefalt:
Objektorientert programmering: Lage objekter Læring/undervisningsmetode/teknikk ved hjelp av Shape Puncher: 5 trinn
Objektorientert programmering: Lage objekter Lærings-/undervisningsmetode/teknikk ved hjelp av Shape Puncher: Lærings-/undervisningsmetode for studenter som er ny i objektorientert programmering. Dette er en måte å la dem visualisere og se prosessen med å lage objekter fra klasser. Deler: 1. EkTools 2-tommers stor slag; solide former er best.2. Papir eller c
Plotte levende data for en temperatursensor (TMP006) ved hjelp av MSP432 LaunchPad og Python: 9 trinn
Plotte levende data for en temperatursensor (TMP006) ved hjelp av MSP432 LaunchPad og Python: TMP006 er en temperatursensor som måler temperaturen på et objekt uten å måtte komme i kontakt med objektet. I denne opplæringen vil vi plotte live temperaturdata fra BoosterPack (TI BOOSTXL-EDUMKII) ved hjelp av Python
Hvordan lage en drone ved hjelp av Arduino UNO - Lag en quadcopter ved hjelp av mikrokontroller: 8 trinn (med bilder)
Hvordan lage en drone ved hjelp av Arduino UNO | Lag en Quadcopter ved hjelp av mikrokontroller: Introduksjon Besøk min Youtube -kanal En Drone er en veldig dyr gadget (produkt) å kjøpe. I dette innlegget skal jeg diskutere hvordan jeg får det billig? Og hvordan kan du lage din egen slik til en billig pris … Vel, i India er alle materialer (motorer, ESCer
FoldTronics: Lag 3D -objekter med integrert elektronikk ved hjelp av sammenleggbare HoneyComb -strukturer: 11 trinn
FoldTronics: Lage 3D-objekter med integrert elektronikk ved hjelp av sammenleggbare HoneyComb-strukturer: I denne opplæringen presenterer vi FoldTronics, en 2D-skjæringsbasert fabrikasjonsteknikk for å integrere elektronikk i 3D-brettede objekter. Nøkkeltanken er å kutte og perforere et 2D -ark ved hjelp av en skjæreplotter for å gjøre det sammenleggbart til en 3D -bikakestruktur
Skann objekter i nærheten for å lage 3d -modell ved hjelp av ARDUINO: 5 trinn (med bilder)
Skann objekter i nærheten for å lage 3d-modell ved hjelp av ARDUINO: Dette prosjektet er spesifikt ved å bruke ultralydsensoren HC-SR04 til å søke etter objekter i nærheten. For å lage 3D -modell må du feie sensoren i vinkelrett retning. Du kan programmere Arduino til å slå alarm når sensoren oppdager et objekt