
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12



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

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

ขั้นตอนที่ 3: ไลบรารี 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
ฉันไม่
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน

การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน

การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน

วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน

การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน

เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง