Satura rādītājs:

Satiksmes modeļa analizators, izmantojot tiešu objektu noteikšanu: 11 soļi (ar attēliem)
Satiksmes modeļa analizators, izmantojot tiešu objektu noteikšanu: 11 soļi (ar attēliem)

Video: Satiksmes modeļa analizators, izmantojot tiešu objektu noteikšanu: 11 soļi (ar attēliem)

Video: Satiksmes modeļa analizators, izmantojot tiešu objektu noteikšanu: 11 soļi (ar attēliem)
Video: Forgotten Rail Yard Under Chicago's Largest Historic Building - Merchandise Mart 2024, Novembris
Anonim
Image
Image
Satiksmes modeļa analizators, izmantojot tiešo objektu noteikšanu
Satiksmes modeļa analizators, izmantojot tiešo objektu noteikšanu

Mūsdienu pasaulē luksofori ir būtiski drošam ceļam. Tomēr daudzas reizes luksofori var būt kaitinoši situācijās, kad kāds tuvojas gaismai tieši tad, kad tā kļūst sarkana. Tas tērē laiku, it īpaši, ja gaisma neļauj vienam transportlīdzeklim nokļūt krustojumā, ja uz ceļa nav neviena cita. Mans jauninājums ir gudrs luksofors, kas izmanto dzīvu objektu noteikšanu no kameras, lai saskaitītu automašīnu skaitu uz katra ceļa. Aparatūra, ko es izmantošu šim projektam, ir Raspberry Pi 3, kameras modulis un dažādas elektroniskās aparatūras pašai gaismai. Izmantojot OpenCV uz Raspberry Pi, apkopotā informācija tiks izmantota, izmantojot kodu, kas kontrolē gaismas diodes, izmantojot GPIO. Atkarībā no šiem skaitļiem luksofors mainīsies, ļaujot automašīnām cauri visoptimālākajā secībā. Šajā gadījumā braukšanas josla ar visvairāk automašīnu tiktu izlaista, lai josla ar mazāk automašīnām darbotos tukšgaitā, samazinot gaisa piesārņojumu. Tas novērstu situācijas, kad daudzas automašīnas tiek apturētas, kamēr uz krustojošā ceļa nav automašīnu. Tas ne tikai ietaupa laiku ikvienam, bet arī ietaupa vidi. Laiks, kas tiek apstādināts pie pieturas zīmes ar dzinēju tukšgaitā, palielina gaisa piesārņojumu, tāpēc, izveidojot gudru luksoforu, es varu optimizēt gaismas shēmas, lai automašīnas pavadītu pēc iespējas mazāk laika, apstādinot transportlīdzekli. Galu galā šo luksoforu sistēmu varētu ieviest pilsētās, priekšpilsētās vai pat lauku apvidos, lai tā būtu efektīvāka cilvēkiem, samazinātu gaisa piesārņojumu.

1. darbība: detaļu saraksts

Materiāli:

Raspberry Pi 3 Modelis B v1.2

Raspberry Pi kamera v2.1

5V/1A mikro USB barošanas avots

HDMI monitors, tastatūra, peles SD karte ar Raspbian Jessie

Raspberry Pi GPIO izlaušanās kabelis

Sarkanas, dzeltenas, zaļas gaismas diodes (2 no katras krāsas)

Sieviešu savienotāji Raspberry Pi (7 unikālas krāsas)

Dažādu 24 gabarītu vads (dažādas krāsas) + termiski saraušanās caurule

2x2 collu koka panelis vai platforma

Koka skrūves

Melna virsma (kartons, putu dēlis, plakātu dēlis utt.)

Balta (vai jebkura cita krāsa, izņemot melnu) lente ceļa marķēšanai

Melna aerosola krāsa (PVC)

½ collu PVC caurule ar 90 grādu elkoņa locītavām (2), T ligzda (1), adapteris sievietēm (2)

Rīki

Lodāmurs

3D printeris

Urbis ar dažādiem urbjiem

Maizes dēlis

Siltuma lielgabals

2. darbība. Raspberry Pi iestatīšana

Ievietojiet SD karti Raspberry Pi un palaidiet to.

Izpildiet šo rokasgrāmatu, lai instalētu nepieciešamās OpenCV bibliotēkas. Pārliecinieties, ka jums ir laiks, lai veiktu šo darbību, jo OpenCV bibliotēkas instalēšana var aizņemt pāris stundas. Noteikti arī šeit instalējiet un iestatiet kameru.

Jums vajadzētu arī instalēt pip:

picamera

gpiozero

RPi. GPIO

Šeit ir galīgais kods:

no picamera.array importēt PiRGBArray

no picamera importa PiCamera

importēt picamera.array

importēt numpy kā np

importa laiks

importēt cv2

importēt RPi. GPIO kā GPIO

importa laiks

GPIO.setmode (GPIO. BCM)

i (23, 25, 16, 21):

GPIO iestatīšana (i, GPIO. OUT)

kamera = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

raw = PiRGBArray (izciļņa izmērs = (480, 480))

miega laiks (0,1)

colorLower = np.masīvs ([0, 100, 100])

colorUpper = np.masīvs ([179, 255, 255])

initvert = 0

inithoriz = 0

skaitītājs = 0

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

rāmis = rāmis.masīvs

hsv = cv2.cvtColor (rāmis, cv2. COLOR_BGR2HSV)

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

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

maska = cv2.dilate (maska, nav, iterācijas = 5)

maska = cv2.erode (maska, nav, iterācijas = 1)

maska = cv2.dilate (maska, nav, iterācijas = 3)

es, rinda = cv2.threshold (maska, 127, 255, cv2. THRESH_BINARY)

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

centrs = nav

vert = 0

horizonts = 0

ja len (cnts)> 0:

c cnts:

(x, y), rādiuss = cv2.minEnclosingCircle (c)

centrs = (int (x), int (y))

rādiuss = int (rādiuss)

cv2.aplis (rāmis, centrs, rādiuss, (0, 255, 0), 2)

x = int (x)

y = int (y)

ja 180 <x <300:

ja y> 300:

vert = vert +1

elifs y <180:

vert = vert +1

cits:

vert = vert

ja 180 <y <300:

ja x> 300:

horiz = horiz +1

elif x <180:

horiz = horiz +1

cits:

horiz = horizonts

ja vert! = initvert:

drukāt "Automašīnas vertikālā joslā:" + str (vert)

initvert = vert

drukāt "Automašīnas horizontālā joslā:" + str (horizonts)

inithoriz = horizonts

drukāt '----------------------------'

ja horiz! = inithoriz:

drukāt "Automašīnas vertikālā joslā:" + str (vert)

initvert = vert

drukāt "Automašīnas horizontālā joslā:" + str (horizonts)

inithoriz = horizonts

drukāt '----------------------------'

ja vert <horiz:

GPIO izvade (23, GPIO. HIGH)

GPIO izvade (21, GPIO. HIGH)

GPIO izvade (16, GPIO. LOW)

GPIO izeja (25, GPIO. LOW)

ja horiz <vert:

GPIO izvade (16, GPIO. HIGH)

GPIO izvade (25, GPIO. HIGH)

GPIO izvade (23, GPIO. LOW)

GPIO izvade (21, GPIO. LOW)

cv2.imshow ("Rāmis", kadrs)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Threes", kulšana)

raw.truncate (0)

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

pārtraukums

cv2.destroyAllWindows ()

GPIO.cleanup ()

3. darbība: Raspberry Pi un kameras stiprinājums

Raspberry Pi un kameras stiprinājums
Raspberry Pi un kameras stiprinājums
Raspberry Pi un kameras stiprinājums
Raspberry Pi un kameras stiprinājums
Raspberry Pi un kameras stiprinājums
Raspberry Pi un kameras stiprinājums
Raspberry Pi un kameras stiprinājums
Raspberry Pi un kameras stiprinājums

3D izdrukājiet korpusu un kameras stiprinājumu un salieciet.

4. solis: luksoforu montāža

Luksoforu montāža
Luksoforu montāža
Luksoforu montāža
Luksoforu montāža
Luksoforu montāža
Luksoforu montāža

Izmēģiniet luksoforu ar maizes dēli. Katrai pretējai gaismas diožu kopai ir kopīgs anods, un visiem tiem ir kopīgs katods (zemējums). Kopā jābūt 7 ieejas vadiem: 1 katram gaismas diodes pārim (6) + 1 zemējuma vads. Lodējiet un salieciet luksoforus.

5. solis: elektroinstalācija (1. daļa)

Elektroinstalācija (1. daļa)
Elektroinstalācija (1. daļa)
Elektroinstalācija (1. daļa)
Elektroinstalācija (1. daļa)
Elektroinstalācija (1. daļa)
Elektroinstalācija (1. daļa)
Elektroinstalācija (1. daļa)
Elektroinstalācija (1. daļa)

Lodējiet sieviešu galvenes tapas līdz aptuveni 5 pēdu vadam. Šīs ir tās puses, kuras šie vadi vēlāk čūskos caur PVC caurulēm. Pārliecinieties, ka varat atšķirt dažādus lukturu komplektus (2 x 3 krāsas un 1 zeme). Šajā gadījumā es atzīmēju vēl vienu sarkanu, dzeltenu un zilu vadu komplekta galus ar asiem, lai es zinātu, kurš ir kurš.

6. solis: vides veidošana

Vides veidošana
Vides veidošana
Vides veidošana
Vides veidošana
Vides veidošana
Vides veidošana
Vides veidošana
Vides veidošana

Vides veidošana Izveidojiet 2 pēdu kvadrātveida koka paliktni, piemēram, šo. Koksnes lūžņi ir labi, jo tie tiks aizklāti. Izurbiet caurumu, kas atbilst jūsu adapterim. Caur paletes malām urbiet skrūves, lai nostiprinātu PVC cauruli. Izgrieziet melno putu dēli, lai tas atbilstu koka paletei zem tā. Izurbiet caurumu, kas atbilst PVC caurulei. Atkārtojiet pretējā stūrī. Atzīmējiet ceļus ar baltu lenti.

7. solis: PVC rāmja pabeigšana

PVC rāmja pabeigšana
PVC rāmja pabeigšana
PVC rāmja pabeigšana
PVC rāmja pabeigšana
PVC rāmja pabeigšana
PVC rāmja pabeigšana

Augšējā caurulē urbiet caurumu, kurā var ietilpt vadu saišķis. Rupjš caurums ir piemērots, ja vien varat piekļūt cauruļu iekšpusei. Izmēģiniet vadus caur PVC caurulēm un elkoņa locītavām, lai tie būtu piemēroti testam. Kad viss ir pabeigts, krāsojiet PVC ar kādu melnu aerosola krāsu, lai notīrītu galvenā rāmja izskatu. Izgrieziet nelielu spraugu vienā no PVC caurulēm, lai tā atbilstu T veida savienojumam. Pievienojiet šim cauruļvadam PVC cauruli, lai luksofors varētu nokarāties. Diametrs varētu būt tāds pats kā galvenajam rāmim (1/2 ), tomēr, ja izmantojat plānāku cauruli, pārliecinieties, ka 7 vadi var izlīst cauri. Izurbiet caurumu caurulē, lai luksofors varētu pakārt.

8. darbība: elektroinstalācija (2. daļa)

Elektroinstalācija (2. daļa)
Elektroinstalācija (2. daļa)
Elektroinstalācija (2. daļa)
Elektroinstalācija (2. daļa)
Elektroinstalācija (2. daļa)
Elektroinstalācija (2. daļa)

Pārkārtojiet visu, kā iepriekš pārbaudīts. Vēlreiz pārbaudiet luksoforu un vadus ar maizes dēli, lai pārliecinātos, ka visi savienojumi ir izveidoti. Lodējiet luksoforu pie vadiem, kas nāk caur T veida savienojuma roku. Aptiniet atklātos vadus ar elektrisko lenti, lai novērstu šortus un iegūtu tīrāku izskatu.

9. solis: pabeigts

Pabeigts!
Pabeigts!
Pabeigts!
Pabeigts!
Pabeigts!
Pabeigts!
Pabeigts!
Pabeigts!

Lai palaistu kodu, noteikti iestatiet avotu kā ~/.profile un cd uz jūsu projekta atrašanās vietu.

10. darbība. Papildu pakalpojumi (fotoattēli)

Ieteicams: