Turinys:
- 1 žingsnis: dalių sąrašas
- 2 veiksmas: nustatykite „Raspberry Pi“
- 3 žingsnis: „Raspberry Pi“ir fotoaparato laikiklis
- 4 žingsnis: šviesoforo surinkimas
- 5 žingsnis: laidų prijungimas (1 dalis)
- 6 žingsnis: aplinkos kūrimas
- 7 žingsnis: PVC rėmo užbaigimas
- 8 žingsnis: laidų prijungimas (2 dalis)
- 9 žingsnis: baigta
- 10 veiksmas: priedai (nuotraukos)
Video: Eismo modelio analizatorius naudojant tiesioginio objekto aptikimą: 11 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Šiuolaikiniame pasaulyje šviesoforai yra būtini saugiam keliui. Tačiau daug kartų šviesoforai gali erzinti situacijose, kai kas nors artėja prie šviesos, kai ji raudona. Tai švaisto laiką, ypač jei šviesa neleidžia vienai transporto priemonei patekti per sankryžą, kai kelyje nėra kitų žmonių. Mano naujovė yra išmanusis šviesoforas, kuris naudoja gyvų objektų aptikimą iš fotoaparato, kad suskaičiuotų automobilių skaičių kiekviename kelyje. Techninė įranga, kurią naudosiu šiam projektui, yra „Raspberry Pi 3“, fotoaparato modulis ir įvairi elektroninė aparatūra pačiai šviesai. Naudojant „OpenCV“„Raspberry Pi“, surinkta informacija bus vykdoma naudojant kodą, valdantį šviesos diodus per GPIO. Priklausomai nuo šių skaičių, šviesoforas keisis, o automobiliai bus praleisti optimalia tvarka. Tokiu atveju būtų pravažiuojama daugiausiai automobilių turinti eismo juosta, kad juosta, kurioje yra mažiau automobilių, veiktų tuščiąja eiga, sumažintų oro taršą. Taip būtų pašalintos situacijos, kai daugelis automobilių sustoja, kol sankryžoje nėra automobilių. Tai ne tik taupo laiką visiems, bet ir taupo aplinką. Kiek laiko žmonės sustoja prie sustojimo ženklo, kai variklis veikia tuščiąja eiga, padidina oro taršą, todėl sukurdamas išmanų šviesoforą, aš galiu optimizuoti šviesos modelius, kad automobiliai praleistų kuo mažiau laiko sustoję transporto priemonę. Galiausiai ši šviesoforo sistema galėtų būti įdiegta miestuose, priemiesčiuose ar net kaimo vietovėse, kad būtų efektyvesnė žmonėms, sumažintų oro taršą.
1 žingsnis: dalių sąrašas
Medžiagos:
Raspberry Pi 3 B modelis v1.2
„Raspberry Pi“kamera v2.1
5V/1A mikro USB maitinimo šaltinis
HDMI monitorius, klaviatūra, pelės SD kortelė su Raspbian Jessie
Raspberry Pi GPIO pertraukos kabelis
Raudoni, geltoni, žali šviesos diodai (2 kiekvienos spalvos)
Moteriškos jungtys Raspberry Pi (7 unikalios spalvos)
Įvairūs 24 dydžio laidai (skirtingos spalvos) + termiškai susitraukiantys vamzdžiai
2 x 2 colių medinė plokštė arba platforma
Mediniai varžtai
Juodas paviršius (kartonas, putplasčio lenta, plakato lenta ir kt.)
Balta (arba bet kokios kitos spalvos, išskyrus juodą) juosta kelių žymėjimui
Juodi purškiami dažai (PVC)
½ colio PVC vamzdis su 90 laipsnių alkūnėmis (2), T lizdas (1), adapteris (2)
Įrankiai
Lituoklis
3D spausdintuvas
Gręžkite įvairiais grąžtais
Bandomoji Lenta
Šilumos pistoletas
2 veiksmas: nustatykite „Raspberry Pi“
Įdėkite SD kortelę į „Raspberry Pi“ir paleiskite.
Norėdami įdiegti reikalingas „OpenCV“bibliotekas, vadovaukitės šiuo vadovu. Įsitikinkite, kad turite laiko atlikti šį veiksmą, nes „OpenCV“bibliotekos diegimas gali užtrukti kelias valandas. Taip pat būtinai įdiekite ir nustatykite savo fotoaparatą čia.
Taip pat turėtumėte įdiegti pip:
fotoaparatas
gpiozero
RPi. GPIO
Štai galutinis kodas:
iš picamera.array importuoti PiRGBArray
iš „Picamera“importo „PiCamera“
importuoti picamera.array
importuoti numpy kaip np
importo laikas
importuoti cv2
importuoti RPi. GPIO kaip GPIO
importo laikas
GPIO.setmode (GPIO. BCM)
„i“(23, 25, 16, 21):
GPIO.setup (i, GPIO. OUT)
kamera = „PiCamera“()
cam.resolution = (480, 480)
cam.framerate = 30
raw = PiRGBArray (kumštelis, dydis = (480, 480))
laikas. miegas (0,1)
colorLower = np.masyvas ([0, 100, 100])
colorUpper = np.array ([179, 255, 255])
initvert = 0
inithoriz = 0
skaitiklis = 0
kadrui cam.capture_continuous (raw, format = "bgr", use_video_port = True):
rėmas = rėmas.masyvas
hsv = cv2.cvtColor (rėmelis, cv2. COLOR_BGR2HSV)
kaukė = cv2.inRange (hsv, colorLower, colorUpper)
kaukė = cv2.blur (kaukė, (3, 3))
kaukė = cv2.dilate (kaukė, nėra, iteracijos = 5)
kaukė = cv2.erode (kaukė, nėra, iteracijos = 1)
kaukė = cv2.dilate (kaukė, nėra, iteracijos = 3)
aš, kūlė = cv2.threshold (kaukė, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findConturs (thresh, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]
centras = Nėra
vert = 0
horizontas = 0
jei len (cnts)> 0:
c cnts:
(x, y), spindulys = cv2.minEnclosingCircle (c)
centras = (int (x), int (y))
spindulys = int (spindulys)
cv2.circle (rėmas, centras, spindulys, (0, 255, 0), 2)
x = int (x)
y = int (y)
jei 180 <x <300:
jei y> 300:
vert = vert +1
elifas y <180:
vert = vert +1
Kitas:
vert = vert
jei 180 <y <300:
jei x> 300:
horizontas = horizontas +1
elifas x <180:
horizontas = horizontas +1
Kitas:
horizontas = horizontas
jei vert! = initvert:
spausdinti „Automobiliai vertikalioje juostoje:“+ str (vert)
initvert = vert
spausdinti „Automobiliai horizontalioje juostoje:“+ str (horizontas)
inithoriz = horizontas
spausdinti '----------------------------'
jei horizontas! = inithoriz:
spausdinti „Automobiliai vertikalioje juostoje:“+ str (vert)
initvert = vert
spausdinti „Automobiliai horizontalioje juostoje:“+ str (horizontas)
inithoriz = horizontas
spausdinti '----------------------------'
jei vert <horizontas:
GPIO išėjimas (23, GPIO. HIGH)
GPIO išėjimas (21, GPIO. HIGH)
GPIO išėjimas (16, GPIO. LOW)
GPIO išėjimas (25, GPIO. LOW)
jei horizontas <vert:
GPIO išėjimas (16, GPIO. HIGH)
GPIO išėjimas (25, GPIO. HIGH)
GPIO išvestis (23, GPIO. LOW)
GPIO išėjimas (21, GPIO. LOW)
cv2.imshow („Rėmelis“, kadras)
cv2.imshow („HSV“, hsv)
cv2.imshow („Thresh“, thresh)
žaliavalgis (0)
jei cv2.waitKey (1) & 0xFF == ord ('q'):
pertrauka
cv2.destroyAllWindows ()
GPIO.cleanup ()
3 žingsnis: „Raspberry Pi“ir fotoaparato laikiklis
3D spausdinkite korpusą ir fotoaparato laikiklį ir surinkite.
4 žingsnis: šviesoforo surinkimas
Išbandykite šviesoforą naudodami duonos lentą. Kiekvienas priešingas šviesos diodų rinkinys turi anodą, ir visi turi bendrą katodą (įžeminimą). Iš viso turėtų būti 7 įvesties laidai: 1 kiekvienai šviesos diodų porai (6) + 1 įžeminimo laidas. Lituokite ir surinkite šviesoforus.
5 žingsnis: laidų prijungimas (1 dalis)
Lituokite antgalio kaiščius prie maždaug 5 pėdų vielos. Tai yra šonai, kuriuos šie laidai vėliau užmuš per PVC vamzdžius. Būtinai sugebėkite atskirti skirtingus žibintų rinkinius (2 x 3 spalvos ir 1 įžeminimas). Šiuo atveju aš pažymėjau kito raudonos, geltonos ir mėlynos spalvos laidų galus aštriais, kad žinau, kuris yra kuris.
6 žingsnis: aplinkos kūrimas
Aplinkos kūrimas Padarykite tokį 2 pėdų kvadratinį medinį padėklą. Medžio laužas yra gerai, nes jis bus uždengtas. Gręžkite skylę, kuri tinka tik jūsų adapteriui. Gręžkite varžtus per padėklo šonus, kad pritvirtintumėte PVC vamzdį. Iškirpkite juodą putplasčio lentą, kad ji atitiktų medinį padėklą. Gręžkite skylę, kuri tinka aplink PVC vamzdį. Pakartokite priešingame kampe. Pažymėkite kelius balta juosta.
7 žingsnis: PVC rėmo užbaigimas
Viršutiniame vamzdyje išgręžkite skylę, kurioje tilps laidų pluoštas. Šiurkšti skylė tinka tol, kol galite pasiekti vamzdžių vidų. Išbandykite laidus per PVC vamzdžius ir alkūnių sąnarius. Kai viskas bus baigta, nudažykite PVC juodais purškiamais dažais, kad išvalytumėte pagrindinio rėmo išvaizdą. Iškirpkite nedidelį tarpą viename iš PVC vamzdžių, kad tilptų T jungtis. Pridėkite PVC vamzdį prie šios jungties, kad šviesoforas galėtų pakabinti. Skersmuo gali būti toks pat kaip ir pagrindinio rėmo (1/2 ), tačiau jei naudojate plonesnį vamzdį, įsitikinkite, kad 7 laidai gali prasiskverbti. Išgręžkite skylę per šį vamzdį, kad šviesoforas galėtų pakabinti.
8 žingsnis: laidų prijungimas (2 dalis)
Pakartotinai prijunkite viską, kaip buvo išbandyta anksčiau. Dar kartą patikrinkite šviesoforą ir laidus su duonos lenta, kad įsitikintumėte, jog visi ryšiai buvo atlikti. Lituokite šviesoforą prie laidų, einančių per T formos jungtį. Apvyniokite laidus elektros juosta, kad išvengtumėte šortų ir atrodytų švaresnė.
9 žingsnis: baigta
Norėdami paleisti kodą, būtinai nustatykite šaltinį kaip ~/.profile ir cd į savo projekto vietą.
10 veiksmas: priedai (nuotraukos)
Rekomenduojamas:
Kaip sukurti neprisiliečiamą durų skambutį, kūno temperatūros aptikimą, GY-906, 433 MHz naudojant „Arduino“: 3 žingsniai
Kaip sukurti neprisiliečiamą durų skambutį, kūno temperatūros aptikimą, GY-906, 433 MHz naudojant „Arduino“: Šiandien mes pagaminsime neprisiliečiamą durų skambutį, jis aptiks jūsų kūno temperatūrą. Esant dabartinei situacijai, labai svarbu žinoti, ar kažkieno kūno temperatūra yra aukštesnė nei įprasta, kai kas nors kišasi. Šis projektas parodys raudoną šviesą, jei aptiks
Eismo signalas naudojant „Arduino“ir ultragarsinį jutiklį: 4 žingsniai
Eismo signalai naudojant „Arduino“ir ultragarsinį jutiklį: išmaniųjų technologijų eroje viskas darosi protingiau, o išmanioji transporto sistema yra viena iš sričių, kuri turės didžiulį poveikį mūsų gyvenimui. Originaliai paskelbta: https://highvoltages.co/tutorial/arduino-tutorial/traffic-sig
Objekto aptikimas naudojant „Dragonboard 410c“arba „820c“naudojant „OpenCV“ir „Tensorflow“: 4 žingsniai
Objektų aptikimas „W/ Dragonboard 410c“arba „820c“naudojant „OpenCV“ir „Tensorflow“. Šiose instrukcijose aprašoma, kaip įdiegti „OpenCV“, „Tensorflow“ir mašininio mokymosi sistemas „Python 3.5“, kad būtų paleista objektų aptikimo programa
Tiesioginio įvesties mobiliojo telefono laikiklis: 10 žingsnių
Tiesioginės įvesties mobiliojo telefono lopšys: žinau. Pasauliui reikia kito mobiliojo telefono laikiklio maždaug tiek, kiek man reikia skylės galvoje. Šokiruojančiai, aš negalėjau rasti mobiliojo telefono laikiklio savo sunkvežimiui, kuris atitiktų mano poreikius. Nemaniau, kad mano poreikiai tokie egzotiški, bet neradau
Vaizdinio objekto aptikimas naudojant fotoaparatą (TfCD): 15 žingsnių (su nuotraukomis)
Vizualinių objektų aptikimas naudojant fotoaparatą (TfCD): pažinimo paslaugos, galinčios atpažinti emocijas, žmonių veidus ar paprastus objektus, šiuo metu dar tik kuriasi, tačiau su mašininiu mokymusi ši technologija vis labiau vystosi. Mes galime tikėtis pamatyti daugiau šios magijos