Агуулгын хүснэгт:

Таны линк эвдэрвэл яах вэ ?: 5 алхам
Таны линк эвдэрвэл яах вэ ?: 5 алхам

Видео: Таны линк эвдэрвэл яах вэ ?: 5 алхам

Видео: Таны линк эвдэрвэл яах вэ ?: 5 алхам
Видео: 10 привычек, чтобы стать счастливым 2024, Арваннэгдүгээр
Anonim
Image
Image
Таны линк эвдэрвэл яах вэ?
Таны линк эвдэрвэл яах вэ?

Энэ видеон дээр бид ESP32 болон SIM800 -тай холбоосын уналт мэдрэгчийг бүтээх болно. Энэ нь энэ төслийн тусламжтайгаар бид интернетэд холбогдсон эсэхийг шалгах боломжтой бөгөөд холболт тасарсан тохиолдолд утасны дугаар руу залгаж сүлжээнд асуудал үүсч байгааг мэдэгдэнэ.

Энэ бол танд ийм төрлийн хяналт тавих олон арга зам юм. Энгийн боловч энэ нь таны CPD дотор байж болох янз бүрийн төхөөрөмжийг турших боломжийг танд олгоно. ESP32 -ийг ашиглах үед түүний шалгах хүчин чадал илүү хүчтэй болно. Энэ жишээн дээр би WiFi ашиглаж байгаа боловч хэрэв та хүсвэл утастай интернет ашиглаж болно.

Алхам 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

Оруулдаг ба тодорхойлдог

#тодорхойлох TINY_GSM_MODEM_SIM800#оруулах

#оруулах

#оруулах

#оруулах

// Олон тооны WiFi сүлжээний шалгалтыг #SSID "SSID" -г тодорхойлох #"12345678" нууц үгийг тодорхойлох //+55 DDD Número do celular #define USER_PHONE_NUMBER "+5518912345678" // Тэмдэглэл хийх шаардлагатай como desconectado #dexine MAX_DISCONNECTED_TIME 10000 // 10 сегмент // Tempo que deve esperar para cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 // 30 min // Usar series 1 para o módulo 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 мөнгө шилжүүлэх нь чухал юм. // User_Setup.h гэснээс эхлээд библиотека TFT_eSPI display = TFT_eSPI ();

Тохируулах

void setup () {Serial.begin (115200); setupDisplay (); // Дэлгэцийн тохиргоо эсвэл дэлгэцийн тохиргооGSM (); // GSM xTaskCreatePinnedToCore (checkWiFiConnection, // "CheckWiFiConnection", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parametro da tarefa (no preco não usamade) 2, da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); // Numero do core que será гүйцэтгэх програм (a 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 (caso não precisamos байхгүй) 0); // Гол үүрэг гүйцэтгэнэ үү (үндсэн цэс 0 пара -гийн давталт хийх ёстой))

Дэлгэцийг тохируулах

void setupDisplay () {display.init (); // Дэлгэцийг харуулах.setRotation (1); // Rotaciona display.fillScreen (TFT_BLUE); // Хязгаарлагдмал дэлгэцийг харуулах.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca o texto como branco com fundo azul display.setTextWrap (худал, худлаа); // Текстийг харуулах.setCursor (0, 0, 2); // Текст бичих Posiceão x, y e fonte хийх}

GSM тохируулах

хүчингүй тохиргооGSM () {showDisplay ("GSM -ийг тохируулах"); // O Módulo GSM нь GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, худал); саатал (1000); // Хэрэв (! ModemGSM.restart ()) {ESP.restart (); буцах; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM сүлжээний алдаа"); саатал (3000); ESP.restart (); буцах; }}

Wi -Fi холболтыг шалгана уу

void checkWiFiConnection (void* p) {while (true) {// Хэрэв та (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // 1s da tarefa -ийг хойшлуулах. Хачигтай. Гүйцэтгэх үүрэг гүйцэтгэгч нь портTICK_PERIOD_MS TickType_t taskDelay = 1000 / портTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

Wi -Fi холбоно уу

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); } // Seggou aqui está conectado Serial.println (); Serial.println ("Холбогдсон"); }

Интернетийг шалгах

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. Хачигтай. Гүйцэтгэх үүрэг гүйцэтгэгч нь портTICK_PERIOD_MS TickType_t taskDelay = 5000 / портTICK_PERIOD_MS; while (үнэн) {// Интернет холболт if (hasInternet ()) {// Тэмдэглэлийг тохируулах нь lastTimeConnected = millis (); } // Aplica эсвэл delay vTaskDelay (taskDelay); }}

интернеттэй

bool hasInternet () {WiFiClient үйлчлүүлэгч; // Endreço IP do do Google 172.217.3.110 IPAddress adr = IPAddress (172, 217, 3, 110); // Tempo limite para conexão client.setTimeout (5); // Tenta conectar bool холбогдсон = 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 ("Салгагдсан"); // Хязгаарлагдмал бус тохиолдолд (hasNotCalledPhoneInAWhile ()) {// Лигийн дуудлага эсвэл утасны дуудлагад дуудлага хийх (); }} өөр {// Mostra no display que está conectado showDisplay ("Холбогдсон"); } // Espera 1 програмын давталтын саатал (1000); }

isDonnectedForTooLong

bool isDisconnectedForTooLong () {// Retorna үнэн зөв өгөгдөл буцаах millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {// Retorna үнэн зөв өгөгдөл буцааж өгөх millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

утас

хүчингүй callPhone () {// Faz a ligação para or telefone definito if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Энэ нь 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 ("дуудлагын утас амжилтгүй болсон"); } // Терминал нь GSM.callHangup (); }

showDisplay

void showDisplay (String message) {// Дэлгэцийг харуулах, дэлгэцийн үйл ажиллагааг идэвхжүүлэх, дэлгэцийн нэмэлт дэлгэц.setCursor (0, 0); display.println (зурвас + ""); }

Алхам 5: Файлуудыг татаж авах

PDF

INO

Зөвлөмж болгож буй: