Taula de continguts:

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

Vídeo: Què passa si el vostre enllaç falla ?: 5 passos

Vídeo: Què passa si el vostre enllaç falla ?: 5 passos
Vídeo: ПОЛТЕРГЕЙСТ 5 УРОВНЯ СНОВА НЕ ДАЕТ ПОКОЯ, ЖУТКАЯ АКТИВНОСТЬ / LEVEL 5 POLTERGEIST, CREEPY ACTIVITY 2024, De novembre
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: