Sommario:
- Passaggio 1: assemblaggio
- Fase 2: Assemblaggio – Tavolo
- Passaggio 3: libreria TFT_eSPI
- Passaggio 4: ESP32_Check_Internet_Connection.ino
- Passaggio 5: scarica i file
Video: Cosa succede se il tuo collegamento si blocca?: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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
Fase 2: Assemblaggio – Tavolo
Passaggio 3: 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
IO NO
Consigliato:
Prepara il tuo Raspberry Pi per qualsiasi cosa!: 7 passaggi (con immagini)
Prepara il tuo Raspberry Pi per qualsiasi cosa!: qui su MakerSpace, adoriamo il Raspberry Pi! E se lo useremo per programmare, ospitare un server web o testare l'ultima distribuzione Raspbian, lo prepariamo sempre allo stesso modo. È un ottimo punto di partenza per giocare con il Raspbe
Comsave: Blocca le tue note (app file batch): 3 passaggi
Comsave: Lock Your Notes (app file batch): Ciao, questo è Comsaveit salva le tue note e le blocca. Basta scaricare il file batch allegato (nel passaggio 1). Posizionarlo in una cartella e NON spostarlo fuori dalla cartella o il file batch non sarà in grado di trovare il tuo account.NOTA: questo è un file batch. È gene
Blocca migliaia di annunci con HOST: 5 passaggi
Blocca migliaia di annunci con HOST: in questo tutorial, ti mostrerò un modo semplice per bloccare quasi migliaia di annunci, in un metodo semplice e facile
Cosa fare quando iTunes non riconosce il tuo iPod.: 7 passaggi
Cosa fare quando iTunes non riconosce il tuo iPod.: Hai ricevuto il tuo nuovo iPod e non vedi l'ora di usarlo. Collega il cavo USB al computer e collega l'altra estremità al tuo iPod. Ora incontri un problema. Per qualche motivo iTunes non rileva il tuo iPod. Potresti pensare che questo sia un pr
Super Mario personalizzato? Blocca con GIMP: 3 passaggi
Super Mario personalizzato? Blocca con GIMP: i giochi di Super Mario sono fantastici. Se non sei d'accordo, fai schifo. Se non sai cos'è Super Mario, esci dalla caverna in cui vivi e compra un N64- o un Wii, o un DS, o un GBA- Mario ha dominato Nintendo. Comunque, non sarebbe fantastico avere un ? B