Мазмұны:

Мұздатқыш дабыл релесі: 5 қадам
Мұздатқыш дабыл релесі: 5 қадам

Бейне: Мұздатқыш дабыл релесі: 5 қадам

Бейне: Мұздатқыш дабыл релесі: 5 қадам
Бейне: КӨЗІҢІЗДЕГІ БЕЛГІЛЕР МЫНА АУРУЛАРДАН ХАБАР БЕРЕДІ, Сарғайса, Жас ақпаса, Қызарса, Керек арнасы 2024, Шілде
Anonim
Мұздатқыш дабыл релесі
Мұздатқыш дабыл релесі

Біздің мұздатқыш біздің тұрғын үйден оқшауланған қызметтік бөлмеде. Кейде мұздатқыштың есігі дұрыс жабылмайды және дабыл сөнеді. Мәселе мынада, егер біз өмір сүретін кеңістікте болсақ, біз оны ести алмаймыз. Мұздатқыштың есігі ашық деген хабарды қалай аламыз? Бұл жиі кездесетін мәселе, біздің үйде бізбен сөйлесетін құрылғылар бар, бірақ егер біз оларды қандай да бір себептермен естімесек не болады. Мен мұны біраз қызық ретінде бастадым, бірақ бұл маңызды бағдарламада қолданылуы мүмкін.

Бұл мәселенің 2 бөлігі бар, бізге дабылдың өшкенін анықтау әдісі қажет және бұл фактіні біздің өмір сүру кеңістігімізге жеткізу әдісі қажет. Мен шешкен дизайн мұздатқыш дабылды өшіруді тыңдау үшін Raspberry Pi пайдалану болды, содан кейін uPNP қосылған менің ішкі радиоға дыбыстық дабыл хабарын жіберу болды. Әмбебап қосылу және ойнау (UpnP) - бұл желідегі әртүрлі құрылғылар, соның ішінде медиа -серверлер мен плеерлер ұсынатын қызметтерді табуға және өзара әрекеттесуге арналған стандарт, бірақ менің ойымша, мұздатқыштар стандарт әзірленген кезде қарастырылмаған. Ескерту дауысы қатты және тітіркендіргіш болды және радио өшірілгенше шексіз қайталанады.

Мен дабылды Raspberry Pi Zero W және Seeed ReSpeaker 2-Mics Pi HAT көмегімен анықтауды таңдадым. Raspberry PI Zero-бұл Raspberry Pi-дің арзан нұсқасы, ал W параметрінде Wi-Fi орнатылған, ал Seeed Pi HAT сатылымы төмен. $ 10, кіріктірілген жарық диодтары мен пайдаланушы түймесі бар. Pi HAT - бұл Raspberry Pi -ге тікелей қосылатын кеңейту карталары, бұл өте қарапайым құрастыру процедурасын жасайды. Кез келген Pi нұсқасы жұмысқа қабілетті болады және таңдалған микрофонды ауыстыруға болады, дегенмен мен осы конструкцияда кіріктірілген жарықдиодты қолдандым.

Радио немесе теледидар сіз үшін жұмыс істейтінін тексеру оңай. Ол «DLNA қосылған» немесе соған ұқсас болуы мүмкін. Бұл байланыс үшін uPNP пайдаланады. Windows компьютерінде mp3 файлын және «Құрылғыға трансляциялауды» таңдаңыз. Егер сіздің құрылғыңыз пайда болса және сіз файлды ойната алсаңыз, онда сіз баруға дайынсыз.

Мен бағдарламалық қамтамасыз етуді мұздатқыш туралы ескертудің іске қосылғанын тексеру үшін checkFreezer.py және дабылды көтеру үшін liftAlarm.py 2 python сценарийлеріне бөлдім. Бұл сценарийлер бөлек әзірленіп, сынақтан өтуі мүмкін және оларды дабыл сигналын көтерудің әр түрлі әдістеріне оңай бейімдеуге немесе алмастыруға болады.

Жабдықтар

  • Бағдарламалық қамтамасыз ету -https://github.com/wapringle/freezer-alarm
  • Таңқурай PI Zero W
  • ReSpeaker 2-Mics Pi HAT көрді
  • uPNP қосылған радио

1 -қадам: Детекторды жобалау

Мұздатқыштың есігі ашық қалғанда және температура көтерілгенде, мұздатқыш «дыбыстық сигнал» сигналын береді. Электрондық дыбыстық сигналдардың көпшілігінде ортақ, бұл бір жиілік. Идея - аудио кірісті іріктеу, уақытқа негізделген сигналды жиілікке түрлендіретін Fast Fourier Transform (FFT) жасау, басқаша айтқанда, сигналдағы әр түрлі жиілікті көрсету үшін сигналды бұзу. RGB светодиодты жолағы бар Raspberry Pi спектрлі анализаторын қараңыз. Біз дыбыстық сигнал жиілігінде шыңды іздей аламыз және дыбыстық сигнал ұзақ уақыт жұмыс істеп тұрған кезде дабылды қосамыз.

Бұл детекторға 2 талап қойылады

  • Ол дыбысты анықтауы керек, тіпті қоршаған орта шуылында болса да (жалған теріс мәнді жою)
  • Оны қоршаған шу тудырмауы керек (жалған позитивті жою)

Мен қызметтік бөлмеде Гуверді жүгіру жақсы сынақ болады деп шештім. Ол дабылды тудырмауы керек және мұздатқыштың дыбыстық сигналы өшіп, Гувер жұмыс істеп тұрған кезде дабыл қосылуы керек.

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

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

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

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

Детекторды жинау

Өте қарапайым. Pi W кіріктірілген Wi-Fi-мен бірге келеді және HAT Pi-дегі GPIO түйреуіштеріне тікелей қосылады. Бағдарламалық жасақтаманы конфигурациялау қадамдарды қажет етеді

  • Raspberry Pi -де raspbian дистрибутивін орнатыңыз. Бұл туралы мен түсіндіре алатын көптеген нұсқаулықтар бар.
  • Wi -Fi орнату (жоғарыда)
  • Ол орнатылған alsa пакетін қажет етеді

$ sudo apt-get install libasound-dev

$ pip pyalsaaudio орнатыңыз

  • HAT таңқурай PI -ге қосыңыз
  • 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 қадамды «МЕДИАНАЛЫҚ ЖОҚ» күйіне дейін қайталаңыз, бұл дабыл радионы өшіру арқылы расталғанын білдіреді.
  • Соңында веб -серверді жабыңыз және шығыңыз.

Бұл көтеруAlarm.py сценарийі

5 -қадам: мұны өзіңіз жасаңыз

Мұны өзіңіз жасау
Мұны өзіңіз жасау

«Детектор» мен «дабылды көтеру» моделі тек мұздатқыштарға ғана арналған емес, ол автоматты дабылды басқа құрал арқылы беру қажет кез келген жерде пайдалы болуы мүмкін. Егер бұл қызығушылық тудыратын болса, баруға рұқсат етіңіз.

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

  • Жабдықты 3 -қадамдағыдай жинаңыз
  • Мұздатқыш-дабыл сценарийлерін осы нұсқаулықтан немесе бірнеше бонустық тректері бар git репозиторийінен жүктеп алыңыз.

$ git клоны

APA102 борттық жарықдиодты пайдалану үшін сізге бағдарламалық жасақтаманы орнату қажет. Мен apa102.py көшірмесін git жұмыс каталогына қостым

Детекторды жаттықтыру

CheckFreezer.py сценарийіне жаттығу опциясын қостым. Бұл дербес жұмыс істейді және пәрмен жолына диагностиканы басып шығарады, бірақ алдымен сіз дабылдың кейбір үлгілерін WAV файлдары сияқты тыныш ортада жазып алуыңыз керек, ал шулы кезде солай жасаңыз. Жаттығуды аяқтау үшін сізге ең жоғары деңгейдегі FFT жиілігін («шыңдық жиілік»), содан кейін триггерді орнату үшін осы жиіліктің шекті деңгейін табу керек. Ол үшін checkFreezer сценарийін оқу режимінде, '-t' опциясымен іске қосыңыз және дабылды жазуды ойнатыңыз.

$ python checkFreezer.py -t

Бұл сценарийді жаттығу режимінде іске қосады. Көрінетін HAT инициализацияланған кезде және жарық диоды жасыл түске боялған кезде ол «дайын» деп басып шығарады, содан кейін ол еститін әрбір тривиальды емес шу үшін сызық, мысалы:

$ 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 деңгейлі триггер деңгейі іске қосылды ма? Рас

Мұны бірнеше шулы үлгілермен тексеріңіз, сонда сіз ұйықтаушының дыбысы мен қоршаған ортаның шуы арасындағы айырмашылықты анықтай алатын шекті мәнді анықтай аласыз. Сондай -ақ, дыбыстық сигнал бірнеше секунд ойнатылған кезде жарық диоды қызыл түске боялғанын көруіңіз керек. Егер ол тез/баяу болса, сценарийдегі параметрлерді өңдеңіз

Радиоға қосылу

Сценарийлерді жеке орнату үшін конфигурациялау үшін UPnP қызметтері үшін құрылғы пайдаланатын IP мекенжайын және порт нөмірін табу қажет. Радио қондырғысы бұларды қамтамасыз етуі керек. Әдепкі порт нөмірі - 8080 және егер ол басқаша болса, бұл таңқаларлық болар еді.

Мен әдепкі дабыл хабарын бердім, freezer.mp3. Өз хабарламаңызбен алмастырыңыз.

Сценарийді сәйкес IP мекенжайларымен өңдеңіз және сценарийді іске қосыңыз.

$ python көтеруAlarm.py

Егер бәрі жақсы болса, қатты және тітіркендіргіш дабыл сіздің радиостанция өшірілмейінше жарылып, дабыл жойылады.

Сценарий жұмыс істеп тұрғанда, ол радиоға дабыл mp3 беру үшін шағын веб -серверді іске қосады, мүмкін қауіпсіздік мәселесі, бірақ ол дабыл хабарламасы ойнатылып жатқанда ғана белсенді болады.

Тікелей эфирде

'-T' жаттығу жалаушасын алып тастаңыз және checkFreezer бағдарламасын өз мәндеріңізбен іске қосыңыз, мысалы

$ python checkFreezer.py --trigger = 645 -табалдырық = 200

Оны қайта жүктеуді бастау үшін /etc/rc.local, cd/home/pi/мұздатқыш-дабыл

(python checkFreezer.py --trigger = 645 -threshold = 200> /tmp /freezer 2> /tmp /freezererror &) және 0 шығу

Жасыл жарық диоды жанады және сіз әрекет етуге дайынсыз. Дабыл сигналының жазбасын ойнатыңыз және бірнеше секундтан кейін жарық диоды қызыл түске айналады және сигнал сіздің радиода ойнайды.

Соңында

PI мұздатқышқа жақын жерде, жолдан тыс жерде және қуат көзіне қойыңыз. Қуат және жасыл жарық диоды жануы керек. Есікті ашық қалдырып, дабылды қосуды тексеріңіз. Жарық қызыл түске ауысуы керек, ал дабыл туралы хабар радиода ойнайды.

Жетістік !! Сіз жасадыңыз. Мұздатқыштағы мұзбен ұзақ сусын ішіңіз, бірақ мұздатқыштың есігін жабуды ұмытпаңыз!

Ұсынылған: