INHOUDSOPGAWE:

Verkeerspatroonanaliseerder met behulp van opsporing van lewendige voorwerpe: 11 stappe (met foto's)
Verkeerspatroonanaliseerder met behulp van opsporing van lewendige voorwerpe: 11 stappe (met foto's)

Video: Verkeerspatroonanaliseerder met behulp van opsporing van lewendige voorwerpe: 11 stappe (met foto's)

Video: Verkeerspatroonanaliseerder met behulp van opsporing van lewendige voorwerpe: 11 stappe (met foto's)
Video: SCP-093 Rode Zee Object (Alle tests en teruggewonnen materialen Logs) 2024, November
Anonim
Image
Image
Verkeerspatroonontleder met behulp van opsporing van lewendige voorwerpe
Verkeerspatroonontleder met behulp van opsporing van lewendige voorwerpe

In die hedendaagse wêreld is verkeersligte noodsaaklik vir 'n veilige pad. Verkeersligte kan egter baie keer irriterend wees in situasies waarin iemand die lig nader, net soos dit rooi word. Dit mors tyd, veral as die lig voorkom dat 'n enkele voertuig deur die kruising kan kom as daar niemand anders op die pad is nie. My innovasie is 'n slim verkeerslig wat opsporing van lewendige voorwerpe van 'n kamera gebruik om die aantal motors op elke pad te tel. Die hardeware wat ek vir hierdie projek sal gebruik, is 'n Raspberry Pi 3, 'n kameramodule en verskillende elektroniese hardeware vir die lig self. Deur OpenCV op die Raspberry Pi te gebruik, word die versamelde inligting uitgevoer deur middel van kode wat die LED's via die GPIO beheer. Afhangende van hierdie getalle, sal die verkeerslig verander, sodat motors in die mees optimale volgorde deurkom. In hierdie geval sal die baan met die meeste motors deurgelaat word, sodat die baan met minder motors stilstaan, wat lugbesoedeling verminder. Dit sal situasies uitskakel wanneer baie motors stilhou terwyl daar geen motors op die kruispad is nie. Dit spaar nie net tyd vir almal nie, maar dit spaar ook die omgewing. Die hoeveelheid tyd wat mense by 'n stopteken stilgehou word terwyl hul enjin stilstaan, verhoog die lugbesoedeling, so deur 'n slim verkeerslig te skep, kan ek die ligpatrone optimaliseer sodat motors die minste tyd deurbring terwyl hul voertuig stilhou. Uiteindelik kan hierdie verkeersligstelsel in stede, voorstede of selfs landelike gebiede geïmplementeer word om meer doeltreffend te wees vir mense om lugbesoedeling te verminder.

Stap 1: Onderdele lys

Materiaal:

Framboos Pi 3 Model B v1.2

Framboos Pi -kamera v2.1

5V/1A mikro -USB -kragbron

HDMI -monitor, sleutelbord, muis -SD -kaart met Raspbian Jessie

Framboos Pi GPIO -uitbreekkabel

Rooi, geel, groen LED's (2 van elke kleur)

Vroulike verbindings vir Raspberry Pi (7 unieke kleure)

Geassorteerde 24 gauge draad (verskillende kleure) + krimpkous

2 x 2 'houtpaneel of -platform

Houtskroewe

Swart oppervlak (karton, skuimbord, plakkaatbord, ens.)

Wit (of enige ander kleur as swart) band vir padmerke

Swart spuitverf (vir PVC)

½”PVC -pyp met 90 grade elmboogverbindings (2), T -sok (1), vroulike adapter (2)

Gereedskap

Soldeerbout

3D -drukker

Boor met verskillende boorpunte

Broodbord

Hittegeweer

Stap 2: Die opstel van die Raspberry Pi

Laai die SD -kaart in die Raspberry Pi en begin.

Volg hierdie gids om die vereiste OpenCV -biblioteke te installeer. Maak seker dat u tyd het om hierdie stap uit te voer, aangesien die installering van die OpenCV -biblioteek 'n paar uur kan neem. Maak seker dat u ook u kamera hier installeer en instel.

U moet ook pip installeer:

picamera

gpiozero

RPi. GPIO

Hier is die finale kode:

vanaf picamera.array invoer PiRGBArray

van picamera invoer PiCamera

voer picamera.array in

invoer numpy as np

invoer tyd

voer cv2 in

voer RPi. GPIO in as GPIO

invoer tyd

GPIO.setmode (GPIO. BCM)

vir i in (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

rou = PiRGBArray (nok, grootte = (480, 480))

tyd. slaap (0,1)

colorLower = np.array ([0, 100, 100])

colorUpper = np.array ([179, 255, 255])

initvert = 0

inithoriz = 0

teller = 0

vir raam in cam.capture_continuous (rou, format = "bgr", use_video_port = True):

raam = raam.reeks

hsv = cv2.cvtColor (raam, cv2. COLOR_BGR2HSV)

masker = cv2.inRange (hsv, colorLower, colorUpper)

masker = cv2. blur (masker, (3, 3))

masker = cv2.dilate (masker, Geen, herhalings = 5)

masker = cv2.erode (masker, Geen, herhalings = 1)

masker = cv2.dilate (masker, None, iterations = 3)

ek, dors = cv2.drempel (masker, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findContours (dors, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]

sentrum = Geen

vert = 0

horison = 0

as len (cnts)> 0:

vir c in cnts:

(x, y), radius = cv2.minEnclosingCircle (c)

middel = (int (x), int (y))

radius = int (radius)

cv2.circle (raam, middel, radius, (0, 255, 0), 2)

x = int (x)

y = int (y)

as 180 <x <300:

as y> 300:

vert = vert +1

elif y <180:

vert = vert +1

anders:

vert = vert

as 180 <j <300:

as x> 300:

horison = horison +1

elif x <180:

horison = horison +1

anders:

horison = horison

as vert! = initvert:

druk "Motors in vertikale baan:" + str (vert)

initvert = vert

druk "Motors in horisontale baan:" + str (horizon)

inithoriz = horizon

druk '----------------------------'

as horizon! = inithoriz:

druk "Motors in vertikale baan:" + str (vert)

initvert = vert

druk "Motors in horisontale baan:" + str (horizon)

inithoriz = horizon

druk '----------------------------'

as vert <horizon:

GPIO.output (23, GPIO. HIGH)

GPIO.output (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

as horis <vert:

GPIO.output (16, GPIO. HIGH)

GPIO.output (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow ("raam", raam)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Dors", dors)

rou. verkort (0)

as cv2.waitKey (1) & 0xFF == ord ('q'):

breek

cv2.destroyAllWindows ()

GPIO.cleanup ()

Stap 3: Raspberry Pi en Camera Mount

Framboos Pi en kameramontering
Framboos Pi en kameramontering
Framboos Pi en kameramontering
Framboos Pi en kameramontering
Framboos Pi en kameramontering
Framboos Pi en kameramontering
Framboos Pi en kameramontering
Framboos Pi en kameramontering

3D -druk die omhulsel en kamera -montering en monteer dit.

Stap 4: Verkeersligbyeenkoms

Verkeerslig Vergadering
Verkeerslig Vergadering
Verkeerslig Vergadering
Verkeerslig Vergadering
Verkeerslig Vergadering
Verkeerslig Vergadering

Toets die verkeerslig met 'n broodbord. Elke teenoorgestelde stel LED's deel 'n anode, en almal deel 'n gemeenskaplike katode (grond). Daar moet 'n totaal van 7 invoerdrade wees: 1 vir elke paar LEDS (6) + 1 gronddraad. Soldeer en monteer die verkeersligte.

Stap 5: Bedrading (deel 1)

Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)
Bedrading (deel 1)

Soldeer die vroulike koppenne tot ongeveer 5 voet draad. Dit is die sye wat hierdie drade later deur die PVC -pype sal slang. Maak seker dat u die verskillende stelle ligte (2 x 3 kleure en 1 grond) kan onderskei. In hierdie geval het ek die punte van 'n ander stel rooi, geel en blou drade met skerp gemerk, sodat ek weet watter een is.

Stap 6: Bou die omgewing

Die bou van die omgewing
Die bou van die omgewing
Die bou van die omgewing
Die bou van die omgewing
Die bou van die omgewing
Die bou van die omgewing
Die bou van die omgewing
Die bou van die omgewing

Bou die omgewing Maak 'n vierkante houtpallet soos hierdie. Afvalhout is goed, want dit word toegemaak. Boor 'n gat wat pas by u adapter. Boor skroewe deur die kante van die palet om die PVC -pyp vas te maak. Sny die swart skuimbord om by die houtpallet daaronder te pas. Boor 'n gat wat rondom die PVC -pyp pas. Herhaal op die teenoorgestelde hoek. Merk die paaie met wit plakband.

Stap 7: Voltooiing van die PVC -raam

Die afwerking van die PVC -raam
Die afwerking van die PVC -raam
Die afwerking van die PVC -raam
Die afwerking van die PVC -raam
Die afwerking van die PVC -raam
Die afwerking van die PVC -raam

Boor 'n gat op die boonste pyp wat by 'n bondel drade kan pas. 'N Ruwe gat is goed, solank jy toegang tot die binnekant van die pype het. Slang die drade deur die PVC -pype en elmboogverbindings vir 'n toetspassing. Sodra alles afgehandel is, verf die PVC met swart spuitverf om die voorkoms van die hoofraam skoon te maak. Sny 'n klein spleet in een van die PVC-pype om by 'n T-verbinding te pas. Voeg 'n PVC-pyp by hierdie t-voeg sodat die verkeerslig kan hang. Die deursnee kan dieselfde wees as die hoofraam (1/2 ), maar as u 'n dunner pyp gebruik, moet u seker maak dat die 7 drade kan deurkom. Boor 'n gat deur hierdie pyp sodat die verkeerslig daaraan kan hang.

Stap 8: Bedrading (Deel 2)

Bedrading (deel 2)
Bedrading (deel 2)
Bedrading (deel 2)
Bedrading (deel 2)
Bedrading (deel 2)
Bedrading (deel 2)

Bedraad alles weer soos voorheen getoets. Kontroleer die verkeerslig en bedrading met 'n broodbord om te sien of alle verbindings gemaak is. Soldeer die verkeerslig aan die drade wat deur die T-gewrigsarm kom. Draai die blootgestelde drade met elektriese band om kortbroek te voorkom en om 'n skoner voorkoms te verkry.

Stap 9: klaar

Klaar!
Klaar!
Klaar!
Klaar!
Klaar!
Klaar!
Klaar!
Klaar!

Om die kode uit te voer, moet u u bron as ~/.profiel en cd op u projeklokasie stel.

Stap 10: Ekstras (foto's)

Aanbeveel: