Spisu treści:

Co się stanie, jeśli Twój link ulegnie awarii?: 5 kroków
Co się stanie, jeśli Twój link ulegnie awarii?: 5 kroków

Wideo: Co się stanie, jeśli Twój link ulegnie awarii?: 5 kroków

Wideo: Co się stanie, jeśli Twój link ulegnie awarii?: 5 kroków
Wideo: Co się stanie gdy zerwie się rozrząd przy 5000 obrotów TEST !!! 2024, Listopad
Anonim
Image
Image
Co się stanie, jeśli Twój link ulegnie awarii?
Co się stanie, jeśli Twój link ulegnie awarii?

W tym filmie stworzymy czujnik upadku łącza z ESP32 i SIM800. Oznacza to, że dzięki temu projektowi możemy zweryfikować połączenie z internetem, a w przypadku awarii połączenia zadzwonić pod numer telefonu, aby powiadomić, że sieć ma kłopoty.

Jest to jeden z wielu sposobów prowadzenia tego typu monitoringu. Chociaż jest to proste, umożliwia testowanie różnych urządzeń, które mogą istnieć w ramach Twojego CPD. Jego moc sprawdzania staje się znacznie większa podczas korzystania z ESP32. Chociaż w tym przykładzie używam Wi-Fi, możesz skorzystać z Internetu przewodowego, jeśli wolisz.

Krok 1: Montaż

montaż
montaż

Krok 2: Montaż – Stół

Montaż – Stół
Montaż – Stół

Krok 3: Biblioteka TFT_eSPI

Biblioteka TFT_eSPI
Biblioteka TFT_eSPI
Biblioteka TFT_eSPI
Biblioteka TFT_eSPI

W Arduino IDE przejdź do Szkic-> Dołącz

Biblioteka-> Zarządzaj bibliotekami…

Zainstaluj TFT_eSPI

Przejdź do folderu biblioteki i zmień wiersze pliku User_Setup.h, aby pozostawić go tak, jak pokazano na obrazku.

Krok 4: ESP32_Check_Internet_Connection.ino

Zawiera i definiuje

#zdefiniuj TINY_GSM_MODEM_SIM800#zawieraj

#włączać

#włączać

#włączać

//Mude para o nome e senha da sua rede WiFi que quer testar #define SSID "SSID" #define PASSWORD "12345678" //+55 DDD Numer do celular #define USER_PHONE_NUMBER "+5518912345678" //Tempo que deve esperar for dealar teraz nie działa #Define MAX_DISCONNECTED_TIME 10000 //10 seg //Tempo, w którym należy rozwiązywać problemy #Define MAX_CALL_TIME_INTERVAL 1800000 //30 min //Użyj serialu 1 dla modułu GSM HardwareSerial SerialGSM(1); Modem TinyGsmGSM(SerialGSM); //Czas połączenia z Internetem w ostatnim czasie, gdy uint32_t lastTimeConnected = 0; //Tempo em que fez a ultima ligação. Colocamos colo -MAX_CALL_TIME_INTERVAL dla natychmiastowej linijki //na początku czasu, kiedy uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; //Pinagem em User_Setup.h na makaron z biblioteki TFT_eSPI display = TFT_eSPI();

Ustawiać

void setup(){ Serial.begin(115200); konfiguracjaWyświetlacz(); //Rozpoczęcie konfiguracji i konfiguracji wyświetlaniaGSM(); //Inicializa o módulo GSM xTaskCreatePinnedToCore(checkWiFiConnection, //Função que será executada "checkWiFiConnection", //Nome da tarefa 10000, //Tamanho da pilha NULL, //Parametro da tarefa (bez przypadku 2, //Primosor) da tarefa NULL, //Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); //Número do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) xTaskCreatePinnedToCore(checkInternet, //Função que será executada "checkInternet", //Nome da tarefa 10000, //Tamanho da pilha NULL, //Parâmetro da tarefa (no caso não usamos) 2, //Prioridade da tarefa NULL, //Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); //Número do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) }

Ekran konfiguracji

void setupDisplay(){ display.init(); //Rozpoczęcie wyświetlania display.setRotation(1); //Obrót display.fillScreen(TFT_BLUE); //Limpa o display com a azul display.setTextColor(TFT_WHITE, TFT_BLUE); //Koloka lub tekst w języku angielskim z podstawowymi elementami display.setTextWrap(false, false);//Desativa a quebra display.setTextSize(1); //Muda o tammanho zrobić texto display.setCursor(0, 0, 2); //Posição x, y e fonte do texto }

KonfiguracjaGSM

void setupGSM(){ showDisplay("Ustaw GSM"); //O Moduł GSM to GPIO 4 i 2 SerialGSM.begin(9600, SERIAL_8N1, 4, 2, false); opóźnienie (1000); //Uruchom ponownie o módulo if (!modemGSM.restart()) { ESP.restart(); powrót; } //Espera pela rede celular if (!modemGSM.waitForNetwork()) { display.setCursor(0, 0); showDisplay("Błąd sieci GSM"); opóźnienie(3000); ESP.restart(); powrót; } }

checkWiFiPołączenie

void checkWiFiConnection(void* p){ while(true) { //S não estiver conectado or roteador if(WiFi.status() != WL_CONNECTED) { //Połącz połączenie connectWiFi(); } //Opóźnienie o 1s z tarefa. É feita em kleszcze. Na executar em millis dividimos przez stałe portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vOpóźnienieZadania(OpóźnienieZadania); } }

PołączWiFi

void connectWiFi(){ // Manda połącz się z rotacją z nazwą i poprawą WiFi.begin (SSID, HASŁO); Serial.println("Łączenie"); //Espera no while até conectar while(WiFi.status() != WL_CONNECTED) { Serial.print("."); opóźnienie (500); } //Sprawdź to połączenie Serial.println(); Serial.println("Połączony"); }

sprawdźInternet

void checkInternet(void* p){ //Opóźnienie 5 sekund z tarefa. É feita em kleszcze. W celu wykonania na stałe w ciągu kilku dni portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while(true) { //Ustaw internet if(hasInternet()) { //Aktualizuj tempo działania w połączeniu z lastTimeConnected = millis(); } //Aplikacja o opóźnienie vTaskDelay(taskDelay); } }

ma internet

bool hasInternet(){ klient WiFiClient; //Endreço IP do Google 172.217.3.110 IPAddress adres = IPAddress(172, 217, 3, 110); //Ograniczenie czasu dla conexão client.setTimeout(5); //Tenta conectar bool podłączony = client.connect(adr, 80); //Pobierz conexão client.stop(); //Retorna true se está conectado ou false se está desconectado return connected; }

Pętla

void loop() { //Sprawdź, co zostało usunięte w określonym czasie if(isDisconnectedForTooLong()) { //Nie ma wyświetlania, które zostało usunięte showDisplay("Rozłączony"); //Następuje faza que não liga dla określonego telefonu if(hasNotCalledPhoneInAWhile()) { //Liga dla określonego telefonu callPhone(); } } else { //Mostra no display que está conectado showDisplay("Połączony"); } //Espera 1 segundo para a proxima iteração do loop delay(1000); }

jest rozłączony zbyt długo

bool isDisconnectedForTooLong(){ //Retorna prawidłowa zmiana tempa w ostatecznym połączeniu dla głównych lub ostatecznych zwrotów millis() - lastTimeConnected > MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile() { //Retorna prawidłowa zmiana czasu na ostatnią ligę telefonu dla głównych lub ostatecznych zwrotów millis() - lastTimeCalledPhone > MAX_CALL_TIME_INTERVAL; }

zadzwońTelefon

void callPhone(){ //Uruchomienie definitywnego połączenia telefonu if(modemGSM.callNumber(USER_PHONE_NUMBER)) { //Sprawdź, czy chcesz wykonać połączenie Serial.println("callphone ok"); //Aktualizacja tempa em que foi feita a ultima ligação lastTimeCalledPhone = millis(); } else { //Se entrou aqui é porque não conseguiu fazer a ligação Serial.println("połączenie nie powiodło się"); } //Zakończ połączenie modemGSM.callHangup(); }

pokażWyświetlacz

void showDisplay(String message){ //Pokaż komunikat o pierwszym uruchomieniu wyświetlania, nieograniczona liczba zdarzeń, dodatkowe dodatki display.setCursor(0, 0); display.println(komunikat + " "); }

Krok 5: Pobierz pliki

PDF

JA NIE

Zalecana: