Sadržaj:

Što ako vam se veza sruši?: 5 koraka
Što ako vam se veza sruši?: 5 koraka

Video: Što ako vam se veza sruši?: 5 koraka

Video: Što ako vam se veza sruši?: 5 koraka
Video: Šta kada te ignoriše + kako da njegovo ignorisanje pretvoriš u opsesiju tobom 😉 2024, Studeni
Anonim
Image
Image
Što ako vam se veza sruši?
Što ako vam se veza sruši?

U ovom videu stvorit ćemo senzor pada veze s ESP32 i SIM800. To znači da ovim projektom možemo provjeriti vezu s internetom, a u slučaju prekida veze nazvati telefonski broj kako bismo obavijestili da je mreža u nevolji.

Ovo je jedan od mnogih načina na koje možete izvesti ovu vrstu nadzora. Iako je jednostavan, omogućuje vam testiranje različitih uređaja koji možda postoje u vašem CPD -u. Njegova moć provjere postaje mnogo veća kada se koristi ESP32. Iako u ovom primjeru koristim WiFi, možete koristiti žičani internet, ako želite.

Korak 1: Montaža

Skupština
Skupština

Korak 2: Montaža - Tablica

Montaža - Tablica
Montaža - Tablica

Korak 3: TFT_eSPI knjižnica

Knjižnica TFT_eSPI
Knjižnica TFT_eSPI
Knjižnica TFT_eSPI
Knjižnica TFT_eSPI

U Arduino IDE idite na Sketch-> Include

Knjižnica-> Upravljanje knjižnicama …

Instalirajte TFT_eSPI

Idite u mapu knjižnice i promijenite retke datoteke User_Setup.h tako da je ostavite kako je prikazano na slici.

Korak 4: ESP32_Check_Internet_Connection.ino

Uključuje i definira

#define TINY_GSM_MODEM_SIM800#include

#uključi

#uključi

#uključi

// 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 obzir 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 serijski 1 para o módulo gsm HardwareSerial SerialGSM (1); TinyGsm modemGSM (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 para ligar imediatamente // da primeira vez que cair uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h na popisu biblioteka TFT_eSPI display = TFT_eSPI ();

Postaviti

void setup () {Serial.begin (115200); setupDisplay (); // Pokretanje i konfiguracija prikaza zaslona setupGSM (); // Inicializa o modulo GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será executada "checkWiFiConnection", // Ime da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não Prethodno) da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); // Numero do core que será executada a tarefa (usamos o core 0 para petlje ficar livre com o core 1) xTaskCreatePinnedToCore (checkInternet, // Função que será executada "checkInternet", // Ime 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 petlja ficar livre com o core 1)}

SetupDisplay

void setupDisplay () {display.init (); // Pokretanje prikaza 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 o tamanho do texto display.setCursor (0, 0, 2); // Posição x, y e fonte do texto}

Postavljanje GSM -a

void setupGSM () {showDisplay ("Postavljanje GSM -a"); // O Módulo GSM ima GPIO -e 4 i 2 SerialGSM.počnite (9600, SERIAL_8N1, 4, 2, lažno); kašnjenje (1000); // Ponovo pokrenite ili unesite if (! ModemGSM.restart ()) {ESP.restart (); povratak; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("Greška GSM mreže"); kašnjenje (3000); ESP.restart (); povratak; }}

checkWiFiConnection

void checkWiFiConnection (void* p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Odgoda od 1s da tarefa. É feita em krpelji. Za izvršitelja u milisima podijeljeni su stalni portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

connectWiFi

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

checkInternet

void checkInternet (void* p) {// Odgoda od 5 sekundi do tarefe. É feita em krpelji. Za izvršitelja u milisima podijeljeni su stalni portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while (true) {// Se tem internet if (hasInternet ()) {// Atualiza o temp em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Aplikacija o odgodi vTaskDelay (taskDelay); }}

hasInternet

bool hasInternet () {WiFiClient klijent; // Endreço IP do Google 172.217.3.110 IPAddress adr = IPAddress (172, 217, 3, 110); // Tempo limite para conexão 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; }

Petlja

void loop () {// Se está desconectado por mais tempo que definimos if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("Disconnected"); // Se faz tempo que não liga para o telefonu definido if (hasNotCalledPhoneInAWhile ()) {// Liga para o telefonu definido callPhone (); }} else {// Mostra no display que está conectado showDisplay ("Connected"); } // Espera 1 segundo para próxima iteração do petlje kašnjenja (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 () {// Retorna true se o tempo desde a última ligacão para or phone for maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

poziv na telefon

void callPhone () {// Faz a ligação para or phone definido if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Se entrou aqui é porque conseguiu realizar a ligação Serial.println ("callphone ok"); // Atualiza o tempu em que foi feita a última ligação lastTimeCalledPhone = millis (); } else {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("callphone failed"); } // Terminala i ligação modemGSM.callHangup (); }

showDisplay

void showDisplay (String message) {// Prikazuje izbornik na početnoj stranici za prikaz, ograničavajući događaj može prikazati dodatke display.setCursor (0, 0); display.println (poruka + ""); }

Korak 5: Preuzmite datoteke

PDF

INO

Preporučeni: