Оглавление:

Дверной датчик с питанием от аккумулятора, интеграция с домашней автоматикой, Wi-Fi и ESP-NOW: 5 шагов (с изображениями)
Дверной датчик с питанием от аккумулятора, интеграция с домашней автоматикой, Wi-Fi и ESP-NOW: 5 шагов (с изображениями)

Видео: Дверной датчик с питанием от аккумулятора, интеграция с домашней автоматикой, Wi-Fi и ESP-NOW: 5 шагов (с изображениями)

Видео: Дверной датчик с питанием от аккумулятора, интеграция с домашней автоматикой, Wi-Fi и ESP-NOW: 5 шагов (с изображениями)
Видео: Пошаговая инструкция по настройке умного дома Mr.Butler (based on OpenHAB) 2024, Июль
Anonim
Image
Image

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

Мои цели:

  • Датчик, который обнаруживает быстрое открывание двери (<5 секунд) и сообщает о нем.
  • Датчик, определяющий закрытие двери
  • Датчик, работающий от батареи и работающий несколько месяцев от батареи.

Аппаратное и программное обеспечение вдохновлено

  • Доска объявлений Кевина Дарры (TPL5111 и TPS73733).
  • Это видео

Я сделал датчик для входной двери и задней двери. Единственное отличие - положение светодиода и внешний выключатель питания (на датчике задней двери).

В процессе разработки я сделал несколько улучшений в аппаратном и программном обеспечении, это видно на фотографиях.

Запасы

Я купил электронные компоненты на Алиэкспресс, основные части:

  • LiPo аккумулятор
  • TPS73733 LDO
  • TPL5111
  • Геркон
  • MOSFET с P-каналом: IRLML6401TRPBF
  • Магнит
  • Плата адаптера печатной платы для компонентов SMD и другое.

Шаг 1: Аппаратное обеспечение - Схема

Аппаратное обеспечение - Схема
Аппаратное обеспечение - Схема
Аппаратное обеспечение - Схема
Аппаратное обеспечение - Схема
Аппаратное обеспечение - Схема
Аппаратное обеспечение - Схема

Смотрите приложенные схемы схемы. Я припаял SMD-детали на плате адаптера и припаял все компоненты к двухсторонней монтажной плате. Я подключил ESP-01 через женские заголовки, поэтому я мог удалить его, чтобы запрограммировать его через адаптер, показанный в шаге 3 этой инструкции.

Схема работает следующим образом:

  • Когда дверь открывается, TPL5111 получает сигнал на вывод DELAY / M_DRV и включает LDO TPS73733, который питает ESP-01. Для этой операции EN / ONE_SHOT должен быть установлен на низкий уровень, см. Техническое описание TPL5111.
  • После запуска программы (см. Шаг «Программное обеспечение») ESP-01 отправляет сигнал «Готово» на TPL5111, который затем отключает TPS73733, что приводит к очень низкому энергопотреблению для TPL5111 и TPS73733.

Я использую герконы как с нормально разомкнутыми, так и с нормально замкнутыми контактами. Я подключил нормально замкнутый провод, так как геркон должен замкнуть цепь при удалении магнита (дверь открыта) и размыкаться, когда магнит находится рядом (дверь закрыта).

Для датчика заднего хода я добавил несколько конденсаторов и резисторов, когда обнаружил некоторые нестабильности, однако нестабильность была вызвана программным обеспечением (esp_now_init), как я обнаружил позже.

Шаг 2: Аппаратное обеспечение - Корпус

Оборудование - Корпус
Оборудование - Корпус
Оборудование - Корпус
Оборудование - Корпус
Оборудование - Корпус
Оборудование - Корпус

Я спроектировал корпус в Autodesk Fusion360, вдохновленный этим видео «парнем со швейцарским акцентом».

Файлы STL из трех частей:

  • Коробка
  • Крышка
  • Держатель магнита

опубликованы на моей странице в Thingiverse.

Шаг 3: Программное обеспечение

Программное обеспечение
Программное обеспечение

Программа есть у меня на Github.

Ход работы программы показан на картинке. См. Другие мои инструкции для объяснения того, как я использую ESP-NOW.

Когда модуль включен, он сначала пытается отправить сообщение «ОТКРЫТЬ» через ESP-NOW. Если это не удается, он переключается на соединение WiFi и MQTT.

Я обнаружил, что, по крайней мере, в моей настройке сообщение «ЗАКРЫТО» не было успешно отправлено через ESP-NOW, поэтому я удалил его из программы и использовал только WiFi и MQTT.

В течение времени, когда дверь открывается и модуль ожидает закрытия двери, он использует это время для подключения к Wi-Fi и MQTT, поэтому, когда дверь закрыта, ему нужно только отправить измеренное напряжение и сообщение ЗАКРЫТО, а затем он сразу засыпает.

Программа проверяет, получено ли закрытое сообщение получателем, путем прослушивания сообщения MQTT по нужной теме.

Шаг 4: Домашняя автоматизация и Telegram

Домашняя автоматизация и Telegram
Домашняя автоматизация и Telegram
Домашняя автоматизация и Telegram
Домашняя автоматизация и Telegram
Домашняя автоматизация и Telegram
Домашняя автоматизация и Telegram

Мои дверные датчики связываются с моей домашней автоматизацией Openhab на моем Raspberry Pi Zero.

Основные приложения:

  • Считайте состояние двери: ОТКРЫТА или ЗАКРЫТА.
  • Оповещать меня телеграммой, если дверь открыта (если включена сигнализация или функция контроля).
  • Прочтите, когда в последний раз открывали или закрывали дверь.
  • Подсчитайте количество открытий, которое может обработать дверной датчик, прежде чем разрядится аккумулятор.

Например, если мы в отпуске, и сосед приходит полить растения, я получаю сообщение. Смотрите видео во вступлении.

Мои элементы, правила и файлы карты сайта Openhab находятся в моем Github. В этих файлах вы также можете увидеть мой дверной датчик сарая, который использует обычный проводной геркон и небольшой контактный (концевой) переключатель от 3D-принтера в проеме замка (см. Рисунки).

Здесь описано, как использовать действие Telegram в Openhab.

Шаг 5: Улучшения и дальнейшие улучшения

Улучшения и дальнейшие улучшения
Улучшения и дальнейшие улучшения
Улучшения и дальнейшие улучшения
Улучшения и дальнейшие улучшения

За последние месяцы я сделал следующее улучшение.

Обработка длинных дверных проемов с помощью импульсного сигнала с автоматическим переключением

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

Тем не менее, это иногда приводило к постоянно выключенному модулю (когда я забыл его включить) и разряженной батарее через несколько дней после открытия двери и работающего модуля (когда я забыл выключить его).

Поэтому я хотел иметь возможность выключать модуль через программное обеспечение после того, как модуль был включен в течение заданного времени (1 минута).

Однако, когда импульс «DONE» ESP-01 отключил TPL5111, когда дверь была закрыта, я обнаружил, что TPL5111 не был отключен импульсом «DONE», в то время как вывод DELAY / M_DRV был HIGH. Этот ВЫСОКИЙ сигнал на выводе DELAY / M_DRV был вызван открытой дверцей и нормально замкнутым контактом геркона, подключенным к напряжению батареи.

Таким образом, сигнал на вывод DELAY / M_DRV не должен быть постоянно ВЫСОКИМ, а должен быть импульсным. В таблице данных TPL5111 вы можете найти, что это должен быть импульс> 20 мс. Я сделал этот самопереключающийся сигнал через МОП-транзистор с P-каналом, конденсатор и резисторы 10 кОм и 300 кОм, см. Прилагаемую схему.

Это работает следующим образом:

  • Если нормально замкнутый контакт герконового переключателя замкнут, шлюз находится в НИЗКОМ состоянии, а МОП-транзистор включен, в результате чего на выводе DELAY / M_DRV появляется сигнал HIGH, который активирует модуль.
  • Конденсатор быстро заряжается, что приводит к повышению напряжения на затворе.
  • Примерно через 20 мс напряжение на затворе составляет 97% от напряжения батареи (300 кОм / (300 кОм + 10 кОм), что является ВЫСОКИМ, и Mosfet выключен, что приводит к НИЗКОМУ сигналу на выводе DELAY / M_DRV.
  • Когда вывод DELAY / M_DRV имеет значение LOW, сигнал DONE ESP-01 вызывает отключение модуля.

Это реализовано в программном обеспечении; цикл while не только проверяет, открыта ли дверь, но и проверяет, не включается ли модуль слишком долго. Если включен слишком долго, он публикует значение NULL (неопределенное состояние двери). В этом случае я не знаю, открывается дверь или закрывается, и я не достигаю всех целей, упомянутых во вступлении, но время автономной работы более важно, и в большинстве случаев мы снова открываем дверь позже в тот же день, что приводит к подтвержденному закрытому состоянию. двери.

Важно использовать МОП-транзистор с P-каналом, который подходит для используемого здесь диапазона напряжений. Mosfet должен быть полностью включен при VGS около -3,8 В и полностью выключен при VGS около -0,2 В. Я попробовал несколько Mosfet и обнаружил, что IRLML6401TRPBF отлично подходит для этой цели в сочетании с резисторами 10 кОм и 300 кОм.. Конденсатор емкостью 1 мкФ отлично подходит для получения длительности импульса около 20 мс. Конденсатор большего размера дает более длинный импульс, в чем нет необходимости, поскольку TPL5111 был активирован. Я использовал свой осциллограф DSO150, чтобы проверить напряжения и длину импульса.

Планируемое улучшение: обновление OTA

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

  • Через Openhab в NodeRed я публикую сохраненное сообщение «обновить» и «тему обновления».
  • Если модуль включен, подключен к серверу MQTT и подписан на «тему обновления», он получает сообщение об обновлении.
  • Сообщение об обновлении предотвратит выключение модуля и запустит
  • Через веб-сайт HTTPUpdateServer вы можете обновить программное обеспечение.
  • Через Openhab в NodeRed я публикую оставшееся «пустое» сообщение в «тему обновления».

Планируемое улучшение: отключение оборудования по истечении заданного времени

В текущей схеме я использую резистор 200 кОм между DELAY / M_DRV и GND TPL5111. Это включает модуль более чем на 2 часа (см. 7.5.3. Таблицы данных TPL5111). Однако я не хочу, чтобы модуль включался так долго, потому что батарея потом разряжается. Если программное решение (см. Выше) не может выключить модуль, или сообщение об обновлении непреднамеренно переводит модуль в режим обновления, модуль остается включенным в течение длительного времени.

Поэтому лучше использовать резистор меньшего размера между DELAY / M_DRV и GND TPL5111, чтобы модуль отключился через короткое время, например резистор 50 кОм, в результате чего время включения составит 7 минут.

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