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);
}