Skocz do zawartości

ESP8266 nodemcu v3 - utrata połączenia wifi


Xele

Pomocna odpowiedź

Witam, mam problem z esp, który działa jako stacja pogodowa. Problem występuje z utratą połączenia wifi przez co muszę za każdym razem w pętli dawać restart wifi.

w void setup():

- łączy się z wifi: jeśli się połączy to wysyła dane z pliku sd (jeśli występuje plik sd), synchronizuje czas rtc pobierając czas z serwera ntp i przechodzi do void loop().

- Jeśli nie może się połączyć z wifi to przechodzi do void loop().

w void loop():

- sprawdza połączenie wifi, jeśli jest to: pobiera czas z serwera ntp i w określonym czasie co 5 minut wysyła dane na serwer php.

- jeśli połączenia nie ma to jednorazowo próbuje się połączyć z wifi przy użyciu skryptu poniżej. Jak się nie połączy to pobiera czas z rtc i w określonym czasie zapisuje dane na kartę sd.

- po wykonaniu jednej z operacji idzie spać na około 4-4:30 min w zależności od czasu wysłania/zapisania danych.

void WIFI_Connect()
{
  if (blokada3 == 0)
  {
    // digitalWrite(2,1);
    WiFi.disconnect();
    Serial.println("Booting Sketch...");
    WiFi.mode(WIFI_AP_STA);
    WiFi.begin(ssid, password);
    // Wait for connection
    while (WiFi.status() != WL_CONNECTED) {
      delay(10);     // use small delays, NOT 500ms
      if (++counter5 > 500) 
      {
        blokada2 = 1;
        break;
      }
    }
  }
  blokada3 = 1;
  //digitalWrite(2,0);
}

Problem pojawia się wtedy jak przechodzi do pętli loop, gdzie musi poczekać na określony czas, kiedy będzie mógł wysłać dane (co 5 minut, budzi się tak z 10 sekund wcześniej). Chwile jest połączony po czym się rozłącza i na nowo się łączy. Jak się już drugi raz połączy to działa dobrze, jest to uciążliwe bo zabiera sporo czasu. Nie wiem czemu się nagle rozłącza. W nocy wifi jest wyłączone i rano jak się połączy to w void setup() wysyła sporo rekordów z sd i nic się nie rozłącza.

pętla loop()

if (WiFi.status() == WL_CONNECTED)
  {
    
    blokada2 = 0;
  } else
  {   
    WIFI_Connect();
  }

if (blokada2 == 0)
  {
  // wifi dziala, pobiera czas z serwera ntp i wysyla dane po czym sleep
}else
{
  //wifi nie dziala, pobiera czas z rtc i zapisuje na karcie sd po czym sleep
}

 

z wifi łącze się linijką : 

WiFi.begin(ssid, password);

 

Zamieszczam jeszcze schemat połączeń z esp, jak widać zasilam je 5v przez vin, może to za mało?

Dzięki za jakąkolwiek pomoc, ten projekt zrobiłem mając zerową wiedzę o arduino i esp, ciągle czegoś się douczam, coś zmieniam, proszę o wyrozumiałość.

esp8266nodemcu_1.png

Link do komentarza
Share on other sites

yyy, może taka stacja pogodowa, pod ESP2886. Dzisiaj napisałem 🙂 resztę sobie dorobisz albo przerobisz, jak nie masz matrycy to dane są w strukturach czas (z serwera NTP i pogoda z serwera openweathermap) - wywal wtedy obsługę tylko dla PAROLA (plik matryca.h wtedy nie jest potrzebny, to tylko moja klasa do obsługi wyświetlacza tego co na filmiku)  i miasteczko zmień na takie co w bazie jest. Powodzenia... 
Tyle, że ja OpticaConect nie wyłączam, mam światłowód 500Mbita za 60zł bez ograniczeń to nie wiem o co chodzi z tym wyłączaniem.

ESP2886 Stacja pogody i losowe informacje na MAXMAX7219

Pliki projektu tutaj : (potrzebna biblioteka generator liczb losowych: "ESP8266TrueRandom.h" jeśli korzystasz z wyświetlacza lub zamień wszystko gdzie użyto ESP8266TrueRandom.random np. na najzwyklejsze rand() z Arduino oraz przerobiona wersja Json: Arduino_JSON.h)

project.ino
matryca.h

Edytowano przez PowerTGS440
  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.