Когда подключаюсь к облаку работает не более 10 - 15 секун и просто отваливаеться. если добавить условия для переподключения. то каждые 3 секунды подключаеться-отключаеться.Работает в связке arduino nano+esp8266 shield на последней версии библиотеке. Устройство проверял. Находиться все время в сети и успешно проходит пинг. Тоесть меня оключает сервер. Я предполагаю что идет много запросов на сервер. но я нечего не отправляю. а все что отправлял закоментировал и все равно максимально подлюченым могу быть не больше 15 секунд .код программы ниже.
Прошу помощи.
#define BLYNK_PRINT Serial
#define EspSerial Serial1
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <Wire.h>
#include <RTClib.h>
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX
// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600
ESP8266 wifi(&EspSerial);
char auth[] = "e76ddc763e7b4ebfaac1b59d9e3a3208";
char ssid[] = "SweetHome";
char pass[] = "qazxswedcvfr2213";
#define buttonPin 7// кнопка
#define ledSignalPin 2// ИК светодиоды
#define IN_IR_1 3 // вход ИК фото-приемника 1
#define switchPin 4 // вход ИК фото-приемника 2 >>#define IN_IR_2 4
#define ledPin1 5 // индикация сработки ИК_1 сенсора
#define ledPin2 6 // индикация сработки ИК_2 сенсора
#define relayPin1 11 //Дневной свет
#define relayPin2 13 //Ночной свет
#define buttonState 0
boolean buttonOptions;
boolean timeNow; // определение время дня
byte State; //состоянии для алгоритма, определяющего направление движения
unsigned int counts;
RTC_DS1307 rtc; //A4 (SDA), A5 (SCL) esp8266(nodeMCU) D1 (SLC) , D2 (SDA)
void setup()
{
Serial.begin(9600);
delay(10);
EspSerial.begin(ESP8266_BAUD);// Set ESP8266 baud rate
delay(10);
Blynk.begin(auth, wifi, ssid, pass);
//while (Blynk.connect() == false) {}
Wire.begin();
rtc.begin();
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledSignalPin, OUTPUT);
pinMode(IN_IR_1, INPUT);
pinMode(switchPin, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
counts = 0;
}
void loop()
{
Blynk.run();
DateTime now = rtc.now();
IntersectionCheck();
boolean T = timestatusnow();
byte M = MovementDirection();
int C = Counter();
int S = switcher();
/*Serial.println(T);
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');*/
}
boolean timestatusnow()
{
DateTime now = rtc.now();
//алгоритм дня и ночи// ( 1 = день 0 = ночь )
if (now.hour() >= 6 && now.minute() >= 00 && now.hour() <= 23 && now.minute() <= 59) timeNow = 1;// день
if (now.hour() >= 0 && now.minute() >= 00 && now.hour() <= 5 && now.minute() <= 59) timeNow = 0;// ночь
//алгоритм дня и ночи//
return timeNow;
}
int switcher()
{
if (counts > 0 && timestatusnow() == 1)
{
digitalWrite(relayPin1, HIGH);
digitalWrite(relayPin2, LOW);
}
if (counts > 0 && timestatusnow() == 0)
{
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, HIGH);
}
if (counts <= 0)
{
digitalWrite(relayPin1, HIGH);
digitalWrite(relayPin2, HIGH);
}
if (counts < 0) counts = 0; //обнуляем отрицательные значения количества
if (counts >= 2) counts = 1; // приводим к 1 если больше или равно 2
}
int Counter()
{
if (State == 1) {
counts = counts + 1;
State = 2;
}
if (State == 5) {
counts = counts - 1;
State = 0;
}
/*Serial.print("Counts=");
Serial.println(counts);*/
/*Blynk.virtualWrite(V3, counts);*/
return counts;
}
byte MovementDirection()
{
if (digitalRead(IN_IR_1) == LOW)
{
State = 0;
}
if (digitalRead(IN_IR_1) == HIGH && State == 0)
{
State = 1;
}
if (digitalRead(IN_IR_1) == LOW && State == 2)
{
State = 3;
}
if (digitalRead(IN_IR_1) == HIGH && State == 3)
{
State = 4;
}
if (digitalRead(switchPin) == LOW && State == 4)
{
State = 5;
}
//Serial.print("State=");
//Serial.println(State);
/*Blynk.virtualWrite(V2, State);*/
return State;
}
void IntersectionCheck()
{
tone(ledSignalPin, 38000); //38кГц частота с каторой работает ИК фота - приемник
if (digitalRead(IN_IR_1) == LOW) { // индикация работы ИК луча 1, если не пересечен то светадиод ledPin_3 светит, иначе не светит
digitalWrite(ledPin1, LOW);
/*Blynk.virtualWrite(V1, 0);*/ // выклчить сигнальный диод ИК датчика на сервере
}
else {
digitalWrite(ledPin1, HIGH);
/*Serial.println("IR detected");*/
/*Blynk.virtualWrite(V1, 255);*/ // включить сигнальный диод ИК датчика на сервере
}
if (digitalRead(switchPin) == LOW) { // индикация работы ИК луча 2, если не пересечен то светадиод ledPin_4 светит, иначе не светит
digitalWrite(ledPin2, LOW);
/*Blynk.virtualWrite(V0, 0);*/ // виключить сигнальный диод PIR датчика на сервере
}
else {
digitalWrite(ledPin2, HIGH);
/*Serial.println("Motion detected");*/
/*Blynk.virtualWrite(V0, 255);*/ // включить сигнальный диод PIR датчика на сервере
}
}