Què passa si el vostre enllaç falla ?: 5 passos
Què passa si el vostre enllaç falla ?: 5 passos
Anonim
Image
Image
Què passa si el vostre enllaç falla?
Què passa si el vostre enllaç falla?

En aquest vídeo, crearem un sensor de caiguda d’enllaços amb un ESP32 i un SIM800. Això significa que amb aquest projecte podem verificar la connexió a Internet i, en cas de fallada de la connexió, trucar a un número de telèfon per notificar que la xarxa té problemes.

Aquesta és una de moltes maneres de realitzar aquest tipus de control. Tot i que és senzill, us permet provar diversos dispositius que poden existir dins del vostre CPD. El seu poder de comprovació es fa molt més gran quan s’utilitza l’ESP32. Tot i que faig servir WiFi en aquest exemple, si ho preferiu, podeu utilitzar internet per cable.

Pas 1: Muntatge

muntatge
muntatge

Pas 2: Muntatge - Taula

Muntatge - Taula
Muntatge - Taula

Pas 3: biblioteca TFT_eSPI

Biblioteca TFT_eSPI
Biblioteca TFT_eSPI
Biblioteca TFT_eSPI
Biblioteca TFT_eSPI

A l’IDE Arduino, aneu a Sketch-> Inclou

Biblioteca-> Gestiona les biblioteques …

Instal·leu TFT_eSPI

Aneu a la carpeta de la biblioteca i canvieu les línies del fitxer User_Setup.h per deixar-lo tal com es mostra a la imatge.

Pas 4: ESP32_Check_Internet_Connection.ino

Inclou i defineix

#define TINY_GSM_MODEM_SIM800 # include

#incloure

#incloure

#incloure

// Mude para o nome e senha da su rede WiFi que quer testar #define SSID "SSID" #define PASSWORD "12345678" // + 55 DDD Número do celular #define USER_PHONE_NUMBER "+5518912345678" // Temps que s'ha d'esperar per considerar com desconectat #define MAX_DISCONNECTED_TIME 10000 // 10 seg // Tempo que deu esperar per cada lliga #define MAX_CALL_TIME_INTERVAL 1800000 // 30 min // Usar serial 1 para o módulo gsm HardwareSerial SerialGSM (1); TinyGsm modemGSM (SerialGSM); // Tempo em que connectou à internet pela última vez uint32_t lastTimeConnected = 0; // Tempo em que fez a última lliga. Col·loquem com -MAX_CALL_TIME_INTERVAL per lligar immediatament // da primera vegada que cair uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h na pasta da biblioteca TFT_eSPI display = TFT_eSPI ();

Configuració

configuració nul·la () {Serial.begin (115200); setupDisplay (); // Inicialitzar i configurar o mostrar setupGSM (); // Inicialització o mòdul GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Funció que serà executada "checkWiFiConnection", // Nom de la tarefa 10000, // Tamanho da pilha NULL, // Parámetro da tarefa (no caso no usamos) 2, // Prioritat da tarefa NULL, // Cas queria mantenir uma referência para a tarefa que vai ser criada (no caso no 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, // Funcionament que serà executat "checkInternet", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parámetro da tarefa (no caso no usamos) 2, // Prioridade da tarefa NULL, // Cas queria mantenir uma referência para a tarefa que vai ser criada (no caso no precisamos) 0); // Número do core que serà executat a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}

Configuració de visualització

void setupDisplay () {display.init (); // Inicialitzar o mostrar display.setRotation (1); // Rotaciona display.fillScreen (TFT_BLUE); // Limpa o display com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca o text com a blanc com a fons blau display.setTextWrap (false, false); // Desativa a quebra de linha display.setTextSize (1); // Muda o tamanho do texto display.setCursor (0, 0, 2); // Posição x, y e fonte do texto}

Configuració de GSM

void setupGSM () {showDisplay ("Configuració GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); retard (1000); // Reinicieu o módulo if (! ModemGSM.restart ()) {ESP.restart (); tornar; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("Error de xarxa GSM"); retard (3000); ESP.restart (); tornar; }}

checkWiFiConnection

void checkWiFiConnection (void * p) {while (true) {// No està connectat al roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda connectar connectWiFi (); } // Delay de 1s da tarefa. He fetita em tick. Per executar-los mil·límetres dividits constantment portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

connectar-se a Wi-Fi

void connectWiFi () {// Manda connectar ao roteador com o nome e senha WiFi.begin (SSID, PASSWORD); Serial.println ("Connexió"); // Espera no while até connectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); retard (500); } // Se chegou aqui està connectat Serial.println (); Serial.println ("Connectat"); }

comproveu Internet

void checkInternet (void * p) {// Delay de 5 segundos da tarefa. He fetita em tick. Per executar-los mil·límetres dividits constant portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while (true) {// Se tem internet if (hasInternet ()) {// Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Aplica o delay vTaskDelay (taskDelay); }}

té Internet

bool hasInternet () {client Client WiFi; // Endreço IP do Google 172.217.3.110 IPAddress adr = IPAddress (172, 217, 3, 110); // Temps límit per a connexió client.setTimeout (5); // Tenta connectar bool connectat = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se està connectat o false se está desconectado return connected; }

Bucle

void loop () {// Es troba desconnectat per més temps que definits if (isDisconnectedForTooLong ()) {// Mostra no display that està desconectat showDisplay ("Disconnected"); // Se faz tempo que no liga para o teléfono definido if (hasNotCalledPhoneInAWhile ()) {// Lliga per a un telèfon definit callPhone (); }} else {// Mostra no display que està connectat showDisplay ("Connected"); } // Espera 1 segon per a la propera iteração do loop delay (1000); }

isDisconnectedForTooLong

bool isDisconnectedForTooLong () {// Retorna true se o tempo desde una última conexión for maior que o definido return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {// Retorna true se o tempo desde un último ligacão para o telefone for maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

trucada telefònica

void callPhone () {// Faz a lligação for o telefone definido if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Se entrou aqui é porque conseguiu realizar a ligação Serial.println ("callphone ok"); // Atualiza o tempo em que foi feita a última ligação lastTimeCalledPhone = millis (); } else {// Se entrou aqui é porque no conseguiu fazer a ligação Serial.println ("callphone failure"); } // Termina un lligaç modemGSM.callHangup (); }

showDisplay

void showDisplay (String message) {// Mostra un missatge a primera línia de visualització, esborrant els esdeveniments de caràcters addicionals display.setCursor (0, 0); display.println (missatge + ""); }

Pas 5: baixeu els fitxers

PDF

INO

Recomanat: