Всем привет! Сегодня в этом руководстве я бы хотел показать, как запросить показания с датчика BME280 и передать их на ESP32, или ESP8266 NodeMCU, или WeMos d1 mini с помощью Telegram бота. В конце примера мы сможем запрашивать показания температуры, влажности и давления с датчика BME280 из любой точки мира, где есть интернет. Для этого нужно просто отправить сообщение своему Telegram-боту и получить от него данные.
Что нужно для проекта?
(Все компоненты можно купить у китайцев на Aliexpress)
- Плата WeMos d1 mini / NodeMCU / ESP32
- Датчик температуры и влажности BME280
- Среда для разработки Arduino IDE
Безусловно, вам нужен будет компьютер и паяльник, чтобы это всё дело собрать и прошить)
Сначала давайте создадим Telegram бота
Зайдите в Google Play или App Store, скачайте и установите Telegram.
Откройте Telegram и выполните следующие действия: Сначала найдите “botfather” и нажмите на BotFather, как показано ниже. Или откройте эту ссылку t.me/botfather в вашем смартфоне
Далее вам откроется следующее окно, и вам будет предложено нажать кнопку "/start".
Введите /newbot и следуйте инструкциям, чтобы создать своего бота. Дайте ему имя и название.
Если ваш бот будет успешно создан, вы получите сообщение со ссылкой для доступа к чату с ботом и токен бота. Сохраните его, потому что он понадобится нам, чтобы плата смогла взаимодействовать с ботом.
Теперь нам нужно получить наш ID в Teleram
Этот шаг нужен для того, чтобы никто из посторонних людей не мог взаимодействовать с ботом. (Этот пункт не обязателен, и вы можете его пропустить).
В своем аккаунте Telegram найдите “IDBot” или откройте эту ссылку t.me/myidbot в вашем смартфоне.
Начните диалог с этим ботом и введите /getid. Вы получите ответ с вашим идентификатором пользователя. Сохраните этот идентификатор пользователя, потому что он понадобится вам позже.
Приступаем к среде программирования
Если у вас не установлена Arduino IDE, то вы можете скачать её по ссылке - https://arduino-ide.com
Так как мы будем работать с платами ESP32 или ESP8266, то вам нужно установить их в среду разработки. Вот ссылки с подробным гайдом:
ESP8266 - https://wiki.iarduino.ru/page/WEMOS_start/
ESP32 - https://wiki.iarduino.ru/page/esp32-windows/
Далее нужно установить библиотеку для работы с ботом
- Зайдите в ArduinoIDE, потом Sketch > Include Library > Add.ZIP Library.
- Найдите и добавьте библиотеку, которую скачали.
Далее устанавливаем библиотеку ArduinoJson
- Зайдите в ArduinoIDE, потом Skech > Include Library > Manage Libraries.
- Найдите в поиске “ArduinoJson”.
- Установите библиотеку.
Переходим к датчику. Для него также потребуется установить библиотеки.
- Зайдите в ArduinoIDE, потом Skech > Include Library > Manage Libraries.
- Найдите в поиске “adafruit bme280”.
- Установите библиотеку.
И последняя библиотека:
- Зайдите в ArduinoIDE, потом Skech > Include Library > Manage Libraries.
- Найдите в поиске “Adafruit Unified Sensor”.
- Установите библиотеку.
Готово! Все библиотеки установлены, пора приступить к подключению датчиков
Используемый нами модуль датчика BME280 взаимодействует по протоколу связи I2C, поэтому вам необходимо подключить его к выводам I2C на ESP32 или ESP8266.
Приступим непосредственно к прошивке
- Запустите Arduino IDE
- Перейдите в Tools > Board > ESP8266 Boards (если используете wemos d1 mini, выбирайте LOLIN(WEMOS) D1 R2 & Mini)
- Выберите ваш тип платы
- Опять перейдите в Tools > Port > выберите ваш порт
Если портов несколько, то сделайте следующие 4 шага:
- Отключите плату от компьютера
- Посмотрите, какие порты присутствуют
- Подключите плату к компьютеру
- Выберите порт, который появится
Готово! Теперь можно загружать скетч
Для этого нажмите на стрелочку вверху, или используйте сочетание клавиш Ctrl + U.
А вот и сам скетч. Вам нужно его скопировать в Arduino IDE.
Как это должно работать.
После того, как мы загрузили прошивку и убедились, что плата подключилась к Wi-Fi, переходим по ссылке, которую ранее нам дал BotFather.
Пишем нашему боту команду "/start". Он поприветствует нас и предложит ввести "/readings". После того, как мы напишем эту команду, бот ответит нам данными с датчиков.
Вот и всё!
Ссылка на исходную статью: https://randomnerdtutorials.com/telegram-request-esp32-esp8266-nodemcu-sensor-readings/