Inhaltsverzeichnis:

Was passiert, wenn Ihr Link abstürzt? - Gunook
Was passiert, wenn Ihr Link abstürzt? - Gunook

Video: Was passiert, wenn Ihr Link abstürzt? - Gunook

Video: Was passiert, wenn Ihr Link abstürzt? - Gunook
Video: Bist du links? Oder rechts? | Politische Einstellungen erklärt 2024, November
Anonim
Image
Image
Was ist, wenn Ihr Link abstürzt?
Was ist, wenn Ihr Link abstürzt?

In diesem Video erstellen wir einen Link-Drop-Sensor mit einem ESP32 und einem SIM800. Dies bedeutet, dass wir mit diesem Projekt die Verbindung zum Internet überprüfen und im Falle eines Verbindungsfehlers eine Telefonnummer anrufen können, um zu benachrichtigen, dass das Netzwerk in Schwierigkeiten ist.

Dies ist eine der vielen Möglichkeiten, wie Sie diese Art der Überwachung durchführen können. Obwohl es einfach ist, können Sie verschiedene Geräte testen, die in Ihrem CPD vorhanden sein können. Seine Prüfkraft wird bei Verwendung des ESP32 viel größer. Obwohl ich in diesem Beispiel WLAN verwende, können Sie auf Wunsch auch kabelgebundenes Internet verwenden.

Schritt 1: Montage

Montage
Montage

Schritt 2: Montage – Tisch

Montagetisch
Montagetisch

Schritt 3: TFT_eSPI-Bibliothek

TFT_eSPI-Bibliothek
TFT_eSPI-Bibliothek
TFT_eSPI-Bibliothek
TFT_eSPI-Bibliothek

Gehen Sie in der Arduino IDE zu Sketch-> Include

Bibliothek-> Bibliotheken verwalten …

TFT_eSPI installieren

Gehen Sie zum Bibliotheksordner und ändern Sie die Zeilen der Datei User_Setup.h, um sie wie in der Abbildung gezeigt zu belassen.

Schritt 4: ESP32_Check_Internet_Connection.ino

Beinhaltet und definiert

#define TINY_GSM_MODEM_SIM800#include

#enthalten

#enthalten

#enthalten

//Mude para o nome e senha da sua rede WiFi que quer testar #define SSID "SSID" #define PASSWORD "12345678" //+55 DDD Número do celular #define USER_PHONE_NUMBER "+5518912345678" //Tempo que deve esperar para Considerar como desconectado #define MAX_DISCONNECTED_TIME 10000 //10 seg //Tempo que deve esperar for cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 //30 min //Usar serial 1 para oder módulo gsm HardwareSerial SerialGSM(1); TinyGsm-ModemGSM(SerialGSM); //Tempo em que conectou à Internet Pela última vez uint32_t lastTimeConnected = 0; //Tempo em que fez a última ligação. Colocamos como -MAX_CALL_TIME_INTERVAL für sofortige //da Primeira vez que cair uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h na Pasta da Biblioteca TFT_eSPI display = TFT_eSPI();

Aufstellen

Void setup () {Serial.begin (115200); setupDisplay(); //Inicialize e configura o display setupGSM(); //Inicializa o módulo GSM xTaskCreatePinnedToCore(checkWiFiConnection, //Função que será executada "checkWiFiConnection", //Nome da tarefa 10000, //Tamanho da pilha NULL, //Parâmetro da tarefa (no caso não usamos). 2, // 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) }

SetupAnzeige

Void setupDisplay () {display.init (); //Inicialize o display display.setRotation(1); // Rotaciona display.fillScreen (TFT_BLUE); //Limpa oder Display mit Cor Azul display.setTextColor (TFT_WHITE, TFT_BLUE); //Coloca oder texto como branco com fundo azul display.setTextWrap(false, false);//Desativa quebra de linha display.setTextSize(1); //Muda oder tamanho tun texto display.setCursor (0, 0, 2); //Posição x, y e fonte do texto}

EinrichtungGSM

Void setupGSM () { showDisplay ("Setup GSM"); //O Modul GSM-Está nos GPIOs 4 und 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); Verzögerung (1000); // Neustart oder Modul neu starten if (!modemGSM.restart()) { ESP.restart(); Rückkehr; } //Espera pela rede celular if (!modemGSM.waitForNetwork()) {display.setCursor (0, 0); showDisplay("GSM-Netzwerkfehler"); Verzögerung (3000); ESP.restart(); Rückkehr; } }

checkWiFiConnection

Void checkWiFiConnection (void * p) { Während (true) {//Se não conectado ao rotador if (WiFi.status () != WL_CONNECTED) {//Manda conectar connectWiFi (); } // Verzögerung de 1s da tarefa. É feita em tickt. Para executar em millis dividimos pela konstante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (TaskDelay); } }

connectWiFi

Void connectWiFi () {//Manda conectar ao rotador com o nome e senha WiFi.begin (SSID, PASSWORD); Serial.println("Verbinden"); // Espera keine Weile até conectar while (WiFi.status () ! = WL_CONNECTED) { Serial.print ("."); Verzögerung (500); } //Se chegou aqui está conectado Serial.println (); Serial.println("Verbunden"); }

checkInternet

void checkInternet(void* p){//Verzögerung von 5 segundos da tarefa. É feita em tickt. Para executar em millis dividimos pela Konstante portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while(true) { //Internet einstellen if(hasInternet()) { //Geschwindigkeit im Tempo mit einer Verknüpfung mit lastTimeConnected = millis(); } //Aplica o Verzögerung vTaskDelay (taskDelay); } }

hatInternet

bool hasInternet () { WiFiClient-Client; //Endreço IP von Google 172.217.3.110 IPAddress adr = IPAddress(172, 217, 3, 110); // Tempolimit für Verbindung client.setTimeout(5); //Tenta conectar bool verbunden = client.connect(adr, 80); //Fecha a conexão client.stop(); //Retorna true se está conectado ou false se está desconectado return connected; }

Schleife

Void loop () { //Es ist eine Auflösung für ein bestimmtes Tempo erforderlich if (isDisconnectedForTooLong ()) { // Keine Anzeige, die aus showDisplay ("Disconnected") besteht; //Dieses schnelle Tempo ist ohne Liga für die Telefondefinition if (hasNotCalledPhoneInAWhile ()) { // Liga für die Telefondefinition für callPhone (); } } else {//Mostra keine Anzeige que está conectado showDisplay("Connected"); } //Espera 1 segundo para a próxima iteração do loop delay (1000); }

istDisconnectedForTooLong

bool isDisconnectedForTooLong(){ //Wiedergeben von true das Tempo eines letzten Schlüssels oder definitiv zurück millis() - lastTimeConnected > MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {//Retorna true wie das Tempo eines letzten Ligacão für das Haupttelefon oder definiert zurück millis() - lastTimeCalledPhone > MAX_CALL_TIME_INTERVAL; }

AnrufTelefon

Void callPhone () {//Faz eine Ligação für eine Telefondefinition if (modemGSM.callNumber (USER_PHONE_NUMBER)) {//Seien Sie eine Verbindung mit einer Verbindung Serial.println ("callphone ok"); // Geschwindigkeit oder Tempo muss mit einer letzten Verknüpfung lastTimeCalledPhone = millis(); } Else {//Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("callphone failed"); } //Beende eine Verbindung modemGSM.callHangup(); }

anzeigenAnzeige

void showDisplay (String message) {//Mostra a mensagem na primeira linha do display, limpando os eventuais caracteres extras display.setCursor (0, 0); display.println (Nachricht + " "); }

Schritt 5: Laden Sie die Dateien herunter

PDF

INO

Empfohlen: