
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Это не моя идея: однажды друг спросил меня, как удаленно проверить, не попадает ли в его почтовый ящик какое-либо сообщение. Почтовый ящик находится не на пути к его двери, поэтому, поскольку он ленивый мальчик, он задавался вопросом, сможет ли технологический гаджет предупреждать его о любом письме в почтовый ящик. Я посмотрел на рынок и не смог найти ни одного готового устройства, подходящего для его нужд, поэтому я поставил перед собой задачу: почему бы не спроектировать и не построить его?
Ограничения были:
- с батарейным питанием с разумным сроком службы между заменами батарей;
- Wi-Fi связь;
- проверяйте хотя бы раз в день, была ли почта;
Главный вопрос: какой датчик подходит под мои требования? Датчик приближения не мог работать, так как проверка должна была выполняться только раз в день, а не в режиме реального времени; датчик веса тоже, так как это добавило бы проблем сложности и чувствительности (лист бумаги мог бы быть очень легким). Мой выбор остановился на датчике времени полета (микролазер). После калибровки под размер почтового ящика все, что лежит посередине, сработало бы датчик! Учитывая 3 ограничения, я решил использовать ESP8266 (запуск программного обеспечения и подключение к Wi-Fi), датчик времени пролета VL6180 для измерения и часы реального времени DS3231, чтобы запускать все схемы один раз в день: вот как Родился Постино!
Шаг 1: Детали и компоненты
- ESP8266-01 (или ESP-12E NodeMCU)
- VL6108 Датчик времени пролета
- DS3231 Часы реального времени
- IRLZ44 N-канальный MosFET
- BC547 Транзистор
- Резисторы
- CR123 Батарея
Шаг 2: датчик

Сердце системы - датчик VL6180. Это новаторская технология, позволяющая измерять абсолютное расстояние независимо от отражательной способности цели. Вместо оценки расстояния путем измерения количества света, отраженного от объекта (на которое в значительной степени влияют цвет и поверхность), VL6180X точно измеряет время, необходимое свету, чтобы добраться до ближайшего объекта и отразиться обратно на датчик (Время -флайт). Комбинируя ИК-излучатель, датчик дальности и датчик внешней освещенности в готовом к использованию оплавляемом корпусе «три в одном», VL6180X легко интегрируется и избавляет производителя конечного продукта от долгой и дорогостоящей оптимизации оптической и механической конструкции.
Модуль разработан для работы с низким энергопотреблением. Я использовал коммутационную плату Pololu, на которой есть регуляторы напряжения, которые позволяют ей работать в диапазоне входного напряжения от 2,7 В до 5,5 В.
Датчик допускает 3 действительных масштабных коэффициента, которые устанавливают максимальный диапазон измерения от 20 до 60 см с различной чувствительностью. Путем настройки коэффициента масштабирования диапазона потенциальный максимальный диапазон датчика может быть увеличен за счет более низкого разрешения. Установка коэффициента масштабирования на 2 обеспечивает диапазон до 40 см с разрешением 2 мм, а коэффициент масштабирования 3 обеспечивает диапазон до 60 см с разрешением 3 мм. Вы должны протестировать 3 шкалы с размерами вашего почтового ящика. Поскольку мой был 25 см (H), я использовал масштабный коэффициент = 1.
Шаг 3. Настройка часов реального времени
Для RTC я использовал коммутационную плату DS3231, которая включает в себя EEPROM (бесполезный для моих целей) и батарею размером с монету. Поскольку я решил запитать RTC от основной батареи устройства (CR123 3 В), я удалил батарейку типа «таблетка»; Для экономии энергии я также удалил EEPROM (осторожно отрезав контакты) и бортовой светодиод.
Монетная батарейка мне не пригодилась, потому что мне не нужно было хранить дату / час / минуту / секунду в реальном времени, но RTC нужно было только отсчитывать 24 часа, а затем запускать будильник для включения устройства.
Шаг 4: Другое на борту


Включение устройства осуществляется транзистором и схемой MosFET, запускаемой сигнализацией RTC. После сброса сигнала тревоги схема отключает питание устройства еще на 24 часа. При достижении аварийного сигнала DS3231 переключает вывод с высокого на низкий: в нормальных условиях транзистор насыщается и замыкается на заземление затвора MosFET. Как только сигнал тревоги заземляет базу транзистора, он открывается и позволяет MosFET замкнуть цепь и подать питание на остальные компоненты.
Дополнительно добавил перемычку «тест-1М». Назначение этого переключателя - если он активирован - изменить цикл с одного раза в день на один раз в минуту, чтобы запускать тесты развертывания. Чтобы изменить интервал с одного дня на одну минуту, сначала необходимо замкнуть перемычку «Test-C» примерно на 15 секунд, чтобы обойти период срабатывания будильника и включить прибор. Когда тесты будут выполнены, разомкните перемычки и перезагрузите устройство (выключите и снова включите питание).
Шаг 5: Схема

Шаг 6: Программное обеспечение и логика
Во время тестов я использовал (из практических соображений) контроллер NodeMCU, поэтому программное обеспечение позаботится об этом, установив для параметра CHIP значение «NodeMCU» или «esp8266».
В скетче реализована библиотека WiFiManager, позволяющая устройству подключаться к действующей точке доступа WiFi во время самого первого запуска. В таком случае устройство переходит в режим точки доступа, что позволяет вам подключиться к нему и выбрать правильную сеть Wi-Fi для подключения. После этого конфигурация сети сохраняется в EPROM для последующих циклов.
Переменная REST_MSG содержит http-сообщение для отправки, когда датчик обнаруживает объект в почтовом ящике. В моем случае он отправляет сообщение на домотический сервер REST, но вы можете изменить его по своему усмотрению: сообщение Telegram BOT, событие IFTTT WebHook и т. Д.
Остальная часть скетча находится в функции setup (), так как цикл никогда не достигается. После настройки, необходимой для нескольких библиотек, программное обеспечение устанавливает время часов на 00:00:01 и будильник на один раз в день (или один раз в минуту, если перемычка «test-1M» активирована). Затем он производит измерение, отправляет уведомление (если в почтовом ящике обнаружен какой-либо объект) и сбрасывает пин-код сигнала тревоги, выключая устройство. В конце цикла включается только RTC, считая за 24 часа. Перемычка Test-1M подключается к контакту RX ESP8266, используемому как GPIO-3, с помощью настройки: setMode (PIN, FUNCTION_3). Из-за этого вы не можете использовать последовательный монитор во время работы ESP8266: строка «#define DEBUG» (которая разрешает все серийные отпечатки в скетче) используется только тогда, когда NodeMCU установлен вместо ESP8266.
ESP8266 обрабатывает связь I2C с часами реального времени и датчиком через свои контакты GPIO-0 и GPIO-2, инициализированные в библиотеке Wire.
Полный код можно скачать по этой ссылке.


Финалист конкурса Assistive Tech Contest
Рекомендуемые:
Что внутри сервопривода и как использовать с Arduino Полное руководство: 6 шагов

Что внутри сервопривода и как использовать его с Arduino Полное руководство: в этом руководстве давайте рассмотрим, что такое сервопривод, ознакомьтесь с этим видеоуроком
Что такое DRC?: 9 шагов

Что такое DRC?: Проверка правил проектирования (DRC) - это процесс, используемый для выявления ошибок и несоответствий, таких как интервал и amp; ширину трасс в дизайне / компоновке печатной платы. Компоновка печатной платы разрабатывается с использованием программного обеспечения, у каждого изготовителя печатной платы есть набор правил, которые они публикуют
Экспрессионный робот - если это то, что: 5 шагов

Робот Expression - If This Than That: Hallo en welkom bij mijn Робот Expression Instructable.De - это обучающий робот, который можно проинструктировать. . De robot co
Итак, вы загружаете загрузчик STM32duino в свою «синюю таблетку» Итак, что теперь?: 7 шагов

Итак, вы загружаете загрузчик STM32duino в свою «синюю таблетку» … Итак, что теперь ?: Если вы уже читали мои инструкции, объясняющие, как загрузить загрузчик STM32duino или любую другую аналогичную документацию, вы пытаетесь загрузить пример кода и … может быть ничего Проблема в том, что многие, если не все примеры для "Generic" STM32 wil
Саймон говорит, что игра: 13 шагов

Simon Says Game: Добро пожаловать в мою игру Simon говорит !! Эта непреодолимая задача поможет вам создать игру Simon Say на tinkercad