Mis siis, kui teie link jookseb kokku?: 5 sammu
Mis siis, kui teie link jookseb kokku?: 5 sammu
Anonim
Image
Image
Mis siis, kui teie link jookseb kokku?
Mis siis, kui teie link jookseb kokku?

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

Kokkupanek
Kokkupanek

2. etapp: kokkupanek - tabel

Kokkupanek - laud
Kokkupanek - laud

3. samm: TFT_eSPI raamatukogu

TFT_eSPI raamatukogu
TFT_eSPI raamatukogu
TFT_eSPI raamatukogu
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

PDF

INO