Оглавление:
- Запасы
- Шаг 1. Схема и исходный код
- Шаг 2: Работа схемы
- Шаг 3. Проверка работоспособности
- Шаг 4: Измерение мощности и срок службы батареи
- Шаг 5: Будущие улучшения
Видео: Беспроводной дверной датчик - сверхнизкое энергопотребление: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Еще один дверной датчик !! Что ж, мотивация для создания этого датчика заключалась в том, что многие из тех, что я видел в Интернете, имели то или иное ограничение. Некоторые из целей датчика для меня:
1. Датчик должен быть очень быстрым - желательно менее 5 сек.
2. Датчик должен работать от литий-ионного аккумулятора 3,7 В, так как у меня их десятки валяются.
3. Датчик должен проработать много месяцев от одной зарядки аккумулятора. В спящем режиме он должен потреблять <10 мкА
4. Датчик должен иметь возможность просыпаться для передачи важных данных, таких как состояние батареи, даже если дверь не используется в течение длительного времени.
5. Датчик должен передавать данные в тему MQTT, когда дверь открыта, а также когда дверь закрыта.
6. Датчик должен потреблять одинаковое количество энергии независимо от состояния двери.
Работа датчика:
Датчик имеет 2 основных контроллера. Первый - миниатюрный микроконтроллер ATiny 13A. Второй - это ESP, который обычно находится в спящем режиме и просыпается только тогда, когда ATiny включает его. Вся схема также может быть создана с помощью только ESP, используя его в спящем режиме, но потребляемый им ток намного больше, чем необходимо для работы батареи в течение нескольких месяцев, поэтому ATTiny приходит на помощь. Он служит только для того, чтобы просыпаться каждые N секунд, искать событие двери или событие проверки работоспособности, если оно есть, оно удерживает вывод CH_PD ESP на HIGH и отправляет соответствующий сигнал типа события в ESP.. На этом его роль заканчивается.
Затем ESP берет на себя управление, считывает тип сигнала, подключается к Wi-Fi / MQTT, публикует необходимые сообщения, включая уровень заряда батареи, а затем выключается, переводя контакт EN обратно в LOW.
Используя эти микросхемы таким образом, я использую низкий ток ожидания ATtiny и нулевой ток холостого хода ESP, когда микросхема отключена через вывод CH_PD.
Запасы
Предварительные требования:
- Знание программирования ATTiny & ESP 01
- Знание пайки компонентов на печатной плате
ESP-01 (или любой ESP)
ATTiny 13A - AVR
LDO 7333-A - Регулятор напряжения с малым падением напряжения
Резисторы - 1К, 10К, 3К3
Конденсаторы: 100 мкФ, 0,1 мкФ
Кнопочный переключатель, микровыключатель ВКЛ / ВЫКЛ - (оба опционально)
Диод - IN4148 (или любой аналог)
Литий-ионный аккумулятор
Геркон
Случай, чтобы вместить все это
Припой, печатная плата и т. Д.
Шаг 1. Схема и исходный код
Схема такая, как показано на прилагаемой диаграмме.
Я включил полевой МОП-транзистор с каналом P для защиты от обратной полярности. Если вам это не нужно, вы можете пропустить его. Подойдет любой полевой МОП-транзистор с каналом P с низким значением Rds.
В настоящее время ESP не поддерживает OTA, но это необходимо для улучшения в будущем.
Исходный код smart-door-sensor
Шаг 2: Работа схемы
ATTiny Рабочий процесс
Волшебство здесь происходит в том, как ATTiny отслеживает положение дверного переключателя.
Обычным вариантом было бы присоединить к переключателю подтягивающий резистор и следить за его состоянием. Обратной стороной этого является постоянный ток, потребляемый подтягивающим резистором. Этого удалось избежать благодаря тому, что я использовал два контакта для контроля переключателя, а не один. Я использовал здесь PB3 и PB4. PB3 определен как вход, а PB4 как выход с внутренним INPUT_PULLUP на PB3. Обычно PB4 находится в состоянии ВЫСОКОГО уровня, когда ATtiny находится в спящем режиме. Это гарантирует отсутствие протекания тока через входной подтягивающий резистор независимо от положения геркона. т.е. Если переключатель замкнут, оба PB3 и PB4 имеют ВЫСОКИЙ уровень, поэтому между ними не течет ток. Если переключатель разомкнут, то между ними нет пути, поэтому ток равен нулю. Когда ATtiny просыпается, он пишет LOW на PB4, а затем проверяет состояние PB3. Если PB3 ВЫСОКИЙ, герконовый переключатель ОТКРЫТ, иначе он ЗАКРЫТ. Затем он записывает HIGH на PB4.
Связь между ATtiny и ESP осуществляется через два контакта PB1 / PB2, подключенных к Tx / RX ESP. Я определил сигнал как
PB1 PB2 ====== Tx Rx
0 0 ====== WAKE_UP (проверка работоспособности)
0 1 ====== SENSOR_OPEN
1 0 ====== ДАТЧИК_ ЗАКРЫТ
1 1 ====== НЕ ИСПОЛЬЗУЕТСЯ
Помимо отправки сигнала на ESP, он также отправляет HIGH-импульс на PB0, который подключен к выводу ESP CH_PD. Это пробуждает ESP. Первым делом ESP удерживает GPIO0 HIGH, который подключен к CH_PD, тем самым обеспечивая его включение, даже если ATTiny забирает PB0 HIGH. Теперь управление осуществляется ESP, чтобы определить, когда он хочет выключить питание.
Затем он подключается к Wi-Fi, MQTT, отправляет сообщение и выключается, записывая LOW на GPIO0.
ESP 01 Рабочий процесс:
Поток ESP прямолинейный. Он просыпается и считывает значения контактов Tx / Rx, чтобы определить тип сообщения, которое должно быть отправлено. Подключается к Wi-Fi и MQTT, отправляет сообщение и отключается.
Перед выключением он снова проверяет значения входных контактов, чтобы увидеть, изменились ли они с момента последнего чтения. Это необходимо для быстрого открытия и закрытия двери. Если у вас нет этой проверки, то в некоторых случаях вы можете пропустить закрытие двери, если она закрывается в течение 5-6 секунд после открытия. Практический сценарий открытия и закрытия двери в течение 2 секунд или около того хорошо фиксируется циклом while, который продолжает отправлять сообщения до тех пор, пока текущее состояние двери отличается от предыдущего. Единственный сценарий, который он может пропустить, чтобы записать все события открытия / закрытия, - это когда дверь многократно открывается / закрывается в течение 4-5 секунд, что является очень маловероятным случаем - возможно, это случай, когда какой-то ребенок играет с дверью.
Шаг 3. Проверка работоспособности
Мне также нужен был способ получить сообщение о проверке работоспособности от ESP, где он также отправляет уровень заряда батареи ESP, чтобы убедиться, что датчик работает нормально без ручного осмотра. Для этого ATTiny отправляет сигнал WAKE_UP каждые 12 часов. Его можно настроить с помощью переменной WAKEUP_COUNT в коде ATtiny. Это очень полезно для дверей или окон, которые редко открываются, и поэтому вы можете никогда не узнать, если что-то не так с датчиком или его батареей.
Если вам не нужна функция проверки работоспособности, тогда не нужна вся концепция использования ATTiny. В этом случае вы можете найти другие конструкции, созданные людьми, в которых питание ESP подается через полевой МОП-транзистор, и поэтому вы можете достичь нулевого потребления тока, когда дверь не работает. Есть и другие вещи, о которых нужно позаботиться, например, чтобы ток был одинаковым в положениях открытой и закрытой двери - для этого я где-то видел конструкцию, в которой использовался герконовый переключатель с 3 состояниями вместо обычного 2 состояния.
Шаг 4: Измерение мощности и срок службы батареи
Я измерил ток, потребляемый схемой, и он требует ~ 30 мкА во время сна и во время сна. Судя по таблицам данных ATTiny, он должен составлять около 1-4 мкА для всей цепи, включая ток покоя LDO, но тогда мои измерения показывают 30. MOSFET и LDO потребляют незначительный ток.
Так что батареи на 800 мАч должно хватить надолго. У меня нет точной статистики, но я использую его на 2 своих дверях уже более года, и каждая ячейка 18650 с примерно 800 мАч, оставшаяся в них, прослужит около 5-6 месяцев на моей главной двери, которая открывается и закрывается в не менее 30 раз в сутки. Та, что на крышной двери, открывается всего несколько раз в неделю, длится 7-8 месяцев.
Шаг 5: Будущие улучшения
1. ESP не подтверждает доставку сообщения MQTT. Программу можно улучшить, подписавшись на тему, в которой публикуется сообщение для подтверждения доставки, или можно использовать библиотеку Async MQTT для публикации сообщения с QoS 1.
2. Обновление OTA: код ESP можно изменить, чтобы прочитать тему MQTT для обновления и, таким образом, перейти в режим OTA для получения файла.
3. ESP01 можно заменить на ESP-12, чтобы получить доступ к большему количеству входных PIN-кодов и, таким образом, к нему можно подключить больше датчиков. В этом случае связь через 2-битный метод невозможна. Затем это можно улучшить, чтобы реализовать связь I2C между ATtiny и ESP. Это немного сложно, но возможно. У меня он работает в другой настройке, где ATTiny отправляет значения поворотного энкодера в ESP по линии I2C.
4. Токовая цепь контролирует внутренний Vcc ESP. Если мы используем ESP12, то это можно изменить, чтобы считывать фактический уровень заряда батареи через вывод ADC.
5. В будущем я также опубликую модификацию этого датчика, который можно будет использовать в качестве автономного датчика без необходимости использования MQTT или какой-либо системы домашней автоматизации. Датчик будет работать автономно и может совершать телефонные звонки при срабатывании - конечно, для этого требуется подключение к Интернету.
6. И этот список можно продолжить…
7. Обратная защита аккумулятора - ВЫПОЛНЕНО (на самом деле изображения устройства старые и не отражают MOSFET)
Рекомендуемые:
Изготовленный на заказ дверной коврик Дверной звонок: 6 шагов
Пользовательский дверной коврик срабатывает дверной звонок: Здравствуйте! Меня зовут Джастин, я учусь в средней школе, и это руководство покажет вам, как сделать дверной звонок, который срабатывает, когда кто-то наступает на ваш коврик, и может быть любой мелодией или песней, которую вы хотите! Поскольку дверной коврик запускает дверь
Превратите проводной дверной звонок в умный дверной звонок с IFTTT: 8 шагов
Превратите свой проводной дверной звонок в умный дверной звонок с IFTTT: WiFi Doorbell превращает ваш существующий проводной дверной звонок в умный дверной звонок. https://www.fireflyelectronix.com/product/wifidoor
Как правильно измерить энергопотребление модулей беспроводной связи в эпоху низкого энергопотребления?: 6 шагов
Как правильно измерить энергопотребление модулей беспроводной связи в эпоху низкого энергопотребления ?: Низкое энергопотребление - чрезвычайно важная концепция в Интернете вещей. Большинство узлов Интернета вещей нуждаются в питании от батарей. Только правильно измерив энергопотребление беспроводного модуля, мы сможем точно оценить, сколько заряда батареи я
Превратите проводной дверной звонок в умный дверной звонок с помощью домашнего помощника: 6 шагов
Превратите свой проводной дверной звонок в умный дверной звонок с помощью домашнего помощника: превратите свой проводной дверной звонок в умный дверной звонок. Получите уведомление на свой телефон или подключитесь к существующей камере на входной двери, чтобы получать фото или видео оповещение каждый раз, когда кто-то звонит в ваш дверной звонок. Подробнее на: fireflyelectronix.com/pro
Взломайте беспроводной дверной звонок в переключатель беспроводной сигнализации или переключатель включения / выключения: 4 шага
Взломайте беспроводной дверной звонок в переключатель беспроводной сигнализации или переключатель включения / выключения: недавно я построил систему сигнализации и установил ее в своем доме. Я включил магнитные выключатели на дверях и подключил их через чердак. Окна - это совсем другое дело, и жесткая проводка их не подходила. Мне нужно было беспроводное решение, а это