فهرست مطالب:

اگر لینک شما خراب شود چه ؟: 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

شامل و تعریف می شود

#تعریف 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 paracommrar como desconectado #تعریف MAX_DISCONNECTED_TIME 10000 // 10 seg // Tempo que deve esperar para cada ligação #dexine MAX_CALL_TIME_INTERVAL 1800000 // 30 دقیقه // Usar serial 1 para o módulo gsm HardwareSerial SerialGSM (modemGSM TinyGsm (SerialGSM) ؛ // Tempo em que conectou à internet pela última vez uint32_t lastTimeConnected = 0؛ // Tempo em que fez a tltima ligação. Colocamos como -MAX_CALL_TIME_INTERVAL برای اولین بار // برای اولین بار در طول زمان uint32_t lastTimeCalledPhone = -MAX_CALL_TIME_INTERVAL ؛ // Pinagem em User_Setup.h and pasta da biblioteca TFT_eSPI display = TFT_eSPI ()؛

برپایی

void setup () {Serial.begin (115200)؛ setupDisplay ()؛ // Inicializa e configura o display setupGSM ()؛ // Inicializa o módulo GSM xTaskCreatePinnedToCore (checkWiFiConnection، // Função que será ekzada "checkWiFiConnection"، // Nome da tarefa 10000، // Tamanho da pilha NULL، // Parâmetro da tarefa (no caso não us، // no caso não)، 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á ekzada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) xTaskCreatePinnedToCore (checkInternet، // Função que será exeada "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á exeada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}

SetupDisplay

void 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 (غلط ، کاذب) ؛ // 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 ("راه اندازی 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

void 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 ticks. برای اجرای ما می توانم در مورد پیکر ثابت portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS؛ vTaskDelay (taskDelay) ؛ }}

connectWiFi

void 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 ("متصل") ؛ }

چک اینترنت

void checkInternet (void* p) {// Delay de 5 segundos da tarefa. É feita em ticks. برای اجرای برنامه em portis 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 limtlima conexão lastTimeConnected = millis ()؛ } // Aplica o delay vTaskDelay (taskDelay)؛ }}

hasInternet

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

حلقه

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 telefonone definido callPhone ()؛ }} else {// Mostra no display que está conectado showDisplay ("متصل")؛ } // 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 definido return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME؛ } bool hasNotCalledPhoneInAWhile () {// Retorna true o o tempo desde a última ligacão para o telefone for maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL ؛ }

callPhone

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")؛ // 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 ("تلفن انجام نشد")؛ } // Termina a ligação modemGSM.callHangup ()؛ }

showDisplay

void showDisplay (پیام رشته) {// Mostra a mensagem na primeira linha do display، limpando os eventuais caracteres extras display.setCursor (0، 0)؛ display.println (پیام + "") ؛ }

مرحله 5: فایل ها را بارگیری کنید

PDF

من نه

توصیه شده: