Πίνακας περιεχομένων:

Τι θα συμβεί αν ο σύνδεσμος σας διακοπεί;: 5 βήματα
Τι θα συμβεί αν ο σύνδεσμος σας διακοπεί;: 5 βήματα

Βίντεο: Τι θα συμβεί αν ο σύνδεσμος σας διακοπεί;: 5 βήματα

Βίντεο: Τι θα συμβεί αν ο σύνδεσμος σας διακοπεί;: 5 βήματα
Βίντεο: 5 πράγματα που πρέπει να κάνεις στο σεξ για να κολλήσει μαζί σου 2024, Νοέμβριος
Anonim
Image
Image
Τι θα συμβεί αν ο σύνδεσμος σας διακοπεί
Τι θα συμβεί αν ο σύνδεσμος σας διακοπεί

Σε αυτό το βίντεο, θα δημιουργήσουμε έναν αισθητήρα πτώσης συνδέσμων με ESP32 και SIM800. Αυτό σημαίνει ότι με αυτό το έργο, μπορούμε να επαληθεύσουμε τη σύνδεση στο Διαδίκτυο και σε περίπτωση αποτυχίας σύνδεσης, καλέστε έναν αριθμό τηλεφώνου για να ειδοποιήσετε ότι το δίκτυο αντιμετωπίζει προβλήματα.

Αυτός είναι ένας από τους πολλούς τρόπους με τους οποίους μπορείτε να εκτελέσετε αυτόν τον τύπο παρακολούθησης. Ενώ είναι απλό, σας επιτρέπει να δοκιμάσετε διάφορες συσκευές που ενδέχεται να υπάρχουν στο CPD σας. Η ισχύς του ελέγχου γίνεται πολύ μεγαλύτερη όταν χρησιμοποιείται το ESP32. Αν και χρησιμοποιώ WiFi σε αυτό το παράδειγμα, μπορείτε να χρησιμοποιήσετε ενσύρματο internet, αν προτιμάτε.

Βήμα 1: Συναρμολόγηση

Συνέλευση
Συνέλευση

Βήμα 2: Συναρμολόγηση - Πίνακας

Συναρμολόγηση - Τραπέζι
Συναρμολόγηση - Τραπέζι

Βήμα 3: Βιβλιοθήκη TFT_eSPI

Βιβλιοθήκη TFT_eSPI
Βιβλιοθήκη TFT_eSPI
Βιβλιοθήκη TFT_eSPI
Βιβλιοθήκη TFT_eSPI

Στο Arduino IDE, μεταβείτε στο Sketch-> Include

Βιβλιοθήκη-> Διαχείριση Βιβλιοθηκών…

Εγκαταστήστε το TFT_eSPI

Μεταβείτε στο φάκελο βιβλιοθήκης και αλλάξτε τις γραμμές του αρχείου User_Setup.h για να το αφήσετε όπως φαίνεται στην εικόνα.

Βήμα 4: ESP32_Check_Internet_Connection.ino

Περιλαμβάνει και ορίζει

#define TINY_GSM_MODEM_SIM800#περιλαμβάνουν

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

// 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 konsiderrar como desconectado #define MAX_DISCONNECTED_TIME 10000 // 10 seg // Tempo que deve esperar for cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 // 30 min // Usar serial 1 para o módulo gsm HardwareSerial SerialGSM; TinyGsm modemGSM (SerialGSM); // Tempo em que conectou à internet pela laltima vez uint32_t lastTimeConnected = 0; // Tempo em que fez a última ligação. Colocamos como -MAX_CALL_TIME_INTERVAL για πρώτη φορά // για πρώτη φορά, καθώς και για το τελευταίοTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h και ζυμαρικά για βιβλιοθήκη TFT_eSPI display = TFT_eSPI ();

Ρύθμιση

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Inicializa o módulo GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será exeada "checkWiFiConnection", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não us, // caso não us, 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á exeada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) xTaskCreatePinnedToCore (checkInternet, // Função que será exeada "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á exeada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}

SetupDisplay

void setupDisplay () {display.init (); // Inicializa o display display.setRotation (1); // Rotaciona 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); // Posição x, y e fonte do texto}

SetupGSM

void setupGSM () {showDisplay ("Setup GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); καθυστέρηση (1000)? // Κάντε επανεκκίνηση εάν (! ModemGSM.restart ()) {ESP.restart (); ΕΠΙΣΤΡΟΦΗ; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("Σφάλμα δικτύου GSM"); καθυστέρηση (3000)? ESP.restart (); ΕΠΙΣΤΡΟΦΗ; }}

checkWiFiConnection

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 τσιμπούρια. Για την εκτέλεσή μας, πρέπει να συνεχίσετε τη θύρα TICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

connectWiFi

void connectWiFi () {// Manda conectar ao roteador com o nome e senha WiFi.begin (SSID, PASSWORD); Serial.println ("Σύνδεση"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); καθυστέρηση (500)? } // Se chegou aqui está conectado Serial.println (); Serial.println ("Συνδεδεμένο"); }

checkInternet

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. É feita em τσιμπούρια. Για την εκτέλεσή μας, θα πρέπει να έχετε σταθερή θύραTICK_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 (); } // Εφαρμογή καθυστέρησης vTaskDelay (taskDelay); }}

έχει Διαδίκτυο

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 Connect = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado επιστροφή συνδεδεμένη. }

Βρόχος

void loop () {// Se está desconectado por mais tempo que definimos if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("Disconnected"); // Σημαντικό χρονικό διάστημα που δεν μπορεί να συνδεθεί με το τηλέφωνο εάν (hasNotCalledPhoneInAWhile ()) {// Liga para o telefone definido callPhone (); }} else {// Mostra no display que está conectado showDisplay ("Συνδεδεμένο"); } // 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; }

callPhone

void callPhone () {// Απαγορεύεται η λήψη τηλεφώνου εάν (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 (); } else {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("το τηλέφωνο απέτυχε"); } // Termina a ligação modemGSM.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 (μήνυμα + ""); }

Βήμα 5: Κατεβάστε τα αρχεία

PDF

ΕΓΩ ΔΕΝ

Συνιστάται: