Բովանդակություն:
- Պարագաներ
- Քայլ 1. Դետեկտորի նախագծում
- Քայլ 2: Կարգավորեք դետեկտորը
- Քայլ 3. Դետեկտորի կառուցում
- Քայլ 4: Հաղորդագրություն ուղարկեք ռադիոյին
- Քայլ 5: Դա արեք ինքներդ
Video: Սառնարանային ազդանշանային ռելե `5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Մեր սառնարանը գտնվում է օգտակար սենյակում, որը մեկուսացված է մեր կենդանի տարածքից: Երբեմն սառնարանի դուռը ճիշտ չի փակվում, և ահազանգը անջատվում է: Խնդիրն այն է, որ մենք չենք կարող դա լսել, եթե մեր կենդանի տարածքում ենք: Ինչպե՞ս ենք հաղորդագրություն ստանում, որ սառնարանի դուռը բաց է: Սա սովորական հարց է, մենք մեր տներում ունենք սարքեր, որոնք խոսում են մեզ հետ, բայց ինչ կլինի, եթե ինչ -ինչ պատճառներով չլսենք դրանք: Ես սա սկսեցի որպես մի փոքր զվարճալի, բայց դա կարող է օգտագործվել ավելի լուրջ ծրագրերում:
Այս խնդրի երկու մաս կա. Մեզ անհրաժեշտ է ահազանգի անջատման հայտնաբերման մեթոդ և այս փաստը մեր կենդանի տարածքին փոխանցելու մեթոդ: Դիզայնը, որի վրա ես հաստատվեցի, այն էր, որ օգտագործեցի Raspberry Pi- ն ՝ սառցարանի ահազանգը լսելու համար, այնուհետև լսելի ազդանշան ուղարկելու իմ ներքին ռադիոյին, որը միացված է uPNP- ին: Universal Plug and Play (UpnP) - ը ցանցում տարբեր սարքերի, այդ թվում մեդիա սերվերների և նվագարկիչների կողմից մատուցվող ծառայությունների հայտնաբերման և փոխազդեցության չափանիշ է, թեև չեմ կարծում, որ ստանդարտի մշակման ժամանակ սառնարաններ նախատեսված էին: Նախազգուշացնող հաղորդագրությունը հնչեց բարձր և նյարդայնացնող և անվերջ կրկնում է մինչև ռադիոյի անջատումը:
Ես ընտրեցի ազդանշանը հայտնաբերել Raspberry Pi Zero W- ով և Seeed ReSpeaker 2-Mics Pi HAT- ով: Raspberry PI Zero- ն Raspberry Pi- ի էժան տարբերակն է, իսկ W տարբերակը ներկառուցված WiFi- ն է, մինչդեռ Seeed Pi HAT- ը վաճառվում է ավելի քիչ, քան $ 10, ունի ներկառուցված լուսադիոդներ և օգտագործողի կոճակ: Pi HAT- ը ընդլայնման քարտեր են, որոնք ուղղակիորեն միանում են Raspberry Pi- ին ՝ հավաքման շատ պարզ ընթացակարգ կատարելով: Piանկացած Pi տարբերակ ավելի քան ունակ կլինի աշխատանքի համար, և ընտրված խոսափողը կարող է փոխարինվել, չնայած ես այս կառուցվածքում օգտագործել եմ ներկառուցված LED- ները:
Հեշտ է ստուգել, թե արդյոք ռադիոն կամ հեռուստատեսությունը կաշխատի ձեզ համար: Ավելի հավանական է, որ այն նկարագրվի որպես «DLNA միացված» կամ նմանատիպ: Սա օգտագործում է uPNP հաղորդակցվելու համար: Windows համակարգչի վրա ընտրեք mp3 ֆայլ և «Cast to Device»: Եթե ձեր սարքը հայտնվի, և դուք կարող եք ֆայլը նվագարկել, ուրեմն լավ կլինի:
Splitրագրակազմը ես բաժանեցի 2 պիթոնի սցենարի ՝ checkFreezer.py ՝ ստուգելու համար, թե արդյոք սառեցման ազդանշանը գործարկվե՞լ է, և բարձրացնել AlaArm.py- ն ՝ ահազանգը բարձրացնելու համար: Այս սցենարները կարող են մշակվել և փորձարկվել առանձին, և դրանք հեշտությամբ կարող են հարմարեցվել կամ փոխարինվել տարբեր խոսափողերի ահազանգման եղանակներով:
Պարագաներ
- Softwareրագրակազմ -https://github.com/wapringle/freezer-alarm
- Ազնվամորի PI Zero W
- Տեսավ ReSpeaker 2-Mics Pi HAT- ը
- uPNP միացված ռադիո
Քայլ 1. Դետեկտորի նախագծում
Երբ սառնարանի դուռը բաց է մնում և ջերմաստիճանը բարձրանում է, սառցարանը տալիս է լսելի «ազդանշանային ազդանշան» ազդանշան: Էլեկտրոնային ազդանշանների մեծ մասի նման, սա մեկ հաճախականություն է: Գաղափարն այն է, որ նմուշառվի աուդիո մուտքից, կատարվի Ֆուրիեի արագ փոխակերպում (FFT), որը ժամանակի վրա հիմնված ազդանշանը փոխակերպում է հաճախականության վրա ազդանշանի, այլ կերպ ասած ՝ ազդանշանը քայքայում է ՝ ազդանշանի տարբեր հաճախականությունները ցուցադրելու համար: Դիտեք RGB LED շերտի միջոցով հրահանգավորվող ազնվամորի Pi սպեկտրի անալիզատորը Մենք կարող ենք գագաթնակետ փնտրել ազդանշանային հաճախականությամբ և ազդանշան ազդանշան տալ, երբ ազդանշանը որոշ ժամանակ ակտիվ է:
Այս դետեկտորն ունի 2 պահանջ
- Այն պետք է հայտնաբերի ազդանշանը, նույնիսկ շրջակա միջավայրի աղմուկի առկայության դեպքում (վերացնել կեղծ բացասականը)
- Այն չպետք է հարուցվի շրջապատի աղմուկից (վերացրեք կեղծ դրականը)
Ես որոշեցի, որ կոմունալ սենյակում Հուվեր վարելը լավ փորձություն կլինի: Այն չպետք է ազդանշան տա, և ահազանգը պետք է միացվի, երբ սառցարանի բզզոցը անջատվի և Հուվերը գործի:
Քայլ 2: Կարգավորեք դետեկտորը
Հեռախոսով ես վերցրեցի աուդիո նմուշներ ՝ որպես սառցարանի ազդանշանի միայնակ WAV ֆայլեր, աղմկոտ ֆոնով և Հուվըրն աշխատում էր: Ես հարմարեցրեցի կոդը FFT- ի կատարման համար FFT- ի համար Reading Audio Stream- ից (կասկածի դեպքում, պլագարիզացիա) և օգտագործեցի fourierTest.py սցենարը `ձայնային, աղմկոտ և շատ աղմկոտ ֆոնին սղոցող հումքի և Ֆուրիեի կերպարանափոխված նմուշները գծելու համար: 645 հաճախականության մակարդակի բարձրացումն արտահայտվում է առաջին գծապատկերում և դեռևս նշանակալի է շատ աղմկոտ ֆոնով:
Քայլ 3. Դետեկտորի կառուցում
Դետեկտորի հավաքում:
Շատ պարզ. Pi W- ն գալիս է ներկառուցված Wifi- ով, և HAT- ը միաձուլվում է PiI- ի GPIO կապում: Theրագրակազմի կազմաձևումը պահանջում է քայլեր
- Տեղադրեք raspbian distro Raspberry Pi- ի վրա: Կան բազմաթիվ ուղեցույցներ, որոնք կարող են դա ավելի լավ բացատրել, քան ես կարող եմ:
- Կարգավորեք Wifi- ն (նույնը ՝ վերևում)
- Անհրաժեշտ է տեղադրել alsa փաթեթը
$ sudo apt-get տեղադրել libasound-dev
$ pip տեղադրել pyalsaaudio
- Միացրեք HAT- ը ազնվամորու PI- ին
- Հետևեք տեսած վեբ կայքի հրահանգներին `HAT- ի վարորդները տեղադրելու համար:
- Գործարկեք տեսած ախտորոշումը `ստուգելու համար, որ HAT- ը աշխատում է և ճիշտ կազմաձևված:
Դետեկտորային ծրագիրը կարդում է տվյալների բլոկը որպես նմուշ խոսափողից, կատարում է FFT- ն և որոշում, թե արդյոք հայտնաբերել է նմուշի ազդանշանը, թե ոչ: Ես փորձեցի հնարավորինս երկարացնել բլոկը `նվազեցնելով ձայնային նմուշի արագությունը մինչև 16 կՀց և օգտագործելով ամենամեծ բուֆերը, որը ընթերցողը կընդունի: Ես մտահոգված էի, որ FFT հաշվարկը կարող է հանգեցնել շրջանակների անկման, բայց դա տեղի չունեցավ:
Իմ հեռախոսի վրա նախապես գրանցված նմուշներ դետեկտորը կառուցելը շատ ավելի դյուրին դարձրեց, քանի որ ես կարող էի նստարանին ամբողջությամբ կառուցել նախքան սառնարանում տեղում ստուգելը:
Դետեկտորի ուսուցում:
Դետեկտորը պատրաստվել է յուրաքանչյուր նմուշի սկանավորման միջոցով, երբ ազդանշանի ձայնագրիչը դետեկտորի վրա հնչեցվել է WAV ձայնագրությունը: Outputրագիրը թողարկում է դիրքը FFT սպեկտրում `հզորության ամենաբարձր մակարդակով (գագաթնակետային հաճախականություն)` այդ գագաթնակետային հաճախականության մակարդակի հետ միասին: Պարզ հարց էր գտնել զնգոցի հաճախականությունը և դրա թողած հզորության մակարդակը:
Գոյություն ունի ազդանշանի առկայության հայտնաբերման 2 եղանակ.
- Արդյո՞ք ազդանշանային հաճախականությունը ընտրանքի գագաթնակետային հաճախականությունն էր:
- կամ ուժային մակարդակը ազդանշանային հաճախականությամբ շեմի՞ն էր:
Methodանկացած մեթոդ աշխատում էր հանգիստ նմուշում, բայց երկրորդը ավելի լավ էր աղմկոտ նմուշով, այնպես որ ես դա օգտագործեցի:
Երբեմն նմուշը ծածկում էր բիփը, երբեմն այն հնչում էր ազդանշանների միջև, իսկ յուրաքանչյուր 3 ազդանշանից հետո երկար դադար էր լինում հաջորդ ազդանշաններից առաջ: Հուսալիորեն հայտնաբերելու համար, որ մի շարք ազդանշաններ են տեղի ունեցել, յուրաքանչյուր նմուշ ունեցել է դրական ձայն, եթե հայտնաբերվել է ազդանշան, իսկ եթե ոչ ՝ նվազել է: Այս ձայները կշռված էին `հաշվարկելու համար, որը կհարվածվեր բիփի նմուշի հետ և կամաց -կամաց կփչանա ժամանակների միջև: Երբ հաշվարկը հասել է շեմին, ահազանգը կարող է գործարկվել: Եթե պատահական աղմուկը հայտնաբերվեր որպես ազդանշանի նմուշ, ապա հաշվարկը հետ կշրջվեր դեպի զրո:
Այնուհետև մեզ անհրաժեշտ են կողմ և դեմ քվեարկած կշիռները շեմի հետ միասին: Սա ես արեցի մի շարք նմուշների փորձարկումներով և սխալներով: Ես կարիք չունեի որոշելու ազդանշանի իրական հաճախականությունը, ես պարզապես փնտրում էի աչքի ընկնող հաճախականությունը fft սպեկտրում:
Քայլ 4: Հաղորդագրություն ուղարկեք ռադիոյին
Ահազանգը կատարվել է առանձին սցենարով: Աշխատանքն այն է, որ անհրաժեշտության դեպքում միացնել ռադիոն, ներխուժել այն, ինչ ռադիոն նվագում է և կրկնել ահազանգի հաղորդագրությունը, մինչև որ ռադիոն կրկին անջատվի: Ես ստիպված եղա հակադարձել ինժեներական օգտագործված uPnP արձանագրությունը, քանի որ մեծ դժվարություններ ունեի հավաստի տեղեկություններ կամ օրինակներ ստանալու հարցում: Մի քանի հղումներ, որոնք ես օգտակար գտա
- www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Սա ունի գեղեցիկ ակնարկ, թե ինչպես է այդ ամենը համընկնում
- developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file:
- stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973
Ռադիոյով համակարգչիցս նմուշի ֆայլ նվագարկելիս ես օգտագործում էի Windows համակարգչի վրա աշխատող Wireshark- ը ՝ հաղորդագրությունների հաջորդականությունը ընտրելու համար, և մի փոքր քաշքշուկից հետո ստացա հրամանի հաջորդականություն, որն աշխատում էր: Սա
- Գործարկեք թռուցիկ վեբ սերվեր ՝ նախազգուշացման հաղորդագրությունը մատուցելու համար, երբ ռադիոն դա խնդրի
- Ձայնի մակարդակը սահմանեք LOUD (Նախազգուշացնող հաղորդագրությունը պետք է գրավի բոլորի ուշադրությունը)
- Ռադիոյին փոխանցեք նախազգուշական հաղորդագրության uri- ը
- Հարցրեք ռադիոն մինչև ներկա վիճակի «ԿԱՆԳՆԱՎՈՐՎԱ»
- Ռադիոյին հասցրեք «PLAY» uri- ին
- Կրկնեք վերջին 2 քայլերը, մինչև ընթացիկ վիճակը լինի «MԼՄ -ները ներկա չեն», ինչը նշանակում է, որ ահազանգը ճանաչվել է ՝ անջատելով ռադիոն
- Վերջապես փակեք վեբ սերվերը և դուրս եկեք:
Սա scriptAriseAlarm.py- ն է
Քայլ 5: Դա արեք ինքներդ
«Դետեկտոր» և «ահազանգ» մոդելը միայն սառցարանների համար չէ, այն կարող է օգտակար լինել ցանկացած վայրում, որտեղ ավտոմատ ահազանգը պետք է փոխանցվի մեկ այլ միջոցի միջոցով: Եթե սա կհետաքրքրի, ազատ զգացեք:
PI Zero W- ի կարգավորում, ներառյալ խոսափողը
- Հավաքեք սարքավորումները, ինչպես 3 -րդ քայլում
- Ներբեռնեք սառեցման ահազանգի սցենարներ այս հրահանգից կամ git պահոցից, որը ներառում է մի քանի բոնուսային հետքեր
$ git կլոն
Դուք նաև պետք է տեղադրեք ծրագրակազմը ՝ ներկառուցված APA102 LED- ները օգտագործելու համար: Ես apa102.py- ի պատճենը ներառել եմ git աշխատանքային գրացուցակում
Վերապատրաստեք ձեր դետեկտորը
Ես checkFreezer.py սցենարին ավելացրել եմ ուսուցման տարբերակ: Սա ինքնուրույն աշխատում է և տպում ախտորոշումը հրամանի տողում, բայց նախ անհրաժեշտ է տագնապի որոշ նմուշներ ձայնագրել հանգիստ միջավայրում ՝ որպես WAV ֆայլեր, և նույնն անել աղմկոտ պայմաններում: Դասընթացն ավարտելու համար հարկավոր է նախ գտնել ամենաբարձր մակարդակով FFT հաճախականությունը («գագաթնակետային հաճախականությունը»), այնուհետև այդ հաճախականության շեմը `ձգան սահմանելու համար: Դա անելու համար գործարկեք script checkFreezer- ը ուսուցման ռեժիմում ՝ «-t» տարբերակով և նվագարկեք ահազանգի ձայնագրությունը:
$ python checkFreezer.py -t
Սա վարում է սցենարը վերապատրաստման ռեժիմում: Այն տպում է «պատրաստ», երբ սղոցված HAT- ը նախաստորագրվում է, և LED- ն դառնում է կանաչ, այնուհետև տող է լսվում յուրաքանչյուր ոչ մանր աղմուկի համար, օրինակ.
$ python checkFreezer.py -t
Պատրա՞ստ եք պիկ հաճախականություն 55 ձգան մակարդակ 1 գործարկվել է: Կեղծ գագաթնակետային հաճախականությունը 645 ձգան մակարդակը 484 գործարկվե՞լ է: Կեղծ պիկ հաճախականությունը 645 ձգան մակարդակը 380 գործարկվե՞լ է: Կեղծ
Գագաթնակետային հաճախականությունն այս դեպքում 645 է, և դա դառնում է ձգան հաճախականություն: Այժմ ձգանի մակարդակը ստանալու համար կրկնել checkFreezer- ը ՝ կարգավորելով ձգանը
$ python checkFreezer.py -t --trigger = 645
Պատրա՞ստ եք պիկ հաճախականություն 645 ձգան մակարդակ 1273 գործարկված: Կեղծ պիկ հաճախականությունը 645 ձգան մակարդակը 653 գործարկվե՞լ է: Կեղծ պիկ հաճախականությունը 645 ձգան մակարդակը 641 գործարկվե՞լ է: Կեղծ պիկ հաճախականությունը 645 ձգան մակարդակը 616 գործարկվե՞լ է: Կեղծ
Ի վերջո, մեզ անհրաժեշտ է ձգանման շեմ, որն ազդում է ազդանշանի հայտնաբերման ժամանակ, բայց անտեսում է աղմուկը, օրինակ
$ python checkFreezer.py -t --trigger = 645 -շեմ = 500
Պատրա՞ստ եք պիկ հաճախականությունը 645 ձգան մակարդակը 581 գործարկվել է: Իսկական գագաթնակետային հաճախականությունը 645 ձգան մակարդակ 798 գործարկվե՞լ է: Իսկական գագաթնակետային հաճախականությունը 645 ձգան մակարդակը 521 գործարկվե՞լ է: Ճիշտ
Փորձարկեք սա մի քանի աղմկոտ նմուշների դեմ, և դուք պետք է կարողանաք սահմանել մի շեմային արժեք, որը տարբերակում է աղմկող ձայնի և շրջապատի աղմուկի միջև: Դուք նաև պետք է տեսնեք, որ LED- ը կարմիր է դառնում, երբ մի քանի վայրկյան հնչում է ազդանշանի ձայնագրությունը: Եթե այն արագ/դանդաղ է գալիս, խմբագրեք սցենարի կարգավորումները
Միացում ռադիոյին
Ձեր սեփական կարգավորման սցենարները կազմաձևելու համար դուք պետք է գտնեք IP հասցեն և պորտի համարը, որը ձեր սարքն օգտագործում է UPnP ծառայությունների համար: Ռադիոկայանը պետք է ապահովի դրանք: Լռելյայն նավահանգստի համարը 8080 է, և անակնկալ կլիներ, եթե այն այլ լիներ:
Ես տրամադրել եմ ահազանգի կանխադրված հաղորդագրություն ՝ freezer.mp3: Ազատորեն փոխարինեք ձեր սեփական հաղորդագրությամբ:
Խմբագրեք սցենարը համապատասխան IP հասցեներով և գործարկեք սցենարը:
$ python raiseAlarm.py
Եթե ամեն ինչ կարգին է, բարձրաձայն և նյարդայնացնող ահազանգը կհնչի ձեր ռադիոյից մինչև ռադիոյի անջատումը ՝ չեղարկելով ահազանգը:
Մինչ սցենարը աշխատում է, այն աշխատում է մինի վեբ սերվերով ՝ ազդանշանը mp3 ռադիոյին մատուցելու համար, հնարավոր է ՝ անվտանգության խնդիր, բայց այն ակտիվ է միայն ահազանգի հաղորդագրության նվագարկման ընթացքում:
Ուղիղ հեռարձակում
Հեռացրեք «-t» ուսուցման դրոշը և գործարկեք checkFreezer- ը ձեր սեփական արժեքներով, օրինակ
$ python checkFreezer.py --trigger = 645 -շեմ = 200
Վերագործարկումը սկսելու համար ավելացրեք /etc/rc.local, cd/home/pi/freezer-alarm
(python checkFreezer.py --trigger = 645 --threshold = 200> /tmp /freezer 2> /tmp /freezererror &) և ելք 0
Կանաչ LED լուսավորվելու է, և դուք պատրաստ եք գործողությունների: Նվագարկեք ձեր ազդանշանային ձայնային ազդանշանի ձայնագրությունը և մի քանի վայրկյան հետո LED- ը կդառնա կարմիր, և ահազանգի ազդանշանը կհնչի ձեր ռադիոյով:
Վերջապես
Տեղադրեք PI- ը սառցարանին մոտ, ճանապարհից դուրս և էլեկտրասնուցման աղբյուրի մոտ: Միացեք և կանաչ LED- ը պետք է միանա: Ահազանգի գործարկման փորձարկում ՝ դուռը բաց թողնելով: Լույսը պետք է կարմիր դառնա, և ահազանգի ազդանշանը հնչի ռադիոյով:
Հաջողություն !! Դու դա արել ես Հյուրասիրեք սառցարանից սառույցով երկար ըմպելիք, բայց մի մոռացեք փակել սառնարանի դուռը:
Խորհուրդ ենք տալիս:
Thermoelectric Peltier սառնարանային հավաքածուի հավաքում `5 քայլ
Thermoelectric Peltier սառնարանային հավաքածուի հավաքում. Էֆեկտը ստեղծում է ջերմաստիճանի տարբերություն `երկու էլեկտրական հանգույցների միջև ջերմություն փոխանցելով: Էլեկտրական հոսանք ստեղծելու համար միացված հաղորդիչների վրա կիրառվում է լարվածություն: Երբ
IR տան ավտոմատացում `օգտագործելով ռելե. 6 քայլ (նկարներով)
IR տան ավտոմատացում `օգտագործելով ռելե. Infared Remote Home Automation System (arnգուշացում. Կրկնօրինակեք նախագիծը ձեր ռիսկով: Այս նախագիծը ներառում է բարձր լարման)
Շատ զգայուն հրդեհային ազդանշանային միացում `օգտագործելով ռելե` 9 քայլ
Շատ զգայուն հրդեհային ազդանշանային միացում `օգտագործելով ռելե. Hii ընկեր, այսօր ես պատրաստվում եմ միացնել Հրդեհի ահազանգի միացում, որը շատ զգայուն է: Այսօր ես այս միացումը կկատարեմ` օգտագործելով ռելե և տրանզիստոր BC547: Եկեք սկսենք
Լավագույն սառնարանային մագնիս փողը, որը հնարավոր չէ գնել. 3 քայլ
Լավագույն սառնարանային մագնիսը, որը հնարավոր չէ գնել դնել իմ սառնարանը
Սառնարանային կոմպրեսոր պատրաստելը վակուումային պոմպի մեջ `5 քայլ
Սառնարանային կոմպրեսոր պատրաստելը վակուումային պոմպի մեջ. Ես որոշ ժամանակ վակուումային պոմպ էի ուզում, բայց ես հրաժարվում եմ վճարել նորի գինը, որը բավարար ուժի և պարտականության տեսք ունի, և ինձ թվում է, որ ինձ պետք է: Ես տարբեր ֆորումներում կարդացել եմ սառնարանային կոմպրեսորից վակուումային պոմպի պատրաստման մասին, բայց