Indholdsfortegnelse:
- Trin 1: Deleliste
- Trin 2: Opsætning af Raspberry Pi
- Trin 3: Raspberry Pi og kameramontering
- Trin 4: Samling af trafiklys
- Trin 5: Ledningsføring (del 1)
- Trin 6: Opbygning af miljøet
- Trin 7: Afslutning af PVC -rammen
- Trin 8: Ledningsføring (del 2)
- Trin 9: Færdig
- Trin 10: Ekstra (fotos)
Video: Trafikmønsteranalysator ved hjælp af registrering af levende objekter: 11 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
I nutidens verden er trafiklys afgørende for en sikker vej. Men mange gange kan trafiklys være irriterende i situationer, hvor nogen nærmer sig lyset, ligesom det bliver rødt. Dette spilder tid, især hvis lyset forhindrer et enkelt køretøj i at komme igennem krydset, når der ikke er andre på vejen. Min innovation er et smart trafiklys, der bruger registrering af levende objekter fra et kamera til at tælle antallet af biler på hver vej. Den hardware, jeg vil bruge til dette projekt, er en Raspberry Pi 3, et kameramodul og forskellige elektroniske hardware til selve lyset. Ved hjælp af OpenCV på Raspberry Pi vil de indsamlede oplysninger blive kørt via kode, der styrer lysdioderne via GPIO. Afhængigt af disse tal vil trafiklyset ændre sig og lade biler komme igennem i den mest optimale rækkefølge. I dette tilfælde ville banen med de fleste biler blive ledt igennem, så banen med færre biler ville gå på tomgang og reducere luftforureningen. Dette ville fjerne situationer, hvor mange biler standses, mens der ikke er biler på den krydsende vej. Dette sparer ikke kun tid for alle, men det sparer også miljøet. Den tid, folk stoppes ved et stopskilt med deres motor i tomgang, øger mængden af luftforurening, så ved at oprette et smart lyskryds kan jeg optimere lysmønstrene, så biler bruger mindst mulig tid med deres køretøj standset. I sidste ende kunne dette lyskryds system implementeres i byer, forstæder eller endda landdistrikter for at være mere effektivt for mennesker ville reducere luftforurening.
Trin 1: Deleliste
Materialer:
Raspberry Pi 3 Model B v1.2
Raspberry Pi kamera v2.1
5V/1A mikro USB strømforsyning
HDMI -skærm, tastatur, mus -SD -kort med Raspbian Jessie
Raspberry Pi GPIO breakout -kabel
Røde, gule, grønne lysdioder (2 i hver farve)
Hunstik til Raspberry Pi (7 unikke farver)
Assorteret 24 gauge wire (forskellige farver) + varmekrympeslange
2'x2 'træpanel eller platform
Træskruer
Sort overflade (pap, skumbræt, plakatbræt osv.)
Hvidt (eller anden farve end sort) tape til vejmarkeringer
Sort spraymaling (til PVC)
½”PVC -rør med 90 graders albuesamlinger (2), T -fatning (1), hunadapter (2)
Værktøjer
Loddekolbe
3D printer
Bor med forskellige bor
Brødbræt
Varmepistol
Trin 2: Opsætning af Raspberry Pi
Læg SD -kortet i Raspberry Pi og start.
Følg denne vejledning for at installere de nødvendige OpenCV -biblioteker. Sørg for, at du har tid til at udføre dette trin, da installationen af OpenCV -biblioteket kan tage et par timer. Sørg også for at installere og konfigurere dit kamera her.
Du bør også installere pip:
picamera
gpiozero
RPi. GPIO
Her er den færdige kode:
fra picamera.array import PiRGBArray
fra picamera import PiCamera
import picamera.array
import numpy som np
importtid
import cv2
importer RPi. GPIO som GPIO
importtid
GPIO.setmode (GPIO. BCM)
for i in (23, 25, 16, 21):
GPIO.setup (i, GPIO. OUT)
cam = PiCamera ()
cam.resolution = (480, 480)
cam.framerate = 30
raw = PiRGBArray (cam, størrelse = (480, 480))
time.sleep (0,1)
colorLower = np.array ([0, 100, 100])
colorUpper = np.array ([179, 255, 255])
initvert = 0
inithoriz = 0
tæller = 0
til ramme i cam.capture_continuous (rå, format = "bgr", use_video_port = True):
frame = frame.array
hsv = cv2.cvtColor (ramme, cv2. COLOR_BGR2HSV)
mask = cv2.inRange (hsv, colorLower, colorUpper)
maske = cv2.blur (maske, (3, 3))
mask = cv2.dilate (maske, Ingen, iterationer = 5)
mask = cv2.erode (maske, Ingen, iterationer = 1)
mask = cv2.dilate (maske, Ingen, iterationer = 3)
mig, tærske = cv2.tærskel (maske, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours (tærske, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]
center = Ingen
vert = 0
horisont = 0
hvis len (cnts)> 0:
for c i cnts:
(x, y), radius = cv2.minEnclosingCircle (c)
center = (int (x), int (y))
radius = int (radius)
cv2.cirkel (ramme, center, radius, (0, 255, 0), 2)
x = int (x)
y = int (y)
hvis 180 <x <300:
hvis y> 300:
vert = vert +1
elif y <180:
vert = vert +1
andet:
vert = vert
hvis 180 <y <300:
hvis x> 300:
horizon = horizon +1
elif x <180:
horizon = horizon +1
andet:
horison = horisonter
hvis vert! = initvert:
print "Biler i lodret bane:" + str (vert)
initvert = vert
print "Biler i vandret bane:" + str (horizon)
inithoriz = horizon
Print '----------------------------'
hvis horizon! = inithoriz:
print "Biler i lodret bane:" + str (vert)
initvert = vert
print "Biler i vandret bane:" + str (horizon)
inithoriz = horizon
Print '----------------------------'
hvis vert <horizon:
GPIO.output (23, GPIO. HIGH)
GPIO.output (21, GPIO. HIGH)
GPIO.output (16, GPIO. LOW)
GPIO.output (25, GPIO. LOW)
hvis horizon <vert:
GPIO.output (16, GPIO. HIGH)
GPIO.output (25, GPIO. HIGH)
GPIO.output (23, GPIO. LOW)
GPIO.output (21, GPIO. LOW)
cv2.imshow ("Ramme", ramme)
cv2.imshow ("HSV", hsv)
cv2.imshow ("tærsk", tærskning)
rå. afkortet (0)
hvis cv2.waitKey (1) & 0xFF == ord ('q'):
pause
cv2.destroyAllWindows ()
GPIO.cleanup ()
Trin 3: Raspberry Pi og kameramontering
3D -print sagen og kameramontering og saml.
Trin 4: Samling af trafiklys
Test lyskryds med et brødbræt. Hvert modsat sæt LED'er deler en anode, og alle deler en fælles katode (jord). Der bør være i alt 7 indgangstråde: 1 for hvert par LED'er (6) + 1 jordledning. Lod og saml lyskryds.
Trin 5: Ledningsføring (del 1)
Lod den kvindelige header pins til omkring 5 fod tråd. Dette er siderne, som disse ledninger senere vil slange gennem PVC -rørene. Sørg for at kunne skelne de forskellige lyssæt (2 x 3 farver og 1 grund). I dette tilfælde markerede jeg enderne af et andet sæt røde, gule og blå ledninger med sharpie, så jeg ved, hvilken er hvilken.
Trin 6: Opbygning af miljøet
Opbygning af miljøet Lav en 2 fod firkantet træpalle som denne. Skrottræ er fint, da det vil blive tildækket. Bor et hul, der lige passer til din adapter. Bor skruer gennem siderne af pallen for at fastgøre PVC -røret på plads. Skær det sorte skumbræt, så det matcher træpallen nedenunder. Bor et hul, der passer rundt om PVC -røret. Gentag på det modsatte hjørne. Marker vejene med noget hvidt tape.
Trin 7: Afslutning af PVC -rammen
På det øverste rør bores et hul, der kan passe til et bundt ledninger. Et groft hul er fint, så længe du har adgang til rørets inderside. Slang ledningerne gennem PVC -rørene og albueleddene for en testpasning. Når alt er færdigt, skal du male PVC'en med lidt sort spraymaling for at rense hovedrammens udseende. Skær et lille hul i et af PVC-rørene, så det passer til en T-samling. Tilføj et PVC-rør til denne t-samling, så lyskryds kan hænge ned fra. Diameteren kan være den samme som hovedrammen (1/2 ), men hvis du bruger et tyndere rør, skal du sørge for, at de 7 ledninger kan slange igennem. Bor et hul gennem dette rør, så lyskryds kan hænge fra.
Trin 8: Ledningsføring (del 2)
Tilslut alt som tidligere testet. Dobbelt tjek lyskryds og ledninger med et brødbræt for at bekræfte, at alle forbindelser er foretaget. Loddet lyskryds til ledningerne, der kommer gennem T-ledarmen. Pak de blottede ledninger med elektrisk tape for at forhindre shorts og for et renere udseende.
Trin 9: Færdig
For at køre koden skal du sørge for at angive din kilde som ~/.profil og cd til din projekts placering.
Trin 10: Ekstra (fotos)
Anbefalede:
Planlægning af levende data for en temperatursensor (TMP006) ved hjælp af MSP432 LaunchPad og Python: 9 trin
Planlægning af levende data for en temperatursensor (TMP006) ved hjælp af MSP432 LaunchPad og Python: TMP006 er en temperatursensor, der måler temperaturen på et objekt uden at skulle komme i kontakt med objektet. I denne vejledning tegner vi data om levende temperatur fra BoosterPack (TI BOOSTXL-EDUMKII) ved hjælp af Python
Sådan laver du en drone ved hjælp af Arduino UNO - Lav en quadcopter ved hjælp af mikrokontroller: 8 trin (med billeder)
Sådan laver du en drone ved hjælp af Arduino UNO | Lav en Quadcopter ved hjælp af mikrokontroller: Introduktion Besøg min Youtube -kanal En Drone er en meget dyr gadget (produkt) at købe. I dette indlæg vil jeg diskutere, hvordan jeg gør det billigt ?? Og hvordan kan du lave din egen sådan til en billig pris … Nå i Indien alle materialer (motorer, ESC'er
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores
FoldTronics: Oprettelse af 3D -objekter med integreret elektronik ved hjælp af foldbare HoneyComb -strukturer: 11 trin
FoldTronics: Oprettelse af 3D-objekter med integreret elektronik ved hjælp af sammenklappelige HoneyComb-strukturer: I denne vejledning præsenterer vi FoldTronics, en 2D-skæret baseret fremstillingsteknik til at integrere elektronik i 3D-foldede objekter. Nøgleidéen er at skære og perforere et 2D -ark ved hjælp af en skæreplotter for at gøre det foldbart i en 3D -bikagestruktur
Scan nærliggende objekter for at lave 3d -model ved hjælp af ARDUINO: 5 trin (med billeder)
Scan nærliggende objekter for at lave 3d-model ved hjælp af ARDUINO: Dette projekt er specifikt ved hjælp af ultralydssensoren HC-SR04 til at scanne efter objekter i nærheden. For at lave 3D -model skal du feje sensoren i vinkelret retning. Du kan programmere Arduino til at afgive en alarm, når sensoren registrerer et objekt