Добрый день уважаемые форумчане. В инструкции по прошивке ESP 8266 прочитал такое:
Примечание: Чтобы загружать скетч при помощи OTA снова и снова, внутри него нужно прописать соответствующие функции. Для примера используйте скетч «BasicOTA.ino».
Что за соответствующие функции? Дело в том, что я прошиваю по ОТА без проблем, проверяю. Все работает, но когда перезагружаю IDE ( у меня последняя прошивка), порт сетевой исчезает. Мне приходится снова по проводу загрузить ОТА, и потом прошивать прошивку по воздуху и т.д. Питон-версия 1.7.10. В ОТА рас комментировал эти строчки:
ArduinoOTA.setPort(8266);
ArduinoOTA.setHostname("myesp8266");
ArduinoOTA.setPassword("admin");
И вторая проблема.
Загружаю скетч в вемос , на смартфоне все показывает, через несколько часов отваливается Blynk. Перезагружаю Вемос . Все появляется и опять со временем отваливается. По проводу, когда прошивал такого не было.
Может поможете, что нужно в скетче дописать?
И еще. Интересная особенность. Когда заливаю ОТА в мониторе порта ничего нет, IP соответственно тоже (скорость установлена правильно) , но в меню инструменты OTA-порт появляется.
Вот скетч:
Примечание: Чтобы загружать скетч при помощи OTA снова и снова, внутри него нужно прописать соответствующие функции. Для примера используйте скетч «BasicOTA.ino».
Что за соответствующие функции? Дело в том, что я прошиваю по ОТА без проблем, проверяю. Все работает, но когда перезагружаю IDE ( у меня последняя прошивка), порт сетевой исчезает. Мне приходится снова по проводу загрузить ОТА, и потом прошивать прошивку по воздуху и т.д. Питон-версия 1.7.10. В ОТА рас комментировал эти строчки:
ArduinoOTA.setPort(8266);
ArduinoOTA.setHostname("myesp8266");
ArduinoOTA.setPassword("admin");
И вторая проблема.
Загружаю скетч в вемос , на смартфоне все показывает, через несколько часов отваливается Blynk. Перезагружаю Вемос . Все появляется и опять со временем отваливается. По проводу, когда прошивал такого не было.
Может поможете, что нужно в скетче дописать?
И еще. Интересная особенность. Когда заливаю ОТА в мониторе порта ничего нет, IP соответственно тоже (скорость установлена правильно) , но в меню инструменты OTA-порт появляется.
Вот скетч:
Код:
#include "DHT.h"
#define fan1 D1 //вентилятор D1 Гараж
#define fan2 D5 //вентилятор D5 Подвал
#define fan3 D6 //вентилятор D6 Смотровая яма
#define DHT1PIN D7//датчик на улице
#define DHT2PIN D4//датчик в гараже
#define DHT3PIN D3//датчик в подвале
#define DHT4PIN D2//датчик в смотровой яме
#define DHT1TYPE DHT22
#define DHT2TYPE DHT22
#define DHT3TYPE DHT11
#define DHT4TYPE DHT11
DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);
DHT dht3(DHT3PIN, DHT3TYPE);
DHT dht4(DHT4PIN, DHT4TYPE);
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ArduinoOTA.h>
const char *ssid = "ASUS"; // задаем имя создаваемой сети
const char *password = "*******"; // задаем пароль создаваемой сети
ESP8266WebServer server(80); // Сервер не 80 порту
BlynkTimer timer;
WidgetLED fan_1(V8); // Светодиод на смарте
WidgetLED fan_2(V9); // Светодиод на смарте
WidgetLED fan_3(V10); // Светодиод на смарте
int stat = 0;
int maxHum = 90;
char auth[] = "*****************";
bool flag_avto_fan = 1; // ВКЛ Автоматический режим по занчениям датчиков
//----------------------------------------------------------
void handleRoot()
{
server.send(200, "text/html", "<h1>You are connected<h1>");
}
//-----------------------------------------------------
void setup()
{
Serial.begin(115200);
ArduinoOTA.begin();
Blynk.begin(auth, "ASUS", "*******");
Serial.println();
Serial.println("Configuring access point...");
WiFi.softAP(ssid, password); //создаем иочку доступа, с указанным ранее именем и паролем
IPAddress myIP = WiFi.softAPIP(); //ПОЛУЧАЕМ ip АДРЕСв терминал
Serial.print("AP IP address:"); // выводим полученный IP- адрес в терминал
Serial.println(myIP);
server.on("/", handleRoot);
server.begin(); //запускаем сервер
Serial.println("Server started");
dht1.begin();
dht2.begin();
dht3.begin();
dht4.begin();
pinMode(fan1, OUTPUT);
pinMode(fan2, OUTPUT);
pinMode(fan3, OUTPUT);
timer.setInterval(1000, Send); // опрос датчиков с интервалом 1с.
timer.setInterval(30000L, reconnectBlynk); // проверяем каждые 30 секунд, если подключение к серверу
}
//---------------------------------------------------
void loop() {
// Wait a few seconds between measurements.
delay(2000);
if (Blynk.connected()) Blynk.run(); // Запуск Blynk
timer.run();
server.handleClient();
}
//---------------------------------------------------
void Send() {
// опрос датчиков
//---------- dht1
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
if (isnan(h1) || isnan(t1)) Serial.println("Failed to read from DHT1 sensor!");
else {
Serial.print("Humidity1: ");
Serial.print(h1);
Serial.print(" %\t ");
Serial.print("Temperature1: ");
Serial.print(t1);
Serial.println(" *C ");
}
//---------- dht2
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
if (isnan(h2) || isnan(t2)) Serial.println("Failed to read from DHT2 sensor!");
else {
Serial.print("Humidity2: ");
Serial.print(h2);
Serial.print(" %\t ");
Serial.print("Temperature2: ");
Serial.print(t2);
Serial.println(" *C ");
}
//--------- dht3
float h3 = dht3.readHumidity();
float t3 = dht3.readTemperature();
if (isnan(h3) || isnan(t3))Serial.println("Failed to read from DHT3 sensor!");
else {
Serial.print("Humidity3: ");
Serial.print(h3);
Serial.print(" %\t ");
Serial.print("Temperature3: ");
Serial.print(t3);
Serial.println(" *C ");
}
//--------- dht4
float h4 = dht4.readHumidity();
float t4 = dht4.readTemperature();
if (isnan(h4) || isnan(t4)) Serial.println("Failed to read from DHT4 sensor!");
else {
Serial.print("Humidity4: ");
Serial.print(h4);
Serial.print(" %\t ");
Serial.print("Temperature4: ");
Serial.print(t4);
Serial.println(" *C ");
}
Serial.println();
// ********************* Логистика работы вентиляторов **************
if (flag_avto_fan) { // если ВКЛ автоматический режим !!!!!!!!
//-------- (h1>h2)
if (h1 > h2) // если влажность на улице больше, чем в гараже, выключается вентилятор fan1
{
digitalWrite(fan1, LOW);
fan_1.off();//выкл вирт.светодиод
}
else if (h1 < h2) // если влажность на улице меньше, чем в гараже, включается вентилятор fan1
{
digitalWrite(fan1, HIGH);
fan_1.on(); //вкл вирт.светодиод
}
//-------- (h1>h4)
if (h1 > h4) // если влажность на улице больше, чем в смотровой яме, выключается вентилятор fan3
{
digitalWrite(fan3, LOW);
fan_3.off();//выкл вирт.светодиод
}
else if (h1 < h4) // если влажность на улице меньше, чем в смотровой яме, включается вентилятор fan3
{
digitalWrite(fan3, HIGH);
fan_3.on(); //вкл вирт.светодиод
}
//------------(t1<0) для гаража
if (t1<0) // если температура на улице меньше 0 градусов, выключается вентилятор fan1
{
digitalWrite(fan1, LOW);
fan_1.off();//выкл вирт.светодиод
}
else if (t1>0) // если температура на улице больше 0 градусов, включается вентилятор fan1
{
digitalWrite(fan1, HIGH);
fan_1.on(); //вкл вирт.светодиод
}
//------------(t1<0) для cмотровой ямы
if (t1<0) // если температура на улице меньше 0 градусов, выключается вентилятор fan3
{
digitalWrite(fan1, LOW);
fan_3.off();//выкл вирт.светодиод
}
else if (t1>0) // если температура на улице больше 0 градусов, включается вентилятор fan3
{
digitalWrite(fan3, HIGH);
fan_3.on(); //вкл вирт.светодиод
}
//-------- h2
if (h2 > maxHum)
{
digitalWrite(fan1, HIGH);
fan_1.on(); //вкл вирт.светодиод
}
else if (h2 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan1, LOW);
fan_1.off(); //выкл вирт.светодиод
}
//-------- h3
if (h3 > maxHum)
{
digitalWrite(fan2, HIGH);
fan_2.on(); //вкл вирт.светодиод
}
else if (h3 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan2, LOW);
fan_2.off(); //выкл вирт.светодиод
}
//--------- h4
if (h4 > maxHum)
{
digitalWrite(fan3, HIGH);
fan_3.on(); //вкл вирт.светодиод
}
else if (h4 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
{
digitalWrite(fan3, LOW);
fan_3.off(); //выкл вирт.светодиод
}
}
//---------------- отправка показания датчиков на Blynk
static uint8_t t;
if (++t > 5) { // каждые 5 сек или любой другой интервал выводит данные на Blynk !!!
t = 0;
Blynk.virtualWrite(V0, h1);
Blynk.virtualWrite(V1, t1);
Blynk.virtualWrite(V2, h2);
Blynk.virtualWrite(V3, t2);
Blynk.virtualWrite(V4, h3);
Blynk.virtualWrite(V5, t3);
Blynk.virtualWrite(V6, h4);
Blynk.virtualWrite(V7, t4);
}
}
//------------------------ Групповое ВЫКЛ вентиляции
BLYNK_WRITE(V11) {
if (param.asInt()) {
flag_avto_fan = 0; // ВЫКЛ Автоматику
digitalWrite(fan1, LOW); fan_1.off();
digitalWrite(fan2, LOW); fan_2.off();
digitalWrite(fan3, LOW); fan_3.off();
}
else {
flag_avto_fan = 1; // ВКЛ Автоматику
}
}
//---------------------------------------------------
void reconnectBlynk() { // функция проверяет соединение с сервером Блинк
if (!Blynk.connected()) { // если соединения нет то
if (Blynk.connect()) // конектимся
BLYNK_LOG("Reconnected"); // выводим в лог
else
BLYNK_LOG("Not reconnected"); // выводим в лог
}
}