INHOUDSOPGAWE:

Wat as u skakel ineenstort ?: 5 stappe
Wat as u skakel ineenstort ?: 5 stappe

Video: Wat as u skakel ineenstort ?: 5 stappe

Video: Wat as u skakel ineenstort ?: 5 stappe
Video: Wat gebeurt er als je 5 dagen niet eet? 2024, November
Anonim
Image
Image
Wat as u skakel ineenstort?
Wat as u skakel ineenstort?

In hierdie video skep ons 'n skakelvalsensor met 'n ESP32 en 'n SIM800. Dit beteken dat ons met hierdie projek die verbinding met die internet kan verifieer, en in die geval van 'n verbinding misluk, 'n telefoonnommer bel om in kennis te stel dat die netwerk in die moeilikheid is.

Dit is een van die vele maniere waarop u hierdie tipe monitering kan uitvoer. Alhoewel dit eenvoudig is, kan u verskillende toestelle wat binne u CPD bestaan, toets. Die kontrolevermoë word baie groter as u die ESP32 gebruik. Alhoewel ek WiFi in hierdie voorbeeld gebruik, kan u internet via kabel gebruik, indien u dit verkies.

Stap 1: Montering

Vergadering
Vergadering

Stap 2: Samestelling - Tabel

Vergadering - Tabel
Vergadering - Tabel

Stap 3: TFT_eSPI -biblioteek

TFT_eSPI -biblioteek
TFT_eSPI -biblioteek
TFT_eSPI -biblioteek
TFT_eSPI -biblioteek

Gaan in die Arduino IDE na Skets-> Sluit in

Biblioteek-> Bestuur biblioteke …

Installeer TFT_eSPI

Gaan na die biblioteekmap en verander die reëls van die User_Setup.h -lêer om dit soos in die prentjie te laat.

Stap 4: ESP32_Check_Internet_Connection.ino

Sluit in en definieer

#definieer TINY_GSM_MODEM_SIM800#insluit

#insluit

#insluit

#insluit

// 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 omoddo gsm HardwareSerial SerialGSM (1); TinyGsm -modem GSM (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 die biblioteca TFT_eSPI -vertoning = TFT_eSPI ();

Stel op

ongeldige opstelling () {Serial.begin (115200); setupDisplay (); // Inisieer en konfigurasie van die opstel van GSM (); // Inisializa 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 usamade) 2, // Prior da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); // Nommero do core que será executada a tarefa (usamos or core 0 par l loop ficar livre com 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); // Nommer die kern van die funksie (as 'n kern van 0 vir 'n lus om die kern van die reeks 1)}

SetupDisplay

leegte setupDisplay () {display.init (); // Inisieer o display display.setRotation (1); // Rotaciona display.fillScreen (TFT_BLUE); // Daar is 'n weergawe met 'n azul -display.setTextColor (TFT_WHITE, TFT_BLUE); // Verskeie teks vir 'n volledige weergawe.setTextWrap (vals, vals); // Desativa a quebra de linha display.setTextSize (1); // Ons kan ook teks vir display.setCursor (0, 0, 2) gebruik; // Posição x, y e fonte do texto}

Stel GSM op

ongeldig setupGSM () {showDisplay ("Setup GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); vertraging (1000); // Herlaai of weer begin as (! ModemGSM.restart ()) {ESP.restart (); terugkeer; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM -netwerkfout"); vertraging (3000); ESP.start (); terugkeer; }}

checkWiFiConnection

void checkWiFiConnection (void* p) {while (true) {// Sien nie hoe dit met roteador verbind kan word nie (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Vertraging van 1s da tarefa. É feita em bosluise. Vir die uitvoer van 'n millis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

connectWiFi

void connectWiFi () {// Manda conectar ao roteador com nome e senha WiFi.begin (SSID, PASSWORD); Serial.println ("Verbind"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vertraging (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("verbind"); }

checkInternet

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. É feita em bosluise. Vir die uitvoer van een millis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; terwyl (waar) {// Se tem internet if (hasInternet ()) {// Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Gebruik die vertraging vTaskDelay (taskDelay); }}

hasInternet

bool hasInternet () {WiFiClient -kliënt; // 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); // Om 'n goeie kliënt.stop (); // Retorna true se est est conectado ou false se está desconectado return connected; }

Lus

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 (hasNotCalledPhoneInAWhile ()) {// Liga para o telefone definido callPhone (); }} anders {// Mostra no display que está conectado showDisplay ("Connected"); } // 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 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; }

bel Telefoon

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 (); } anders {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("belfoon misluk"); } // Termina en liga modemGSM.callHangup (); }

vertoning vertoon

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

Stap 5: Laai die lêers af

PDF

EK NEE

Aanbeveel: