Устройство ESP8266+DHT22+DS3231+Blynk устойчиво работает, если исключить одно из двух: Blynk или часы реального времени DS3231, а в целом - зависает сразу же после включения.
Эта проблема обсуждалась на форуме тут, но, к сожалению, там был был сделан только общий вывод:
функциями управления реального времени и функциями связи с потенциальным таймаутом/отображения должны заниматься разные устройства (контроллеры).
На форуме BLynk нашел решение проблемы разделения функций между двумя контроллерами - тут и решение в чистом виде - здесь. Цитирую (под спойлером):
У автора два контроллера - Mega и ESP.
Возможно есть другие варианты решения этой проблемы, кроме как разделения функций между двумя контроллерами?
Буду благодарен за пример работающего скетча где присутствуют ESP8266, DS3231 и Blynk.
Эта проблема обсуждалась на форуме тут, но, к сожалению, там был был сделан только общий вывод:
функциями управления реального времени и функциями связи с потенциальным таймаутом/отображения должны заниматься разные устройства (контроллеры).
На форуме BLynk нашел решение проблемы разделения функций между двумя контроллерами - тут и решение в чистом виде - здесь. Цитирую (под спойлером):
Я использую эту процедуру запуска и повторного соединения с моей компиляцией Mega / ESP-01 ... кажется, работает нормально.
В предварительной настройке
#include <ESP8266_Lib.h> // ESP-01 Link
#include <BlynkSimpleShieldEsp8266.h> // ESP-01 Link
В моем void setup()
wifi.setDHCP(1, 1, 1); //Enable dhcp in station mode and save in flash of esp8266
Blynk.config(wifi, auth, server, port);
if (Blynk.connectWiFi(ssid, pass)) {
Blynk.connect();
}
В void loop()
void loop() {
timer.run();
if (Blynk.connected()) { // If connected run as normal
Blynk.run();
} else if (ReCnctFlag == 0) { // If NOT connected and not already tring to reconnect, set timer to try to reconnect in 30 seconds
ReCnctFlag = 1; // Set reconnection Flag
Serial.println("Starting reconnection timer in 30 seconds...");
timer.setTimeout(30000L, []() { // Lambda Reconnection Timer Function
ReCnctFlag = 0; // Reset reconnection Flag
ReCnctCount++; // Increment reconnection Counter
Serial.print("Attempting reconnection #");
Serial.println(ReCnctCount);
wifi.setDHCP(1, 1, 1); //Enable dhcp in station mode and save in flash of esp8266
Blynk.config(wifi, auth, server, port);
Blynk.connect(); // Try to reconnect to the server
if (Blynk.connectWiFi(ssid, pass)) {
Blynk.connect();
}
}); // END Timer Function
}
}
В предварительной настройке
#include <ESP8266_Lib.h> // ESP-01 Link
#include <BlynkSimpleShieldEsp8266.h> // ESP-01 Link
В моем void setup()
wifi.setDHCP(1, 1, 1); //Enable dhcp in station mode and save in flash of esp8266
Blynk.config(wifi, auth, server, port);
if (Blynk.connectWiFi(ssid, pass)) {
Blynk.connect();
}
В void loop()
void loop() {
timer.run();
if (Blynk.connected()) { // If connected run as normal
Blynk.run();
} else if (ReCnctFlag == 0) { // If NOT connected and not already tring to reconnect, set timer to try to reconnect in 30 seconds
ReCnctFlag = 1; // Set reconnection Flag
Serial.println("Starting reconnection timer in 30 seconds...");
timer.setTimeout(30000L, []() { // Lambda Reconnection Timer Function
ReCnctFlag = 0; // Reset reconnection Flag
ReCnctCount++; // Increment reconnection Counter
Serial.print("Attempting reconnection #");
Serial.println(ReCnctCount);
wifi.setDHCP(1, 1, 1); //Enable dhcp in station mode and save in flash of esp8266
Blynk.config(wifi, auth, server, port);
Blynk.connect(); // Try to reconnect to the server
if (Blynk.connectWiFi(ssid, pass)) {
Blynk.connect();
}
}); // END Timer Function
}
}
У автора два контроллера - Mega и ESP.
Возможно есть другие варианты решения этой проблемы, кроме как разделения функций между двумя контроллерами?
Буду благодарен за пример работающего скетча где присутствуют ESP8266, DS3231 и Blynk.
Последнее редактирование: