Πίνακας περιεχομένων:
- Βήμα 1: Συναρμολόγηση
- Βήμα 2: Συναρμολόγηση - Πίνακας
- Βήμα 3: Βιβλιοθήκη TFT_eSPI
- Βήμα 4: ESP32_Check_Internet_Connection.ino
- Βήμα 5: Κατεβάστε τα αρχεία
Βίντεο: Τι θα συμβεί αν ο σύνδεσμος σας διακοπεί;: 5 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Σε αυτό το βίντεο, θα δημιουργήσουμε έναν αισθητήρα πτώσης συνδέσμων με ESP32 και SIM800. Αυτό σημαίνει ότι με αυτό το έργο, μπορούμε να επαληθεύσουμε τη σύνδεση στο Διαδίκτυο και σε περίπτωση αποτυχίας σύνδεσης, καλέστε έναν αριθμό τηλεφώνου για να ειδοποιήσετε ότι το δίκτυο αντιμετωπίζει προβλήματα.
Αυτός είναι ένας από τους πολλούς τρόπους με τους οποίους μπορείτε να εκτελέσετε αυτόν τον τύπο παρακολούθησης. Ενώ είναι απλό, σας επιτρέπει να δοκιμάσετε διάφορες συσκευές που ενδέχεται να υπάρχουν στο CPD σας. Η ισχύς του ελέγχου γίνεται πολύ μεγαλύτερη όταν χρησιμοποιείται το ESP32. Αν και χρησιμοποιώ WiFi σε αυτό το παράδειγμα, μπορείτε να χρησιμοποιήσετε ενσύρματο internet, αν προτιμάτε.
Βήμα 1: Συναρμολόγηση
Βήμα 2: Συναρμολόγηση - Πίνακας
Βήμα 3: Βιβλιοθήκη 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: Κατεβάστε τα αρχεία
ΕΓΩ ΔΕΝ
Συνιστάται:
Σύνδεσμος Steam στο Raspberry Pi σας: 4 βήματα
Steam Link στο Your Raspberry Pi: Το Steam Link είναι μια λύση για την επέκταση της βιβλιοθήκης παιχνιδιών Steam σε οποιοδήποτε δωμάτιο του σπιτιού μέσω του οικιακού σας δικτύου. Μπορείτε να μετατρέψετε το Raspberry Pi σε Steam Link
Σύνδεσμος OpenManipulator: 20 βήματα (με εικόνες)
Σύνδεσμος OpenManipulator: Οι χειριστές ρομπότ έχουν αναπτυχθεί σε πολλά είδη δομής. Το OpenManipulator έχει την πιο απλή δομή σειριακής σύνδεσης, αλλά η άλλη δομή μπορεί να είναι χρήσιμη για συγκεκριμένες εργασίες, οπότε παρέχουμε στους χειριστές διαφορετική δομή ως OpenManipulat
Απλός σύνδεσμος ηλεκτρονικού υφάσματος: 8 βήματα
Απλός σύνδεσμος ηλεκτρονικού υφάσματος: Ο συνδυασμός ηλεκτρονικών ειδών και υφασμάτων είναι διασκεδαστικός, αλλά η μετάβαση από μαλακά υφάσματα σε σκληρά ηλεκτρονικά είναι συχνά δύσκολη. Εάν έχετε άφθονο χώρο και χρειάζεστε μόνο να συνδέσετε μερικά καλώδια, μπορείτε να γίνετε δημιουργικοί με κουμπιά ή γάντζους και
IOT123 - ΣΥΝΔΕΣΜΟΣ ΑΙΣΘΗΤΗΡΑΣ ΑΙΣΘΗΤΗΡΑ: ICOS10 3V3 MQTT NODE: 6 Βήματα
IOT123 - ASSIMILATE SENSOR HUB: ICOS10 3V3 MQTT NODE: Αυτό είναι το πρώτο σε μια ποικιλία συνδυασμών MCU/Feature στα ASSIMILATE SENSOR HUBS: οι κύριοι που συλλέγουν τις χωματερές δεδομένων από τους σκλάβους I2C ASSIMILATE SENSORS. Αυτή η κατασκευή χρησιμοποιεί ένα Wemos D1 Mini, για τη δημοσίευση τυχόν δεδομένων που απορρίπτονται από το ASSIMILATE
IOT123 - ΣΥΝΔΕΣΜΟΣ ΑΙΣΘΗΤΗΡΑΣ ΑΙΣΘΗΤΗΡΑ: ICOS10 CROUTON RESET NODE: 6 Βήματα
IOT123 - ΣΥΝΔΕΣΜΟΣ ΑΙΣΘΗΤΗΡΑΣ ΑΙΣΘΗΤΗΡΑ: ICOS10 CROUTON RESET NODE: Crouton. http://crouton.mybluemix.net/ Το Crouton είναι ένας πίνακας ελέγχου που σας επιτρέπει να απεικονίσετε και να ελέγξετε τις συσκευές σας IOT με ελάχιστη ρύθμιση. Ουσιαστικά, είναι ο ευκολότερος πίνακας ελέγχου που μπορείτε να ρυθμίσετε για κάθε λάτρη του υλικού IOT χρησιμοποιώντας μόνο MQTT και JSON. Αυτό