Мазмуну:

Муздаткыч сигнализациясынын релеси: 5 кадам
Муздаткыч сигнализациясынын релеси: 5 кадам

Video: Муздаткыч сигнализациясынын релеси: 5 кадам

Video: Муздаткыч сигнализациясынын релеси: 5 кадам
Video: Жөндеу ҚАЙСЫ ЖОҚ КЕТЕДІ ЖЕКЕ ЕШКІМ Гарант-жөндеу. Аяқтау жұмыс жылы Брест 2024, Июль
Anonim
Муздаткыч сигнализация релеси
Муздаткыч сигнализация релеси

Биздин тоңдургуч жашоо бөлмөбүздөн бөлүнгөн пайдалуу бөлмөдө. Кээде тоңдургучтун эшиги туура жабылбайт жана ойготкуч өчөт. Көйгөй, эгер биз өзүбүздүн жашоо мейкиндигибизде болсо, аны уга албайбыз. Муздаткычтын эшиги ачык экени тууралуу кабарды кантип алсак болот? Бул жалпы маселе, биздин үйлөрдө биз менен сүйлөшүүчү аппараттар бар, бирок кандайдыр бир себептерден улам аларды уга албасак эмне болот. Мен муну бир аз кызыктуу деп баштадым, бирок бул олуттуу колдонмодо колдонулушу мүмкүн.

Бул көйгөйдүн 2 бөлүгү бар, бизге сигналдын өчкөнүн аныктоо ыкмасы жана бул чындыкты жашоо мейкиндигибизге жеткирүү ыкмасы керек. Мен чечкен дизайн, 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, камтылган LED жана колдонуучу баскычы бар. Pi HAT - бул Raspberry Pi'ге туташтырылган кеңейтүү карталары, аларды чогултуу абдан жөнөкөй. Ар кандай Pi версиясы жумушка жөндөмдүү болмок жана тандалган микрофонду алмаштырса болот, бирок мен бул структурада камтылган LED диоддорун колдондум.

Радио же сыналгы сиз үчүн иштээрин текшерүү оңой. Бул "DLNA иштетилген" же окшош катары сүрөттөлөт. Бул байланыш үчүн uPNP колдонот. Windows компьютеринде mp3 файлын жана "Түзмөккө чыгаруу" тандаңыз. Эгер түзмөгүңүз көрүнүп, файлды ойното алсаңыз, анда барганыңыз оң.

Мен программалык камсыздоону 2 python скриптине бөлдүм, checkFreezer.py, тоңдургучтун эскертүүсүнүн иштетилгенин текшерүү үчүн жана alarmA.py ойготкучту жогорулатуу үчүн. Бул сценарийлер өзүнчө иштелип чыгышы жана сыналышы мүмкүн жана ар кандай микрофондордун сигналын жогорулатуу ыкмаларына оңой ыңгайлаштырылышы же алмаштырылышы мүмкүн.

Жабдуулар

  • Программа -https://github.com/wapringle/freezer-alarm
  • Raspberry PI Zero W
  • Көргөн ReSpeaker 2-Mics Pi HAT
  • uPNP иштетилген радио

1 -кадам: Детектордун дизайнын иштеп чыгуу

Тоңдургучтун эшиги ачык калганда жана температура көтөрүлгөндө, тоңдургуч "бип бип бип" сигналын берет. Көпчүлүк электрондук сигналдар менен бирдикте, бул бир жыштык. Идео - аудио киргизүү үлгүсү, Fast Fourier Transform (FFT) жасоо, ал убакытка негизделген сигналды жыштыкка негиздейт, башкача айтканда сигналдагы ар кандай жыштыктарды көрсөтүү үчүн сигналды бузат. RGB LED тилкеси бар Instructable Raspberry Pi спектр анализаторун караңыз Биз ызы -чуунун жыштыгында чокуну издей алабыз жана коңгуроо бир канча убакыт активдүү болгондо сигналды иштете алабыз.

Бул детектордун 2 талабы бар

  • Ал ызы -чууну, айланадагы ызы -чуу болгон учурда да аныкташы керек (жалган терс нерсени жок кылуу)
  • Бул чөйрө ызы -чуусу менен козголбошу керек (жалган позитивди жок кылуу)

Гуверди пайдалуу бөлмөгө чуркоо жакшы сыноо болот деп чечтим. Бул ойготкучту иштетпеши керек, жана ойготкучту тоңдургучтун үнү өчүп, Гувер иштеп жатканда иштетилиши керек.

2 -кадам: детекторду конфигурациялоо

Детекторду конфигурациялоо
Детекторду конфигурациялоо
Детекторду конфигурациялоо
Детекторду конфигурациялоо
Детекторду конфигурациялоо
Детекторду конфигурациялоо

Телефонум менен аудио үлгүлөрдү тоңдургучтун WAV файлдары катары, ызы -чуу фонунда жана Гувер иштеп жаткан учурда алдым. Мен кодду FFT аткарууга ылайыкташтырдым FFT үчүн аудио агымын окуудан (Качан күмөн санаганда, плагаризация) жана сценарийди колдондум fourierTest.py чийки жана Фурье үлгүлөрүн тынч, ызы -чуу жана абдан ызы -чуу фонунда. 645 жыштыгынын деңгээли биринчи сюжетте айтылды жана абдан ызы -чуу фонунда дагы деле маанилүү.

3 -кадам: Детекторду куруу

Детекторду чогултуу

Абдан жөнөкөй. Pi W орнотулган Wifi менен коштолот жана HAT Piдеги GPIO казыктарына туташтырылган. Программаны конфигурациялоо кадамдарды талап кылат

  • Raspberry Piге raspbian distro орнотуу. Бул боюнча көптөгөн колдонмолор бар, алар мен түшүндүрө алам.
  • Wifi орнотуу (жогорудагыдай)
  • Ал орнотулган alsa пакетине муктаж

$ sudo apt-get libasound-dev орнотуу

$ pip pyalsaaudio орнотуу

  • Калпакты малина ПИге туташтырыңыз
  • HAT үчүн драйверлерди орнотуу үчүн, көрүлгөн веб -сайтта Нускамаларды аткарыңыз.
  • HAT иштеп жаткандыгын жана туура конфигурациялангандыгын текшерүү үчүн көрүлгөн диагностиканы иштетиңиз.

Детектор программасы микрофондун үлгүсү катары маалымат блогун окуйт, ФФТны аткарат жана үлгүдөгү ызылдакты аныктаганбы же жокпу чечет. Аудио үлгүсүнүн ылдамдыгын 16 кГцке чейин төмөндөтүү жана окурман кабыл ала турган эң чоң буферди колдонуу менен блокту мүмкүн болушунча узак кылууга аракет кылдым. Мен FFT эсептөөсү кадрларды түшүрүп жибериши мүмкүн деп кооптонуп жаткам, бирок андай болгон жок.

Телефонумда алдын ала жазылган үлгүлөрдүн болушу детектордун курулушун бир топ жеңилдетти, анткени мен тоңдургучта өз ордунда сыноодон мурун отургучта толук курууну жасай алам.

Детекторду үйрөтүү

Детектор дабылга WAV жазуусу детекторго ойнотулганда, ар бир үлгүнү сканерлөө аркылуу үйрөтүлгөн. Программа FFT спектриндеги позицияны эң жогорку кубаттуулуктагы (эң жогорку жыштыкта) жана ошол эң жогорку жыштыктын деңгээли менен бирге чыгарат. Зумердин жыштыгын жана ал чыгарган кубаттуулукту табуу жөнөкөй маселе болчу.

Бип чыкканын аныктоонун 2 жолу бар:-

  1. Добуштун жыштыгы үлгүдөгү эң жогорку жыштык беле?
  2. же кубаттын деңгээли ызы -чуунун чегинен аштыбы?

Ар бир ыкма тынч үлгүдө иштеген, бирок экинчиси ызы -чуу болгон үлгү менен жакшыраак болгон, ошондуктан мен аны колдондум.

Кээде үлгү бир бипти камтыйт, кээде биптердин ортосунда болот, жана ар бир 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" ге алыңыз
  • Акыркы 2 кадамды учурдагы абал "NO MEDIA PRESENT" болгуча кайталаңыз, башкача айтканда, сигнал өчүрүлгөн сигнал ойготулду
  • Акыры веб -серверди жаап, чыгыңыз.

Бул scriptAlarm.py

5 -кадам: Муну өзүңүз жасаңыз

Муну өзүңүз жасоо
Муну өзүңүз жасоо

"Детектор" жана "ойготкучту көтөрүү" модели тоңдургучтар үчүн гана эмес, автоматтык сигнализацияны башка каражат аркылуу берүү керек болгон жерде пайдалуу болушу мүмкүн. Эгер бул кызыктуу болсо, анда өзүңүздү эркин сезиңиз.

PI Zero W орнотуу, анын ичинде микрофон

  • Аппаратты 3 -кадамдагыдай чогултуңуз
  • Тоңдургуч сигналынын сценарийлерин ушул Нускамадан же бир нече бонустук тректерди камтыган git репозиторийинен жүктөп алыңыз

$ git клону

APA102 бортундагы LEDди колдонуу үчүн программаны орнотушуңуз керек. Мен apa102.py көчүрмөсүн git жумушчу каталогуна киргиздим

Детекторуңузду машыктырыңыз

Мен checkFreezer.py скриптине тренинг вариантын коштум. Бул өзүнчө иштейт жана буйрук сабына диагностиканы басып чыгарат, бирок адегенде ойготкучтун кээ бир үлгүлөрүн WAV файлдары сыяктуу тынч чөйрөдө жазышыңыз керек жана ызы-чууда да ошону кылыңыз. Тренингди аяктоо үчүн, адегенде эң жогорку деңгээлдеги FFT жыштыгын ("чоку жыштыгы"), андан кийин триггерди орнотуу үчүн ошол жыштыктын босоголук деңгээлин табуу керек. Бул үчүн 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дин кызарып турганын көрүшүңүз керек. Эгерде тез/жай келе турган болсо, скрипттеги орнотууларды түзөтүңүз

Радиого туташууда

Скрипттерди өзүңүздүн орнотууңуз үчүн конфигурациялоо үчүн, UPnP кызматтары үчүн түзмөгүңүз колдонгон IP дарегин жана порт номерин табышыңыз керек. Радио орнотуу буларды камсыздашы керек. Демейки порт номери 8080 жана ал башка болсо таң калыштуу болмок.

Мен демейки ойготкуч билдирүүнү бердим, freezer.mp3. Өзүңүздүн билдирүүңүз менен алмаштыруудан тартынбаңыз.

Тийиштүү IP даректери менен скриптти түзөтүңүз жана скриптти иштетиңиз.

$ python liftAlarm.py

Эгерде баары ойдогудай болсо, катуу жана кыжырданткан ойготкуч радиоңуз өчүрүлгөнгө чейин радиоңуздан жарылып, ойготкучту жокко чыгарат.

Сценарий иштеп жатканда, ал сигналды mp3 радиого берүү үчүн мини веб -серверди иштетет, балким коопсуздук маселеси, бирок ал сигнал ойноп жатканда гана активдүү болот.

Түз эфирге чыгуу

"-T" машыгуу желегин алып салыңыз жана checkFreezerди өзүңүздүн баалуулуктарыңыз менен иштетиңиз, мисалы

$ python checkFreezer.py --trigger = 645 -босого = 200

Аны кайра жүктөө үчүн /etc/rc.local'ге кошуп, CD/үй/пи/тоңдургуч-сигнал

(python checkFreezer.py --trigger = 645 -threshold = 200> /tmp /freezer 2> /tmp /freezererror &) & чыгуу 0

Жашыл LED күйөт жана сиз аракетке даярсыз. Ойготкучтун бипин жаздырууну ойнотуңуз жана бир нече секунддан кийин LED кызыл түскө айланып, сигнал сиздин радиодо ойнойт.

Акыры

ПИни тоңдургучка жакын жерде, жолдон алыс жана электр менен камсыз кылыңыз. Кубат жана жашыл LED күйүп турушу керек. Эшикти ачык калтыруу менен ойготкучту иштет. Жарык кызылга айланып, сигнал радиосу радиодо ойношу керек.

Ийгилик !! Сиз муну жасадыңыз. Муздаткычтан муз менен көпкө чейин ичип көрүңүз, бирок тоңдургучтун эшигин жабууну унутпаңыз!

Сунушталууда: