Sommario:

Cosa succede se il tuo collegamento si blocca?: 5 passaggi
Cosa succede se il tuo collegamento si blocca?: 5 passaggi

Video: Cosa succede se il tuo collegamento si blocca?: 5 passaggi

Video: Cosa succede se il tuo collegamento si blocca?: 5 passaggi
Video: 5 Cose da NON FARE su PS5 2024, Luglio
Anonim
Image
Image
Cosa succede se il tuo collegamento si blocca?
Cosa succede se il tuo collegamento si blocca?

In questo video, creeremo un sensore di caduta del collegamento con un ESP32 e un SIM800. Ciò significa che con questo progetto possiamo verificare la connessione a internet e, in caso di mancanza di connessione, chiamare un numero di telefono per avvisare che la rete è in difficoltà.

Questo è uno dei tanti modi in cui puoi eseguire questo tipo di monitoraggio. Sebbene sia semplice, ti consente di testare vari dispositivi che potrebbero esistere all'interno del tuo CPD. Il suo potere di controllo diventa molto maggiore quando si utilizza ESP32. Sebbene io utilizzi il WiFi in questo esempio, puoi utilizzare Internet cablato, se preferisci.

Passaggio 1: assemblaggio

Assemblea
Assemblea

Fase 2: Assemblaggio – Tavolo

Assemblaggio – Tavolo
Assemblaggio – Tavolo

Passaggio 3: libreria TFT_eSPI

Libreria TFT_eSPI
Libreria TFT_eSPI
Libreria TFT_eSPI
Libreria TFT_eSPI

Nell'IDE di Arduino, vai su Schizzo-> Includi

Libreria-> Gestisci biblioteche…

Installa TFT_eSPI

Vai alla cartella della libreria e cambia le righe del file User_Setup.h per lasciarlo come mostrato nell'immagine.

Passaggio 4: ESP32_Check_Internet_Connection.ino

Include e definisce

#define TINY_GSM_MODEM_SIM800#include

#includere

#includere

#includere

//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 come desconectado #define MAX_DISCONNECTED_TIME 10000 //10 seg //Tempo che deve esperar per cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 //30 min //Usar serial 1 per modulo 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 per ligar immediatamente //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();

Impostare

void setup(){ Serial.begin(115200); setupDisplay(); //Inizializzazione e configurazione del 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 (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á executada 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á executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) }

ConfigurazioneDisplay

void setupDisplay(){ display.init(); //Inizializzazione del display display.setRotation(1); //Rotazione display.fillScreen(TFT_BLUE); //Limpa o display com a cor azul display.setTextColor(TFT_WHITE, TFT_BLUE); //Coloca o 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); //Posizione x, y e fonte del testo }

ConfigurazioneGSM

void setupGSM(){ showDisplay("Imposta GSM"); //O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin(9600, SERIAL_8N1, 4, 2, false); ritardo(1000); //Riavvia modulo if (!modemGSM.restart()) { ESP.restart(); Restituzione; } //Espera pela rede celular if (!modemGSM.waitForNetwork()) { display.setCursor(0, 0); showDisplay("Errore di rete GSM"); ritardo (3000); ESP.restart(); Restituzione; } }

checkWiFiConnection

void checkWiFiConnection(void* p){ while(true) { //Se não estater conectado ao roteador if(WiFi.status() != WL_CONNECTED) { //Manda conectar connectWiFi(); } //Ritardo di 1s da tarefa. È feita em ticks. Para executar em millis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay(taskDelay); } }

connettiWiFi

void connectWiFi(){ //Manda conectar ao roteador com o name e senha WiFi.begin(SSID, PASSWORD); Serial.println("Connessione"); //Espera no while até conectar while(WiFi.status() != WL_CONNECTED) { Serial.print("."); ritardo (500); } //Se chegou qui está conectado Serial.println(); Serial.println("Connesso"); }

controllaInternet

void checkInternet(void* p){ //Delay de 5 segundos da tarefa. È feita em ticks. Para executar em millis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while(true) { //Se tem internet if(hasInternet()) { //Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis(); } //Applica o ritarda vTaskDelay(taskDelay); } }

ha Internet

bool hasInternet(){ client WiFiClient; //Endreço IP do Google 172.217.3.110 IPAddress adr = IPAddress(172, 217, 3, 110); //Tempo limite per connessione client.setTimeout(5); //Tenta conectar bool connesso = client.connect(adr, 80); //Rispondi a un client.stop(); //Retorna true se está conectado ou false se está desconectado return connesso; }

Ciclo continuo

void loop() { //Se questo è scollegato per più tempo che definimos if(isDisconnectedForTooLong()) { //Mostra no display que è scollegato showDisplay("Disconnected"); //Se faz tempo que não liga para o definido telefone if(hasNotCalledPhoneInAWhile()) { //Liga para o definido callPhone(); } } else { //Mostra no display que está conectado showDisplay("Connesso"); } //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 ultima ligacão para o phone for maior que o definido return millis() - lastTimeCalledPhone > MAX_CALL_TIME_INTERVAL; }

telefonata

void callPhone(){ //Fai una legatura per il telefono definito if(modemGSM.callNumber(USER_PHONE_NUMBER)) { //Se entrou è necessario realizzare una legazione Serial.println("callphone ok"); //Atualiza o tempo em que foi feita a última legação lastTimeCalledPhone = millis(); } else { //Se entrou è necessario non seguire più la legatura Serial.println("callphone failed"); } //Termina un collegamento modemGSM.callHangup(); }

mostraDisplay

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

Passaggio 5: scarica i file

PDF

IO NO

Consigliato: