Sisällysluettelo:

Mitä jos linkkisi kaatuu?: 5 vaihetta
Mitä jos linkkisi kaatuu?: 5 vaihetta

Video: Mitä jos linkkisi kaatuu?: 5 vaihetta

Video: Mitä jos linkkisi kaatuu?: 5 vaihetta
Video: TARINA KIUSATUSTA 2024, Marraskuu
Anonim
Image
Image
Mitä jos linkkisi kaatuu?
Mitä jos linkkisi kaatuu?

Tässä videossa luomme linkinpudotustunnistimen, jossa on ESP32 ja SIM800. Tämä tarkoittaa sitä, että tämän projektin avulla voimme vahvistaa yhteyden Internetiin ja jos yhteys epäonnistuu, soita puhelinnumeroon ilmoittaaksesi verkon ongelmista.

Tämä on yksi monista tavoista, joilla voit suorittaa tämän tyyppisen valvonnan. Vaikka se on yksinkertaista, sen avulla voit testata erilaisia laitteita, joita CPD: ssä voi olla. Sen tarkastusvoima kasvaa paljon käytettäessä ESP32: ta. Vaikka käytän tässä esimerkissä WiFi -yhteyttä, voit käyttää langallista internetiä, jos haluat.

Vaihe 1: Kokoonpano

Kokoonpano
Kokoonpano

Vaihe 2: Kokoonpano - Taulukko

Kokoonpano - Pöytä
Kokoonpano - Pöytä

Vaihe 3: TFT_eSPI -kirjasto

TFT_eSPI -kirjasto
TFT_eSPI -kirjasto
TFT_eSPI -kirjasto
TFT_eSPI -kirjasto

Siirry Arduino IDE: ssä Sketch-> Include

Kirjasto-> Hallitse kirjastoja…

Asenna TFT_eSPI

Siirry kirjastokansioon ja muuta User_Setup.h -tiedoston rivejä niin, että ne jätetään kuvan mukaisesti.

Vaihe 4: ESP32_Check_Internet_Connection.ino

Sisältää ja määrittelee

#define TINY_GSM_MODEM_SIM800#include

#sisältää

#sisältää

#sisältää

// Mude para o nome e senha da sua rede WiFi que quer testar #define SSID "SSID" #define SALASANA "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 for o modeulo gsm HardwareSerial SerialGSM (1); TinyGsm -modeemiGSM (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 ja pasta da biblioteca TFT_eSPI display = TFT_eSPI ();

Perustaa

void setup () {Serial.begin (115200); setupDisplay (); // Käyttöönotto ja määritykset tai näytön asetuksetGSM (); // Inicializa o modeulo 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á executab "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 (); // Näyttö tai näyttö display.setRotation (1); // Rotaciona display.fillScreen (TFT_BLUE); // Limpa tai näyttö com tai vastaava näyttö.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca tai texto como branco com fundo azul display.setTextWrap (false, false); // Desativa a quebra de linha display.setTextSize (1); // Muda tai tamanho do texto display.setCursor (0, 0, 2); // Posição x, y e fonte do texto}

SetupGSM

void setupGSM () {showDisplay ("Asenna GSM"); // O Modulo GSM: n GPIO: t 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); viive (1000); // Käynnistä uudelleen tai menetelmä, jos (! ModemGSM.restart ()) {ESP.restart (); palata; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM -verkkovirhe"); viive (3000); ESP.restart (); palata; }}

checkWiFiConnection

void checkWiFiConnection (void* p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Viive de 1s da tarefa. Fe fe em punkit. Parametrien suorittaminen mill millis osiosta jatkuva portti TICK_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, SALASANA); Serial.println ("Yhdistäminen"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); viive (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Yhdistetty"); }

checkInternet

void checkInternet (void* p) {// Viiden sekunnin viive. Fe fe em punkit. Parametrien suorittaminen millisivun osana pelaamista portti TICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while (true) {// Se tem internet if (hasInternet ()) {// Atualiza tai tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Aplica tai delay vTaskDelay (taskDelay); }}

hasInternet

bool hasInternet () {WiFiClient -asiakas; // 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 = asiakas.yhteys (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado return connected; }

Silmukka

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 phoneone definido if (hasNotConedPhoneInAWhile ()) {// Liga para tai puhelin määrittele 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 () {// Palauta todellinen se o tempo desde a última conexão for maior que o definido return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotConedPhoneInAWhile () {// Palauta todellinen se o tempo desde a última ligacão para o phone, for maior que o definido return millis () - lastTimeConedPhone> MAX_CALL_TIME_INTERVAL; }

soita puhelimeen

void callPhone () {// Faz a ligação para o phoneone defineido if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Katso entrou aqui é porque conseguiu realizar a ligação Serial.println ("callphone ok"); // Atualiza tai tempo em que foi feita a última ligação lastTimeConedPhone = millis (); } else {// Katso entrou aqui é porque não conseguiu fazer a ligação Serial.println ("puhelinsoitto epäonnistui"); } // Pääte ja modeemiGSM.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 (viesti + ""); }

Vaihe 5: Lataa tiedostot

PDF

INO

Suositeltava: