Innholdsfortegnelse:

Trafikkmønsteranalysator ved hjelp av gjenkjenning av levende objekter: 11 trinn (med bilder)
Trafikkmønsteranalysator ved hjelp av gjenkjenning av levende objekter: 11 trinn (med bilder)

Video: Trafikkmønsteranalysator ved hjelp av gjenkjenning av levende objekter: 11 trinn (med bilder)

Video: Trafikkmønsteranalysator ved hjelp av gjenkjenning av levende objekter: 11 trinn (med bilder)
Video: Вся правда о Куликовской Битве 2024, November
Anonim
Image
Image
Trafikkmønsteranalysator ved hjelp av gjenkjenning av levende objekter
Trafikkmønsteranalysator ved hjelp av gjenkjenning av levende objekter

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

Bringebær Pi og kamerafeste
Bringebær Pi og kamerafeste
Bringebær Pi og kamerafeste
Bringebær Pi og kamerafeste
Bringebær Pi og kamerafeste
Bringebær Pi og kamerafeste
Bringebær Pi og kamerafeste
Bringebær Pi og kamerafeste

3D -utskrift av etui og kamerafeste og montering.

Trinn 4: Trafikklysmontering

Trafikklysmontering
Trafikklysmontering
Trafikklysmontering
Trafikklysmontering
Trafikklysmontering
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)

Kabling (del 1)
Kabling (del 1)
Kabling (del 1)
Kabling (del 1)
Kabling (del 1)
Kabling (del 1)
Kabling (del 1)
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

Bygge miljø
Bygge miljø
Bygge miljø
Bygge miljø
Bygge miljø
Bygge miljø
Bygge miljø
Bygge miljø

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

Fullfører PVC -rammen
Fullfører PVC -rammen
Fullfører PVC -rammen
Fullfører PVC -rammen
Fullfører PVC -rammen
Fullfører 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)

Kabling (del 2)
Kabling (del 2)
Kabling (del 2)
Kabling (del 2)
Kabling (del 2)
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

Ferdig!
Ferdig!
Ferdig!
Ferdig!
Ferdig!
Ferdig!
Ferdig!
Ferdig!

For å kjøre koden, må du sette kilden din som ~/.profil og cd til prosjektstedet ditt.

Trinn 10: Tillegg (bilder)

Anbefalt: