Turinys:

Ką daryti, jei jūsų nuoroda sugenda?: 5 žingsniai
Ką daryti, jei jūsų nuoroda sugenda?: 5 žingsniai

Video: Ką daryti, jei jūsų nuoroda sugenda?: 5 žingsniai

Video: Ką daryti, jei jūsų nuoroda sugenda?: 5 žingsniai
Video: "Сила желчи и Дополнительная жизнь для позвоночника" Запись мастер-класса 2024, Lapkritis
Anonim
Image
Image
Ką daryti, jei jūsų nuoroda sugenda?
Ką daryti, jei jūsų nuoroda sugenda?

Šiame vaizdo įraše sukursime nuorodos kritimo jutiklį su ESP32 ir SIM800. Tai reiškia, kad vykdydami šį projektą galime patikrinti prisijungimą prie interneto, o nutrūkus ryšiui - paskambinti telefono numeriu ir pranešti, kad tinklas turi problemų.

Tai yra vienas iš daugelio būdų, kaip galite atlikti tokio tipo stebėjimą. Nors tai paprasta, tai leidžia išbandyti įvairius įrenginius, kurie gali būti jūsų CPD. Jo tikrinimo galia tampa daug didesnė naudojant ESP32. Nors šiame pavyzdyje naudoju „WiFi“, jei norite, galite naudoti laidinį internetą.

1 žingsnis: Surinkimas

Surinkimas
Surinkimas

2 žingsnis: Surinkimas - stalas

Surinkimas - stalas
Surinkimas - stalas

3 veiksmas: TFT_eSPI biblioteka

TFT_eSPI biblioteka
TFT_eSPI biblioteka
TFT_eSPI biblioteka
TFT_eSPI biblioteka

„Arduino IDE“eikite į Sketch-> Include

Biblioteka-> Tvarkyti bibliotekas …

Įdiekite TFT_eSPI

Eikite į bibliotekos aplanką ir pakeiskite failo User_Setup.h eilutes, kad paliktumėte jį, kaip parodyta paveikslėlyje.

4 veiksmas: ESP32_Check_Internet_Connection.ino

Apima ir apibrėžia

#define TINY_GSM_MODEM_SIM800#include

#įtraukti

#įtraukti

#įtraukti

// 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" // Tempe que deve esperar para 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 1 metodo gsm HardwareSerial SerialGSM (1); „TinyGsm“modemasGSM („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 lastTimeConedPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h su pasta da biblioteca TFT_eSPI display = TFT_eSPI ();

Sąranka

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Inicializacija arba GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será executab "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á executab 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á executab 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 arba ekranas com or cor display. SetTextColor (TFT_WHITE, TFT_BLUE); // Coloca arba 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}

SąrankaGSM

void setupGSM () {showDisplay („GSM sąranka“); // O „Modulo GSM está nos GPIOs 4 e 2 SerialGSM.begin“(9600, SERIAL_8N1, 4, 2, false); vėlavimas (1000); // Paleisti iš naujo arba metodą if (! ModemGSM.restart ()) {ESP.restart (); grįžti; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay („GSM tinklo klaida“); vėlavimas (3000); ESP.restart (); grįžti; }}

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. Fe fe em erkių. Paleiskite vykdytoją, turėdami milijardą dividendų, jei reikia, portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

connectWiFi

void connectWiFi () {// Manda conectar ao roteador com o nome and senha WiFi.begin (SSID, PASSWORD); Serial.println („Prisijungimas“); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vėlavimas (500); } // Se chegou aqui está conectado Serial.println (); Serial.println („Prisijungta“); }

checkInternet

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. É feita em erkės. Paleiskite vykdytoją, turėdami milijardą dividendų, jei reikia, portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while (tiesa) {// Se tem internet if (hasInternet ()) {// Atualizacija ar tempas em que aconteceu a utlima conexão lastTimeConnected = millis (); } // Aplica o delay vTaskDelay (taskDelay); }}

hasInternet

bool hasInternet () {WiFiClient klientas; // 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; }

Kilpa

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 (hasNotConedPhoneInAWhile ()) {// Liga para o telefone apibrėžtas callPhone (); }} else {// Mostra no display que está conectado showDisplay ("Connected"); } // Espera 1 segundo para a próxima iteração do loop delay (1000); }

isDisconnectedForTooLong

bool isDisconnectedForTooLong () {// Sugrįžta tikra se o tempo tvarka ir pasiekiama, kai maior que o definido return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotConedPhoneInAWhile () {// Atkurti tikruosius tempus, kad būtų pasiektas telefono ryšys, skirtas maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

callPhone

void callPhone () {// Faz a ligação para or telefone definido if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Žiūrėti įvestą akimirką ir susikurti realybę a 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 nepavyko"); } // Termina a 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 (pranešimas + ""); }

5 veiksmas: atsisiųskite failus

PDF

AŠ NE

Rekomenduojamas: