Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Selles videos loome lingi languse anduri koos ESP32 ja SIM800 -ga. See tähendab, et selle projektiga saame kontrollida Interneti -ühendust ja ühenduse rikke korral helistada telefoninumbril, et teatada võrgu probleemidest.
Seda tüüpi seiret saab teha mitmel viisil. Kuigi see on lihtne, võimaldab see testida erinevaid seadmeid, mis võivad teie CPD -s eksisteerida. Selle kontrollivõime muutub ESP32 kasutamisel palju suuremaks. Kuigi ma kasutan selles näites WiFi -d, saate soovi korral kasutada traadiga internetti.
Samm: kokkupanek
2. etapp: kokkupanek - tabel
3. samm: TFT_eSPI raamatukogu
Avage Arduino IDE-s Sketch-> Include
Raamatukogu-> Raamatukogude haldamine …
Installige TFT_eSPI
Minge raamatukogu kausta ja muutke faili User_Setup.h ridu, et jätta see pildil näidatud kujul.
Samm 4: ESP32_Check_Internet_Connection.ino
Sisaldab ja määratleb
#define TINY_GSM_MODEM_SIM800#include
#kaasake
#kaasake
#kaasake
// 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 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 või meetod 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 ja pasta da biblioteca TFT_eSPI display = TFT_eSPI ();
Seadistamine
void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Inicializa o modulo 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, // Priorid 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 või kuvamine koos selle ekraaniga.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca või 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 ("Seadista GSM"); // O Modulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); viivitus (1000); // Taaskäivita või meetod, kui (! ModemGSM.restart ()) {ESP.restart (); tagasipöördumine; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM -võrgu viga"); viivitus (3000); ESP.restart (); tagasipöördumine; }}
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 puugid. Rakenduse mill millis divisjon osutab konstant 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 ("Ühendamine"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); viivitus (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Ühendatud"); }
checkInternet
void checkInternet (void* p) {// Viie segmendi taarefa viivitus. É feita em puugid. Rakenduse mill millis divisjon osutab konstant portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while (tõsi) {// 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 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 = klient.ühendus (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado return connected; }
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 o telefone definido if (hasNotConedPhoneInAWhile ()) {// Liga para või telefoni määratlemata callPhone (); }} else {// Mostra no display que está conectado showDisplay ("Ühendatud"); } // 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 hasNotConedPhoneInAWhile () {// Retorna true se o tempo desde a última ligacão para o phoneone for maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }
helista telefonile
void callPhone () {// Faz a ligação para or telefone definido if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Se enter in 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 ("kõne telefon ebaõnnestus"); } // Terminaat ja side modemGSM.callHangup (); }
showDisplay
void showDisplay (String -sõnum) {// Mostra a mensagem na primeira linha do display, limpando os eventuais caracteres extras display.setCursor (0, 0); display.println (sõnum + ""); }
Samm: laadige failid alla
INO