Obsah:

Čo keď váš odkaz zlyhá?: 5 krokov
Čo keď váš odkaz zlyhá?: 5 krokov

Video: Čo keď váš odkaz zlyhá?: 5 krokov

Video: Čo keď váš odkaz zlyhá?: 5 krokov
Video: Пять простых шагов к достатку и изобилию, в Новом 2022 году вы себя не узнаете, и то что, произойдет 2024, November
Anonim
Image
Image
Čo keď váš odkaz zlyhá?
Čo keď váš odkaz zlyhá?

V tomto videu vytvoríme snímač pádu odkazu s ESP32 a SIM800. To znamená, že pomocou tohto projektu môžeme overiť pripojenie na internet a v prípade zlyhania pripojenia zavolajte na telefónne číslo, ktoré vás upozorní, že sieť má problémy.

Toto je jeden z mnohých spôsobov, ako môžete vykonávať tento typ monitorovania. Aj keď je to jednoduché, umožňuje vám to vyskúšať rôzne zariadenia, ktoré môžu existovať v rámci vašej CPD. Jeho kontrola je pri použití ESP32 oveľa väčšia. Aj keď v tomto prípade používam WiFi, môžete použiť káblové pripojenie na internet, ak chcete.

Krok 1: Montáž

zhromaždenie
zhromaždenie

Krok 2: Zostavenie - stôl

Zostava - stôl
Zostava - stôl

Krok 3: Knižnica TFT_eSPI

Knižnica TFT_eSPI
Knižnica TFT_eSPI
Knižnica TFT_eSPI
Knižnica TFT_eSPI

V IDE Arduino prejdite na Skica-> Zahrnúť

Knižnica-> Spravovať knižnice …

Nainštalujte TFT_eSPI

Prejdite do priečinka knižnice a zmeňte riadky súboru User_Setup.h tak, aby zostal tak, ako je to znázornené na obrázku.

Krok 4: ESP32_Check_Internet_Connection.ino

Zahŕňa a definuje

#define TINY_GSM_MODEM_SIM800#include

#zahrnúť

#zahrnúť

#zahrnúť

// Hromadné vyhľadávanie alebo testovanie WiFi testovania #definovať SSID "SSID" #definovať HESLO "12345678" //+55 DDD Número do celular #define USER_PHONE_NUMBER "+5518912345678" // Tempo que deve esperar para úvahy 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 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 pasta da biblioteca TFT_eSPI display = TFT_eSPI ();

Nastaviť

void setup () {Serial.begin (115200); setupDisplay (); // Inicializácia a konfigurácia nastavenia displejaGSM (); // Inicializa or 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 usamos 2, 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á executionada 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); // Número 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); // Limp o display com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); // Coloco 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

neplatné nastavenieGSM () {showDisplay ("Nastavenie GSM"); // O moduloch GSM hlavné GPIO 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); oneskorenie (1000); // Reštartujte o módulo if (! ModemGSM.restart ()) {ESP.restart (); návrat; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay („Chyba siete GSM“); oneskorenie (3000); ESP. Restart (); návrat; }}

checkWiFiConnection

void checkWiFiConnection (void* p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Oneskorenie oneskorenia o 1 s. É feita em tiká. Viacnásobné vykonanie rozdelenia portov konštantného portuTICK_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 ("Pripojenie"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); oneskorenie (500); } // Se chegou aqui está conectado Serial.println (); Serial.println („Pripojené“); }

checkInternet

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. É feita em tiká. Viacnásobné vykonanie rozdelenia portov konštantného portuTICK_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 () {klient WiFiClient; // Adresa 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; }

Slučka

void loop () {// Pozrite sa na niektoré detaily a definujte tempo if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("Disconnected"); // Väčšie tempo pre definíciu telefónu, ak (hasNotCalledPhoneInAWhile ()) {// Liga pre definíciu telefónu pre callPhone (); }} else {// Mostra no display que está conectado showDisplay ("Connected"); } // Čas oneskorenia slučky (1 000); }

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; }

zatelefonovať

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 (); } else {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("callphone failed"); } // Koniec a ďalší modemGSM.callHangup (); }

showDisplay

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

Krok 5: Stiahnite si súbory

PDF

INO

Odporúča: