Оглавление:

Датчик движения ESP-01 с функцией глубокого сна: 5 шагов
Датчик движения ESP-01 с функцией глубокого сна: 5 шагов

Видео: Датчик движения ESP-01 с функцией глубокого сна: 5 шагов

Видео: Датчик движения ESP-01 с функцией глубокого сна: 5 шагов
Видео: ESP8266 режим глубокого сна deep sleep, web интерфейс и отправка email 2024, Ноябрь
Anonim
Image
Image

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

Код и возможная схема схемы были собраны из многочисленных источников в Интернете, и я не думаю, что могу их конкретно идентифицировать. Идея отправки электронных писем через Gmail пришла из инструктируемых и других источников, и окончательный код представляет собой смесь этих источников. Переход от глубокого сна к работе вёл меня по многим путям, которые часто оказывались бесплодными. Забавно то, что как только путь оказывается плодотворным, вы перестаете искать новые пути. Поэтому я говорю спасибо всем тем, кто внес свой вклад в мой успех, но пока неизвестен.

У меня была такая же проблема, когда датчик PIR работал при запуске глубокого сна ESP-01. Много путей, пока не нашлась одна, которая работала.

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

ESP-01 выполняет глубокий сон, как и любой другой модуль ESP8266, если вам не требуется спящий режим по времени. Если вы хотите, чтобы модуль просыпался по истечении установленного времени, ESP-01 не подходит для использования. Но я не этого хотел. Прошедшее время бессмысленно при использовании PIR. Я хотел, чтобы ESP-01 просыпался только при срабатывании движения, обнаруженного PIR. Если движение не ощущается в течение нескольких часов или дней, ESP-01 остается в спящем режиме, используя минимальный заряд батареи.

Вы увидите множество схем, использующих GPIO16, подключенных к ESP8266 Reset, потому что GPIO16 является сигналом пробуждения. Это правда, но это сигнал пробуждения из спящего по времени. Мы можем игнорировать этот PIN-код, и это хорошо, потому что он недоступен на ESP-01.

По сути, все, что нам нужно, это получить сигнал от PIR для запуска вывода сброса ESP-01. Первая сложность, о которой вы можете предположить, заключается в том, что сброс срабатывает при НИЗКОМ сигнале, а PIR отправляет ВЫСОКИЙ сигнал при срабатывании триггера. Сброс также должен быть ВЫСОКИМ или плавать при загрузке. Чтобы не усложнять задачу, попробовав несколько разных схем, я решил использовать NPN-транзистор с подтягивающим резистором, чтобы удерживать вывод RESET в ВЫСОКОМ состоянии во время загрузки. Выходной сигнал PIR минимален, но он обеспечивает достаточный базовый ток для включения транзистора.

Как вы увидите на принципиальной схеме ниже, ESP-01 выходил из глубокого сна каждый раз, когда датчик движения обнаруживал движение.

Но возникла другая проблема. Сброс ESP-01 произошел только после того, как PIR перестал определять движение и вернулся к низкому уровню сигнала, выключив транзистор и вернув контакт сброса в HIGH из-за подтягивающего резистора. Это будет означать, что электронное письмо не будет отправлено, и зуммер не будет активирован до тех пор, пока ПОСЛЕ того, как PIR перестанет обнаруживать движение. Я хотел, чтобы спусковой крючок сработал, как только было обнаружено движение.

Из этого поведения я определил, что ESP-01 фактически срабатывает по нарастающему фронту сигнала. Удерживание контакта сброса на земле на самом деле не запускает ESP-01 из глубокого сна, но в тот момент, когда напряжение повышается до сигнала HIGH, происходит сброс.

Моим очень простым ответом на такое поведение было добавление конденсатора к линии между выходом PIR и базой транзистора. Это привело к включению транзистора только во время зарядки конденсатора. После зарядки больше не было тока, и транзистор выключился. Резистор 5 кОм позволяет току стекать на землю. Я протестировал это с помощью светодиода вместо ESP-01 и увидел, что светодиодная вспышка включается на долю секунды, прежде чем выключиться. Этого небольшого импульса было достаточно, чтобы на мгновение притянуть штифт сброса к земле, и достаточно долго, чтобы вызвать сброс из глубокого сна.

Шаг 1: Модуль глубокого сна ESP-01

Модуль глубокого сна ESP-01
Модуль глубокого сна ESP-01
Модуль глубокого сна ESP-01
Модуль глубокого сна ESP-01

Модуль глубокого сна использует два рабочих напряжения. Случайные 5 В + аккумуляторной батареи для PIR, а также плата регулятора 3,3 В для ESP-01. Я также включил в схему диод, чтобы предотвратить обратное напряжение поврежденных частей. Это требует немного дополнительной мощности и снижает напряжение аккумуляторной батареи на 0,7 В. Диод можно исключить из схемы, если вы уверены, что никогда не перепутаете провода аккумуляторной батареи. Переключатель также добавлен для удобства.

Этот модуль является незначительным обновлением моей исходной схемы без глубокого сна. В конфигурации без глубокого сна PIR напрямую подключен к контакту RX ESP-01. Я использую вывод RX ESP-01 в качестве входного вывода для PIR по нескольким причинам. GPIO0 не работал, потому что при загрузке выходной PIN-код PIR был LOW, что привело к переходу ESP-01 в режим флэш-памяти. Я не использовал GPIO2, потому что тогда я не мог использовать встроенный светодиод для визуальной обратной связи. Выводы RX и TX часто называют дополнительными выводами ввода-вывода, но мой опыт показывает, что RX - это дополнительный вывод INPUT, а TX - дополнительный вывод OUTPUT.

В конфигурации глубокого сна соединение RX не является строго необходимым. Я использую его только для отслеживания того, как долго PIR срабатывает, включив светодиод, когда входной сигнал ВЫСОКИЙ. Как упоминалось ранее, если вы отключите функцию цикла и используете только процедуру настройки, то соединение RX не потребуется.

Вот список деталей модуля глубокого сна ESP-01:

1 - Прототип печатной платы 5 x 7 см

1-2 контактный разъем

2 - 1 x 3 разъема с внутренней резьбой

1 - AMS1117 - Плата регулятора напряжения 3.3

1 - 1 x 3 штифт с прямоугольной вилкой

1 - 1 x 3 штырька гнездового разъема

1 - 1 x 4 штыря гнездового разъема

1 - 2 x 4 разъема с внутренней резьбой

1 - конденсатор 1 мкФ

1 - ИК-датчик движения HC-SR501

1 - 2N2222 Транзистор

1 - резистор 10 кОм

1 - резистор 4,7 кОм

1 - резистор 1 кОм

1 - диод 1N4148

1 - переключатель SS12D00G4 SPDT

1 - ESP-01

1 - Аккумулятор 4AA

Обратите внимание, что на видео на плате используется адаптер макетной платы ESP-01 вместо разъема 2 x 4. Хотя этот адаптер легче припаять, разъем 2 x 4 работает нормально и лучше подходит.

Шаг 2: Код глубокого сна ESP-01

Код Deep Sleep выполняет две функции. Отправьте сообщение электронной почты (по умолчанию через Gmail) и отправьте веб-запрос http на связанный модуль зуммера ESP-01, чтобы вызвать зуммер.

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

Вам нужно будет обновить шесть строк кода с вашими конкретными значениями, чтобы скетч заработал:

const char * ssid = "ххххх"; // Ваш WiFi SSIDconst char * password = "xxxxx"; // Строка пароля WiFi Senders_Login = "xxxxx"; // логин вашего почтового провайдера String Senders_Password = "xxxxx"; // пароль вашего почтового провайдера

Кому = "хххххх"; From = "xxxxxx"; // Gmail обычно предпочитает, чтобы он был таким же, как Senders_Login, и может заменять

Я обнаружил, что модуль глубокого сна работает непредсказуемо, когда датчик PIR был установлен на менее 10 секунд для продолжительности триггерного события. У меня установлен на 20 секунд. Это оказалось очень надежным, но это также означает, что запускающие события могут происходить с такой частотой.

Я также добавил код к функции цикла, чтобы индикатор ESP-01 оставался включенным, пока PIR все еще обнаруживает движение. Весь код в функции цикла можно удалить, а вызов глубокого сна переместить в конец функции настройки.

Я использую функцию мигания для визуального индикатора активности с модулем ESP-01.

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

Если вы решите использовать более одного модуля зуммера, просто добавьте дополнительные вызовы http-клиента (повторите три строки кода, но измените используемый IP-адрес, а также определите переменную httpCode как int один раз!

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

Шаг 3: Модуль зуммера ESP-01

Модуль зуммера ESP-01
Модуль зуммера ESP-01
Модуль зуммера ESP-01
Модуль зуммера ESP-01
Модуль зуммера ESP-01
Модуль зуммера ESP-01

Модуль зуммера имеет довольно простую настройку. Он использует разъем USB вместо батарейного блока, потому что я не думаю, что этот модуль подходит для батарейного блока. Он должен оставаться включенным, а ньюорк / Wi-Fi всегда быть подключенным, потому что он никогда не знает, когда будет сделан веб-запрос. Для этого требуется больше непрерывной энергии, чем можно использовать с аккумуляторными батареями.

Модули зуммера можно удобно разместить в нескольких местах, обеспечивая уведомление о срабатывании датчика движения независимо от того, где вы находитесь!

Зуммер подключается к 5-вольтовому разъему USB, и есть еще одна плата регулятора 3,3 В, обеспечивающая питание ESP-01.

Модуль зуммера будет работать с использованием TX, GPIO0 или GPIO2 для вывода. В моей конфигурации я использую GPIO0. (На изображении модуля провод подключен к GPIO2, но с тех пор я его переместил.) Хотя GPIO0 не работал с модулем глубокого сна (как ВХОД), он отлично работает с этой компоновкой как ВЫХОД. Он не заземляется при загрузке, что может вызвать проблемы. Я действительно использовал GPIO2, но тогда я не мог использовать встроенный светодиод для какой-либо обратной связи, но, используя GPIO0 для OUTPUT, я могу использовать встроенный светодиод.

Я попытался использовать транзистор NPN для питания зуммера в цепи, когда ESP-01 подал сигнал HIGH на вывод GPIO0, но результаты были ужасно противоречивыми. Зуммер, казалось, хотел звучать постоянно, даже при очень малой мощности. Поэтому вместо этого я использовал N-канальный MOSFET (2n7000), и результат был потрясающим. Вывод IO управляет воротами по мере необходимости.

В то время как нам нужны только два контакта от USB-разъема Vcc (+) и Gnd (-), я использую 5-контактный разъем для подключения к плате PCB для дополнительной стабильности и для пайки перед подключением USB к регулятору. Моя плата регулятора 3,3 В шла с предустановленными контактами и, на мой взгляд, перевернута. Таким образом, если вставить регулятор в контакты разъема, вы можете увидеть, что печатная плата скрыта, но, что еще хуже, vcc и gnd на регуляторе поменяны местами с vcc и gnd на разъеме USB. Итак, провода перекрещиваются.

Также обратите внимание, что + питание активного зуммера поступает от 5В USB. Кроме того, 4-контактный гнездовой разъем прекрасно сочетается с расположением контактов зуммера.

Список частей модуля зуммера ESP-01:

1-5 печатная плата x 7

1 - мини-разъем USB с контактными заголовками (7 контактов)

2 - 1 x 3 разъема с внутренней резьбой

1 - Плата регулятора напряжения AMS1117-3,3 В

1 - 2 x 4 разъема с внутренней резьбой

2 - 1 x 4 гнездовых разъема

1 - 2N7000 N-канальный полевой МОП-транзистор

Резистор 1-10 Ом

1–5 В активный зуммер

Шаг 4: Код модуля зуммера ESP-01

Модуль зуммера действует как простой веб-сервер ESP-01. Он отвечает простым сообщением на корневой запрос, и когда он получает запрос на жужжание, он запускает зуммер. GPIO0 используется для вывода GPIO для сигнала зуммера.

Обратите внимание, что ESP-01 настроен с жестко заданным IP-адресом. Это необходимо для того, чтобы модуль глубокого сна был связан с адресом зуммера.

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

// SSID и пароль вашего WiFi-роутераconst char * ssid = "xxxxxxx";

const char * пароль = "хххххххх";

Если у вас создано несколько модулей зуммера, каждый должен быть загружен с собственным уникальным IP-адресом.

Вы также можете добавить различные методы зуммера, которые производят разные мелодии зуммера. Например, если у вас есть датчик PIR на входной двери и один на задней двери, каждый из них может сделать веб-запрос к каждому из ваших модулей зуммера, но один датчик может иметь эскиз, который вызывает гудение, а другой эскиз может вызывать buzz2 так что по звуку можно определить, какой датчик сработал. И так далее, и так далее! Функция buzz2 не существует, просто скопируйте функцию buzz и измените значения задержки.

Для веб-сервера вам просто нужно добавить такую строку кода:

server.on ("/ buzz2", buzz2);

Шаг 5: Заключительные мысли

Это мое первое руководство, поэтому я, возможно, пропустил некоторые практические вещи, которые мне следовало включить. На плате регулятора AMS1117-3.3, которую я использовал, есть крошечный светодиод, который загорается при включении. Что касается модуля глубокого сна, я не хотел, чтобы он включался и потреблял энергию без надобности. Поэтому я распаял то, что мог, на одной стороне светодиода на плате, а затем с помощью универсального ножа перерезал линию трассировки. Это оказалось проще, чем я думал, и предотвращает загорание светодиода. Я не смог определить, какова потребляемая мощность, когда ESP-01 находится в глубоком сне, но я могу получить ответ через несколько недель. Мой коллега запускал датчик (не в глубоком сне) и обнаружил, что батареи разряжены (5AA) примерно через неделю. Думаю, на такую настройку нужно дать месяц или даже больше. Мы увидим.

Модуль глубокого сна стоит около 8 канадских долларов по частям (батарейки в комплект не входят!), А модуль зуммера - 5 долларов.

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