Inhoudsopgave:

Wat als uw link crasht?: 5 stappen
Wat als uw link crasht?: 5 stappen

Video: Wat als uw link crasht?: 5 stappen

Video: Wat als uw link crasht?: 5 stappen
Video: MAAK JE PC SNELLER IN 5 STAPPEN! WERKT IN 2021! 2024, November
Anonim
Image
Image
Wat als uw link crasht?
Wat als uw link crasht?

In deze video maken we een link drop-sensor met een ESP32 en een SIM800. Dit betekent dat we met dit project de verbinding met internet kunnen verifiëren en in het geval van een verbindingsstoring een telefoonnummer kunnen bellen om te melden dat het netwerk in de problemen zit.

Dit is een van de vele manieren waarop u dit soort monitoring kunt uitvoeren. Hoewel het eenvoudig is, kunt u er verschillende apparaten mee testen die binnen uw CPD kunnen bestaan. Zijn controlekracht wordt veel groter bij gebruik van de ESP32. Hoewel ik in dit voorbeeld wifi gebruik, kun je desgewenst vast internet gebruiken.

Stap 1: Montage

samenkomst
samenkomst

Stap 2: Montage – Tafel

Montage – Tafel
Montage – Tafel

Stap 3: TFT_eSPI-bibliotheek

TFT_eSPI-bibliotheek
TFT_eSPI-bibliotheek
TFT_eSPI-bibliotheek
TFT_eSPI-bibliotheek

Ga in de Arduino IDE naar Sketch-> Include

Bibliotheek-> Bibliotheken beheren …

Installeer TFT_eSPI

Ga naar de bibliotheekmap en verander de regels van het User_Setup.h-bestand om het te laten zoals weergegeven in de afbeelding.

Stap 4: ESP32_Check_Internet_Connection.ino

Omvat en definieer

#define TINY_GSM_MODEM_SIM800#include

#erbij betrekken

#erbij betrekken

#erbij betrekken

//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 om te overwegen esper 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 o módulo gsm HardwareSerial SerialGSM(1); TinyGsm-modemGSM (SerialGSM); //Tempo met internettoegang tot uint32_t lastTimeConnected = 0; //Tempo em que fez a última ligação. Colocamos como -MAX_CALL_TIME_INTERVAL voor 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();

Opstelling

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 (nousamos) nãode 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 of 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 (geen 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); // Numero do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}

InstellingenDisplay

void setupDisplay(){ display.init(); // Beginnen om display.setRotation (1) weer te geven; // Rotaciona display.fillScreen (TFT_BLUE); //Limpa of display com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); //Coloca of texto como branco com fundo azul display.setTextWrap (false, false);//Desativa een quebra de linha display.setTextSize(1); //Muda of tamanho do texto display.setCursor (0, 0, 2); //Posição x, y e fonte do texto}

GSM instellen

void setupGSM(){ showDisplay("Setup GSM"); //O Módulo GSM está nos GPIOs 4 en 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); vertraging (1000); // Herstart módulo if (!modemGSM.restart()) { ESP.restart(); opbrengst; } // Espera pela rede celular if (!modemGSM.waitForNetwork()) { display.setCursor(0, 0); showDisplay("GSM-netwerkfout"); vertraging (3000); ESP.herstart(); opbrengst; } }

checkWiFiVerbinding

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 tikt. Para executar em millis dividimos pela constant portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay(taakDelay); } }

verbindenWiFi

void connectWiFi () {// Manda conectar oa roteador com o nome en senha WiFi.begin (SSID, PASWOORD); Serial.println("Verbinden"); // Espera no while até conectar while(WiFi.status() != WL_CONNECTED) { Serial.print("."); vertraging (500); } //Zorg voor een goede verbinding met Serial.println(); Serial.println("Verbonden"); }

check internet

void checkInternet(void* p){ //Delay de 5 segundos da tarefa. É feita em tikt. Para executar em millis dividimos pela constant portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while(true) {//Se tem internet if(hasInternet()) { //Atualize o tempo em que aconteceu aútlima conexão lastTimeConnected = millis(); } //Aplica o vertraging vTaskDelay (taskDelay); } }

heeft internet

bool hasInternet(){ WiFiClient-client; //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); //Fecha een conexão client.stop(); //Retorna true se está conectado of false se está desconectado return aangesloten; }

Lus

void loop () {// Bekijk de laatste stap in het tempo van de definitie if (isDisconnectedForTooLong ()) { // Mostra no display que está desconectado showDisplay ("Disconnected"); //Se faz tempo que não liga para o telefonische definitie if(hasNotCalledPhoneInAWhile()) { //Liga para o telefonische definitie callPhone(); } } else { //Mostra no display que está conectado showDisplay("Verbonden"); } //Espera 1 segundo para a proxima 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 een última ligacão para o phone for maior que o definido return millis() - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

belTelefoon

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"); //Atualize 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("callphone failed"); } //Termina een ligação modemGSM.callHangup(); }

tonenWeergeven

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

Stap 5: Download de bestanden

PDF

INO

Aanbevolen: