Isi kandungan:

Bagaimana Sekiranya Pautan Anda Rosak ?: 5 Langkah
Bagaimana Sekiranya Pautan Anda Rosak ?: 5 Langkah

Video: Bagaimana Sekiranya Pautan Anda Rosak ?: 5 Langkah

Video: Bagaimana Sekiranya Pautan Anda Rosak ?: 5 Langkah
Video: 5 Cara Menghilangkan Rasa Gugup di Segala Situasi 2024, November
Anonim
Image
Image
Bagaimana Sekiranya Pautan Anda Hancur?
Bagaimana Sekiranya Pautan Anda Hancur?

Dalam video ini, kami akan membuat sensor penurunan pautan dengan ESP32 dan SIM800. Ini bermaksud bahawa dengan projek ini, kita dapat mengesahkan sambungan ke internet, dan sekiranya berlaku kegagalan sambungan, hubungi nombor telefon untuk memberitahu bahawa rangkaian berada dalam masalah.

Ini adalah salah satu cara untuk melakukan pemantauan jenis ini. Walaupun mudah, ia membolehkan anda menguji pelbagai peranti yang mungkin ada dalam CPD anda. Kekuatan cek menjadi jauh lebih besar ketika menggunakan ESP32. Walaupun saya menggunakan WiFi dalam contoh ini, anda boleh menggunakan internet berwayar, jika anda mahu.

Langkah 1: Perhimpunan

perhimpunan
perhimpunan

Langkah 2: Perhimpunan - Jadual

Perhimpunan - Jadual
Perhimpunan - Jadual

Langkah 3: Perpustakaan TFT_eSPI

Perpustakaan TFT_eSPI
Perpustakaan TFT_eSPI
Perpustakaan TFT_eSPI
Perpustakaan TFT_eSPI

Dalam Arduino IDE, pergi ke Sketch-> Include

Perpustakaan-> Urus Perpustakaan…

Pasang TFT_eSPI

Pergi ke folder perpustakaan dan ubah baris fail User_Setup.h untuk meninggalkannya seperti yang ditunjukkan dalam gambar.

Langkah 4: ESP32_Check_Internet_Connection.ino

Merangkumi dan menentukan

#tentukan TINY_GSM_MODEM_SIM800 # sertakan

#sertakan

#sertakan

#sertakan

// 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 mempertimbangkan como desconectado #define MAX_DISCONNECTED_TIME 10000 // 10 seg // Tempo que deve esperar para cada ligação #define MAX_CALL_TIME_INTERVAL 1800000 // 30 min // Siri pemakaian 1 para o módulo gsm HardwareSerial SerialGSM (1); TinyGsm modemGSM (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 untuk ligar imediatamente // da primeira vez que cair uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h na pasta da biblioteca TFT_eSPI display = TFT_eSPI ();

Persediaan

persediaan tidak sah () {Serial.begin (115200); persediaanDisplay (); // Inicializa e configura o display setupGSM (); // 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 usamosade) 2) 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á executada a tarefa (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 (no caso não precisamos) 0); // Número do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}

PersediaanDisplay

batal 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}

PersediaanGSM

batal setupGSM () {showDisplay ("Persediaan GSM"); // O Módulo GSM estános GPIO 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); kelewatan (1000); // Mulakan semula o módulo if (! ModemGSM.restart ()) {ESP.restart (); kembali; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("Ralat Rangkaian GSM"); kelewatan (3000); ESP.mulakan semula (); kembali; }}

periksaWiFiConnection

void checkWiFiConnection (void * p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Kelewatan de 1s da tarefa. É feita em berdetik. Para pelaksana em millis dividimos pela stablee portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

sambungWiFi

batal connectWiFi () {// Manda conectar ao roteador com o nome e senha WiFi.begin (SSID, PASSWORD); Serial.println ("Menyambung"); // Espera no while at conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kelewatan (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Bersambung"); }

semakInternet

void checkInternet (kekosongan * p) {// Delay de 5 segundos da tarefa. É feita em berdetik. Para pelaksana em millis dividimos pela stablee portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; while (true) {// Se tem internet jika (hasInternet ()) {// Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Aplica o delay vTaskDelay (taskDelay); }}

mempunyaiInternet

bool hasInternet () {Pelanggan 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 connect = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado kembali disambungkan; }

Gelung

gelung void () {// Se está desconectado por mais tempo que definimos if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("Terputus"); // Se faz tempo que não liga para o telefone definido jika (hasNotCalledPhoneInAWhile ()) {// Liga untuk o telefone definido callPhone (); }} lain {// Mostra no display que está conectado showDisplay ("Connected"); } // 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 untuk 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 untuk maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

panggilan telefon

batal 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 ("callphone ok"); // Atualiza o tempo em que foi feita a última ligação lastTimeCalledPhone = millis (); } lain {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("telefon bimbit gagal"); } // Termina a ligação modemGSM.callHangup (); }

tayangan

void showDisplay (String message) {// Mostra a mensagem na primeira linha do display, limpando os eventuais caracteres extras display.setCursor (0, 0); display.println (mesej + ""); }

Langkah 5: Muat turun Fail

PDF

INO

Disyorkan: