Приветствую всех!
В последнее время я был немного занят, так как посвятил всё своё свободное время изучению создания скетчей для микроконтроллеров Ардуино в среде Arduino IDE. Теперь я готов поделиться с вами своими наработками и представить вам уникальный проект – IoT-устройство для отслеживания движения с интеграцией Telegram.
Этот проект основан на использовании PIR-датчика (датчика движения) и позволяет создать систему мониторинга, которая будет оповещать вас о любых движениях через Telegram-бота. Ниже я подробно расскажу о том, как работает скетч и как вы можете создать его самостоятельно.
Схема проекта:
Ещё для создания подобного проекта вам потребуется создать Телеграм-Бота, плата-микроконтроллер ESP8266, PIR-датчик, провода и немного времени.
Создание бота в Telegram:
Создание Telegram-бота — это увлекательный процесс, который требует базовых знаний программирования и понимания API Telegram (если описание для вас не понятно, в сети вы найдете более подробные инструкции).
- Откройте Telegram и найдите бота BotFather (@BotFather).
- Начните диалог с BotFather и используйте команду /newbot.
- Следуйте инструкциям:
Укажите имя бота (например, MyTestBot).
Укажите username бота (должен заканчиваться на bot, например, MyTestBot_bot). - После создания бота BotFather предоставит вам токен доступа. Сохраните его, он понадобится для подключения к API Telegram.
Описание скетча для ESP8266
1. Подключение библиотек
- ESP8266WiFi.h: Библиотека для работы с Wi-Fi на микроконтроллере ESP8266.
- WiFiClientSecure.h: Библиотека для безопасного подключения к интернету через SSL/TLS.
- UniversalTelegramBot.h: Библиотека для взаимодействия с Telegram API, позволяющая отправлять и получать сообщения через Telegram-бота.
2. Настройка параметров сети и Telegram-бота
- WIFI_SSID и WIFI_PASSWORD: Указываются имя и пароль вашей Wi-Fi сети.
- BOT_TOKEN: Токен вашего Telegram-бота, который вы получаете при создании бота через BotFather (описано выше).
- CHAT_ID: ID вашего чата в Telegram, куда будут отправляться уведомления. Это должен быть ID пользователя, а не группы.
* Получите ID пользователя: Напишите боту напрямую в Telegram, а затем получите свой ID, используя бота @userinfobot. Замените CHAT_ID на свой ID пользователя.
- BOT_MTBS: Время (в миллисекундах) между проверками новых сообщений от Telegram.
3. Инициализация переменных и объектов
- cert(TELEGRAM_CERTIFICATE_ROOT): Сертификат для безопасного подключения к Telegram API.
- secured_client: Объект для безопасного подключения к интернету.
- bot: Объект Telegram-бота, который будет использоваться для отправки и получения сообщений.
- PIR_PIN: Пин, к которому подключен PIR-датчик (в данном случае D5).
- previousPirState: Переменная для хранения предыдущего состояния PIR-датчика.
4. Функция `handleNewMessages`
Эта функция обрабатывает входящие сообщения от пользователя в Telegram:
- Если получена команда `/status`, бот проверяет текущее состояние PIR-датчика и отправляет сообщение о наличии или отсутствии движения.
- Если получена команда `/start`, бот отправляет приветственное сообщение с инструкциями по использованию.
5. Функция `setup`
- Инициализация последовательного порта для отладки.
- Настройка пина PIR-датчика как входного.
- Подключение к Wi-Fi сети с использованием указанных SSID и пароля.
- Настройка времени через NTP-сервер (для корректной работы SSL/TLS).
- Ожидание стабилизации PIR-датчика (1 минута).
6. Функция `loop`
- Проверка новых сообщений от Telegram каждую секунду (BOT_MTBS).
- Если соединение с Wi-Fi потеряно, происходит попытка переподключения.
- Постоянное чтение состояния PIR-датчика.
- Если состояние PIR-датчика изменилось (обнаружено движение), бот отправляет уведомление в Telegram.
7. Логика работы PIR-датчика
- PIR-датчик подключен к пину D5. Когда датчик обнаруживает движение, он меняет свое состояние с LOW на HIGH.
- Если состояние изменилось, бот отправляет сообщение в Telegram о том, что движение обнаружено.
- Состояние датчика сохраняется в переменной `previousPirState`, чтобы избежать повторных уведомлений при непрерывном движении.
8. Обработка ошибок
- Если не удается подключиться к Wi-Fi, программа зависает в бесконечном цикле.
- Если не удается получить время с NTP-сервера, программа также зависает.
- В случае ошибки отправки сообщения в Telegram, информация об этом выводится в Serial Monitor.
9. Отправка уведомлений
- Когда PIR-датчик обнаруживает движение, бот отправляет сообщение в Telegram с текстом "Движение обнаружено!".
- Пользователь также может запросить текущий статус движения, отправив команду `/status`.
10. Задержка и стабилизация
- После включения устройства PIR-датчик требует времени для стабилизации (около 1 минуты), чтобы избежать ложных срабатываний.
11. Отладка
- Вся информация о состоянии устройства, подключении к Wi-Fi, отправке сообщений и состоянии PIR-датчика выводится в Serial Monitor (при желании режим отладки можно убрать).
12. Использование
- После загрузки скетча на ESP8266 с помощью Arduino IDE, устройство подключается к Wi-Fi и начинает мониторить движение.
- Пользователь может взаимодействовать с ботом через Telegram, отправляя команды `/start` и `/status`.
Заключение
Этот скетч позволяет создать простую систему мониторинга движения с уведомлениями через Telegram.
Он может быть использован для домашней автоматизации, безопасности или других проектов, где требуется отслеживание движения и удаленное уведомление. Если нужно этот скетч можно модернизировать и добавить дополнительные средства визуального контроля (светодиоды, пищалку).
Ссылка на готовый скетч с фото и описанием:
Готовая программа в Телеграм отображается так:
Вот и все, о чем сегодня я хотел рассказать. Надеюсь, что у вас все получилось и вы смогли создать своего телеграм-бота. Если у вас возникли трудности или вопросы в процессе, не стесняйтесь искать дополнительную информацию или обращаться за помощью.
Помните, что программирование — это путь постоянного обучения и экспериментов. Ваш первый бот — это лишь начало. Возможно, в будущем вы создадите что-то еще более удивительное и полезное.
И ещё, если Вы решили всерьез погрузиться в мир Arduino, я настоятельно рекомендую приобрести:
Набор для начинающих Starter Kit Arduino с Arduino Uno R3 — это идеальный старт для тех, кто хочет погрузиться в мир электроники и программирования. Включающий всё необходимое для первых шагов, он содержит Arduino Uno — микроконтроллер, USB-кабель для подключения к компьютеру, макетную плату на 830 контактов, светодиоды разного цвета, набор резисторов и множество других компонентов.
Этот набор создан для обучения через практику, помогая быстро освоить работу с Arduino. Он минимизирует сложность, предлагая только самые необходимые компоненты для успешного старта, и при этом оставляет возможность для расширения и добавления новых элементов по мере роста ваших знаний и интересов.
С Набором для начинающих с Arduino Uno R3 вы сможете создавать разнообразные проекты, от простых визуальных эффектов до сложных интерактивных систем, и получить базовые знания по работе с Arduino.
Спасибо за внимание и до новых встреч! Желаю вам успехов в ваших начинаниях и новых творческих побед.
Ставьте 👍, если считаете, что статья была полезна.
Подписывайтесь на канал, будете оперативно узнавать о выходе нового материала.
Подписывайтесь на Телеграм-канал, чтобы не пропустить выход новой статьи.