สารบัญ:

เกิดอะไรขึ้นถ้าลิงก์ของคุณขัดข้อง: 5 ขั้นตอน
เกิดอะไรขึ้นถ้าลิงก์ของคุณขัดข้อง: 5 ขั้นตอน

วีดีโอ: เกิดอะไรขึ้นถ้าลิงก์ของคุณขัดข้อง: 5 ขั้นตอน

วีดีโอ: เกิดอะไรขึ้นถ้าลิงก์ของคุณขัดข้อง: 5 ขั้นตอน
วีดีโอ: วิธีเช็คว่าเราทำผิดกฎ facebook จนโดนปิดกั้นการมองเห็นหรือป่าว ปี2022@MSMASHARE99 2024, กรกฎาคม
Anonim
Image
Image
เกิดอะไรขึ้นถ้าลิงค์ของคุณล่ม?
เกิดอะไรขึ้นถ้าลิงค์ของคุณล่ม?

ในวิดีโอนี้ เราจะสร้างเซ็นเซอร์วางลิงก์ด้วย ESP32 และ SIM800 ซึ่งหมายความว่าในโปรเจ็กต์นี้ เราสามารถตรวจสอบการเชื่อมต่อกับอินเทอร์เน็ตได้ และในกรณีที่การเชื่อมต่อล้มเหลว ให้โทรไปที่หมายเลขโทรศัพท์เพื่อแจ้งว่าเครือข่ายมีปัญหา

นี่เป็นวิธีหนึ่งที่คุณสามารถดำเนินการตรวจสอบประเภทนี้ได้ แม้ว่าจะเป็นเรื่องง่าย แต่ก็ช่วยให้คุณสามารถทดสอบอุปกรณ์ต่างๆ ที่อาจมีอยู่ภายใน CPD ของคุณได้ พลังของการตรวจสอบจะเพิ่มมากขึ้นเมื่อใช้ ESP32 แม้ว่าฉันจะใช้ WiFi ในตัวอย่างนี้ คุณสามารถใช้อินเทอร์เน็ตแบบมีสายได้ หากต้องการ

ขั้นตอนที่ 1: การประกอบ

การประกอบ
การประกอบ

ขั้นตอนที่ 2: การประกอบ – Table

การประกอบ – ตาราง
การประกอบ – ตาราง

ขั้นตอนที่ 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

รวมและกำหนด

#define TINY_GSM_MODEM_SIM800#รวม

#รวม

#รวม

#รวม

//โคลนสำหรับ 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พิจารณา 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 serial 1 สำหรับโมดูล gsm HardwareSerial SerialGSM (1); โมเด็ม TinyGsmGSM(SerialGSM); // Tempo em que conectou à อินเทอร์เน็ต pela última vez uint32_t lastTimeConnected = 0; //Tempo em que fez a última ligação. Colocamos como -MAX_CALL_TIME_INTERVAL สำหรับ ligar imediatamente //da primeira vez que cair uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h กับพาสต้าและ biblioteca จอแสดงผล TFT_eSPI = TFT_eSPI ();

ติดตั้ง

การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); setupDisplay(); //Inicializa e configura หรือแสดง 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 (ไม่มี caso, não usamos) da tarefa NULL, //Caso queria manter uma referência para a tarefa que vai ser criada (ไม่มี 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 (ไม่มี 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); // หมายเลข do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) }

ตั้งค่าการแสดงผล

เป็นโมฆะ setupDisplay () { display.init (); //Inicializa o แสดง 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

เป็นโมฆะ setupGSM () { showDisplay ("ตั้งค่า GSM"); //O โมดูล GSM está nos GPIOs 4 e 2 SerialGSM.begin(9600, SERIAL_8N1, 4, 2, false); ล่าช้า (1000); //รีสตาร์ท o módulo ถ้า (!modemGSM.restart ()) { ESP.restart (); กลับ; } // Espera pela rede celular if (!modemGSM.waitForNetwork()) { display.setCursor (0, 0); showDisplay("เครือข่าย GSM ผิดพลาด"); ล่าช้า (3000); ESP.รีสตาร์ท(); กลับ; } }

ตรวจสอบการเชื่อมต่อ WiFi

เป็นโมฆะ checkWiFiConnection (เป็นโมฆะ * p) { ในขณะที่ (จริง) { // Se não estiver conectado ao roteador if (WiFi.status () != WL_CONNECTED) { // Manda conectar connectWiFi (); } //Delay de 1s da tarefa. É feita em เห็บ ตัวดำเนินการตามค่าเริ่มต้น ค่าคงที่ พอร์ต TICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay(งานดีเลย์); } }

เชื่อมต่อ WiFi

เป็นโมฆะ connectWiFi () { // Manda conectar ao roteador com o nome e senha WiFi.begin (SSID, รหัสผ่าน); 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 (เป็นโมฆะ * p) { // หน่วงเวลา 5 segundos da tarefa. É feita em เห็บ ตัวดำเนินการตามค่าเริ่มต้น ค่าคงที่ พอร์ตTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; ในขณะที่ (จริง) { // Se tem internet if (hasInternet ()) {// Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } //Aplica หรือหน่วงเวลา vTaskDelay(taskDelay); } }

มีอินเตอร์เน็ต

bool hasInternet(){ ไคลเอนต์ WiFiClient; //Endreço IP สำหรับ Google 172.217.3.110 IPAddress adr = IPAddress (172, 217, 3, 110); //Tempo limite สำหรับไคลเอ็นต์.setTimeout(5); //Tenta conectar bool เชื่อมต่อแล้ว = client.connect(adr, 80); //ดึงลูกค้าจาก conexão.stop(); //Retorna true se está conectado ou false se está desconectado กลับมาเชื่อมต่อ; }

ห่วง

วงเป็นโมฆะ () (// 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 โทรศัพท์ definido callPhone (); } } อื่น {// Mostra no display que está conectado showDisplay("Connected"); } //Espera 1 segundo para a ล่วงหน้า iteração do loop delay(1000); }

isDisconnectedForTooLong

bool isDisconnectedForTooLong(){ //Retorna true se o tempo desde a última conexão สำหรับ 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 สำหรับ maior que o definido return millis () - lastTimeCalledPhone > MAX_CALL_TIME_INTERVAL; }

โทรศัพท์

ถือเป็นโมฆะ callPhone () {// ติดต่อกับโทรศัพท์โดยตรงหาก (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 = มิลลิวินาที (); } else { //Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("การโทรล้มเหลว"); } //เทอร์มินา a ligação modemGSM.callHangup(); }

แสดงดิสเพลย์

โมฆะ showDisplay (ข้อความสตริง) {//Mostra a mensagem na primeira linha do display, limpando os eventuais caracteres extras display.setCursor (0, 0); display.println(ข้อความ + " "); }

ขั้นตอนที่ 5: ดาวน์โหลดไฟล์

ไฟล์ PDF

ฉันไม่

แนะนำ: