Sisällysluettelo:
- Vaihe 1: Osaluettelo
- Vaihe 2: Asenna Raspberry Pi
- Vaihe 3: Raspberry Pi ja kamerateline
- Vaihe 4: Liikennevalojen asennus
- Vaihe 5: Johdotus (osa 1)
- Vaihe 6: Ympäristön rakentaminen
- Vaihe 7: PVC -kehyksen viimeistely
- Vaihe 8: Johdotus (osa 2)
- Vaihe 9: Valmis
- Vaihe 10: Lisäominaisuudet (valokuvat)
Video: Liikennemallianalysaattori, joka käyttää reaaliaikaista kohteen tunnistusta: 11 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
3D -tulostus koteloon ja kameraan asennettavaksi ja koottavaksi.
Vaihe 4: Liikennevalojen asennus
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)
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 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
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)
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
Jos haluat suorittaa koodin, muista asettaa lähteeksi ~/.profile ja cd projektisi sijaintiin.
Vaihe 10: Lisäominaisuudet (valokuvat)
Suositeltava:
ULTRASONIC LEVITATION Machine, joka käyttää ARDUINOa: 8 vaihetta (kuvien kanssa)
ULTRASONIC LEVITATION Machine ARDUINOa käyttäen: On erittäin mielenkiintoista nähdä jotain kelluvaa ilmassa tai vapaassa tilassa, kuten avaruusolennot. Juuri tästä antigravitaatiohankkeessa on kyse. Esine (pohjimmiltaan pieni paperi tai termokolli) on sijoitettu kahden ultraäänikalvon väliin
Kosteuden ja lämpötilan tarkkailija, joka käyttää Raspberry Pi: tä SHT25: n kanssa Pythonissa: 6 vaihetta
Kosteuden ja lämpötilan tarkkailija, joka käyttää Raspberry Pi: tä SHT25: n kanssa Pythonissa: Raspberry Pi: n harrastajana ajattelimme joitakin upeampia kokeita sen kanssa. Tässä kampanjassa teemme kosteuden ja lämpötilan tarkkailijan, joka mittaa suhteellista kosteutta ja lämpötilaa käyttäen Raspberry Pi ja SHT25, Humidi
Nykyaikainen myyntikoneen käyttöliittymä, joka käyttää RASPBERRY PI: tä DJANGOn kanssa: 4 vaihetta
Nykyaikaiset myyntikoneen käyttöliittymät, jotka käyttävät RASPBERRY PI: tä DJANGON KANSSA: Voimmeko tehdä nykyaikaisen käyttöliittymän käyttämällä myyntiautomaatin verkkokieliä? Vastaus yllä on kyllä, voimme. Voimme käyttää niitä automaateille, jotka käyttävät kioskitilaa. Seuraava idea sovellettiin jo olemassa olevaan projektiini ja se toimii hyvin ja testaamme
Pickcraft -pelaaja, joka käyttää Arduinoa Utsourcen kanssa: 6 vaihetta
Pickcraft -pelin pelaaja, joka käyttää Arduinoa Utsourcen kanssa: Tämä on hyvin yksinkertainen opetusohjelma Pickcraft -pelisovelluksen tekemiseksi ArduinoPickCrafterin avulla, joka on inkrementaalinen tyhjäkäynnillä oleva käsityöpelin klikkauspeli, jonka avulla voit hallita hakkaa ja kaivaa syvälle biomeihin? Jopa käyttämättömänä tai offline -tilassa! Vain sta
Kuinka käyttää vastauksia tehokkaasti: 6 vaihetta (kuvien kanssa)
Kuinka käyttää vastauksia tehokkaasti: Instructablesin aina hyödyllinen "Answers" -toiminto on loistava. Tämä suuruus on kuitenkin myös rinnakkain monien sudenkuoppien kanssa. Tässä toivon voivani valaista hieman sitä, miten mielestäni vastauksia pitäisi käyttää - pyrkimyksenä tehdä siitä tehokkaampi työkalu