Mục lục:

Điều gì sẽ xảy ra nếu liên kết của bạn gặp sự cố?: 5 bước
Điều gì sẽ xảy ra nếu liên kết của bạn gặp sự cố?: 5 bước

Video: Điều gì sẽ xảy ra nếu liên kết của bạn gặp sự cố?: 5 bước

Video: Điều gì sẽ xảy ra nếu liên kết của bạn gặp sự cố?: 5 bước
Video: Nếu Cơ Thể Của Bạn Có Thể Làm Điều Đó, Bạn Là Một Trên 1 Triệu 2024, Tháng mười một
Anonim
Image
Image
Điều gì xảy ra nếu liên kết của bạn gặp sự cố?
Điều gì xảy ra nếu liên kết của bạn gặp sự cố?

Trong video này, chúng tôi sẽ tạo cảm biến thả liên kết với ESP32 và SIM800. Điều này có nghĩa là với dự án này, chúng tôi có thể xác minh kết nối với internet và trong trường hợp kết nối bị lỗi, hãy gọi đến một số điện thoại để thông báo rằng mạng đang gặp sự cố.

Đây là một trong nhiều cách bạn có thể thực hiện loại giám sát này. Mặc dù đơn giản nhưng nó cho phép bạn kiểm tra các thiết bị khác nhau có thể tồn tại trong CPD của bạn. Sức mạnh kiểm tra của nó trở nên lớn hơn nhiều khi sử dụng ESP32. Mặc dù tôi sử dụng WiFi trong ví dụ này, nhưng bạn có thể sử dụng Internet có dây nếu muốn.

Bước 1: Lắp ráp

cuộc họp
cuộc họp

Bước 2: Lắp ráp - Bảng

Bàn lắp ráp
Bàn lắp ráp

Bước 3: Thư viện TFT_eSPI

Thư viện TFT_eSPI
Thư viện TFT_eSPI
Thư viện TFT_eSPI
Thư viện TFT_eSPI

Trong Arduino IDE, đi tới Sketch-> Bao gồm

Thư viện-> Quản lý Thư viện…

Cài đặt TFT_eSPI

Đi tới thư mục thư viện và thay đổi các dòng của tệp User_Setup.h để nó như được hiển thị trong hình ảnh.

Bước 4: ESP32_Check_Internet_Connection.ino

Bao gồm và xác định

# xác định TINY_GSM_MODEM_SIM800 # bao gồm

#bao gồm

#bao gồm

#bao gồm

// Mude para o nome e senha da sua red 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 adjrar como desconectado #define MAX_DISCONNECTED_TIME 10000 // 10 seg // Tempo que deve esperar para cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 // 30 phút // Usar serial 1 para o módulo gsm HardwareSerial SerialGSM (1); Modem TinyGsmGSM (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; // Permanentm em User_Setup.h na pasta da biblioteca TFT_eSPI display = TFT_eSPI ();

Cài đặt

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Inicializa o módulo GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será executive "checkWiFiConnection", // 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 referenceência para a tarefa que vai ser criada (no caso não Preisamos) 0); // Número do core que será executive a tarefa (usamos o core 0 para o loop ficar livre com o core 1) xTaskCreatePinnedToCore (checkInternet, // Função que será executive "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 referenceência para a tarefa que vai ser criada (no caso não trước 0); // Número do core que será executive 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 cámco 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 ("Thiết lập GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); chậm trễ (1000); // Khởi động lại o módulo if (! ModemGSM.restart ()) {ESP.restart (); trở lại; } // Espera pela red celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("Lỗi Mạng GSM"); chậm trễ (3000); ESP.restart (); trở lại; }}

checkWiFiConnection

void checkWiFiConnection (void * p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Độ trễ 1s da tarefa. É feita em ve. Para thi hành em millis dividimos pela hằng số 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, MẬT KHẨU); Serial.println ("Đang kết nối"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); chậm trễ (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Đã kết nối"); }

checkInternet

void checkInternet (void * p) {// Trì hoãn 5 segundos da tarefa. É feita em ve. Para thi hành em millis dividimos pela hằng số 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 (); } // Aplica o delay vTaskDelay (taskDelay); }}

hasInternet

bool hasInternet () {máy khách WiFiClient; // 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 kết nối = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado return kết nối; }

Vòng

void loop () {// Se está desconectado por mais tempo que definimos if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("Đã ngắt kết nối"); // Se faz tempo que não liga para o telefone Defdo if (hasNotCalledPhoneInAWhile ()) {// Liga para o telefone Defdo callPhone (); }} else {// Mostra no display que está conectado showDisplay ("Đã kết nối"); } // Espera 1 segundo para a próxima iteração làm trễ vòng lặp (1000); }

isDisconnectedForTooLong

bool isDisconnectedForTooLong () {// Retorna true se o tempo desde a última conexão cho maior que o nhất định 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 Defdo return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

gọi điện thoại

void callPhone () {// Faz a ligação para o telefone Defdo if (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 ("điện thoại bị lỗi"); } // Chấm dứt một modem dây chằngGSM.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 (tin nhắn + ""); }

Bước 5: Tải xuống tệp

PDF

NS

Đề xuất: