Подключение Arduino UNO к Blynk через ESP01 c использованием UART

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Привет знатокам!
Сделал проект с подключением к Blynk используя ESP01 через SoftwareSerial. Вот часть кода:
 

// Подключение библиотек
#include <BlynkSimpleShieldEsp8266.h>                             // Библиотека для работы с внешним модулем ESP8266 (ESP-01)
#include <SoftwareSerial.h>                                       // Библиотека програмной реализации обмена по UART-протоколу
#include <OneWire.h>                                              // Библиотека для работы с устройствами типа 1-Wire

// 3 - TX, 4 - RX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial ESP01(3, 4);                                       // Запуск протокола обмена Arduino c ESP-01

char auth[] = "******************";                 // Идентификатор
char ssid[] = "******************";                                       // Точка доступа
char pass[] = "******************";                                         // Пароль

ESP8266 wifi(&ESP01);                                             // Подключаем ESP через SoftwareSerial

...

void setup()                                                      // Установки
{

  ESP01.begin(9600);                                              // Подключаем модуль ESP8266(ESP-01) на заданной скорости

  Blynk.begin(auth, wifi, ssid, pass);                            // Соединяемся с BLYNK

...

Но теперь хотел бы подключить ESP01 через UART, может кто подкинет идею, как это реализовать.

Проект работает, свои функции выполняет, но для расширения функционала не хватает 2-х цифровых выводов. Вот и задумал переключить ESP01 на UART...

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Никто не ответил...

Кое-что нарыл, вот написал:

#define ser1 Serial
#include <BlynkSimpleShieldEsp8266.h>                             // Библиотека для работы с внешним модулем ESP8266 (ESP-01)

char auth[] = "*********************";                 // Идентификатор
char ssid[] = "*********************";                                      // Точка доступа
char pass[] = "*********************";                                         // Пароль
WidgetLED Led_A(V3);                                              // Подключаем виртуальный светодиод V3
unsigned long A_Timer;                                            // Значение миллисекунд
bool B_Start = true;                                              // Флаг первичной посылки состояния
#define BLYNK_GREEN     "#00FF00"                                 // Определение цвета ЗЕЛЁНЫЙ
#define BLYNK_YELLOW    "#FFFF00"                                 // Определение цвета ЖЁЛТЫЙ
#define BLYNK_RED       "#FF0000"                                 // Определение цвета КРАСНЫЙ
#define BLYNK_BLUE      "#0000FF"                                 // Определение цвета СИНИЙ
void setup()                                                      // Установки
{
Serial.begin(9600);
  delay(10);                                                      // Задержка 10 mS
  Blynk.begin(auth, ser1, ssid, pass);                            // Соединяемся с BLYNK
  Led_A.on();                                                     // Включаем виртуальный светодиод 2, чтобы видеть цвета
  A_Timer=millis();
}

void loop()                                                       // Основная программа
{
  Blynk.run();                                                    // Запуск BLYNK
if (millis() - A_Timer >= 1000)
     {
      if (B_Start)
         {
          Led_A.setColor(BLYNK_RED);                              // Индикатор  КРАСНЫЙ
         }
      else
         {
          Led_A.setColor(BLYNK_GREEN);                            // Индикатор ЗЕЛЁНЫЙ
         }
          B_Start=not B_Start;
     }
}

Но ругается на этапе компиляции на HardwareSerial:

D:\Arduino наработки и примеры\Пробные скетчи\ESP8266_HS\ESP8266_HS.ino: In function 'void setup()':
ESP8266_HS:27:37: error: no matching function for call to 'BlynkWifi::begin(char [33], HardwareSerial&, char [12], char [9])'
In file included from D:\Arduino наработки и примеры\Пробные скетчи\ESP8266_HS\ESP8266_HS.ino:2:0:
C:\Users\���_���\Documents\Arduino\libraries\blynk-library-master\src/BlynkSimpleShieldEsp8266.h:180:10: note: candidate: void BlynkWifi::begin(const char*, ESP8266&, const char*, const char*, const char*, uint16_t)
     void begin(const char* auth,
          ^~~~~
C:\Users\���_���\Documents\Arduino\libraries\blynk-library-master\src/BlynkSimpleShieldEsp8266.h:180:10: note:   no known conversion for argument 2 from 'HardwareSerial' to 'ESP8266&'
exit status 1
no matching function for call to 'BlynkWifi::begin(char [33], HardwareSerial&, char [12], char [9])'
 
Что ему не нравится пока не понял, поэтому прошу помочь.
Очень прошу. Или хотя бы пнуть в нужном направлении...
 
b707
Offline
Зарегистрирован: 26.05.2017

Homo Faber пишет:

Что ему не нравится пока не понял, поэтому прошу помочь.
Очень прошу. Или хотя бы пнуть в нужном направлении...
 

неправильно сделали, поэтому и ругается.

HardwareSerial надо передавать в метод строки 13 (по первому коду) - туда. где у вас был СофтСериал. А вы его зачем-то в строку 21 пихаете, оттого и ошибки

Homo Faber
Offline
Зарегистрирован: 25.05.2019

То есть примерно так

HardwareSerial ESP01(0, 1);                // Запуск протокола обмена Arduino c ESP-01

...

ESP8266 wifi(&ESP01);                        // Подключаем ESP через HardwareSerial

...

Blynk.begin(auth, wifi, ssid, pass);        // Соединяемся с BLYNK

Надеюсь я Вас правильно понял?

b707
Offline
Зарегистрирован: 26.05.2017

нет, неправильно. Обьект Serial у вас уже есть, второй создавать не надо. И пины тоже не надо, там выбора нет.

Итого строка 1 не нужна вовсе, а в строке 5 просто меняете на указатель на Serial

 

Только имейте в виду, что теперь при заливке скетча вам надо будет каждый раз отключать ESP

Homo Faber
Offline
Зарегистрирован: 25.05.2019

То есть

ESP8266 wifi(&HardwareSerial);  // Подключаем ESP через HardwareSerial

Да уж, "Есть многое на свете, друг Горацио, что и не снилось нашим мудрецам..." 

b707
Offline
Зарегистрирован: 26.05.2017

Homo Faber пишет:

То есть

ESP8266 wifi(&HardwareSerial);  // Подключаем ESP через HardwareSerial

Да уж, "Есть многое на свете, друг Горацио, что и не снилось нашим мудрецам..." 

опять нет. Вы что. Си совсем не знаете?

HardwareSerial - это имя класса, а вам надо передать ссылку на конкретный экземпляр.

давайте думайте, одну строчку-то в состоянии сами понять? Я за вас писать не буду.

И на гайвере вы какую-то чушь пишете...

 

Homo Faber
Offline
Зарегистрирован: 25.05.2019

Да, я таки и понял, что Вы мне на Гайвере отвечаете...

b707
Offline
Зарегистрирован: 26.05.2017

в основном тут. Там других советчиков хватает