Indholdsfortegnelse:

Hvad hvis dit link går i stykker ?: 5 trin
Hvad hvis dit link går i stykker ?: 5 trin

Video: Hvad hvis dit link går i stykker ?: 5 trin

Video: Hvad hvis dit link går i stykker ?: 5 trin
Video: Jeg har sex med, hvem jeg vil | Skamløs 2024, November
Anonim
Image
Image
Hvad hvis dit link går i stykker?
Hvad hvis dit link går i stykker?

I denne video vil vi oprette en link drop -sensor med en ESP32 og et SIM800. Det betyder, at vi med dette projekt kan verificere forbindelsen til internettet, og i tilfælde af en forbindelsesfejl kan du ringe til et telefonnummer for at underrette om, at netværket er i problemer.

Dette er en af mange måder, du kan udføre denne type overvågning på. Selvom det er enkelt, giver det dig mulighed for at teste forskellige enheder, der kan eksistere inden for din CPD. Dens kontrolstyrke bliver meget større, når du bruger ESP32. Selvom jeg bruger WiFi i dette eksempel, kan du bruge kablet internet, hvis du foretrækker det.

Trin 1: Montering

montage
montage

Trin 2: Montering - Tabel

Montering - Bord
Montering - Bord

Trin 3: TFT_eSPI -bibliotek

TFT_eSPI -bibliotek
TFT_eSPI -bibliotek
TFT_eSPI -bibliotek
TFT_eSPI -bibliotek

I Arduino IDE skal du gå til Skitse-> Inkluder

Bibliotek-> Administrer biblioteker …

Installer TFT_eSPI

Gå til biblioteksmappen, og rediger linjerne i filen User_Setup.h for at efterlade den som vist på billedet.

Trin 4: ESP32_Check_Internet_Connection.ino

Inkluderer og definerer

#define TINY_GSM_MODEM_SIM800#inkludere

#omfatte

#omfatte

#omfatte

// 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 omoddo 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 til pasta da biblioteca TFT_eSPI display = TFT_eSPI ();

Opsætning

ugyldig opsætning () {Serial.begin (115200); setupDisplay (); // Inficial e konfigura o display setupGSM (); // Inicializa o módulo GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será executada "checkWiFiConnection", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não usamade) 2, // Prior da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); // Nummer til kerner, der sera eksekverer og tager (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); // Nummer på kerne, der ser udførelse og anvendelse (usamos o core 0 para o loop ficar livre com o core 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 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}

OpsætningGSM

void setupGSM () {showDisplay ("Setup GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); forsinkelse (1000); // Genstart eller åbn hvis (! ModemGSM.restart ()) {ESP.restart (); Vend tilbage; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM -netværksfejl"); forsinkelse (3000); ESP.restart (); Vend tilbage; }}

checkWiFiConnection

void checkWiFiConnection (void* p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Forsinkelse med 1s da tarefa. É feita em flåter. For eksekver i millis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

connectWiFi

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

checkInternet

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. É feita em flåter. For eksekver i millis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; mens (true) {// Se tem internet if (hasInternet ()) {// Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Anvend eller forsink vTaskDelay (taskDelay); }}

harInternet

bool hasInternet () {WiFiClient -klient; // Endreço IP til Google 172.217.3.110 IPAddress adr = IPAddress (172, 217, 3, 110); // Tempo limite para conexão client.setTimeout (5); // Tenta conectar bool tilsluttet = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se est est conectado ou false se está desconectado return connected; }

Sløjfe

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 telefone definido if (hasNotCalledPhoneInAWhile ()) {// Liga para o telefone definido callPhone (); }} andet {// Mostra no display que está conectado showDisplay ("Connected"); } // Espera 1 segundo para a próxima iteração do 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 () {// Retorna true se o tempo desde a última ligacão para o phone for maior que o definido 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 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 (); } andet {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("callphone failed"); } // Termina og ligação modemGSM.callHangup (); }

showDisplay

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

Trin 5: Download filerne

PDF

INO

Anbefalede: