Innholdsfortegnelse:

Hva om lenken din krasjer ?: 5 trinn
Hva om lenken din krasjer ?: 5 trinn

Video: Hva om lenken din krasjer ?: 5 trinn

Video: Hva om lenken din krasjer ?: 5 trinn
Video: Noen burde ikke bli foreldre 2024, November
Anonim
Image
Image
Hva om lenken din krasjer?
Hva om lenken din krasjer?

I denne videoen vil vi lage en link drop -sensor med en ESP32 og et SIM800. Dette betyr at vi med dette prosjektet kan bekrefte tilkoblingen til internett, og i tilfelle en tilkobling mislykkes, kan du ringe et telefonnummer for å varsle om at nettverket er i trøbbel.

Dette er mange måter du kan utføre denne typen overvåking på. Selv om det er enkelt, lar det deg teste forskjellige enheter som kan eksistere innenfor CPD. Kontrollens kraft blir mye større når du bruker ESP32. Selv om jeg bruker WiFi i dette eksemplet, kan du bruke internett via kabel hvis du foretrekker det.

Trinn 1: Montering

montering
montering

Trinn 2: Montering - Tabell

Montering - Bord
Montering - Bord

Trinn 3: TFT_eSPI bibliotek

TFT_eSPI bibliotek
TFT_eSPI bibliotek
TFT_eSPI bibliotek
TFT_eSPI bibliotek

I Arduino IDE, gå til Skisse-> Inkluder

Bibliotek-> Administrer biblioteker …

Installer TFT_eSPI

Gå til biblioteksmappen og endre linjene i User_Setup.h -filen for å la den stå som vist på bildet.

Trinn 4: ESP32_Check_Internet_Connection.ino

Inkluderer og definerer

#define TINY_GSM_MODEM_SIM800#inkluderer

#inkludere

#inkludere

#inkludere

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

Oppsett

ugyldig oppsett () {Serial.begin (115200); setupDisplay (); // Innledende konfigurasjon av skjermoppsettGSM (); // 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 for kjerne som ser utførelse og tarefa (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 for kjerne som ser utførelse og tarefa (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}

OppsettGSM

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); // Start på nytt hvis (! ModemGSM.restart ()) {ESP.restart (); komme tilbake; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM -nettverksfeil"); forsinkelse (3000); ESP.start (); komme tilbake; }}

checkWiFiConnection

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. É feita em flått. For execar em 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 ("Koble til"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); forsinkelse (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Tilkoblet"); }

sjekkInternett

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. É feita em flått. For execar em 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 (); } // Bruk eller forsink vTaskDelay (taskDelay); }}

hasInternet

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

Løkke

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 (); }} annet {// 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 telefone for maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

ring telefon

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 (); } annet {// 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 melding) {// Mostra a mensagem na primeira linha do display, limpando os eventuais caracteres extras display.setCursor (0, 0); display.println (melding + ""); }

Trinn 5: Last ned filene

PDF

INO

Anbefalt: