Բովանդակություն:

Ի՞նչ անել, եթե ձեր հղումը խափանվի: 5 քայլ
Ի՞նչ անել, եթե ձեր հղումը խափանվի: 5 քայլ

Video: Ի՞նչ անել, եթե ձեր հղումը խափանվի: 5 քայլ

Video: Ի՞նչ անել, եթե ձեր հղումը խափանվի: 5 քայլ
Video: 1955 գերմանական MAW ցիկլային շարժիչ: Ապամոնտաժում, դիզայնի ակնարկ 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 para konsiderrar como desconectado #սահմանել MAX_DISCONNECTED_TIME 10000 // 10 seg // Tempo que deve esperar para cada ligação #սահմանել MAX_CALL_TIME_INTERVAL 1800000 // 30 րոպե // Usar serial 1 para o módulo gsm HardwareSerial SerialGSM (TinyGsm modemGSM (SerialGSM); // Tempo em que conectou à ինտերնետը հասանելի է 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 և մակարոնեղեն ՝ biblioteca TFT_eSPI ցուցադրում = TFT_eSPI ();

Կարգավորում

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura կամ display setupGSM (); // Inicializa o módulo GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será performanceada "checkWiFiConnection", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não us, 2 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á exeada 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 ("Setup GSM"); // O Módulo GSM est GP nos GPIOs 4 e 2 SerialGSM. սկիզբ (9600, SERIAL_8N1, 4, 2, false); ուշացում (1000); // Վերագործարկեք եթե ((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. Կատարման համար մենք պետք է կիսվենք մեր մշտական նավահանգստով TICK_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. Կատարման համար մենք պետք է կիսվենք մեր մշտական նավահանգստով TICK_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 = millis (); } // Դիմում կամ հետաձգում vTaskDelay (taskDelay); }}

ունի ինտերնետ

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 Connect = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado վերադառնալ կապված; }

Օղակ

void loop () {// Se está desconectado por mais tempo que definimos if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("Անջատված է"); // 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 ("Միացված է"); } // Espera 1 segundo para a próxima iteração do loop delay (1000); }

isDononnectedForTooLong- ը

bool isDisconnectedForTooLong () {// Retorna true se o tempo desde a tltima conexão for 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 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 menagem na primira linha do display, limpando os eventuais caracteres extras display.setCursor (0, 0); display.println (հաղորդագրություն + ""); }

Քայլ 5: Ներբեռնեք ֆայլերը

PDF

ԻՆՈ

Խորհուրդ ենք տալիս: