Talaan ng mga Nilalaman:

Traffic Pattern Analyzer Gamit ang Detalye ng Live na Bagay: 11 Mga Hakbang (na may Mga Larawan)
Traffic Pattern Analyzer Gamit ang Detalye ng Live na Bagay: 11 Mga Hakbang (na may Mga Larawan)

Video: Traffic Pattern Analyzer Gamit ang Detalye ng Live na Bagay: 11 Mga Hakbang (na may Mga Larawan)

Video: Traffic Pattern Analyzer Gamit ang Detalye ng Live na Bagay: 11 Mga Hakbang (na may Mga Larawan)
Video: Russian Encounters with UFOs and Aliens 2024, Setyembre
Anonim
Image
Image
Traffic Pattern Analyzer Paggamit ng Live Detection ng Bagay
Traffic Pattern Analyzer Paggamit ng Live Detection ng Bagay

Sa mundo ngayon, ang mga ilaw ng trapiko ay mahalaga para sa isang ligtas na kalsada. Gayunpaman, maraming beses, ang mga ilaw ng trapiko ay maaaring nakakainis sa mga sitwasyon kung saan ang isang tao ay papalapit sa ilaw tulad ng pamumula nito. Sinasayang nito ang oras, lalo na kung ang ilaw ay pumipigil sa isang solong sasakyan mula sa pagdaan sa intersection kung wala nang iba pa sa kalsada. Ang aking pagbabago ay isang matalinong ilaw ng trapiko na gumagamit ng live na pagtuklas ng bagay mula sa isang camera upang mabilang ang bilang ng mga kotse sa bawat kalsada. Ang hardware na gagamitin ko para sa proyektong ito ay isang Raspberry Pi 3, isang module ng kamera, at iba't ibang elektronikong hardware para sa ilaw mismo. Gamit ang OpenCV sa Raspberry Pi, ang impormasyong nakalap ay tatakbo sa pamamagitan ng code na kumokontrol sa mga LED sa pamamagitan ng GPIO. Nakasalalay sa mga numerong ito, magbabago ang ilaw ng trapiko, pinapabayaan ang mga kotse sa pinakamainam na pagkakasunud-sunod. Sa kasong ito, ang linya na may pinakamaraming kotse ay papasok sa gayon ang linya na may mas kaunting mga kotse ay magpapabaya, na magbabawas ng polusyon sa hangin. Aalisin nito ang mga sitwasyon kung maraming mga kotse ang tumitigil habang walang mga kotse sa kalsadang kalsada. Hindi lamang ito nakakatipid ng oras para sa lahat, ngunit nakakatipid din ito ng kapaligiran. Ang dami ng oras na ihihinto ang mga tao sa isang stop sign kasama ang kanilang pag-idle ng engine na nagdaragdag ng dami ng polusyon sa hangin, kaya sa pamamagitan ng paglikha ng isang matalinong ilaw ng trapiko, na-optimize ko ang mga pattern ng ilaw upang ang mga kotse ay gumugol ng pinakamaliit na oras na posible sa kanilang sasakyan na huminto. Sa huli, ang sistemang ilaw ng trapiko na ito ay maaaring ipatupad sa mga lungsod, suburb, o kahit na mga lugar sa kanayunan upang maging mas mahusay para sa mga tao ay mabawasan ang polusyon sa hangin.

Hakbang 1: Listahan ng Mga Bahagi

Mga Materyales:

Raspberry Pi 3 Model B v1.2

Raspberry Pi Camera v2.1

5V / 1A micro USB power supply

HDMI monitor, keyboard, mouse SD card kasama si Raspbian Jessie

Raspberry Pi GPIO breakout cable

Pula, dilaw, berde na LED (2 sa bawat kulay)

Mga babaeng konektor para sa Raspberry Pi (7 natatanging mga kulay)

Iba't ibang 24 gauge wire (magkakaibang kulay) + heat shrink tubing

2'x2 'kahoy na panel o platform

Mga turnilyo ng kahoy

Itim na ibabaw (karton, foam board, poster board, atbp.)

Puti (o anumang kulay maliban sa itim) tape para sa mga marka sa kalsada

Itim na spray na pintura (para sa PVC)

½”PVC pipe na may 90 degree elbow joint (2), T socket (1), female adapter (2)

Mga kasangkapan

Panghinang

3d printer

Mag-drill na may iba't ibang mga piraso ng drill

Breadboard

Mainit na baril

Hakbang 2: Pag-set up ng Raspberry Pi

I-load ang SD card sa Raspberry Pi at mag-boot up.

Sundin ang gabay na ito upang mai-install ang kinakailangang mga library ng OpenCV. Tiyaking mayroon kang oras upang magawa ang hakbang na ito, tulad ng pag-install ng OpenCV library ay maaaring tumagal ng ilang oras. Tiyaking i-install din at i-set up ang iyong camera dito.

Dapat mo ring i-install ang pip:

picamera

gpiozero

RPi. GPIO

Narito ang natapos na code:

mula sa picamera.array import PiRGBArray

mula sa picamera import PiCamera

import picamera.array

i-import ang numpy bilang np

oras ng pag-import

import cv2

i-import ang RPi. GPIO bilang GPIO

oras ng pag-import

GPIO.setmode (GPIO. BCM)

para sa ako sa (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

raw = PiRGBArray (cam, laki = (480, 480))

oras. tulog (0.1)

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

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

initvert = 0

inithoriz = 0

counter = 0

para sa frame sa cam.capture_continuous (raw, format = "bgr", use_video_port = True):

frame = frame.array

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

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

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

mask = cv2.dilate (mask, Wala, pag-ulit = 5)

mask = cv2.erode (mask, Wala, pag-ulit = 1)

mask = cv2.dilate (mask, Wala, pag-ulit = 3)

ako, thresh = cv2. Threshold (mask, 127, 255, cv2. THRESH_BINARY)

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

gitna = Wala

vert = 0

pahalang = 0

kung len (cnts)> 0:

para sa c sa cnts:

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

gitna = (int (x), int (y))

radius = int (radius)

cv2.circle (frame, center, radius, (0, 255, 0), 2)

x = int (x)

y = int (y)

kung 180 <x <300:

kung y> 300:

vert = vert +1

elif y <180:

vert = vert +1

iba pa:

vert = vert

kung 180 <y <300:

kung x> 300:

pahalang = pahalang +1

elif x <180:

pahalang = pahalang +1

iba pa:

pahalang = pahalang

kung vert! = initvert:

i-print ang "Mga Kotse sa patayong linya:" + str (vert)

initvert = vert

i-print ang "Mga Kotse sa pahalang na linya:" + str (pahalang)

inithoriz = pahalang

i-print '----------------------------'

kung pahalang! = inithoriz:

i-print ang "Mga Kotse sa patayong linya:" + str (vert)

initvert = vert

i-print ang "Mga Kotse sa pahalang na linya:" + str (pahalang)

inithoriz = pahalang

i-print '----------------------------'

kung vert <horiz:

GPIO.output (23, GPIO. HIGH)

GPIO.output (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

kung pahalang <vert:

GPIO.output (16, GPIO. HIGH)

GPIO.output (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow ("Frame", frame)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Thresh", thresh)

raw.truncate (0)

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

pahinga

cv2.destroyAllWindows ()

GPIO.cleanup ()

Hakbang 3: Raspberry Pi at Camera Mount

Raspberry Pi at Camera Mount
Raspberry Pi at Camera Mount
Raspberry Pi at Camera Mount
Raspberry Pi at Camera Mount
Raspberry Pi at Mount Mount
Raspberry Pi at Mount Mount
Raspberry Pi at Mount Mount
Raspberry Pi at Mount Mount

I-print ng 3D ang case at i-mount ang camera at mag-ipon.

Hakbang 4: Traffic Light Assembly

Traffic Light Assembly
Traffic Light Assembly
Traffic Light Assembly
Traffic Light Assembly
Traffic Light Assembly
Traffic Light Assembly

Subukan ang ilaw ng trapiko gamit ang isang pisara. Ang bawat kalaban na hanay ng mga LED ay nagbabahagi ng isang anode, at lahat ng mga ito ay nagbabahagi ng isang karaniwang katod (lupa). Dapat mayroong isang kabuuang 7 mga wire ng pag-input: 1 para sa bawat pares ng LEDS (6) + 1 ground wire. Maghinang at tipunin ang mga ilaw ng trapiko.

Hakbang 5: Mga Kable (Bahagi 1)

Mga Kable (Bahagi 1)
Mga Kable (Bahagi 1)
Mga Kable (Bahagi 1)
Mga Kable (Bahagi 1)
Mga Kable (Bahagi 1)
Mga Kable (Bahagi 1)
Mga Kable (Bahagi 1)
Mga Kable (Bahagi 1)

Paghinang ang mga babaeng pin ng header sa halos 5 talampakan ng kawad. Ito ang mga panig na Ang mga wires na ito ay ahas sa pamamagitan ng mga pipa ng PVC sa paglaon. Siguraduhin na makilala ang iba't ibang mga hanay ng mga ilaw (2 x 3 mga kulay at 1 lupa). Sa kasong ito, minarkahan ko ang mga dulo ng isa pang hanay ng mga pula, dilaw, at asul na mga wire na may sharpie kaya alam ko kung alin ang alin.

Hakbang 6: Pagbuo ng Kapaligiran

Pagbuo ng Kapaligiran
Pagbuo ng Kapaligiran
Pagbuo ng Kapaligiran
Pagbuo ng Kapaligiran
Pagbuo ng Kapaligiran
Pagbuo ng Kapaligiran
Pagbuo ng Kapaligiran
Pagbuo ng Kapaligiran

Pagbuo ng kapaligiran Gumawa ng isang 2 talampakang parisukat na kahoy na papag tulad nito. Ang kahoy na scrap ay maayos dahil ito ay tatakpan. Mag-drill ng isang butas na akma sa iyong adapter. Mga drill screw sa pamamagitan ng mga gilid ng papag upang ma-secure ang pipa ng PVC sa lugar. Gupitin ang itim na board ng bula upang tumugma sa kahoy na papag sa ilalim. Mag-drill ng isang butas na umaangkop sa paligid ng pipa ng PVC. Ulitin sa kabaligtaran na sulok. Markahan ang mga kalsada ng ilang puting tape.

Hakbang 7: Pagtatapos sa PVC Frame

Pagtatapos sa PVC Frame
Pagtatapos sa PVC Frame
Pagtatapos sa PVC Frame
Pagtatapos sa PVC Frame
Pagtatapos sa PVC Frame
Pagtatapos sa PVC Frame

Sa tuktok na tubo, mag-drill ng isang butas na maaaring magkasya sa isang bundle ng mga wire. Ang isang magaspang na butas ay pagmultahin hangga't maaari mong ma-access ang loob ng mga tubo. Ahas ang mga wire sa pamamagitan ng mga pipa ng PVC at kasukasuan ng siko para sa isang fit na pagsubok. Kapag natapos na ang lahat, pintura ang PVC ng ilang itim na pinturang spray upang linisin ang hitsura ng pangunahing frame. Gupitin ang isang maliit na puwang sa isa sa mga pipa ng PVC upang magkasya sa isang T-joint. Magdagdag ng isang pipa ng PVC sa t-magkasanib na ito para mag-hang down ang ilaw ng trapiko. Ang diameter ay maaaring kapareho ng pangunahing frame (1/2 ), kahit na kung gumamit ka ng isang mas payat na tubo, siguraduhin na ang 7 wires ay maaaring lumusot. Mag-drill ng isang butas sa pamamagitan ng tubo na ito para mag-hang ang ilaw ng trapiko.

Hakbang 8: Mga Kable (Bahagi 2)

Mga Kable (Bahagi 2)
Mga Kable (Bahagi 2)
Mga Kable (Bahagi 2)
Mga Kable (Bahagi 2)
Mga Kable (Bahagi 2)
Mga Kable (Bahagi 2)

I-wire muli ang lahat tulad ng nasubok dati. I-double check ang ilaw ng trapiko at mga kable na may isang breadboard upang kumpirmahin na nagawa ang lahat ng mga koneksyon. Paghinang ang ilaw ng trapiko sa mga wire na dumarating sa T-joint arm. Balutin ang mga nakahantad na mga wire gamit ang electrical tape upang maiwasan ang anumang shorts at para sa isang mas malinis na hitsura.

Hakbang 9: Tapos na

Tapos na!
Tapos na!
Tapos na!
Tapos na!
Tapos na!
Tapos na!
Tapos na!
Tapos na!

Upang patakbuhin ang code, tiyaking itakda ang iyong mapagkukunan bilang ~ /.profile at cd sa lokasyon ng iyong proyekto.

Hakbang 10: Mga Dagdag (Mga Larawan)

Inirerekumendang: