INHOUDSOPGAWE:
- Stap 1: Onderdele lys
- Stap 2: Die opstel van die Raspberry Pi
- Stap 3: Raspberry Pi en Camera Mount
- Stap 4: Verkeersligbyeenkoms
- Stap 5: Bedrading (deel 1)
- Stap 6: Bou die omgewing
- Stap 7: Voltooiing van die PVC -raam
- Stap 8: Bedrading (Deel 2)
- Stap 9: klaar
- Stap 10: Ekstras (foto's)
Video: Verkeerspatroonanaliseerder met behulp van opsporing van lewendige voorwerpe: 11 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
In die hedendaagse wêreld is verkeersligte noodsaaklik vir 'n veilige pad. Verkeersligte kan egter baie keer irriterend wees in situasies waarin iemand die lig nader, net soos dit rooi word. Dit mors tyd, veral as die lig voorkom dat 'n enkele voertuig deur die kruising kan kom as daar niemand anders op die pad is nie. My innovasie is 'n slim verkeerslig wat opsporing van lewendige voorwerpe van 'n kamera gebruik om die aantal motors op elke pad te tel. Die hardeware wat ek vir hierdie projek sal gebruik, is 'n Raspberry Pi 3, 'n kameramodule en verskillende elektroniese hardeware vir die lig self. Deur OpenCV op die Raspberry Pi te gebruik, word die versamelde inligting uitgevoer deur middel van kode wat die LED's via die GPIO beheer. Afhangende van hierdie getalle, sal die verkeerslig verander, sodat motors in die mees optimale volgorde deurkom. In hierdie geval sal die baan met die meeste motors deurgelaat word, sodat die baan met minder motors stilstaan, wat lugbesoedeling verminder. Dit sal situasies uitskakel wanneer baie motors stilhou terwyl daar geen motors op die kruispad is nie. Dit spaar nie net tyd vir almal nie, maar dit spaar ook die omgewing. Die hoeveelheid tyd wat mense by 'n stopteken stilgehou word terwyl hul enjin stilstaan, verhoog die lugbesoedeling, so deur 'n slim verkeerslig te skep, kan ek die ligpatrone optimaliseer sodat motors die minste tyd deurbring terwyl hul voertuig stilhou. Uiteindelik kan hierdie verkeersligstelsel in stede, voorstede of selfs landelike gebiede geïmplementeer word om meer doeltreffend te wees vir mense om lugbesoedeling te verminder.
Stap 1: Onderdele lys
Materiaal:
Framboos Pi 3 Model B v1.2
Framboos Pi -kamera v2.1
5V/1A mikro -USB -kragbron
HDMI -monitor, sleutelbord, muis -SD -kaart met Raspbian Jessie
Framboos Pi GPIO -uitbreekkabel
Rooi, geel, groen LED's (2 van elke kleur)
Vroulike verbindings vir Raspberry Pi (7 unieke kleure)
Geassorteerde 24 gauge draad (verskillende kleure) + krimpkous
2 x 2 'houtpaneel of -platform
Houtskroewe
Swart oppervlak (karton, skuimbord, plakkaatbord, ens.)
Wit (of enige ander kleur as swart) band vir padmerke
Swart spuitverf (vir PVC)
½”PVC -pyp met 90 grade elmboogverbindings (2), T -sok (1), vroulike adapter (2)
Gereedskap
Soldeerbout
3D -drukker
Boor met verskillende boorpunte
Broodbord
Hittegeweer
Stap 2: Die opstel van die Raspberry Pi
Laai die SD -kaart in die Raspberry Pi en begin.
Volg hierdie gids om die vereiste OpenCV -biblioteke te installeer. Maak seker dat u tyd het om hierdie stap uit te voer, aangesien die installering van die OpenCV -biblioteek 'n paar uur kan neem. Maak seker dat u ook u kamera hier installeer en instel.
U moet ook pip installeer:
picamera
gpiozero
RPi. GPIO
Hier is die finale kode:
vanaf picamera.array invoer PiRGBArray
van picamera invoer PiCamera
voer picamera.array in
invoer numpy as np
invoer tyd
voer cv2 in
voer RPi. GPIO in as GPIO
invoer tyd
GPIO.setmode (GPIO. BCM)
vir i in (23, 25, 16, 21):
GPIO.setup (i, GPIO. OUT)
cam = PiCamera ()
cam.resolution = (480, 480)
cam.framerate = 30
rou = PiRGBArray (nok, grootte = (480, 480))
tyd. slaap (0,1)
colorLower = np.array ([0, 100, 100])
colorUpper = np.array ([179, 255, 255])
initvert = 0
inithoriz = 0
teller = 0
vir raam in cam.capture_continuous (rou, format = "bgr", use_video_port = True):
raam = raam.reeks
hsv = cv2.cvtColor (raam, cv2. COLOR_BGR2HSV)
masker = cv2.inRange (hsv, colorLower, colorUpper)
masker = cv2. blur (masker, (3, 3))
masker = cv2.dilate (masker, Geen, herhalings = 5)
masker = cv2.erode (masker, Geen, herhalings = 1)
masker = cv2.dilate (masker, None, iterations = 3)
ek, dors = cv2.drempel (masker, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours (dors, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]
sentrum = Geen
vert = 0
horison = 0
as len (cnts)> 0:
vir c in cnts:
(x, y), radius = cv2.minEnclosingCircle (c)
middel = (int (x), int (y))
radius = int (radius)
cv2.circle (raam, middel, radius, (0, 255, 0), 2)
x = int (x)
y = int (y)
as 180 <x <300:
as y> 300:
vert = vert +1
elif y <180:
vert = vert +1
anders:
vert = vert
as 180 <j <300:
as x> 300:
horison = horison +1
elif x <180:
horison = horison +1
anders:
horison = horison
as vert! = initvert:
druk "Motors in vertikale baan:" + str (vert)
initvert = vert
druk "Motors in horisontale baan:" + str (horizon)
inithoriz = horizon
druk '----------------------------'
as horizon! = inithoriz:
druk "Motors in vertikale baan:" + str (vert)
initvert = vert
druk "Motors in horisontale baan:" + str (horizon)
inithoriz = horizon
druk '----------------------------'
as vert <horizon:
GPIO.output (23, GPIO. HIGH)
GPIO.output (21, GPIO. HIGH)
GPIO.output (16, GPIO. LOW)
GPIO.output (25, GPIO. LOW)
as horis <vert:
GPIO.output (16, GPIO. HIGH)
GPIO.output (25, GPIO. HIGH)
GPIO.output (23, GPIO. LOW)
GPIO.output (21, GPIO. LOW)
cv2.imshow ("raam", raam)
cv2.imshow ("HSV", hsv)
cv2.imshow ("Dors", dors)
rou. verkort (0)
as cv2.waitKey (1) & 0xFF == ord ('q'):
breek
cv2.destroyAllWindows ()
GPIO.cleanup ()
Stap 3: Raspberry Pi en Camera Mount
3D -druk die omhulsel en kamera -montering en monteer dit.
Stap 4: Verkeersligbyeenkoms
Toets die verkeerslig met 'n broodbord. Elke teenoorgestelde stel LED's deel 'n anode, en almal deel 'n gemeenskaplike katode (grond). Daar moet 'n totaal van 7 invoerdrade wees: 1 vir elke paar LEDS (6) + 1 gronddraad. Soldeer en monteer die verkeersligte.
Stap 5: Bedrading (deel 1)
Soldeer die vroulike koppenne tot ongeveer 5 voet draad. Dit is die sye wat hierdie drade later deur die PVC -pype sal slang. Maak seker dat u die verskillende stelle ligte (2 x 3 kleure en 1 grond) kan onderskei. In hierdie geval het ek die punte van 'n ander stel rooi, geel en blou drade met skerp gemerk, sodat ek weet watter een is.
Stap 6: Bou die omgewing
Bou die omgewing Maak 'n vierkante houtpallet soos hierdie. Afvalhout is goed, want dit word toegemaak. Boor 'n gat wat pas by u adapter. Boor skroewe deur die kante van die palet om die PVC -pyp vas te maak. Sny die swart skuimbord om by die houtpallet daaronder te pas. Boor 'n gat wat rondom die PVC -pyp pas. Herhaal op die teenoorgestelde hoek. Merk die paaie met wit plakband.
Stap 7: Voltooiing van die PVC -raam
Boor 'n gat op die boonste pyp wat by 'n bondel drade kan pas. 'N Ruwe gat is goed, solank jy toegang tot die binnekant van die pype het. Slang die drade deur die PVC -pype en elmboogverbindings vir 'n toetspassing. Sodra alles afgehandel is, verf die PVC met swart spuitverf om die voorkoms van die hoofraam skoon te maak. Sny 'n klein spleet in een van die PVC-pype om by 'n T-verbinding te pas. Voeg 'n PVC-pyp by hierdie t-voeg sodat die verkeerslig kan hang. Die deursnee kan dieselfde wees as die hoofraam (1/2 ), maar as u 'n dunner pyp gebruik, moet u seker maak dat die 7 drade kan deurkom. Boor 'n gat deur hierdie pyp sodat die verkeerslig daaraan kan hang.
Stap 8: Bedrading (Deel 2)
Bedraad alles weer soos voorheen getoets. Kontroleer die verkeerslig en bedrading met 'n broodbord om te sien of alle verbindings gemaak is. Soldeer die verkeerslig aan die drade wat deur die T-gewrigsarm kom. Draai die blootgestelde drade met elektriese band om kortbroek te voorkom en om 'n skoner voorkoms te verkry.
Stap 9: klaar
Om die kode uit te voer, moet u u bron as ~/.profiel en cd op u projeklokasie stel.
Stap 10: Ekstras (foto's)
Aanbeveel:
Objekgeoriënteerde programmering: skep van voorwerpe Leer-/onderrigmetode/tegniek met behulp van vormponser: 5 stappe
Objekgeoriënteerde programmering: skep van voorwerpe Leer-/onderrigmetode/tegniek met behulp van vormponser: leer-/onderrigmetode vir studente wat nuut is by objekgeoriënteerde programmering. Dit is 'n manier om hulle in staat te stel om die proses van die skep van voorwerpe uit klasse te visualiseer en te sien. EkTools 2-duim groot pons; soliede vorms is die beste. Stukkie papier of
Plan lewendige data van 'n temperatuursensor (TMP006) met behulp van MSP432 LaunchPad en Python: 9 stappe
Plot lewendige data van 'n temperatuursensor (TMP006) met behulp van MSP432 LaunchPad en Python: Die TMP006 is 'n temperatuursensor wat die temperatuur van 'n voorwerp meet sonder dat dit met die voorwerp in aanraking hoef te kom. In hierdie tutoriaal teken ons data oor lewendige temperatuur van die BoosterPack (TI BOOSTXL-EDUMKII) met behulp van Python
Objekgeoriënteerde programmering: skep van voorwerpe Leer-/onderrigmetode/tegniek met behulp van 'n skêr: 5 stappe
Objekgeoriënteerde programmering: skep van voorwerpe Leer-/onderrigmetode/tegniek met behulp van 'n skêr: leer-/onderrigmetode vir studente wat nuut is by objekgeoriënteerde programmering. Dit is 'n manier om hulle in staat te stel om die proses van die skep van voorwerpe uit klasse te visualiseer en te sien. Onderdele: 1. Skêr (enige soort sal doen). 2. Stukkie papier of karton. 3. Merker
Scan nabygeleë voorwerpe om 'n 3D -model te maak met behulp van ARDUINO: 5 stappe (met foto's)
Scan nabygeleë voorwerpe om 'n 3D-model te maak met behulp van ARDUINO: Hierdie projek is spesifiek deur die HC-SR04 ultrasoniese sensor te gebruik om na voorwerpe in die omgewing te soek. Om 'n 3D -model te maak, moet u die sensor in loodregte rigting vee. U kan die Arduino programmeer om alarm te maak wanneer die sensor 'n voorwerp opspoor
Metodes vir die opsporing van watervlak Arduino met behulp van ultraklank sensor en Funduino watersensor: 4 stappe
Metodes vir die opsporing van watervlak Arduino met behulp van ultrasoniese sensor en Funduino watersensor: In hierdie projek sal ek jou wys hoe om 'n goedkoop waterdetektor te maak deur twee metodes te gebruik: 1. Ultrasoniese sensor (HC-SR04) .2. Funduino watersensor