Cuprins:

Ce se întâmplă dacă legătura ta se blochează ?: 5 pași
Ce se întâmplă dacă legătura ta se blochează ?: 5 pași

Video: Ce se întâmplă dacă legătura ta se blochează ?: 5 pași

Video: Ce se întâmplă dacă legătura ta se blochează ?: 5 pași
Video: Termostat BLOCAT - ce inseamna si ce e de facut? 2024, Noiembrie
Anonim
Image
Image
Ce se întâmplă dacă linkul dvs. se blochează?
Ce se întâmplă dacă linkul dvs. se blochează?

În acest videoclip, vom crea un senzor de cădere a legăturii cu un ESP32 și un SIM800. Aceasta înseamnă că, cu acest proiect, putem verifica conexiunea la internet și, în cazul unei defecțiuni a conexiunii, putem apela un număr de telefon pentru a anunța că rețeaua are probleme.

Acesta este unul dintre mai multe moduri în care puteți efectua acest tip de monitorizare. Deși este simplu, vă permite să testați diferite dispozitive care pot exista în CPD. Puterea sa de verificare devine mult mai mare atunci când se utilizează ESP32. Deși folosesc WiFi în acest exemplu, puteți utiliza internetul prin cablu, dacă preferați.

Pasul 1: Asamblare

Asamblare
Asamblare

Pasul 2: Asamblare - Tabel

Asamblare - Masă
Asamblare - Masă

Pasul 3: Biblioteca TFT_eSPI

Biblioteca TFT_eSPI
Biblioteca TFT_eSPI
Biblioteca TFT_eSPI
Biblioteca TFT_eSPI

În IDE-ul Arduino, accesați Sketch-> Include

Bibliotecă-> Gestionați bibliotecile …

Instalați TFT_eSPI

Accesați dosarul bibliotecii și schimbați liniile fișierului User_Setup.h pentru a-l lăsa așa cum se arată în imagine.

Pasul 4: ESP32_Check_Internet_Connection.ino

Include și definește

#define TINY_GSM_MODEM_SIM800 # include

#include

#include

#include

// Mude para o name e senha da sua rede WiFi that 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 pentru módulo gsm HardwareSerial SerialGSM (1); TinyGsm modemGSM (SerialGSM); // Tempo em que conectou à internet pela ultima vez uint32_t lastTimeConnected = 0; // Tempo em que fez a ultima ligação. Colocamos como -MAX_CALL_TIME_INTERVAL para ligar imediat // da prima dată care cair uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h na pasta da biblioteca TFT_eSPI display = TFT_eSPI ();

Înființat

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa și configura o afișare setupGSM (); // Inicializa o módulo GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Funcția care va fi executată "checkWiFiConnection", // Numele da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no case não usamos) 2, // Prioritate da tarefa NULL, // Caso queria manter uma referência para a tarefa care vai ser criada (no caso não precisamos) 0); // Numărul de bază care va fi executat la tarefa (utilizăm o bază 0 pentru o buclă ficar de livrare cu o bază 1) xTaskCreatePinnedToCore (checkInternet, // Funcția care va fi executată "checkInternet", // Numele da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não usamos) 2, // Prioritate da tarefa NULL, // Caso queria manter uma referência para a tarefa care va fi criada (no caso não precisamos) 0); // Numărul de bază care va fi executat la o tarefa (utilizăm o bază 0 pentru o buclă de livrare com o bază 1)}

SetupDisplay

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 text ca branco com fundo azul display.setTextWrap (false, false); // Desativă a cărei linii display.setTextSize (1); // Muda o tamanho do text display.setCursor (0, 0, 2); // Posição x, y e fonte do texto}

SetupGSM

void setupGSM () {showDisplay ("Configurare GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); întârziere (1000); // Reporniți o módulo if (! ModemGSM.restart ()) {ESP.restart (); întoarcere; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay („Eroare rețea GSM”); întârziere (3000); ESP.restart (); întoarcere; }}

verificați Conectare Wi-Fi

void checkWiFiConnection (void * p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Delay de 1s da tarefa. E feita em ticks. Pentru a executa millis divizii constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

conectațiWiFi

void connectWiFi () {// Manda conectar ao roteador com o name e senha WiFi.begin (SSID, PASSWORD); Serial.println („Conectarea”); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); întârziere (500); } // Se chegou aqui está conectado Serial.println (); Serial.println („Conectat”); }

verificați Internet

void checkInternet (void * p) {// Delay de 5 segundos da tarefa. E feita em ticks. Pentru a executa millis divizii constante portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while (true) {// Se tem internet if (hasInternet ()) {// Atualiza o tempo em that aconteceu a útlima conexão lastTimeConnected = millis (); } // Aplica o delay vTaskDelay (taskDelay); }}

areInternet

bool areInternet () {client Client WiFi; // Endreço IP de Google 172.217.3.110 IPAddress adr = IPAddress (172, 217, 3, 110); // Tempo limite pentru conexiune client.setTimeout (5); // Tenta conectar bool connected = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado return connected; }

Buclă

void loop () {// Se desconectează mai mult timp care definim dacă (isDisconnectedForTooLong ()) {// Afișează nu este afișat care este desconectat showDisplay ("Deconectat"); // Se faz tempo que não liga para o telefone definido if (hasNotCalledPhoneInAWhile ()) {// Liga para o telefone definido callPhone (); }} else {// Show no display que está conectado showDisplay ("Connected"); } // Espera 1 segundo pentru următoarea iterație do loop delay (1000); }

isDisconnectedForTooLong

bool isDisconnectedForTooLong () {// Retorna true se o tempo de la ultima conexiune for maior care o definite return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {// Retorna true se o tempo de la ultima ligă pentru telefonul pentru mai mare care să definească return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

callPhone

void callPhone () {// Faz a ligação para o telefone definido if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Se intră aici pentru că a realizat un liga Serial.println ("callphone ok"); // Atualiza o tempo em that foi feita a ultima ligação lastTimeCalledPhone = millis (); } else {// Se intră acum pentru că n-am obținut fază la liga Serial.println ("callphone failure"); } // Terminați un modem ligatGSM.callHangup (); }

showDisplay

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

Pasul 5: Descărcați fișierele

PDF

EU NU

Recomandat: