Satura rādītājs:

Ko darīt, ja jūsu saite avarē?: 5 soļi
Ko darīt, ja jūsu saite avarē?: 5 soļi

Video: Ko darīt, ja jūsu saite avarē?: 5 soļi

Video: Ko darīt, ja jūsu saite avarē?: 5 soļi
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, Novembris
Anonim
Image
Image
Ko darīt, ja jūsu saite avarē?
Ko darīt, ja jūsu saite avarē?

Šajā video mēs izveidosim saites kritiena sensoru ar ESP32 un SIM800. Tas nozīmē, ka ar šo projektu mēs varam pārbaudīt savienojumu ar internetu un savienojuma kļūmes gadījumā zvanīt uz tālruņa numuru, lai paziņotu, ka tīklam ir problēmas.

Šis ir viens no daudziem veidiem, kā veikt šāda veida uzraudzību. Lai gan tas ir vienkārši, tas ļauj pārbaudīt dažādas ierīces, kas var pastāvēt jūsu MPD. Izmantojot ESP32, tā pārbaudes spējas kļūst daudz lielākas. Lai gan šajā piemērā es izmantoju WiFi, ja vēlaties, varat izmantot vadu internetu.

1. solis: montāža

Montāža
Montāža

2. solis: montāža - tabula

Montāža - galds
Montāža - galds

3. darbība: TFT_eSPI bibliotēka

TFT_eSPI bibliotēka
TFT_eSPI bibliotēka
TFT_eSPI bibliotēka
TFT_eSPI bibliotēka

Arduino IDE dodieties uz Sketch-> Include

Bibliotēka-> Pārvaldīt bibliotēkas …

Instalējiet TFT_eSPI

Dodieties uz bibliotēkas mapi un mainiet faila User_Setup.h rindas, lai atstātu to, kā parādīts attēlā.

4. darbība: ESP32_Check_Internet_Connection.ino

Ietver un definē

#define TINY_GSM_MODEM_SIM800#include

#iekļaut

#iekļaut

#iekļaut

// Mude para o nome e senha da sua rede WiFi que quer testar #define SSID "SSID" #define PASSWORD "12345678" //+55 DDD Numeric 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 min // Usar serial 1 para o modeulo gsm HardwareSerial SerialGSM (1); TinyGsm modemsGSM (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 lastTimeConedPhone = -MAX_CALL_TIME_INTERVAL; // Pinagem em User_Setup.h ar pasta da biblioteca TFT_eSPI display = TFT_eSPI ();

Uzstādīt

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Inicializa o modulo GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será executab "checkWiFiConnection", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não usamos) 2, // Priorid 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á executab 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 (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á executab 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 vai displejs ar šādu displeju.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}

SetupGSM

void setupGSM () {showDisplay ("GSM iestatīšana"); // O Modulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); kavēšanās (1000); // Restart o modeulo if (! ModemGSM.restart ()) {ESP.restart (); atgriešanās; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM tīkla kļūda"); kavēšanās (3000); ESP.restart (); atgriešanās; }}

pārbaudiet Wi -FiConnection

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 ērces. Izpildiet vienu milimetru divimošu, nemainot portu 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 ("Savienojums"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kavēšanās (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Savienots"); }

checkInternet

void checkInternet (void* p) {// Aizkavēšanās 5 segmentos. Ē feita em ērces. Izpildiet vienu milimetru divimošu, nemainot portu TICK_PERIOD_MS TickType_t taskDelay = 5000 / portsTICK_PERIOD_MS; while (true) {// Se tem internet if (hasInternet ()) {// Atualiza o tempo em que aconteceu a útlima conexão lastTimeConnected = millis (); } // Aplica o delay vTaskDelay (taskDelay); }}

hasInternet

bool hasInternet () {WiFiClient klients; // 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 connected = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado return connected; }

Cilpa

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 (hasNotConedPhoneInAWhile ()) {// Liga para o telefone definido callPhone (); }} else {// Mostra no display que está conectado showDisplay ("Savienots"); } // Espera 1 segundo para a próxima iteração do loop delay (1000); }

isDisconnectedForTooLong

bool isDisconnectedForTooLong () {// Atgūstiet patiesu se o tempo desde a última conexão for maior que o definido return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotConedPhoneInAWhile () {// Atgādiniet patiesu se o tempo desde a última ligacão para o telefone for maior que o definido return millis () - lastTimeConedPhone> MAX_CALL_TIME_INTERVAL; }

callPhone

void callPhone () {// Faz a ligação para o phoneone definido if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Skatiet ievadīto informāciju par sēriju. // Atualiza o tempo em que foi feita a última ligação lastTimeCeledPhone = millis (); } cits {// Ievadiet ūdeni un pēc tam noslēdziet fazer a ligação Serial.println ("zvans neizdevās"); } // Termina a ligaçãoo modemGSM.callHangup (); }

showDisplay

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

5. darbība: lejupielādējiet failus

PDF

ES NĒ

Ieteicams: