Polisad WiFi
В данном примере показано управление поливом палисадника через Телеграмм. Также мы видим взаимосвязь, а именно передачу информации из Arduino Uno в ESP8266 01 для отправки в чат Телеграмм по средствам SoftwareSerial.
Всё просто: подключаем бота, пишем команду «/flowers_on», бот получает её, отправляет команду на Arduino через SoftwareSerial,
ESPSerial.print("r1on");
Ардуинка на некоторое время включает реле насоса. После истечении времени реле отключается и также, посредствам SoftwareSerial мы отправляем оповещение, что реле насоса выключено, полив закончился.
Arduino
#include <Arduino.h> // библиотека для работы с WiFi
#include <SoftwareSerial.h>
SoftwareSerial ESPserial(2, 3); // TX | RX
const int r1 = 9;
bool workR1 = false;
const int timeWork = 120;
int counterR1 = 0;
void timeWorkFn()
{
counterR1++;
if (counterR1 > timeWork)
{
counterR1 = 0;
workR1 = false;
digitalWrite(r1, HIGH);
ESPserial.print("r1off_true");
}
}
void setup()
{
Serial.begin(9600); // Объявляем работу com порта со скоростью 9600
ESPserial.begin(57600);
pinMode(r1, OUTPUT);
digitalWrite(r1, HIGH);
}
void loop()
{
if (ESPserial.available() > 0)
{
String data = "";
data = ESPserial.readString();
Serial.println(data);
if (data == "r1on")
{
workR1 = true;
digitalWrite(r1, LOW);
ESPserial.print("r1on_true");
}
if (data == "r1off")
{
workR1 = false;
digitalWrite(r1, HIGH);
ESPserial.print("r1off_true");
}
}
if (workR1)
{
timeWorkFn();
}
delay(1000);
}
ESP
#include <Arduino.h>
#include <FastBot.h>
#include <SoftwareSerial.h>
#define WIFI_SSID "*******" // Точка доступа WiFi
#define WIFI_PASS "********" // Пароль от WiFi
#define BOT_TOKEN "**********:****************" // Токен Телеграмм
String isAdmin = "*********"; // Мой Id
FastBot bot(BOT_TOKEN);
SoftwareSerial ESPSerial(2, 0);
const int timeWork = 120;
void connectWiFi()
{
delay(2000);
Serial.println();
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
if (millis() > 15000)
ESP.restart();
}
Serial.println("Connected");
}
// обработчик сообщений
void newMsg(FB_msg &msg)
{
if (msg.text == "/flowers_on")
{
ESPSerial.print("r1on");
}
if (msg.text == "/flowers_off")
{
ESPSerial.print("r1off");
}
}
void setup()
{
Serial.begin(9600);
connectWiFi();
bot.attach(newMsg);
bot.sendMessage("Включение WiFi полисадника", isAdmin);
ESPSerial.begin(57600);
}
void loop()
{
bot.tick();
if (ESPSerial.available() > 0)
{
String data = "";
data = ESPSerial.readString();
if (data == "r1on_true")
{
bot.sendMessage("Полив полисадника включен", isAdmin);
}
else if (data == "r1off_true")
{
bot.sendMessage("Полив полисадника вЫключен", isAdmin);
}
else
{
bot.sendMessage(data, isAdmin);
}
}
delay(1000);
}