Оглавление:

Реле сигнализации морозильной камеры: 5 шагов
Реле сигнализации морозильной камеры: 5 шагов

Видео: Реле сигнализации морозильной камеры: 5 шагов

Видео: Реле сигнализации морозильной камеры: 5 шагов
Видео: Холодильник атлант светится красная лампочка, устранили утечку все заработало. 2024, Июль
Anonim
Реле сигнализации морозильной камеры
Реле сигнализации морозильной камеры

Наша морозильная камера находится в подсобном помещении, изолированном от нашего жилого помещения. Иногда дверца морозильной камеры не закрывается должным образом, и срабатывает сигнализация. Проблема в том, что мы не слышим его, когда находимся в нашем жилом пространстве. Как мы получаем сообщение о том, что дверца морозильной камеры открыта? Это обычная проблема, у нас дома есть устройства, которые разговаривают с нами, но что произойдет, если мы не сможем их услышать по какой-либо причине. Я начал это ради развлечения, но это может пригодиться в более серьезном приложении.

Эта проблема состоит из двух частей: нам нужен метод обнаружения срабатывания сигнализации и способ передать этот факт в наше жилое пространство. Я решил использовать Raspberry Pi для прослушивания сигнала тревоги морозильной камеры, а затем для отправки звукового сигнала тревоги на мое домашнее радио с включенным uPNP. Universal Plug and Play (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-файл и «Трансляция на устройство». Если ваше устройство обнаруживается и вы можете воспроизвести файл, то все готово.

Я разделил программное обеспечение на 2 сценария python, checkFreezer.py, чтобы проверить, было ли запущено предупреждение о замораживании, и raiseAlarm.py, чтобы поднять тревогу. Эти сценарии могут быть разработаны и протестированы отдельно и могут быть легко адаптированы или заменены на различные методы подачи сигналов тревоги с помощью микрофонов.

Запасы

  • Программное обеспечение -
  • Малина PI Zero W
  • Шляпа Seeed ReSpeaker 2-Mics Pi
  • Радио с поддержкой UPNP

Шаг 1: проектирование детектора

Когда дверца морозильной камеры остается открытой и температура повышается, морозильная камера издает звуковой сигнал «звуковой сигнал, звуковой сигнал, звуковой сигнал». Как и в большинстве электронных звуковых сигналов, это однократная частота. Идея состоит в том, чтобы сэмплировать входной аудиосигнал, выполнить быстрое преобразование Фурье (БПФ), которое преобразует сигнал на основе времени в сигнал на основе частоты, другими словами, разбивает сигнал для отображения различных частот в сигнале. См. Обучаемый анализатор спектра Raspberry Pi со светодиодной лентой RGB. Мы можем искать пик на частоте зуммера и запускать сигнал тревоги, когда зуммер был активен в течение некоторого времени.

К этому детектору предъявляются 2 требования

  • Он должен обнаруживать зуммер даже при наличии окружающего шума (исключить ложноотрицательные результаты).
  • Он не должен срабатывать из-за окружающего шума (исключите ложное срабатывание)

Я решил, что хорошей проверкой будет использование пылесоса в подсобном помещении. Он не должен вызывать тревогу, и тревога должна срабатывать, когда гаснет зуммер морозильной камеры и работает пылесос.

Шаг 2: Настройка детектора

Настройка детектора
Настройка детектора
Настройка детектора
Настройка детектора
Настройка детектора
Настройка детектора

С помощью телефона я брал образцы аудио в виде файлов WAV только из зуммера морозильной камеры, с шумным фоном и при работающем пылесосе. Я адаптировал код для выполнения БПФ из поста Чтение аудиопотока для БПФ (если есть сомнения, плагины) и использовал скрипт fourierTest.py для построения необработанных и преобразованных Фурье образцов зуммера на тихом, шумном и очень шумном фоне. Скачок уровня на частоте 645 ярко выражен на первом графике и все еще значительный на очень шумном фоне.

Шаг 3: Создание детектора

Сборка детектора

Очень простой. Pi W поставляется со встроенным Wi-Fi, а шляпа напрямую подключается к контактам GPIO на Pi. Для настройки программного обеспечения необходимо выполнить следующие действия.

  • Установите дистрибутив raspbian на Raspberry Pi. Есть множество руководств по этому поводу, которые могут объяснить это намного лучше, чем я.
  • Настройте Wi-Fi (то же самое выше)
  • Требуется установленный пакет alsa

$ sudo apt-get install libasound-dev

$ pip установить pyalsaaudio

  • Подключите шляпу к малиновому PI.
  • Следуйте инструкциям на просматриваемом веб-сайте, чтобы установить драйверы для HAT.
  • Запустите видимую диагностику, чтобы убедиться, что HAT работает и правильно настроен.

Программа детектора считывает с микрофона блок данных как образец, выполняет БПФ и решает, обнаружил ли он зуммер в образце. Я попытался сделать блок как можно более длинным, уменьшив частоту дискретизации звука до 16 кГц и используя самый большой буфер, который может принять читатель. Я был обеспокоен тем, что расчет БПФ может привести к пропаданию кадров, но этого не произошло.

Предварительно записанные образцы на моем телефоне значительно упростили сборку детектора, так как я мог сделать полную сборку на стенде перед тестированием на месте с помощью морозильной камеры.

Обучающий детектор

Детектор был обучен сканированием каждого образца, когда WAV-запись зуммера воспроизводилась на детекторе. Программа выводит позицию в спектре БПФ с наивысшим уровнем мощности (пиковая частота) вместе с уровнем этой пиковой частоты. Было несложно найти частоту зуммера и уровень мощности, который он издает.

Есть 2 способа определить, раздался ли звуковой сигнал: -

  1. Была ли частота зуммера максимальной частотой в образце?
  2. или уровень мощности на частоте зуммера был выше порогового значения?

Любой метод работал с тихим сэмплом, но второй был лучше с шумным сэмплом, поэтому я использовал его.

Иногда образец перекрывал звуковой сигнал, иногда - между звуковыми сигналами, а после каждых трех звуковых сигналов делалась долгая пауза перед следующими звуковыми сигналами. Для надежного обнаружения набора звуковых сигналов для каждой выборки использовался голос «за», если звуковой сигнал был обнаружен, и «против» в противном случае. Эти голоса были взвешены, чтобы установить счет, который будет увеличиваться с помощью звукового сигнала и медленно затухать между временами. Как только счет достигнет порогового значения, может сработать сигнал тревоги. Если случайный шум был обнаружен как образец звукового сигнала, счет вернется к нулю.

Затем нам нужны веса для голосов за и против вместе с порогом. Я сделал это методом проб и ошибок на нескольких образцах. Мне не нужно было определять реальную частоту зуммера, я просто искал выдающуюся частоту в спектре 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

Я использовал Wireshark, запущенный на ПК с Windows, чтобы распознать последовательность сообщений при воспроизведении образца файла с моего ПК по радио, и после небольшого возни я получил последовательность команд, которая сработала. Это

  • Запустите всплывающий веб-сервер, чтобы отображать предупреждающее сообщение, когда радио запрашивает его.
  • Установите уровень громкости на громкий (предупреждающее сообщение должно привлечь внимание всех)
  • Передайте на радио URI предупреждающего сообщения.
  • Опрашивайте радио, пока текущее состояние не станет "ОСТАНОВЛЕН".
  • Получите радио, чтобы "ИГРАТЬ" uri
  • Повторяйте последние 2 шага до тех пор, пока текущее состояние не будет «НЕТ НОСИТЕЛЯ», что означает, что сигнал тревоги был подтвержден выключением радио.
  • Наконец, закройте веб-сервер и выйдите.

Это скрипт raiseAlarm.py

Шаг 5: Делаем сам

Сделай сам
Сделай сам

Модель «детектор» и «поднять тревогу» предназначена не только для морозильных камер, она может быть полезна везде, где автоматическая тревога должна быть передана через другой носитель. Если это будет интересно, не стесняйтесь.

Настройка PI Zero W, включая микрофон

  • Соберите оборудование, как в шаге 3.
  • Загрузите скрипты сигналов тревоги морозильной камеры из этого руководства или из репозитория git, который включает несколько бонусных треков.

$ git clone

Вам также необходимо установить программное обеспечение для использования встроенных светодиодов APA102. Я включил копию apa102.py в рабочий каталог git

Обучение вашего детектора

Я добавил возможность обучения в скрипт checkFreezer.py. Это запускает его автономно и выводит диагностику в командную строку, но сначала вам нужно записать некоторые образцы сигнала тревоги в тихой среде в виде файлов WAV и сделать то же самое в шумной среде. Для завершения обучения вам необходимо сначала найти частоту БПФ с наивысшим уровнем («пиковую частоту»), а затем пороговый уровень для этой частоты, чтобы установить триггер. Для этого запустите скрипт 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 --threshold = 500

Готовая пиковая частота 645 уровень запуска 581 сработал? Истинная пиковая частота 645 уровень запуска 798 сработал? Истинная пиковая частота 645 уровень запуска 521 сработал? Правда

Проверьте это на паре зашумленных сэмплов, и вы сможете установить пороговое значение, которое позволяет различать звук бипера и окружающий шум. Вы также должны увидеть, как светодиод загорится красным, когда запись звукового сигнала воспроизводится в течение нескольких секунд. Если он приходит слишком быстро / медленно, отредактируйте настройки в скрипте

Подключение к радио

Чтобы настроить сценарии для вашей собственной настройки, вам необходимо найти IP-адрес и номер порта, которые ваше устройство использует для служб UPnP. Радиосистема должна обеспечивать это. Номер порта по умолчанию - 8080, и будет сюрпризом, если он будет другим.

Я предоставил аварийное сообщение по умолчанию, freezer.mp3. Не стесняйтесь заменить своим собственным сообщением.

Отредактируйте сценарий, указав соответствующие IP-адреса, и запустите сценарий.

$ python RaiseAlarm.py

Если все в порядке, громкое и раздражающее сообщение будильника будет звучать из вашего радио, пока радио не будет выключено, отменяя сигнал будильника.

Пока скрипт запущен, он запускает мини-веб-сервер для передачи mp3-сигнала будильника на радио, что, возможно, является проблемой безопасности, но он активен только во время воспроизведения аварийного сообщения.

Собираюсь жить

Удалите обучающий флаг ‘-t’ и запустите checkFreezer с вашими собственными значениями, например

$ python checkFreezer.py --trigger = 645 --threshold = 200

Чтобы он запускался при перезагрузке, добавьте в /etc/rc.local, cd / home / pi / морозильная камера-будильник

(python checkFreezer.py --trigger = 645 --threshold = 200> / tmp / freezer 2> / tmp / freezererror &) и выход 0

Загорится зеленый светодиод, и вы будете готовы к действию. Включите запись звукового сигнала будильника, и через несколько секунд светодиод станет красным, а сообщение о будильнике будет воспроизводиться на вашем радио.

Наконец-то

Разместите PI рядом с морозильной камерой, вдали от источников питания. Включите питание, и должен загореться зеленый светодиод. Проверьте активацию тревоги, оставив дверь открытой. Индикатор должен загореться красным, и по радио заиграет тревожное сообщение.

Успех !! Вы сделали это. Побалуйте себя длинным напитком со льдом из морозильной камеры, но не забудьте закрыть дверцу морозильной камеры!

Рекомендуемые: