Table des matières:

Que faire si votre lien tombe en panne ? : 5 étapes
Que faire si votre lien tombe en panne ? : 5 étapes

Vidéo: Que faire si votre lien tombe en panne ? : 5 étapes

Vidéo: Que faire si votre lien tombe en panne ? : 5 étapes
Vidéo: Téléphone tombé dans l'eau 😱 - Solution FACILE pour ton SMARTPHONE ! 2024, Novembre
Anonim
Image
Image
Que faire si votre lien tombe en panne ?
Que faire si votre lien tombe en panne ?

Dans cette vidéo, nous allons créer un capteur de chute de lien avec un ESP32 et un SIM800. Cela signifie qu'avec ce projet, nous pouvons vérifier la connexion à Internet et, en cas d'échec de connexion, appeler un numéro de téléphone pour avertir que le réseau est en difficulté.

C'est l'une des nombreuses façons d'effectuer ce type de surveillance. Bien qu'il soit simple, il vous permet de tester divers appareils pouvant exister dans votre CPD. Son pouvoir de contrôle devient beaucoup plus important lors de l'utilisation de l'ESP32. Bien que j'utilise le WiFi dans cet exemple, vous pouvez utiliser l'Internet câblé, si vous préférez.

Étape 1: Assemblage

Assemblée
Assemblée

Étape 2: Assemblage – Tableau

Assemblage – Table
Assemblage – Table

Étape 3: Bibliothèque TFT_eSPI

Bibliothèque TFT_eSPI
Bibliothèque TFT_eSPI
Bibliothèque TFT_eSPI
Bibliothèque TFT_eSPI

Dans l'IDE Arduino, allez dans Sketch-> Inclure

Bibliothèque-> Gérer les bibliothèques…

Installer TFT_eSPI

Accédez au dossier de la bibliothèque et modifiez les lignes du fichier User_Setup.h pour le laisser comme indiqué dans l'image.

Étape 4: ESP32_Check_Internet_Connection.ino

Comprend et définit

#define TINY_GSM_MODEM_SIM800#include

#comprendre

#comprendre

#comprendre

//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 para cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 //30 min //Usar serial 1 para o módulo gsm HardwareSerial SerialGSM (1); Modem TinyGsmGSM(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 pour tous les instants //da primeira vez que cair uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; //Pinagem em User_Setup.h dans les pâtes de la bibliothèque TFT_eSPI display = TFT_eSPI();

Installer

void setup(){ Serial.begin(115200); setupAffichage(); //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, //Parametro da tarefa (no caso não usamosor) 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) }

ConfigurationAffichage

void setupDisplay(){ display.init(); //Inicializa o display display.setRotation(1); //Rotaciona display.fillScreen(TFT_BLUE); //Limpa o display com a cor azul display.setTextColor(TFT_WHITE, TFT_BLUE); //Coloca o texto como branco com fundo azul display.setTextWrap(false, false);//Desativa a quebra de linha display.setTextSize(1); //Muda ou tamanho do texto display.setCursor(0, 0, 2); //Position x, y e fonte do texto }

ConfigurationGSM

void setupGSM(){ showDisplay("Configuration GSM"); //O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); retard(1000); //Redémarrer ou modifier si (!modemGSM.restart()) { ESP.restart(); revenir; } // Espera pela rede celular if (!modemGSM.waitForNetwork()) { display.setCursor(0, 0); showDisplay("Erreur de réseau GSM"); retard(3000); ESP.restart(); revenir; } }

vérifierWiFiConnection

void checkWiFiConnection(void* p){ while(true) { //Se connecte ao roteador if(WiFi.status() != WL_CONNECTED) { //Manda conectar connectWiFi(); } //Délai de 1s da tarefa. É feita em tiques. Pour exécuter en millièmes de division avec la constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay(taskDelay); } }

connecterWiFi

void connectWiFi () { // Manda conectar ao roteador com o nome e senha WiFi.begin (SSID, PASSWORD); Serial.println("Connexion"); // Espera no while até conectar while(WiFi.status() != WL_CONNECTED) { Serial.print("."); retard (500); } //Se chegou aqui está conectado Serial.println(); Serial.println("Connecté"); }

vérifierInternet

void checkInternet(void* p){ //Delay de 5 segundos da tarefa. É feita em tiques. Pour exécuter en millièmes de division avec la constante portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while(true) { //Se tem internet if(hasInternet()) { //Atualize o tempo em that aconteceu a útlima conexão lastTimeConnected = millis(); } //Aplica o retarder vTaskDelay(taskDelay); } }

a Internet

bool hasInternet(){ Client WiFiClient; //Endreço IP do Google 172.217.3.110 IPAddress adr = IPAddress(172, 217, 3, 110); // Limite de tempo pour la connexion client.setTimeout(5); //Tenta conectar bool connected = client.connect(adr, 80); //Faire une connexion client.stop(); //Retorna true se está conectado ou false se está desconectado return connected; }

Boucle

void loop() { //Seest desconectado por plus tempo que definimos if(isDisconnectedForTooLong()) { //Plus aucun affichage est desconectado showDisplay("Disconnected"); //Liga pour le téléphone défini si (hasNotCalledPhoneInAWhile()) { //Liga pour le téléphone défini callPhone(); } } else { //Mostra no display que isá conectado showDisplay("Connected"); } //Espera 1 segundo pour un iteração approximatif de loop delay(1000); }

isDisconnectedForTooLong

bool isDisconnectedForTooLong(){ //Retorna true se o tempo desde a última conexão for maior que o definido return millis() - lastTimeConnected > MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile() { //Retour vrai sur le tempo de la dernière connexion pour le téléphone pour le plus grand retour en millis() - lastTimeCalledPhone > MAX_CALL_TIME_INTERVAL; }

appel téléphonique

void callPhone(){ //Faz a ligação para o telefone definido if(modemGSM.callNumber(USER_PHONE_NUMBER)) { //Se entrou aqui é porque conseguiu realizar a ligação Serial.println("callphone ok"); //Atualize o tempo em que fo ita a ultime ligação lastTimeCalledPhone = millis(); } else { //Se entrou aqui é porque não conseguiu fazer a ligação Serial.println("l'appel a échoué"); } //Terminez un modem GSM.callHangup(); }

afficherAfficher

void showDisplay(String message){ //Plus d'un message avec l'affichage principal, limpando os eventuais caracteres extras display.setCursor(0, 0); display.println(message + " "); }

Étape 5: Téléchargez les fichiers

PDF

INO

Conseillé: