Talaan ng mga Nilalaman:

Paano Kung Nag-crash ang Iyong Link ?: 5 Hakbang
Paano Kung Nag-crash ang Iyong Link ?: 5 Hakbang

Video: Paano Kung Nag-crash ang Iyong Link ?: 5 Hakbang

Video: Paano Kung Nag-crash ang Iyong Link ?: 5 Hakbang
Video: Paano Mababasa Ang Isip Ng Isang Tao? (14 PSYCHOLOGICAL TIPS) 2024, Hulyo
Anonim
Image
Image
Paano Kung Mag-crash ang Iyong Link?
Paano Kung Mag-crash ang Iyong Link?

Sa video na ito, lilikha kami ng isang link drop sensor na may isang ESP32 at isang SIM800. Nangangahulugan ito na sa proyektong ito, mapatunayan namin ang koneksyon sa internet, at sa kaganapan ng pagkabigo sa koneksyon, tumawag sa isang numero ng telepono upang abisuhan na ang network ay nagkaproblema.

Ito ay isang maraming paraan upang magawa mo ang ganitong uri ng pagsubaybay. Habang simple ito, pinapayagan kang subukan ang iba't ibang mga aparato na maaaring umiiral sa loob ng iyong CPD. Ang lakas ng tseke nito ay magiging mas malaki kapag ginagamit ang ESP32. Bagaman gumagamit ako ng WiFi sa halimbawang ito, maaari kang gumamit ng wired internet, kung nais mo.

Hakbang 1: Assembly

Assembly
Assembly

Hakbang 2: Assembly - Talahanayan

Assembly - Talahanayan
Assembly - Talahanayan

Hakbang 3: TFT_eSPI Library

TFT_eSPI Library
TFT_eSPI Library
TFT_eSPI Library
TFT_eSPI Library

Sa Arduino IDE, pumunta sa Sketch-> Isama

Library-> Pamahalaan ang Mga Aklatan…

I-install ang TFT_eSPI

Pumunta sa folder ng library at baguhin ang mga linya ng User_Setup.h file upang iwanan ito tulad ng ipinakita sa imahe.

Hakbang 4: ESP32_Check_Internet_Connection.ino

May kasamang at tumutukoy

# tukuyin ang TINY_GSM_MODEM_SIM800 # isama

# isama

# isama

# isama

// 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 sa karagdagang 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 sa 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 ();

Pag-set up

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 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á executiveada a tarefa (usamos o core 0 para sa loop ficar livre com o core 1) xTaskCreatePinnedToCore (checkInternet, // Função que será executiveada "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 sa 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}

Pag-setupGSM

walang bisa ang setupGSM () {showDisplay ("Setup GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); pagkaantala (1000); // Restart o módulo if (! ModemGSM.restart ()) {ESP.restart (); bumalik; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM Network Error"); pagkaantala (3000); ESP. restart (); bumalik; }}

checkWiFiConnection

void checkWiFiConnection (void * p) {habang (totoo) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNected) {// Manda conectar connectWiFi (); } // Delay de 1s da tarefa. É feita em ticks. Para sa pagpapatupad ng millid dividimos pela Constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

kumonektaWiFi

void connectWiFi () {// Manda conectar ao roteador com o nome e senha WiFi.begin (SSID, PASSWORD); Serial.println ("Pagkonekta"); // Espera no habang até conectar habang (WiFi.status ()! = WL_CONNected) {Serial.print ("."); pagkaantala (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Nakakonekta"); }

checkInternet

void checkInternet (void * p) {// Delay de 5 segundos da tarefa. É feita em ticks. Para sa pagpapatupad ng millid dividimos pela Constante portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; habang (totoo) {// Se tem internet if (hasInternet ()) {// Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Aplica o maantala ang vTaskDelay (taskDelay); }}

mayInternet

bool hasInternet () {WiFiClient client; // Endreço IP gawin ang 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 isang conexão client.stop (); // Retorna true se está conectado ou false se está desconectado return konektado; }

Loop

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 sa telefone definido if (hasNotCalledPhoneInAWhile ()) {// Liga para sa telefone definido callPhone (); }} iba pa {// Mostra no display que está conectado showDisplay ("Nakakonekta"); } // Espera 1 segundo para sa isang 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 sa telefone 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 (); } iba pa {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("Nabigo ang callphone"); } // Termina a ligação modemGSM.callHangup (); }

ipakitaDisplay

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

Hakbang 5: I-download ang Mga File

PDF

INO

Inirerekumendang: