תוכן עניינים:
- שלב 1: הרכבה
- שלב 2: הרכבה - שולחן
- שלב 3: ספריית TFT_eSPI
- שלב 4: ESP32_Check_Internet_Connection.ino
- שלב 5: הורד את הקבצים
וִידֵאוֹ: מה אם הקישור שלך יקרוס?: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
בסרטון זה ניצור חיישן הורדת קישורים עם ESP32 ו- SIM800. המשמעות היא שעם הפרויקט הזה נוכל לאמת את החיבור לאינטרנט, ובמקרה של כשל בחיבור, להתקשר למספר טלפון כדי להודיע שהרשת בבעיה.
זוהי אחת הדרכים בהן תוכלו לבצע ניטור מסוג זה. למרות שזה פשוט, זה מאפשר לך לבדוק מכשירים שונים שעשויים להתקיים בתוך המחיר שלך. כוח הבדיקה שלו הופך להיות הרבה יותר גדול בעת השימוש ב- ESP32. למרות שאני משתמש ב- WiFi בדוגמה זו, אתה יכול להשתמש באינטרנט קווי אם אתה מעדיף.
שלב 1: הרכבה
שלב 2: הרכבה - שולחן
שלב 3: ספריית TFT_eSPI
ב- IDE של Arduino, עבור אל Sketch-> Include
ספרייה-> נהל ספריות …
התקן את TFT_eSPI
עבור אל תיקיית הספרייה ושנה את השורות של הקובץ User_Setup.h כדי להשאיר אותו כפי שמוצג בתמונה.
שלב 4: ESP32_Check_Internet_Connection.ino
כולל ומגדיר
#הגדר TINY_GSM_MODEM_SIM800#כולל
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
// Mud para o nome e senha da sua rede WiFi que quer testar #הגדר SSID "SSID" #הגדר סיסמה "12345678" //+55 DDD מספר מספר סלולרי #הגדר USER_PHONE_NUMBER "+5518912345678" // Tempo que deve esperar para considerar como desconectado #define MAX_DISCONNECTED_TIME 10000 // 10 seg // Tempo que deve esperar para cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 // 30 דקות // Usar סדרת 1 עבור מודול gsm HardwareSerial SerialGSM (1); מודם TinyGsm GSM (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 para ligar imediatamente // da primeira vez que cair uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h עם פסטה של biblioteca TFT_eSPI display = TFT_eSPI ();
להכין
הגדרת חלל () {Serial.begin (115200); setupDisplay (); // הרשמה ותצורה של תצוגת תצוגה GSM (); // 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 usamade) 2, // Prior da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (אין caso não precisamos) 0); // מספרים של ליבה שתתבצע בפועל (משתמשים או ליבה 0 עבור לולאה ליצירה של ליבה 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 (אין caso não precisamos) 0); // מספרים על הליבה שתוכל לבצע את הפעולה (מידע על הליבה 0 עבור לולאה).
תצוגת Setup
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}
התקנת GSM
void setupGSM () {showDisplay ("התקנת 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 estect conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // עיכוב של 1s da tarefa. É feita em קרציות. עבור מנהל ההפעלה של millis dividimos pela constante portTICK_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 קרציות. עבור מנהל ההפעלה של 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 (); } // אפליקציה או עיכוב vTaskDelay (taskDelay); }}
hasInternet
bool hasInternet () {לקוח WiFiClient; // Endreço IP do Google 172.217.3.110 IPAddress adr = IPAddress (172, 217, 3, 110); // Tempo limite עבור conexão client.setTimeout (5); // Tenta conectar bool connected = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se est est conectado ou false se está desconectado לחזור מחובר; }
לוּלָאָה
לולאת void () {// Se está desconectado por mais tempo que definimos if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("Disconnected"); // Se faz tempo que não liga for telefone definido if (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 delay loop (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; }
שיחת טלפון
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 ("טלפון בסדר"); // Atualiza o tempo em que foi feita a última ligação lastTimeCalledPhone = millis (); } אחר {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("הטלפון נכשל"); } // Termina a moda ligação GSM.callHangup (); }
showDisplay
void showDisplay (הודעת מחרוזת) {// Mostra a mensagem na primeira linha do display, limpando os eventuais caracteres extras display.setCursor (0, 0); display.println (הודעה + ""); }
שלב 5: הורד את הקבצים
INO
מוּמלָץ:
Steam פאנק את ה- UPS שלך בכדי לקבל שעות של זמן פעולה לנתב ה- Wi-Fi שלך: 4 שלבים (עם תמונות)
Steam פאנק את ה- UPS שלך בכדי לקבל שעות של זמן פעולה לנתב ה- Wi-Fi שלך: יש משהו לא נעים ביסודיות בכך שה- UPS שלך ימיר את הסוללה 12V DC שלו לחשמל 220V AC כך שהשנאים המפעילים את הנתב והסיבים ONT יכולים להפוך אותו חזרה 12V DC! אתה גם מתנגד ל [בדרך כלל
לשלוט על הלדים שלך עם שלט הטלוויזיה שלך ?! -- מדריך IR ל- Arduino: 5 שלבים (עם תמונות)
לשלוט על הלדים שלך עם שלט הטלוויזיה שלך ?! || הדרכת IR של Arduino: בפרויקט זה אראה לך כיצד עיצבתי מחדש את הכפתורים חסרי התועלת בשלט הטלוויזיה שלי כדי לשלוט בנורות הלדים מאחורי הטלוויזיה שלי. אתה יכול גם להשתמש בטכניקה זו כדי לשלוט בכל מיני דברים עם קצת עריכת קוד. אני גם אדבר קצת על התאוריה
הגן על הרעיונות שלך, הגן על העבודה שלך: 8 שלבים
הגן על הרעיונות שלך, הגן על העבודה שלך: איבדתי נתונים לפני כמה ימים כתוצאה מהתרסקות מחשב. עבודה של יום אחד אבדה.:/ אני שומר את הנתונים שלי בענן כדי למנוע פגם בדיסק הקשיח. אני משתמש בתוכנת גרסאות כדי שאוכל לשחזר גרסאות ישנות יותר של עבודתי. אני עושה גיבוי כל יום. אבל הפעם אני
שלוט בפריסת הרכבת הדוגמנית שלך באמצעות לוח המקשים שלך !: 12 שלבים
שלוט בפריסת רכבת הדגמים שלך באמצעות לוח המקשים שלך !: באחד מההנחיות הקודמות שלי, הראיתי לך כיצד תוכל לשלוט ברכבת הדוגמניות שלך באמצעות שלט הטלוויזיה שלך. אתה יכול לבדוק גרסה משודרגת גם כאן. במדריך זה, אראה לך כיצד לשלוט על פריסת רכבות מודל באמצעות מקלדת
שלוט בפריסת הרכבת הדוגמנית שלך באמצעות הטלפון הנייד שלך !: 11 שלבים (עם תמונות)
שליטה בפריסת הרכבת המודל שלך באמצעות הטלפון הנייד שלך!: שליטה על פריסת רכבות דגמים עם מצערת חוט ובקרות אחוזי שיח עשויה להיות התחלה טובה למתחילים אך הם מהווים בעיה של אי ניידות. כמו כן, הבקרים האלחוטיים המגיעים לשוק יכולים לשלוט רק על חלק מסוים