Turinys:

Eismo modelio analizatorius naudojant tiesioginio objekto aptikimą: 11 žingsnių (su nuotraukomis)
Eismo modelio analizatorius naudojant tiesioginio objekto aptikimą: 11 žingsnių (su nuotraukomis)

Video: Eismo modelio analizatorius naudojant tiesioginio objekto aptikimą: 11 žingsnių (su nuotraukomis)

Video: Eismo modelio analizatorius naudojant tiesioginio objekto aptikimą: 11 žingsnių (su nuotraukomis)
Video: Буксировка с помощью Tesla Советы, опыт и что ожидать, когда буксировка с помощью Tesla 2024, Liepa
Anonim
Image
Image
Eismo modelio analizatorius naudojant tiesioginio objekto aptikimą
Eismo modelio analizatorius naudojant tiesioginio objekto aptikimą

Š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

„Raspberry Pi“ir fotoaparato laikiklis
„Raspberry Pi“ir fotoaparato laikiklis
„Raspberry Pi“ir fotoaparato laikiklis
„Raspberry Pi“ir fotoaparato laikiklis
„Raspberry Pi“ir fotoaparato laikiklis
„Raspberry Pi“ir fotoaparato laikiklis
„Raspberry Pi“ir fotoaparato laikiklis
„Raspberry Pi“ir fotoaparato laikiklis

3D spausdinkite korpusą ir fotoaparato laikiklį ir surinkite.

4 žingsnis: šviesoforo surinkimas

Šviesoforo mazgas
Šviesoforo mazgas
Šviesoforo mazgas
Šviesoforo mazgas
Šviesoforo mazgas
Šviesoforo mazgas

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)

Laidai (1 dalis)
Laidai (1 dalis)
Laidai (1 dalis)
Laidai (1 dalis)
Laidai (1 dalis)
Laidai (1 dalis)
Laidai (1 dalis)
Laidai (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
Aplinkos kūrimas
Aplinkos kūrimas
Aplinkos kūrimas
Aplinkos kūrimas
Aplinkos kūrimas
Aplinkos kūrimas
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

PVC rėmo užbaigimas
PVC rėmo užbaigimas
PVC rėmo užbaigimas
PVC rėmo užbaigimas
PVC rėmo užbaigimas
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)

Laidai (2 dalis)
Laidai (2 dalis)
Laidai (2 dalis)
Laidai (2 dalis)
Laidai (2 dalis)
Laidai (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

Baigta!
Baigta!
Baigta!
Baigta!
Baigta!
Baigta!
Baigta!
Baigta!

Norėdami paleisti kodą, būtinai nustatykite šaltinį kaip ~/.profile ir cd į savo projekto vietą.

10 veiksmas: priedai (nuotraukos)

Rekomenduojamas: