Table des matières:
- Étape 1: Assemblage
- Étape 2: Assemblage – Tableau
- Étape 3: Bibliothèque TFT_eSPI
- Étape 4: ESP32_Check_Internet_Connection.ino
- Étape 5: Téléchargez les fichiers
Vidéo: Que faire si votre lien tombe en panne ? : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
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
Étape 2: Assemblage – Tableau
Étape 3: 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
INO
Conseillé:
Panne de courant alternatif, éclairage de chemin à DEL alimenté par batterie : 8 étapes
Panne de courant alternatif, éclairage de chemin à DEL alimenté par batterie : lors d'une récente panne de courant, dans les profondeurs les plus sombres de mon sous-sol… une lumière aurait été très utile en effet. Malheureusement, ma lampe de poche était à quelques pièces sombres. J'ai tâtonné un peu, trouvé la lumière et me suis dirigé vers la salle familiale. Ma wi
Une horloge qui tombe du mur quand vous la regardez : 4 étapes
Une horloge qui tombe du mur quand vous la regardez : Avez-vous déjà voulu une horloge qui ne vous indique pas l'heure. Moi non plus, mais c'est ce que vous obtenez lorsque vous me mettez en quarantaine avec quelques composants électroniques et Internet
La radio Philips des années 50 sauvée de la tombe : 7 étapes (avec photos)
La radio Philips des années 50 sauvée de la tombe : Après mes boombox de valise, je voulais continuer à utiliser des enceintes d'enceintes intéressantes. Cette fois, j'ai utilisé une enceinte qui est en fait destinée à abriter des haut-parleurs et tous les composants supplémentaires. J'ai trouvé un t Philips des années 50 endommagé et ne fonctionnant pas
Contrôlez votre ordinateur avec votre Ipod Touch ou votre Iphone : 4 étapes
Contrôlez votre ordinateur avec votre Ipod Touch ou Iphone : c'est mon premier instructable donc je suis désolé si ce n'est pas le meilleur. Avez-vous déjà eu envie de vous asseoir sur votre canapé ou votre lit et de contrôler vos appareils Mac ou Windows en toute simplicité. Cette instructable vous apprendra comment contrôler complètement votre ordinateur avec votre Ipo
Comment faire en sorte que votre Ipod Touch (ou votre Iphone si vous l'avez vraiment foiré) pour arrêter de planter par manque de mémoire : 3 étapes
Comment obtenir votre Ipod Touch (ou Iphone si vous avez vraiment foiré) pour arrêter de planter par manque de mémoire: Salut, là, utilisateurs d'ipod touch et d'iphone. Ok, donc je suis sûr que vous avez tous une compréhension un peu basique du fonctionnement de l'ipod Apple, n'est-ce pas ? Vous ouvrez une application. Cette application utilisera n'importe où entre peut-être sur un ipod touch 1G, 5-30 Mo du disponible