Daftar Isi:

Bagaimana Jika Tautan Anda Rusak?: 5 Langkah
Bagaimana Jika Tautan Anda Rusak?: 5 Langkah

Video: Bagaimana Jika Tautan Anda Rusak?: 5 Langkah

Video: Bagaimana Jika Tautan Anda Rusak?: 5 Langkah
Video: Cara Jadi Seperti Hacker dalam 5 Detik 2024, November
Anonim
Image
Image
Bagaimana Jika Tautan Anda Rusak?
Bagaimana Jika Tautan Anda Rusak?

Dalam video ini, kami akan membuat sensor link drop dengan ESP32 dan SIM800. Artinya dengan proyek ini, kami dapat memverifikasi koneksi ke internet, dan jika terjadi kegagalan koneksi, hubungi nomor telepon untuk memberi tahu bahwa jaringan sedang bermasalah.

Ini adalah salah satu dari banyak cara Anda dapat melakukan jenis pemantauan ini. Meskipun sederhana, ini memungkinkan Anda untuk menguji berbagai perangkat yang mungkin ada dalam CPD Anda. Kekuatan ceknya menjadi jauh lebih besar saat menggunakan ESP32. Meskipun saya menggunakan WiFi dalam contoh ini, Anda dapat menggunakan internet kabel, jika Anda mau.

Langkah 1: Perakitan

perakitan
perakitan

Langkah 2: Perakitan – Tabel

Perakitan – Meja
Perakitan – Meja

Langkah 3: Perpustakaan TFT_eSPI

Perpustakaan TFT_eSPI
Perpustakaan TFT_eSPI
Perpustakaan TFT_eSPI
Perpustakaan TFT_eSPI

Di Arduino IDE, buka Sketsa-> Sertakan

Perpustakaan-> Kelola Perpustakaan …

Instal TFT_eSPI

Buka folder perpustakaan dan ubah baris file User_Setup.h menjadi seperti yang ditunjukkan pada gambar.

Langkah 4: ESP32_Check_Internet_Connection.ino

Termasuk dan mendefinisikan

#tentukan TINY_GSM_MODEM_SIM800#sertakan

#termasuk

#termasuk

#termasuk

//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 untuk pertimbangan como desconectado #define MAX_DISCONNECTED_TIME 10000 //10 seg //Deve esperar untuk waktu yang lama #define MAX_CALL_TIME_INTERVAL 1800000 //30 mnt //Usar serial 1 untuk módulo gsm HardwareSerial SerialGSM(1); modem GSM kecilGSM(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 dan pasta da biblioteca Tampilan TFT_eSPI = TFT_eSPI();

Mempersiapkan

void setup(){ Serial.begin(115200); setupTampilan(); //Inisialisasi dan konfigurasi tampilan 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 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); //Nmero 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); //Nmero do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) }

Tampilan Pengaturan

void setupDisplay(){ display.init(); //Inisialisasi tampilan 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 }

SetupGSM

void setupGSM(){ showDisplay("Setup GSM"); //O Modul GSM untuk GPIO 4 dan 2 SerialGSM.begin(9600, SERIAL_8N1, 4, 2, false); penundaan (1000); //Mulai ulang modul jika (!modemGSM.restart()) { ESP.restart(); kembali; } //Espera pela rede celular if (!modemGSM.waitForNetwork()) { display.setCursor(0, 0); showDisplay("Kesalahan Jaringan GSM"); penundaan(3000); ESP.mulai ulang(); kembali; } }

periksaKoneksiWiFi

void checkWiFiConnection(void* p){ while(true) { //Se no estiver conectado ao roteador if(WiFi.status() != WL_CONNECTED) { //Manda conectar connectWiFi(); } //Delay de 1s da tarefa. feita em kutu. Untuk executar em millis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay(penundaan tugas); } }

sambungkan WiFi

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

cekInternet

void checkInternet(void* p){ //Delay de 5 segundos da tarefa. feita em kutu. Untuk executar 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 = milis(); } //Aplikasi atau penundaan vTaskDelay(taskDelay); } }

memiliki internet

bool hasInternet(){ klien WiFiClient; //Endreço IP do Google 172.217.3.110 IPAaddress adr = IPAddress(172, 217, 3, 110); //Tempo limite para conexão client.setTimeout(5); //Tenta conectar bool connected = client.connect(adr, 80); //Mengambil klien conexão.stop(); //Retorna true se está conectado ou false se está desconectado return connected; }

Lingkaran

void loop() { //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 para o telefone definido if(hasNotCalledPhoneInAWhile()) { //Liga para o telefon definido callPhone(); } } else { //Sebagian besar tidak ada tampilan setelah terhubung showDisplay("Connected"); } //Espera 1 segundo para a próxima iteração do loop delay(1000); }

TerputusUntukTerlalu Panjang

bool isDisconnectedForTooLong(){ //Retorna true se o tempo desde a ltima conexão untuk antrian utama o definido return millis() - lastTimeConnected > MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile() { //Retorna true se o tempo desde a ltima ligacão para o telepon untuk permintaan utama o definido return milis() - lastTimeCalledPhone > MAX_CALL_TIME_INTERVAL; }

panggilan telepon

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

tampilkanTampilan

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

Langkah 5: Unduh File

PDF

SAYA TIDAK

Direkomendasikan: