Установка библиотеки Telegram bot

#include #include #include char TelegrammBOTtoken[50] = «165476586:AAH01HfdhytjhmDSHnpZuUoi6YwLzqaIpVPs»;// https://api.telegram.org/bot165476586:AAH01HfdhytjhmDSHnpZuUoi6YwLzqaIpVPs/getMe String Messange = «Сообщение !»; void setup() < Serial.begin(115200); WiFi.mode(WIFI_STA);// WiFi.begin(«ssid», «pass»); while (WiFi.status() != WL_CONNECTED) < delay(500); Serial.print(«.»); >Serial.println(); Serial.println(«UserName: » + UserName()); Serial.println(«chatid: » + String(chatid())); SendMessage(chatid(), UserName() + Messange); // Тут отправляем сообщение. chatid() необходимо запомнить и вставлять сюда uint32_t вместо chatid() что значительно ускорит работу. UserName() тоже нужно заранее запоминать если будем обращаться по имени. ESP.deepSleep(0, RF_NO_CAL); > void loop() <> String telegramPOST(String jsonarr) < std::unique_ptrclient(new BearSSL::WiFiClientSecure); client->setInsecure(); HTTPClient https; String token = TelegrammBOTtoken; if (https.begin(*client, «https://api.telegram.org/bot» + token + «/»)) < // HTTPS https.addHeader(«Content-Type», «application/json»); https.POST(jsonarr); String Answer = https.getString(); //Serial.println(Answer); https.end(); return Answer; >> uint32_t chatid() < StaticJsonDocumentdoc; // Создаем и наполняем json для последующей отправки на сервер doc[«method»] = «getUpdates»; doc[«offset»] = -1; //Для проверки последнего сообщения DynamicJsonDocument Answer(1532); deserializeJson(Answer, telegramPOST(doc.as())); // Парсим JSON-содержимое ответа сервера // serializeJsonPretty(Answer, Serial); Serial.println(); return Answer[«result»][0][«message»][«chat»][«id»];//id > String UserName() < StaticJsonDocumentdoc; // Создаем и наполняем json для последующей отправки на сервер doc[«method»] = «getUpdates»; doc[«offset»] = -1; //Для проверки последнего сообщения DynamicJsonDocument Answer(1532); deserializeJson(Answer, telegramPOST(doc.as())); // Парсим JSON-содержимое ответа сервера //const char* first_name = Answer[«result»][0][«message»][«from»][«first_name»]; return Answer[«result»][0][«message»][«from»][«first_name»];//id > void SendMessage(uint32_t chatid, String message) < StaticJsonDocumentdoc; // Создаем и наполняем json для последующей отправки на сервер doc[«method»] = «sendMessage»; doc[«chat_id»] = chatid; doc[«text»] = message; DynamicJsonDocument Answer(1532); deserializeJson(Answer, telegramPOST(doc.as())); // Парсим JSON-содержимое ответа сервера analogWrite(LED_BUILTIN, 0); >

1612292164293.png

Telegram Bot на Python | Часть 1. Наш первый телеграм-бот на библиотеке-обёртке python telegram bot

vrd

Member

А без бота можно использовать этот код как сериал, для отладки?

p-a-h-a

Member

А без бота можно использовать этот код как сериал, для отладки?

p-a-h-a

Member

А без бота можно использовать этот код как сериал, для отладки?

Хорошая идея. Реализовал ее по минимуму сейчас. Все что нужно — зарегистрировать бота и получить api ключ. Написать новоиспеченному боту /start и из прошлого кода узнать chat_id. Далее отправку debug сообщений можно делать из 8 строчек кода функцией TelegramPrint.

#include #include #include void setup() < WiFi.mode(WIFI_STA);// WiFi.begin(«ssid», «pass»); while (WiFi.status() != WL_CONNECTED) < delay(500); Serial.print(«.»); >TelegramPrint(«Отладочное сообщение»); ESP.deepSleep(0, RF_NO_CAL);//спим > void loop() <> void TelegramPrint(String message) < std::unique_ptrclient(new BearSSL::WiFiClientSecure); client->setInsecure(); HTTPClient https; if (https.begin(*client, «https://api.telegram.org/bot1663160000:AAH01GFDQguCVp-dnpZuUoi6YwLqwaIpVPs/»)) < // Тут свой ключ пишем https.addHeader(«Content-Type», «application/json»); https.POST(«»); // Тут свой чат id пишем https.end(); > >
Естественно chat_id, apiKEY должны быть свои. Тут нерабочие данные.

p-a-h-a

Member

chat_id можно узнать из браузера по ссылке https://api.telegram.org/bot /getUpdates

vrd

Member

Немного не понял — куда переменные прописывать? Или по умолчанию из сериала подхватывает?

p-a-h-a

Member

Переменные прописывать вместо текста «Отладочное сообщение» в виде
Int x = 5;
TelegramPrint(String(x));
А лучше в строку все сложить и за один раз отправить.
String debagStr;
debagStr = «Отладочное сообщение: n»;
Int x = 5;
debagStr += «X=»;
debagStr += String(x);
debagStr += «n Конец сообщения;
TelegramPrint(debagStr);
Каждая отправка занимает время. У меня от секунды до 4х секунд примерно.

vrd

Member

Отправка каждого сообщения или пакета из например 10 переменных выходит до 4-х секунд?
Если я возьму три основные переменные (x, y, z) и буду их одной строкой слать в бота каждый цикл (4,5 секунды), это выйдет почти 10-16 секунд на цикл?

p-a-h-a

Member

Отправка каждого сообщения или пакета из например 10 переменных выходит до 4-х секунд?
Если я возьму три основные переменные (x, y, z) и буду их одной строкой слать в бота каждый цикл (4,5 секунды), это выйдет почти 10-16 секунд на цикл?

Одно сообщение это и есть пакет из множества символов. Строку собрали за 1-4 секунды ее отправили. Серверы телеграмм долго ответ на запрос посылают. Наверное связано с нагрузкой на серверы. Ботов много развелось нынче.

vrd

Member

Спасибо за помощь. Смог оптимизировать отправку сообщений под изменение переменных.

Спойлер: Код

if ( sum != (x + y + z + (int(t / mi)) + (int(check / mi)))) <
mess = » Озонатор «;
mess += » n»;
mess += » X=»;
mess += String(x);
mess += » Y=»;
mess += String( y );
mess += » Z=»;
mess += String(z);
mess += » F=»;
mess += String(f);
mess += » n»;
mess += » Срабатывание таймера через-«;
mess += String(int((t — (millis() — ti)) / mi));
mess += » мин»;
mess += » n»;
mess += » Проверка времени через-«;
mess += String(int((check — (millis() — t1)) / mi));
mess += » мин»;
mess += » n»;
mess += » «;
mess += » n»;
delay(2);
TelegramPrint(mess);
delay(2);
sum = x + y + z + (int(t / mi)) + (int(check / mi));
delay(2);
mess = » «;
delay(2);
>


Появилась «хотелка» — считывать сообщения пользователя.

vrd

Member

Ботов много развелось нынче.
Спойлер: Код страницы
<«ok»:true,»result»:[<«update_id»:74664327,
«message»:,»chat»:,»date»:1625078161,»text»:»Ozon reb»>>]>
Подскажите как выдрать («text»:»Ozon reb») из этого набора символов.

andrik_zp

Member

Использовать библиотеку для парсинга json

Виктор

New member

А как прочитать сообщение? Чтоб не только уведомления Бот отсылал, но и читать мог для дальнейшего анализа.

ghost21

Member

Сергей_Ф

Moderator

Команда форума

А как прочитать сообщение? Чтоб не только уведомления Бот отсылал, но и читать мог для дальнейшего анализа.

Мне кажется, это только пример. Для нормального бота используйте одну из библиотек:
1.Universal Telegram Bot
2. Gyver FastBot

vrd

Member

Доработал таки этот код:
Спойлер: Тестовый код

#include
#include
#include
#include
#include
#include «secrets.h»
int f = 0;
uint32_t t1 = 0;
int check = 0;
String mess;
int sum = 1;
const int h = 3600000;//час
const int mi = 60000;//минута
const int sek = 1000;//секунда
String doc;

void setup() pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
mess = » Test «;
mess += » n»;
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) < //Соеденение с WIFI
delay(100);
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
f++;
Serial.print(» f=»);
Serial.print(f);
if (f >= 999) < //Нет WIFI
Serial.flush();
delay(1000);
SPIFFS.end();
delay(1000);
ESP.restart();
>
Serial.println(» «);
>
mess += «Количество попыток подключения «;
mess += String(f);
mess += » n»;
f = 0;

// Port defaults to 8266
ArduinoOTA.setPort(8266);

// Hostname defaults to esp8266-[ChipID]
ArduinoOTA.setHostname(«Test»); //Для каждой платы своё имя

// No authentication by default
ArduinoOTA.setPassword(«z»); //Ставим свой пароль — можно закоментить

// Password can be set with it’s md5 value as well
// MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
// ArduinoOTA.setPasswordHash(«21232f297a57a5a743894a0e4a801fc3»);

ArduinoOTA.onStart([]() String type;
if (ArduinoOTA.getCommand() == U_FLASH) type = «sketch»;
> else < // U_FS
type = «filesystem»;
>

// NOTE: if updating FS this would be the place to unmount FS using FS.end()
//Serial.println(«Start updating » + type);
>);
ArduinoOTA.onEnd([]() //Serial.println(«nEnd»);
>);
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) //Serial.printf(«Progress: %u%%r», (progress / (total / 100)));
>);
ArduinoOTA.onError([](ota_error_t error) mess += «Ошибка «;
//Serial.printf(«Error[%u]: «, error);
if (error == OTA_AUTH_ERROR) //Serial.println(«Auth Failed»);
mess += «Auth Failed «;
> else if (error == OTA_BEGIN_ERROR) //Serial.println(«Begin Failed»);
mess += «Begin Failed «;
> else if (error == OTA_CONNECT_ERROR) //Serial.println(«Connect Failed»);
mess += «Connect Failed «;
> else if (error == OTA_RECEIVE_ERROR) //Serial.println(«Receive Failed»);
mess += «Receive Failed «;
> else if (error == OTA_END_ERROR) //Serial.println(«End Failed»);
mess += «End Failed «;
>
mess += » n»;
>);
ArduinoOTA.begin();
//Serial.println(«Ready»);
mess += «Ready «;
//Serial.print(«IP address: «);
//Serial.println(WiFi.localIP());
mess += » n»;
>

void loop() digitalWrite(LED_BUILTIN, HIGH);
ArduinoOTA.handle();
if ( sum != ( f + check )) mess += » F=»;
mess += String(f);
mess += » n»;
mess += » «;
mess += » n»;
doc = «»;
delay(0);
TelegramPrint(mess, doc);
delay(0);
sum = f + check;
delay(0);
delay(0);
mess = » Test «;
mess += » n»;
>
digitalWrite(LED_BUILTIN, LOW);
if (millis() — t1 >= check) //check = mi * 10;
check = h;
t1 = millis();
f++;
>
if (f >= 99) f = 0;
check = sek;
delay(1000);
>
doc = Text();
delay(0);
//Работайте со стрингом как хотите
//Вариант на ифах ниже
if (doc.length() >= 7) < //Test f88
if (doc.charAt(0) == ‘T’) if (doc.charAt(1) == ‘e’) if (doc.charAt(2) == ‘s’) if (doc.charAt(3) == ‘t’) //doc = doc.charAt(6);
doc = doc.substring(6);
f = doc.toInt();
//f = atoi( + 5);
>
>
>
>
>

String TelegramPrint(String mess, String doc) std::unique_ptrclient(new BearSSL::WiFiClientSecure);
client->setInsecure();
HTTPClient https;
https.begin(*client, «https://api.telegram.org/токен/» + doc); // Тут свой ключ пишем
https.addHeader(«Content-Type», «application/json»);
https.POST(«»); // Тут свой чат id пишем
delay(1);
String Answer = https.getString();
https.end();
delay(1);
//Serial.println(Answer);
return Answer;
>

String Text() delay(1);
doc = «getUpdates?offset=-1»;//Для проверки последнего сообщения
delay(1);
DynamicJsonDocument Answer(1532);
deserializeJson(Answer, TelegramPrint(mess, doc), DeserializationOption::NestingLimit(5));// Парсим JSON-содержимое ответа сервера
//serializeJsonPretty(Answer, Serial); //Serial.println();
doc = «»;
return Answer[«result»][0][«message»][«text»];//text
>

В secrets.h спрятал повторяющиеся постоянные и дефайны.
Лежит этот файлик в «C:UsersAdminDocumentsArduinolibrariesSecrets» на вин10.
Присоединяется к любому скетчу как библиотека

Источник: esp8266.ru

Взаимодействие с ботом Telegram с помощью Arduino

Мессенджер Telegram является крайне популярным в современном мире, с ним могут взаимодействовать множество сторонних приложений. В данной статье мы рассмотрим взаимодействие с ботом Telegram с помощью платы Arduino. Делать мы это будем с помощью библиотеки TelegramBot.h, позволяющей работать с ботами Telegram.

Внешний вид проекта взаимодействия с ботом Telegram с помощью Arduino

Также на нашем сайте вы можете посмотреть все проекты, в которых использовалось приложение Telegram. Посмотреть документацию (на английском языке) для работы с API Telegram можно по следующей ссылке.

Необходимые компоненты

Плата Arduino MKR1000 .

Вместо платы Arduino MKR1000 можно также использовать плату Arduino Zero с шилдом WiFi shield 101 или плату Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266, который будет управляться платой Arduino с помощью AT команд. Примеры подобного управления модулем ESP8266 можно посмотреть в следующих проектах:

  • передача Email с использованием Arduino и WiFi модуля ESP8266;
  • передача данных от Arduino Uno на веб-страницу с помощью WiFi;
  • управление сервомотором по Wi-Fi с помощью Arduino и веб-браузера.

Лично на мой взгляд, данный проект дешевле и легче всего реализовать с помощью платы NodeMCU ESP8266, которую можно подключить к компьютеру по USB кабелю и запрограммировать с помощью Arduino IDE. Пример подобного проекта можно посмотреть по следующей ссылке. У него практически такой же код программы, как и код программы рассматриваемого в данной статье проекта.

Реализация проекта

Установка библиотеки для работы с ботом Telegram

Скачайте библиотеку TelegramBot Library по следующей ссылке.

Для ее установки в Arduino IDE откройте пункт меню Sketch / Include Library / Add .ZIP Library, после чего выберите скачанный вами .ZIP файл библиотеки.

Выбор пункта меню Sketch / Include Library / Add .ZIP Library в Arduino IDE

Выбор скачанного .ZIP файла библиотеки

Установка библиотек ArduinoJson и WiFi101

Библиотеки ArduinoJson и WiFi101 можно установить с помощью менеджера библиотек (Library Manager) Arduino IDE как показано на следующих рисунках.

Открытие менеджера библиотек в Arduino IDE

Установка библиотеки WiFi101 в Arduino IDE

Установка библиотеки ArduinoJson в Arduino IDE

Примечание : данный пункт необходим при использовании платы Arduino MKR1000 или платы Arduino Zero с шилдом WiFi shield 101. При использовании платы Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266 библиотеку WiFi101 можно не устанавливать.

Установка бота Botfather

Поиск бота Botfather в Telegram

Botfather – это бот, который позволяет вам создавать своих собственных ботов для приложения Telegram. Для создания нового бота с его помощью используйте команду /newbot.

Создание нового бота с помощью Botfather

После этого введите имя данного бота (name), затем имя пользователя (username).

Ввод имени для созданного бота

Ввод имени пользователя для созданного бота

Далее сгенерируйте токен авторизации (authorization token) для вашего нового бота. Также процесс создания нового бота в Telegram с помощью Botfather описан в этой статье.

Формирование токена авторизации для созданного бота

После создания бота имя вашего бота будет показываться в контактах и некоторых других местах приложения Telegram.

Имя пользователя (Username) для созданного вами бота – это имя, которое будет использоваться в заметках и ссылках telegram.me. Имя пользователя вашего бота должно оканчиваться на ‘bot’, то есть, к примеру, допустимы имена ‘tetris_bot’ или ‘TetrisBot’.

Если ваш бот включен в какую либо группу, то он по умолчанию будет работать в приватном режиме (privacy mode). Это означает, что он будет принимать только команды, которые начинаются с «/». Чтобы отключить приватный режим вам в необходимо в чате с вашим ботом написать следующий набор команд:

Bot setting
Group privacy

Также вы можете создать свой собственный набор команд для бота используя команду /setcommands в чате с BotFather. Этот список появится только при работе с мобильного устройства при нажатии на иконку «/».

Исходный код программы (скетча)

С помощью представленной программы мы будем включать и выключать светодиод, передавая для этого из приложения Telegram сообщения “On” или “Off”.

// данные для подключения к сети Wifi
char ssid [ ] = «xxxx» ; // your network SSID (name)
char pass [ ] = «yyyy» ; // your network key
// Initialize Telegram BOT
const char * BotToken = «xxxx» ; // токен авторизации вашего бота
WiFiSSLClient client ;
TelegramBot bot ( BotToken , client ) ;
const int ledPin = 6 ; // контакт, к которому подключен светодиод
void setup ( )
Serial . begin ( 115200 ) ;
while ( ! Serial ) < >//Start running when the serial is open
delay ( 3000 ) ;
// делаем попытку соединения с сетью Wifi:
Serial . print ( «Connecting Wifi: » ) ;
Serial . println ( ssid ) ;
while ( WiFi . begin ( ssid , pass ) != WL_CONNECTED )
Serial . print ( «.» ) ;
delay ( 500 ) ;
Serial . println ( «» ) ;
Serial . println ( «WiFi connected» ) ;
bot . begin ( ) ;
pinMode ( ledPin , OUTPUT ) ;
message m = bot . getUpdates ( ) ; // считываем новые сообщения
if ( m . text . equals ( «On» ) )
digitalWrite ( ledPin , HIGH ) ;
Serial . println ( «message received» ) ;
bot . sendMessage ( m . chat_id , «The Led is now ON» ) ;
else if ( m . text . equals ( «Off» ) )
digitalWrite ( ledPin , LOW ) ;
Serial . println ( «message received» ) ;
bot . sendMessage ( m . chat_id , «The Led is now OFF» ) ;

Видео, демонстрирующее работу проекта

Похожие статьи

(Проголосуй первым!)
3 618 просмотров
Рубрика: Схемы на Arduino Метки: arduino, Telegram, мессенджер Постоянная ссылка

Комментарии

Взаимодействие с ботом Telegram с помощью Arduino — 12 комментариев

Михаил говорит 02.03.2023 в 11:44 :

NodeMCU ESP8266 по количеству контактов по сути Arduino UNO. Но есть ещё один ньюанс, у ESP8266 питание, а соответсвенно и входы-выходы работают не с 5В, а с 3,3В, что не позволяет испольовать со стандартными реле расчитанными на 5В. Ну и количество входов-выходов Aruino MEGA не сравнить ти с Arduino UNO, ни с NodeMCU ESP8266.

admin-new говорит 02.03.2023 в 16:53 :

Ну если у вас проект требует так много входов/выходов, то да, Aruino MEGA здесь по этому параметру почти вне конкуренции. Ну тут уж сами решайте что вам удобнее, либо управлять с ее помощью модулем ESP8266 с помощью AT команд, либо использовать какую-нибудь плату Aruino со встроенным WiFi если не хотите смотреть в сторону других плат (Raspberry Pi Pico W и т.д.)

Михаил говорит 26.02.2023 в 17:24 :

По сути та же Arduino UNO,только всего один аналоговый вход вместо 6. А мне приходится использовать Arduino MEGA.

admin-new говорит 26.02.2023 в 17:46 :

Ну количество доступных контактов можно увеличить с помощью регистров сдвига или другими способами. Какой то у вас больно сложный проект если вам такое большое количество контактов необходимо. Просто если модуль ESP8266 к плате Ардуино подключать чтобы его использовать только в качестве WiFi модуля, то управлять им придется с помощью АТ команд.
Может быть, вы тогда какую-нибудь современную плату Ардуино для своего проекта присмотрели бы, со встроенным WiFi. К примеру, у нас на сайте есть подробный обзор различных плат Ардуино.
Или вы можете посмотреть в сторону более производительных плат, Raspberry Pi Pico W (есть WiFi) или плат на основе STM32.

Михаил говорит 23.02.2023 в 10:52 :

С Днём защитника Отечества!
Вы пишете: «При использовании платы Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266 библиотеку WiFi101 можно не устанавливать.»
Подскажите, пожалуйста, я использую плату Arduino MEGA + ESP-01, какие дополнительные библиотеки нужно использовать или каким методом передать какой Serial порт используется (у Вас, кстати, этого в программе нет). Меня весьма заинтересовал Ваш вариант, хотелось бы доработать свой проект под возможность передачи данных в Телеграм, а посему с нетерпением буду ожидать Вашего ответа.
Заранее благодарен, Михаил

admin-new говорит 23.02.2023 в 11:35 :

Добрый день. И вас с Днем защитника отечества. Вам понадобится только библиотека TelegramBot.h, библиотека для соединения с сетью WiFi будет не нужна потому что с сетью WiFi вы будете соединяться с помощью модуля ESP-01, а управлять им вы будете с помощью AT команд. Примеры управления модулем ESP-01 с помощью AT команд можно посмотреть, к примеру, в следующих статьях:
https://microkontroller.ru/arduino-projects/upravlenie-servomotorom-po-wi-fi-s-pomoshhyu-arduino-i-veb-brauzera/
https://microkontroller.ru/arduino-projects/peredacha-email-s-ispolzovaniem-arduino-i-wifi-modulya/
Serial порт вы можете использовать стандартный для вашей платы, либо с помощью библиотеки SoftwareSerial (в этом случае ее также необходимо установить) сконфигурировать любые два цифровых контакта платы для работы в качестве последовательного порта — именно этот вариант и использован в двух приведенных примерах статей

Михаил говорит 23.02.2023 в 17:47 :

На TelegramBot.h матерится не по детски. “ПРЕДУПРЕЖДЕНИЕ: библиотека TelegramBot-Library-master должна запускаться на архитектурах samd, esp8266 и может быть несовместима с вашей платой на архитектуре avr.”
Посмотрел Ваши предложения по использованию АТ команд. Даже несколько странно: писать на языке высокого уровня и возвращаться к Assembler для передачи нескольких слов в мессенджер. По факту я использую библиотеку RemoteXY.h для двухсторонней связи со смартфоном и управления всем проектом. Попытка прикрутить телеграм вызвало вышеуказанное предупреждение и недоумение по поводу строки
WiFiSSLClient client;
Что естественно, так как я отказался от библиотеки WiFi101, но в следующей строке
TelegramBot bot(BotToken,client);
Я передаю библиотеке TelegramBot.h некоего клиента и чем его заменить — сугубо непонятно, честно говоря в библиотеке пока не разобрался, что за клиент и что он делает.

admin-new говорит 24.02.2023 в 12:48 :

По поводу использования АТ команд и возвращения, так сказать, к ассемблеру — это плата за то, что в обычных платах Arduino нет WiFi модуля. Мне тоже не очень нравятся АТ команды.
Поэтому подобный проект я бы делал на Arduino с поддержкой WiFi, или на модуле NodeMCU ESP8266 или ESP32 — эти модули имеют поддержку WiFi и программируются точно также как Arduino, а стоят дешевле

Михаил говорит 24.02.2023 в 18:35 :
Не хватает входов-выходов на ESP8266.
admin-new говорит 24.02.2023 в 21:15 :

У ESP-01 действительно очень мало контактов, но модули ESP8266 выпускаются в различных модификациях с различным числом входов/выходов. Неужели даже их количества в NodeMCU ESP8266 вам не хватает?

Источник: microkontroller.ru

NodeMCU и Telegram: управление с помощью чат-бота

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

В данной статье мы подготовим Arduino IDE, бота в telegram и саму плату к работе. Для повторения урока вам понадобится плата Nodemcu, а также светодиод, пара соединительных проводов, breadboard на котором будет собрана схема. Для общения с компьютером воспользуемся micro usb проводом.

Схема подключения:

Схема абсолютно простая, главное не забыть про особенности распиновки nodemcu. Короткая нога светодиода в землю, длинная в пин D3.

Добавление nodemcu в Arduino IDE (подключение esp8266 пакета)

Esp8266 понадобится нам для работы с nodemcu в среде разработки Arduino IDE.

Перед установкой пакета убедитесь, что у вас не установлена другая версия. В противном случае обязательно удалите ее перед установкой. А далее следуйте простым шагам:

1. Запустите среду разработки — Arduino IDE

2. Откройте настройки

3. В поле «Дополнительные ссылки для Менеджера плат» вставьте ссылку на esp8266 пакет: http:/ /arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json

4. Перейдите в Инструменты – Плата – Менеджер плат

5. Прокрутите вниз. Найдите esp8266. Выберите версию 2.3.0. (или другую более новую). Установите.

6. В Инструменты – Плата выберите nodemcu. Остальные настройки платы выставятся автоматически.

Установка библиотеки Telegram

Для обработки полученных сообщений и отправки ответных реакций нам понадобится библиотека https://github.com/witnessmenow/Universal-Arduino-. . Советую установить ее вручную, так как могут возникнуть ошибки.

Создание бота telegram

Прошивка

В первом уроке рассмотрим все части прошивки детально.

Подключаем нужные библиотеки.

#include #include #include

Указываем пин светодиода, wifi сеть и токен бота.

#define LED 0 //D3 const char* ssid = «yura»; const char* password = «0987654321s»; const char BotToken[] = «xxx»;
WiFiClientSecure net_ssl; TelegramBot bot (BotToken, net_ssl);

В void setup устанавливаем скорость общения с компьютером, пытаемся подключиться к wifi, выводим ip адрес устройства в сети, запускаем бота и pinmode для светодиода .

void setup() < Serial.begin(9600); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) < delay(500); Serial.print(«.»); >Serial.println(«»); Serial.println(«WiFi connected»); Serial.println(WiFi.localIP()); bot.begin(); pinMode(LED, OUTPUT); >

Переходим в void loop. Здесь надо сначала проверить наличие новых сообщений.

message m = bot.getUpdates();

Теперь проверяем какое сообщение пришло, выполняем соответствующее действие, и отправляем ответную реакцию.

if (m.text.equals(«on»))< digitalWrite(LED, HIGH); bot.sendMessage(m.chat_id, «The Led 1 is now ON»); >else if (m.text.equals(«off»))

Настало время прошивать микроконтроллер. Сначала меняем в скетче название и пароль от вашей Wi-Fi сети, потом меняем токен бота и пин к которому подключен светодиод. Загружаем скетч на плату.

Тестируем

Теперь, когда все установлено и прошито, можно посмотреть на работу устройства. Для включения и выключения светодиода используются команды on и off соответственно. Их надо просто отправить боту в сообщении. При подключении nodemcu к компьютеру, можно увидеть некоторую отладочную информацию в мониторе порта.

Заключение

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

Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.

Источник: amperkot.ru

Оцените статью
Добавить комментарий