Innehållsförteckning:

Vad händer om din länk kraschar ?: 5 steg
Vad händer om din länk kraschar ?: 5 steg

Video: Vad händer om din länk kraschar ?: 5 steg

Video: Vad händer om din länk kraschar ?: 5 steg
Video: Bruden spyr, blir nerbajsad och svimmar på bröllop 2024, November
Anonim
Image
Image
Vad händer om din länk kraschar?
Vad händer om din länk kraschar?

I den här videon kommer vi att skapa en länkfallssensor med en ESP32 och ett SIM800. Det betyder att vi med detta projekt kan verifiera anslutningen till internet, och i händelse av en anslutningsfel, ring ett telefonnummer för att meddela att nätverket har problem.

Detta är ett av många sätt du kan utföra denna typ av övervakning. Även om det är enkelt kan du testa olika enheter som kan finnas inom din CPD. Dess kontrollkraft blir mycket större när du använder ESP32. Även om jag använder WiFi i det här exemplet kan du använda fast internet om du föredrar det.

Steg 1: Montering

hopsättning
hopsättning

Steg 2: Montering - Tabell

Montering - Bord
Montering - Bord

Steg 3: TFT_eSPI -bibliotek

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

I Arduino IDE, gå till Sketch-> Inkludera

Bibliotek-> Hantera bibliotek …

Installera TFT_eSPI

Gå till biblioteksmappen och ändra raderna i filen User_Setup.h för att lämna den som visas på bilden.

Steg 4: ESP32_Check_Internet_Connection.ino

Inkluderar och definierar

#define TINY_GSM_MODEM_SIM800#include

#omfatta

#omfatta

#omfatta

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

Uppstart

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura 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); // Numero do core que será executada a 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); // Numero do core que será executada a 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}

SetupGSM

void setupGSM () {showDisplay ("Setup GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); fördröjning (1000); // Starta om eller om (! ModemGSM.restart ()) {ESP.restart (); lämna tillbaka; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM -nätverksfel"); fördröjning (3000); ESP.start (); lämna tillbaka; }}

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 fästingar. Para executar 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 ("Ansluter"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); fördröjning (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Ansluten"); }

checkInternet

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. É feita em fästingar. Para executar em millis dividimos pela constante 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); }}

hasInternet

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

Slinga

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

ringa 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 (); } annat {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("callphone failed"); } // Termina och 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 (meddelande + ""); }

Steg 5: Ladda ner filerna

PDF

INO

Rekommenderad: