Բովանդակություն:

Երթևեկության օրինաչափության անալիզատոր կենդանի օբյեկտների հայտնաբերման միջոցով. 11 քայլ (նկարներով)
Երթևեկության օրինաչափության անալիզատոր կենդանի օբյեկտների հայտնաբերման միջոցով. 11 քայլ (նկարներով)

Video: Երթևեկության օրինաչափության անալիզատոր կենդանի օբյեկտների հայտնաբերման միջոցով. 11 քայլ (նկարներով)

Video: Երթևեկության օրինաչափության անալիզատոր կենդանի օբյեկտների հայտնաբերման միջոցով. 11 քայլ (նկարներով)
Video: Ճապոնիան կաթվածահար է. Երկրում ձյուն է տեղում՝ ռեկորդային 2 մետր ձյունով. 2024, Հուլիսի
Anonim
Image
Image
Երթևեկության օրինաչափությունների անալիզատոր `օգտագործելով կենդանի օբյեկտների հայտնաբերումը
Երթևեկության օրինաչափությունների անալիզատոր `օգտագործելով կենդանի օբյեկտների հայտնաբերումը

Այսօրվա աշխարհում լուսաֆորները կարևոր են անվտանգ ճանապարհի համար: Այնուամենայնիվ, շատ անգամ լուսաֆորները կարող են նյարդայնացնել այն իրավիճակներում, երբ ինչ -որ մեկը մոտենում է լույսին հենց այն պահին, երբ այն կարմիր է դառնում: Սա ժամանակ է վատնում, հատկապես, եթե լույսը թույլ չի տալիս մեկ մեքենայի անցնել խաչմերուկով, երբ ճանապարհին ոչ ոք չկա: Իմ նորամուծությունը խելացի լուսացույց է, որն օգտագործում է տեսախցիկից կենդանի օբյեկտների հայտնաբերումը `յուրաքանչյուր ճանապարհի մեքենաների թիվը հաշվելու համար: Սարքավորումը, որը ես կօգտագործեմ այս նախագծի համար, Raspberry Pi 3 -ն է, տեսախցիկի մոդուլը և տարբեր էլեկտրոնային ապարատներ հենց լույսի համար: Օգտագործելով OpenCV- ն Raspberry Pi- ում, հավաքված տեղեկատվությունը կանցնի կոդի միջոցով, որը վերահսկում է LED- ները GPIO- ի միջոցով: Կախված այս թվերից ՝ լուսացույցը կփոխվի ՝ մեքենաներին թողնելով ամենաօպտիմալ հերթականությամբ: Այս դեպքում ամենաշատ մեքենաներով երթևեկելի գոտին կանցնի այնպես, որ ավելի քիչ մեքենա ունեցող գոտին պարապ մնա ՝ նվազեցնելով օդի աղտոտվածությունը: Սա կվերացնի իրավիճակները, երբ շատ մեքենաներ կանգնեցված են, մինչդեռ խաչվող ճանապարհին մեքենաներ չկան: Սա ոչ միայն ժամանակ է խնայում բոլորի համար, այլև խնայում է շրջակա միջավայրը: Engineամանակի ընթացքում, երբ մարդիկ կանգնում են կանգառի վրա շարժիչով պարապուրդի ժամանակ, մեծացնում է օդի աղտոտվածության մակարդակը, ուստի խելացի լուսացույց ստեղծելով ՝ ես կարողանում եմ օպտիմալացնել լուսային մոդելները, որպեսզի մեքենաները հնարավորինս քիչ ժամանակ անցկացնեն կանգնած մեքենայի հետ:. Ի վերջո, լուսաֆորների այս համակարգը կարող է ներդրվել քաղաքներում, ծայրամասերում կամ նույնիսկ գյուղական վայրերում, որպեսզի մարդկանց համար ավելի արդյունավետ լինի, ինչը կնվազեցնի օդի աղտոտվածությունը:

Քայլ 1: Մասերի ցուցակ

Նյութեր:

Raspberry Pi 3 Model B v1.2

Raspberry Pi Camera v2.1

5V/1A միկրո USB սնուցման աղբյուր

HDMI մոնիտոր, ստեղնաշար, մկնիկ SD քարտ Raspbian Jessie- ով

Raspberry Pi GPIO անջատիչ մալուխ

Կարմիր, դեղին, կանաչ LED (յուրաքանչյուրը 2 գույն)

Իգական միակցիչներ Raspberry Pi- ի համար (7 եզակի գույն)

24 չափիչ մետաղալարերի տեսականի (տարբեր գույներ) + ջերմամեկուսիչ խողովակներ

2’x2’փայտե վահանակ կամ հարթակ

Փայտե պտուտակներ

Սև մակերես (ստվարաթուղթ, փրփուր, պաստառի տախտակ և այլն)

Whiteանապարհային նշագծման համար սպիտակ (կամ ցանկացած այլ գույն, քան սևը)

Սև լակի ներկ (PVC- ի համար)

½”PVC խողովակ` 90 աստիճանի արմունկային հոդերով (2), T վարդակից (1), իգական ադապտեր (2)

Գործիքներ

Sոդման երկաթ

3D տպիչ

Հորատեք տարբեր փորվածքներով

Breadboard

Heերմային ատրճանակ

Քայլ 2: Ազնվամորու Pi- ի կարգավորում

Տեղադրեք SD քարտը Raspberry Pi- ում և գործարկեք:

Հետևեք այս ուղեցույցին `անհրաժեշտ OpenCV գրադարանները տեղադրելու համար: Համոզվեք, որ ժամանակ ունեք այս քայլը կատարելու համար, քանի որ OpenCV գրադարանը տեղադրելը կարող է տևել մի քանի ժամ: Համոզվեք, որ այստեղ տեղադրեք և կարգաբերեք ձեր տեսախցիկը:

Դուք նաև պետք է pip տեղադրեք.

լուսանկարչական ապարատ

gpiozero

RPi. GPIO

Ահա վերջնական կոդը.

picamera.array ներմուծումից PiRGBArray

picamera ներմուծումից PiCamera

ներմուծել picamera.array

ներմուծել numpy որպես np

ներմուծման ժամանակը

ներմուծել cv2

ներմուծեք RPi. GPIO- ն որպես GPIO

ներմուծման ժամանակը

GPIO.setmode (GPIO. BCM)

i- ի համար (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

տեսախցիկ = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

հում = PiRGBArray (տեսախցիկ, չափ = = (480, 480))

ժամանակ. քուն (0.1)

colorLower = np.array ([0, 100, 100])

colorUpper = np.array ([179, 255, 255])

initvert = 0

inithoriz = 0

հաշվիչ = 0

շրջանակի համար cam.capture_continuous (raw, format = "bgr", use_video_port = True):

շրջանակ = շրջանակ: զանգված

hsv = cv2.cvtColor (շրջանակ, cv2. COLOR_BGR2HSV)

դիմակ = cv2.inRange (hsv, colorLower, colorUpper)

դիմակ = cv2.blur (դիմակ, (3, 3))

դիմակ = cv2.dilate (դիմակ, Ոչ, կրկնություններ = 5)

դիմակ = cv2.erode (դիմակ, Ոչ, կրկնություններ = 1)

դիմակ = cv2.dilate (դիմակ, Ոչ, կրկնություններ = 3)

ինձ, thresh = cv2.threshold (դիմակ, 127, 255, cv2. THRESH_BINARY)

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

կենտրոն = Ոչ մեկը

vert = 0

հորիզոն = 0

եթե len (cnts)> 0:

c- ի համար cnts:

(x, y), շառավիղը = cv2.minEnclosingCircle (c)

կենտրոն = (int (x), int (y))

շառավիղ = int (շառավիղ)

cv2. շրջան (շրջանակ, կենտրոն, շառավիղ, (0, 255, 0), 2)

x = int (x)

y = int (y)

եթե 180 <x <300:

եթե y> 300:

vert = vert +1

էլիֆ y <180:

vert = vert +1

այլ:

vert = vert

եթե 180 <y <300:

եթե x> 300:

հորիզոն = հորիզոն +1

էլիֆ x <180:

հորիզոն = հորիզոն +1

այլ:

հորիզոն = հորիզոն

եթե vert! = initvert:

տպել "Ավտոմեքենաներ ուղղահայաց գոտում." + փող (ուղղահայաց)

initvert = vert

տպել "Ավտոմեքենաներ հորիզոնական գոտում." + փող (հորիզոն)

inithoriz = հորիզոն

տպել '--------------------------------'

if horiz! = inithoriz:

տպել "Ավտոմեքենաներ ուղղահայաց գոտում." + փող (ուղղահայաց)

initvert = vert

տպել "Ավտոմեքենաներ հորիզոնական գոտում." + փող (հորիզոն)

inithoriz = հորիզոն

տպել '--------------------------------'

եթե vert <horizont:

GPIO.putput (23, GPIO. HIGH)

GPIO.putput (21, GPIO. HIGH)

GPIO.putput (16, GPIO. LOW)

GPIO.putput (25, GPIO. LOW)

եթե horizont <vert:

GPIO.putput (16, GPIO. HIGH)

GPIO.putput (25, GPIO. HIGH)

GPIO.putput (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow («Շրջանակ», շրջանակ)

cv2.imshow («HSV», hsv)

cv2.imshow («Թրեշ», շաղախ)

raw.truncate (0)

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

ընդմիջում

cv2.destroyAllWindows ()

GPIO.cleanup ()

Քայլ 3: Raspberry Pi և Camera Mount

Raspberry Pi և Camera Mount
Raspberry Pi և Camera Mount
Raspberry Pi և Camera Mount
Raspberry Pi և Camera Mount
Raspberry Pi և Camera Mount
Raspberry Pi և Camera Mount
Raspberry Pi և Camera Mount
Raspberry Pi և Camera Mount

3D տպել պատյան և տեսախցիկի տեղադրում և հավաքում:

Քայլ 4. Լուսացույցների հավաքում

Լուսացույցի հավաքում
Լուսացույցի հավաքում
Լուսացույցի հավաքում
Լուսացույցի հավաքում
Լուսացույցի հավաքում
Լուսացույցի հավաքում

Փորձարկեք լուսացույցը տախտակով: LED- ների յուրաքանչյուր հակադիր հավաքածու ունի անոդ, և բոլորն ունեն ընդհանուր կաթոդ (հիմք): Ընդհանուր առմամբ պետք է լինի 7 մուտքագրող լար `1 հատ LEDS- ի յուրաքանչյուր զույգի համար (6) + 1 հողալար: Erոդել և հավաքել լուսացույցները:

Քայլ 5: Էլեկտրամոնտաժ (մաս 1)

Հաղորդալարեր (մաս 1)
Հաղորդալարեր (մաս 1)
Հաղորդալարեր (մաս 1)
Հաղորդալարեր (մաս 1)
Հաղորդալարեր (մաս 1)
Հաղորդալարեր (մաս 1)
Հաղորդալարեր (մաս 1)
Հաղորդալարեր (մաս 1)

Femaleոդեք էգ գլխի կապում մոտ 5 ոտնաչափ մետաղալարով: Սրանք այն կողմերն են, որոնք այս լարերը հետագայում օձ կհայտնվեն PVC խողովակների միջով: Համոզված եղեք, որ կարողանաք տարբերել լույսերի տարբեր հավաքածուները (2 x 3 գույն և 1 գետնին): Այս դեպքում ես կարմիր, դեղին և կապույտ մետաղալարերի մեկ այլ ծայրերի ծայրերը նշեցի սրիչով, որպեսզի իմանամ, թե որն է:

Քայլ 6: Շրջակա միջավայրի ձևավորում

Շրջակա միջավայրի կառուցում
Շրջակա միջավայրի կառուցում
Շրջակա միջավայրի կառուցում
Շրջակա միջավայրի կառուցում
Շրջակա միջավայրի կառուցում
Շրջակա միջավայրի կառուցում
Շրջակա միջավայրի կառուցում
Շրջակա միջավայրի կառուցում

Շրջակա միջավայրի ստեղծում Պատրաստեք 2 ոտնաչափ քառակուսի փայտե ծղոտե ներքնակ այսպիսին: Փայտանյութը լավ է, քանի որ այն ծածկված կլինի: Հորատեք մի անցք, որը պարզապես համապատասխանում է ձեր ադապտերին: Հորատեք պտուտակներ պալետի կողքերով ՝ PVC խողովակն իր տեղում ամրացնելու համար: Կտրեք սև փրփուրի տախտակը, որը կհամապատասխանի ներքևի փայտե ծղոտե ներքնակին: Հորատեք մի փոս, որը տեղավորվում է PVC խողովակի շուրջ: Կրկնեք հակառակ անկյունում: Նշեք ճանապարհները որոշ սպիտակ ժապավենով:

Քայլ 7: PVC շրջանակի վերջնականացում

PVC շրջանակի վերջնականացում
PVC շրջանակի վերջնականացում
PVC շրջանակի վերջնականացում
PVC շրջանակի վերջնականացում
PVC շրջանակի վերջնականացում
PVC շրջանակի վերջնականացում

Վերին խողովակի վրա անցք պատրաստեք, որը կարող է տեղավորել լարերի փաթեթ: Կոպիտ փոսը լավ է այնքան ժամանակ, քանի դեռ կարող եք մուտք գործել խողովակների ներսը: Օձը լարերը հանեք PVC խողովակների և արմունկային հոդերի միջոցով `փորձարկման համար: Ամեն ինչ վերջնական տեսքից հետո ներկեք PVC- ն սև լակի ներկով `հիմնական շրջանակի տեսքը մաքրելու համար: Կտրեք մի փոքր բաց PVC խողովակներից մեկում `T- հոդին տեղավորելու համար: Այս լուսանցքի վրա PVC խողովակ ավելացրեք, որպեսզի լուսացույցը կախված լինի: Տրամագիծը կարող է լինել նույնը, ինչ հիմնական շրջանակը (1/2 ), չնայած եթե ավելի բարակ խողովակ եք օգտագործում, համոզվեք, որ 7 լարերը կարող են օձ դուրս գալ: Այս խողովակով անցք բացեք, որպեսզի լուսացույցը կախված լինի:

Քայլ 8: Էլեկտրամոնտաժ (մաս 2)

Էլեկտրամոնտաժ (մաս 2)
Էլեկտրամոնտաժ (մաս 2)
Հաղորդալարեր (մաս 2)
Հաղորդալարեր (մաս 2)
Էլեկտրամոնտաժ (մաս 2)
Էլեկտրամոնտաժ (մաս 2)

Նորից միացրեք ամեն ինչ, ինչպես նախկինում փորձարկվել է: Կրկնակի ստուգեք լուսացույցը և էլեկտրագծերը տախտակով `հաստատելու համար, որ բոլոր կապերը կատարվել են: Erոդեք լուսացույցը T- հոդի թևով անցնող լարերին: Փաթաթեք մերկացած լարերը էլեկտրական ժապավենով `կարճ շորտեր կանխելու և ավելի մաքուր տեսք ունենալու համար:

Քայլ 9: Ավարտվեց:

Ավարտվեց
Ավարտվեց
Ավարտվեց
Ավարտվեց
Ավարտվեց
Ավարտվեց
Ավարտվեց
Ավարտվեց

Կոդը գործարկելու համար համոզվեք, որ ձեր աղբյուրը սահմանեք որպես project/.profile և cd ՝ ձեր ծրագրի գտնվելու վայրին:

Քայլ 10: Լրացուցիչ (լուսանկարներ)

Խորհուրդ ենք տալիս: