Sisällysluettelo:

Liikennemallianalysaattori, joka käyttää reaaliaikaista kohteen tunnistusta: 11 vaihetta (kuvien kanssa)
Liikennemallianalysaattori, joka käyttää reaaliaikaista kohteen tunnistusta: 11 vaihetta (kuvien kanssa)

Video: Liikennemallianalysaattori, joka käyttää reaaliaikaista kohteen tunnistusta: 11 vaihetta (kuvien kanssa)

Video: Liikennemallianalysaattori, joka käyttää reaaliaikaista kohteen tunnistusta: 11 vaihetta (kuvien kanssa)
Video: Mastering Hyper-V: A Deep Dive into Microsoft's Network Stack 2024, Marraskuu
Anonim
Image
Image
Liikennemallianalysaattori, joka käyttää reaaliaikaista kohteen tunnistusta
Liikennemallianalysaattori, joka käyttää reaaliaikaista kohteen tunnistusta

Nykymaailmassa liikennevalot ovat välttämättömiä turvallisen tien kannalta. Liikennevalot voivat kuitenkin olla usein ärsyttäviä tilanteissa, joissa joku lähestyy valoa juuri punaisena. Tämä hukkaa aikaa, varsinkin jos valo estää yksittäisen ajoneuvon pääsemästä risteyksen läpi, kun tiellä ei ole ketään muuta. Innovaationi on älykäs liikennevalo, joka käyttää kameran reaaliaikaista kohteen tunnistusta laskeakseen autojen määrän kullakin tiellä. Laitteisto, jota käytän tässä projektissa, on Raspberry Pi 3, kameramoduuli ja erilaisia elektronisia laitteistoja itse valolle. Raspberry Pi: n OpenCV: n avulla kerätyt tiedot suoritetaan koodilla, joka ohjaa LED -valoja GPIO: n kautta. Näistä numeroista riippuen liikennevalo muuttuu ja päästää autot läpi parhaassa järjestyksessä. Tässä tapauksessa kaista, jolla on eniten autoja, päästetään läpi niin, että kaista, jossa on vähemmän autoja, joutokäynnillä, mikä vähentää ilmansaasteita. Tämä poistaisi tilanteet, joissa monet autot pysäytetään ilman, että risteävällä tiellä on autoja. Tämä säästää paitsi aikaa myös kaikille, mutta säästää myös ympäristöä. Aika, jonka ihmiset pysähtyvät pysäytysmerkin eteen moottorin joutokäynnillä, lisää ilmansaasteita, joten luomalla älykkään liikennevalon pystyn optimoimaan valokuviot niin, että autot viettävät mahdollisimman vähän aikaa ajoneuvon ollessa pysäytettynä. Lopulta tämä liikennevalojärjestelmä voitaisiin ottaa käyttöön kaupungeissa, esikaupunkialueilla tai jopa maaseudulla, jotta se olisi tehokkaampaa ihmisille vähentäisi ilmansaasteita.

Vaihe 1: Osaluettelo

Materiaalit:

Raspberry Pi 3 Malli B v1.2

Raspberry Pi Camera v2.1

5V/1A mikro -USB -virtalähde

HDMI -näyttö, näppäimistö, hiiren SD -kortti ja Raspbian Jessie

Raspberry Pi GPIO -kaapeli

Punaiset, keltaiset, vihreät LEDit (2 kutakin väriä)

Naarasliittimet Raspberry Pi: lle (7 ainutlaatuista väriä)

Valikoima 24 mittajohtoa (eri värejä) + kutisteputki

2 x 2 tuuman puupaneeli tai -alusta

Puuruuvit

Musta pinta (pahvi, vaahtolevy, julistelevy jne.)

Valkoinen (tai mikä tahansa muu väri kuin musta) teippi tien merkintöihin

Musta ruiskumaali (PVC: lle)

½ PVC -putki, jossa 90 asteen kyynärpää (2), T -kanta (1), naarasadapteri (2)

Työkalut

Juotin

3D tulostin

Poraa erilaisilla poranterillä

Leipälauta

Kuuma pyssy

Vaihe 2: Asenna Raspberry Pi

Lataa SD -kortti Raspberry Pi -laitteeseen ja käynnistä se.

Asenna tarvittavat OpenCV -kirjastot noudattamalla tätä opasta. Varmista, että sinulla on aikaa tehdä tämä vaihe, sillä OpenCV -kirjaston asentaminen voi kestää pari tuntia. Muista myös asentaa ja asentaa kamerasi tänne.

Sinun pitäisi myös asentaa pip:

picamera

gpiozero

RPi. GPIO

Tässä on viimeistelty koodi:

osoitteesta picamera.array Tuo PiRGBArray

picamera tuonti PiCamera

Tuo picamera.array

tuo numpy np: nä

tuonnin aika

tuoda cv2

tuoda RPi. GPIO GPIO: ksi

tuonnin aika

GPIO.setmode (GPIO. BCM)

i: lle (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

nokka = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

raaka = PiRGBArray (nokka, koko = (480, 480))

aika. unta (0,1)

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

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

initvert = 0

inithoriz = 0

laskuri = 0

kehykselle cam.capture_continuous (raw, format = "bgr", use_video_port = True):

frame = frame.array

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

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

naamio = cv2.blur (peite, (3, 3))

mask = cv2.dilate (maski, ei mitään, iteraatiot = 5)

maski = cv2.erode (maski, ei mitään, iteraatiot = 1)

maski = cv2.dilate (maski, ei mitään, iteraatiot = 3)

minä, thresh = cv2.threshold (maski, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findConturs (thresh, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]

keskus = ei mitään

vert = 0

horisontti = 0

jos len (cnts)> 0:

c: lle cnts:

(x, y), säde = cv2.minEnclosingCircle (c)

keskellä = (int (x), int (y))

säde = int (säde)

cv2.ympyrä (kehys, keskusta, säde, (0, 255, 0), 2)

x = int (x)

y = int (y)

jos 180 <x <300:

jos y> 300:

vert = vert +1

elif y <180:

vert = vert +1

muu:

vert = vert

jos 180 <y <300:

jos x> 300:

horiz = horiz +1

elif x <180:

horiz = horiz +1

muu:

horisontti = horisontti

jos vert! = initvert:

tulosta "Autot pystykaistalla:" + str (vert)

initvert = vert

tulosta "Autot vaakakaistalla:" + str (horisontti)

inithoriz = horisontti

Tulosta '----------------------------'

jos horiz! = inithoriz:

tulosta "Autot pystykaistalla:" + str (vert)

initvert = vert

tulosta "Autot vaakakaistalla:" + str (horisontti)

inithoriz = horisontti

Tulosta '----------------------------'

jos vert <horisontti:

GPIO -lähtö (23, GPIO. HIGH)

GPIO -lähtö (21, GPIO. HIGH)

GPIO -lähtö (16, GPIO. LOW)

GPIO -lähtö (25, GPIO. LOW)

jos horiz <vert:

GPIO -lähtö (16, GPIO. HIGH)

GPIO -lähtö (25, GPIO. HIGH)

GPIO -lähtö (23, GPIO. LOW)

GPIO -lähtö (21, GPIO. LOW)

cv2.imshow ("Kehys", kehys)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Thresh", thrash)

raaka.truncate (0)

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

tauko

cv2.destroyAllWindows ()

GPIO.cleanup ()

Vaihe 3: Raspberry Pi ja kamerateline

Raspberry Pi ja kamerateline
Raspberry Pi ja kamerateline
Raspberry Pi ja kamerateline
Raspberry Pi ja kamerateline
Raspberry Pi ja kamerateline
Raspberry Pi ja kamerateline
Raspberry Pi ja kamerateline
Raspberry Pi ja kamerateline

3D -tulostus koteloon ja kameraan asennettavaksi ja koottavaksi.

Vaihe 4: Liikennevalojen asennus

Liikennevalokokoonpano
Liikennevalokokoonpano
Liikennevalokokoonpano
Liikennevalokokoonpano
Liikennevalokokoonpano
Liikennevalokokoonpano

Testaa liikennevalot leipälaudalla. Jokaisella vastakkaisella LED -sarjalla on anodi, ja kaikilla niillä on yhteinen katodi (maa). Tuloja tulee olla yhteensä 7: 1 kullekin LED -parille (6) + 1 maajohto. Juottaa ja koota liikennevalot.

Vaihe 5: Johdotus (osa 1)

Johdotus (osa 1)
Johdotus (osa 1)
Johdotus (osa 1)
Johdotus (osa 1)
Johdotus (osa 1)
Johdotus (osa 1)
Johdotus (osa 1)
Johdotus (osa 1)

Juotos naaraspuoliset otsikkotapit noin 5 jalan lankaan. Nämä ovat sivut, jotka nämä johdot käärivät PVC -putkien läpi myöhemmin. Muista erottaa erilaiset valosarjat (2 x 3 väriä ja 1 maa). Tässä tapauksessa merkitsin toisen punaisen, keltaisen ja sinisen langan päät teräväksi, jotta tiedän, mikä on mikä.

Vaihe 6: Ympäristön rakentaminen

Ympäristön rakentaminen
Ympäristön rakentaminen
Ympäristön rakentaminen
Ympäristön rakentaminen
Ympäristön rakentaminen
Ympäristön rakentaminen
Ympäristön rakentaminen
Ympäristön rakentaminen

Ympäristön rakentaminen Tee 2 jalan neliöpuulava näin. Puuromu on hyvä, koska se peitetään. Poraa reikä, joka sopii vain sovittimeesi. Poraa ruuvit kuormalavan sivujen läpi PVC -putken kiinnittämiseksi paikalleen. Leikkaa musta vaahtolevy vastaamaan alla olevaa puulavaa. Poraa reikä, joka sopii PVC -putken ympärille. Toista vastakkaisessa kulmassa. Merkitse tiet valkoisella teipillä.

Vaihe 7: PVC -kehyksen viimeistely

PVC -kehyksen viimeistely
PVC -kehyksen viimeistely
PVC -kehyksen viimeistely
PVC -kehyksen viimeistely
PVC -kehyksen viimeistely
PVC -kehyksen viimeistely

Poraa yläputkeen reikä, johon mahtuu nippu lankoja. Karkea reikä on hyvä niin kauan kuin pääset käsiksi putkien sisäpuolelle. Kierrä johdot PVC -putkien ja kyynärliitosten läpi testisovituksen saavuttamiseksi. Kun kaikki on valmis, maalaa PVC mustalla ruiskumaalilla pääkehyksen ulkoasun puhdistamiseksi. Leikkaa pieni rako yhteen PVC-putkesta T-liitoksen sovittamiseksi. Lisää tähän putkeen PVC-putki, jotta liikennevalo roikkuu alas. Halkaisija voi olla sama kuin pääkehys (1/2 ), mutta jos käytät ohuempaa putkea, varmista, että 7 johtoa voi käärmeen läpi. Poraa reikä tämän putken läpi liikennevalojen ripustamiseksi.

Vaihe 8: Johdotus (osa 2)

Johdotus (osa 2)
Johdotus (osa 2)
Johdotus (osa 2)
Johdotus (osa 2)
Johdotus (osa 2)
Johdotus (osa 2)

Kytke kaikki johdot uudelleen kuten aiemmin testattu. Tarkista liikennevalot ja johdotus leipälevyllä ja varmista, että kaikki liitännät on tehty. Juotos liikennevalo T-nivelvarren kautta tuleviin johtoihin. Kiedo paljaat johdot sähköteipillä oikosulkujen välttämiseksi ja puhtaamman ulkonäön saavuttamiseksi.

Vaihe 9: Valmis

Valmis!
Valmis!
Valmis!
Valmis!
Valmis!
Valmis!
Valmis!
Valmis!

Jos haluat suorittaa koodin, muista asettaa lähteeksi ~/.profile ja cd projektisi sijaintiin.

Vaihe 10: Lisäominaisuudet (valokuvat)

Suositeltava: