תוכן עניינים:

מה אם הקישור שלך יקרוס?: 5 שלבים
מה אם הקישור שלך יקרוס?: 5 שלבים

וִידֵאוֹ: מה אם הקישור שלך יקרוס?: 5 שלבים

וִידֵאוֹ: מה אם הקישור שלך יקרוס?: 5 שלבים
וִידֵאוֹ: ✔ האם "הקראש" שלך אוהב\ת אותך ? במבחן הזה תגלו ! 2024, נוֹבֶמבֶּר
Anonim
Image
Image
מה אם הקישור שלך יקרוס?
מה אם הקישור שלך יקרוס?

בסרטון זה ניצור חיישן הורדת קישורים עם ESP32 ו- SIM800. המשמעות היא שעם הפרויקט הזה נוכל לאמת את החיבור לאינטרנט, ובמקרה של כשל בחיבור, להתקשר למספר טלפון כדי להודיע שהרשת בבעיה.

זוהי אחת הדרכים בהן תוכלו לבצע ניטור מסוג זה. למרות שזה פשוט, זה מאפשר לך לבדוק מכשירים שונים שעשויים להתקיים בתוך המחיר שלך. כוח הבדיקה שלו הופך להיות הרבה יותר גדול בעת השימוש ב- ESP32. למרות שאני משתמש ב- WiFi בדוגמה זו, אתה יכול להשתמש באינטרנט קווי אם אתה מעדיף.

שלב 1: הרכבה

הַרכָּבָה
הַרכָּבָה

שלב 2: הרכבה - שולחן

הרכבה - שולחן
הרכבה - שולחן

שלב 3: ספריית TFT_eSPI

ספריית TFT_eSPI
ספריית TFT_eSPI
ספריית TFT_eSPI
ספריית 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: הורד את הקבצים

PDF

INO

מוּמלָץ: