جدول المحتويات:

ماذا لو تعطل الارتباط الخاص بك ؟: 5 خطوات
ماذا لو تعطل الارتباط الخاص بك ؟: 5 خطوات

فيديو: ماذا لو تعطل الارتباط الخاص بك ؟: 5 خطوات

فيديو: ماذا لو تعطل الارتباط الخاص بك ؟: 5 خطوات
فيديو: حل مشكلة سفاري لا يفتح المواقع ( جميع الحالات ) 2024, يوليو
Anonim
Image
Image
ماذا لو تعطل الارتباط الخاص بك؟
ماذا لو تعطل الارتباط الخاص بك؟

في هذا الفيديو ، سننشئ مستشعر إسقاط الارتباط باستخدام ESP32 و SIM800. هذا يعني أنه من خلال هذا المشروع ، يمكننا التحقق من الاتصال بالإنترنت ، وفي حالة فشل الاتصال ، اتصل برقم هاتف لإخطار أن الشبكة في مشكلة.

هذه إحدى الطرق العديدة التي يمكنك من خلالها إجراء هذا النوع من المراقبة. على الرغم من بساطته ، إلا أنه يسمح لك باختبار العديد من الأجهزة التي قد تكون موجودة ضمن CPD الخاص بك. تصبح قوة الفحص الخاصة به أكبر بكثير عند استخدام ESP32. على الرغم من أنني أستخدم WiFi في هذا المثال ، يمكنك استخدام الإنترنت السلكي ، إذا كنت تفضل ذلك.

الخطوة 1: التجميع

المجسم
المجسم

الخطوة 2: التجميع - الجدول

جدول التجميع
جدول التجميع

الخطوة 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 # تشمل

#يشمل

#يشمل

#يشمل

// 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 allow 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 // Usar serial 1 para o módulo gsm HardwareSerial SerialGSM (1) ؛ مودم 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 ؛ // Pinagem em User_Setup.h na pasta da biblioteca TFT_eSPI display = TFT_eSPI () ؛

اقامة

إعداد باطل () {Serial.begin (115200) ؛ setupDisplay () ؛ // Inicializa e configura o عرض الإعداد GSM () ؛ // Inicializa o módulo GSM xTaskCreatePinnedToCore (checkWiFiConnection، // Função que será Exitada "checkWiFiConnection"، // Nome da tarefa 10000، // Tamanho da pilha NULL، // Parâmetro da tarefa (no caso não usamos) 2، // Priority 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á exático a tarefa (usamos o core 0 para o loop ficar livre com o core 1) xTaskCreatePinnedToCore (checkInternet، // Função que será Executiveada "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á Executive 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 () {showDisplay ("إعداد GSM") ؛ // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600، SERIAL_8N1، 4، 2، false) ؛ تأخير (1000) ؛ // Restart o módulo if (! modemGSM.restart ()) {ESP.restart ()؛ إرجاع؛ } // Espera pela rede celular if (! modemGSM.waitForNetwork ()) {display.setCursor (0، 0)؛ showDisplay ("خطأ شبكة GSM") ؛ تأخير (3000) ؛ ESP.restart () ، إرجاع؛ }}

checkWiFiConnection

checkWiFiConnection (void * p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi ()؛ } // Delay de 1s da tarefa. É feita em القراد. تنفيذي جزئيًا ، تقسيم الميلي ، منفذ ثابت للثبات TICKType_t taskDelay = 1000 / portTICK_PERIOD_MS؛ vTaskDelay (TaskDelay) ، }}

connectWiFi

باطل connectWiFi () {// Manda conectar ao roteador com o nome e senha WiFi.begin (SSID ، PASSWORD) ؛ 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 (void * p) {// Delay de 5 segundos da tarefa. É feita em القراد. تنفيذي جزئيًا بملف منفصل ، منفذ ثابت ، 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 ()؛ } // تطبيق o delay vTaskDelay (TaskDelay) ؛ }}

hasInternet

bool hasInternet () {WiFiClient client؛ // 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 متصل = client.connect (adr ، 80) ؛ // Fecha a conexão client.stop () ؛ // Retorna true se está conectado ou false se está desconectado return connect ؛ }

حلقة

الحلقة الفارغة () {// 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 telefone Definido callPhone ()؛ }} else {// 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 for maior que o definitely 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 Definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL؛ }

مكالمة هاتفية

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") ؛ // 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 ("callphone failed")؛ } // Termina a ligação modemGSM.callHangup () ؛ }

عرض

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

الخطوة 5: قم بتنزيل الملفات

بي دي إف

انا لا

موصى به: