Cov txheej txheem:

Yuav Ua Li Cas Yog Koj Qhov Txuas Crashes?: 5 Kauj Ruam
Yuav Ua Li Cas Yog Koj Qhov Txuas Crashes?: 5 Kauj Ruam

Video: Yuav Ua Li Cas Yog Koj Qhov Txuas Crashes?: 5 Kauj Ruam

Video: Yuav Ua Li Cas Yog Koj Qhov Txuas Crashes?: 5 Kauj Ruam
Video: Vim li cas koj lub neej thiaj li tsis txawj muaj nyiaj yog ua cas? ( How to Change your life) 2024, Hlis ntuj nqeg
Anonim
Image
Image
Yuav Ua Li Cas Yog Koj Qhov Txuas Crashes?
Yuav Ua Li Cas Yog Koj Qhov Txuas Crashes?

Hauv daim vis dis aus no, peb yuav tsim qhov txuas txuas qhov ntsuas nrog ESP32 thiab SIM800. Qhov no txhais tau tias nrog txoj haujlwm no, peb tuaj yeem txheeb xyuas qhov kev txuas mus rau is taws nem, thiab thaum muaj kev sib txuas tsis tiav, hu xov tooj mus ceeb toom tias lub network muaj teeb meem.

Nov yog ib txoj hauv kev ntau yam uas koj tuaj yeem ua rau kev txheeb xyuas hom no. Thaum nws yooj yim, nws tso cai rau koj sim ntau yam khoom siv uas yuav muaj nyob hauv koj li CPD. Nws lub zog ntawm kev tshuaj xyuas ua ntau dua thaum siv ESP32. Txawm hais tias kuv siv WiFi hauv qhov piv txwv no, koj tuaj yeem siv wired internet, yog tias koj xav tau.

Kauj ruam 1: Sib dhos

Los ua ke
Los ua ke

Kauj Ruam 2: Sib dhos - Rooj

Sib dhos - Rooj
Sib dhos - Rooj

Kauj ruam 3: TFT_eSPI Library

TFT_eSPI Library
TFT_eSPI Library
TFT_eSPI Library
TFT_eSPI Library

Hauv Arduino IDE, mus rau Sketch-> Xws li

Tsev qiv ntawv-> Tswj cov tsev qiv ntawv…

Nruab TFT_eSPI

Mus rau lub tsev qiv ntawv ntawv tais ceev tseg thiab hloov kab ntawm Cov Ntaub Ntawv User_Setup.h kom tso nws raws li qhia hauv daim duab.

Kauj ruam 4: ESP32_Check_Internet_Connection.ino

Suav nrog thiab txhais

#define TINY_GSM_MODEM_SIM800#suav nrog

#suav nrog

#suav nrog

#suav nrog

// 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 considerar 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 // Siv serial 1 para o módulo gsm HardwareSerial SerialGSM (1); TinyGsm modemGSM (SerialGSM); // Tempo em que conectou à internet pela imaltima 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 zaub = TFT_eSPI ();

Teeb

teeb tsa tsis muaj dab tsi () {Serial.begin (115200); setupDisplay (); // Txheeb xyuas qhov teeb tsa lossis teeb tsa teeb tsa GSM (); // 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 (no caso não usamos), 2 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á 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 (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á executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}

Teeb Teeb

void setupDisplay () {display.init (); // Inicializa o tso saib 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 (cuav, cuav); // Desativa a quebra de linha display.setTextSize (1); // Tam sim no ua cov ntawv nyeem display.setCursor (0, 0, 2); // Posição x, y e fonte do texto}

Teeb GSM

void setupGSM () {showDisplay ("Teeb GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, cuav); ncua (1000); // Restart o módulo yog (! ModemGSM.restart ()) {ESP.restart (); rov qab; } // Espera pela rede celular yog (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("GSM Network Error"); ncua (3000); ESP.restart (); rov qab; }}

checkWiFiConnection

void checkWiFiConnection (void* p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Ncua de 1s da tarefa. É feita em zuam. Para executar em millis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}

txuas Wi -nkaus

void connectWiFi () {// Manda conectar ao roteador com o nome e senha WiFi.begin (SSID, PASSWORD); Serial.println ("Txuas"); // Espera tsis yog thaum noj conectar thaum (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); ncua (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Txuas"); }

checkInternet

void checkInternet (void* p) {// Ncua sijhawm 5 segundos da tarefa. É feita em zuam. Para executar em millis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 5000 / portTICK_PERIOD_MS; thaum (tseeb) {// Se tem internet yog (muajInternet ()) {// Atualiza o tempo em que aconteceu a limtlima conexão lastTimeConnected = millis (); } // Aplica o ncua vTaskDelay (taskDelay); }}

hasInternet

bool hasInternet () {WiFiClient tus thov kev pab; // 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 txuas nrog = client.connect (adr, 80); // Fecha conexão client.stop (); // Retorna tseeb se está conectado ou cuav se está desconectado rov txuas nrog; }

Loop

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 yog (hasNotCalledPhoneInAWhile ()) {// Liga para o telefone definido callPhone (); }} lwm qhov {// Mostra tsis muaj zaub que está conectado showDisplay ("Txuas"); } // Espera 1 segundo para a próxima iteração do loop ncua (1000); }

isDisconnectedForTooLong

bool isDisconnectedForTooLong () {// Retorna tseeb se o tempo desde a última conexão rau maior que o definido rov qab millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {// Retorna tseeb se o tempo desde a última ligacão para o telefone for maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }

hu xov tooj

tsis muaj dab tsi hu xov tooj () {// Faz a ligação para o telefone definido yog (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 (); } lwm yam {// Se entrou aqui é porque não conseguiu fazer a ligação Serial.println ("hu xov tooj tsis tau"); } // Termina ligação modemGSM.callHangup (); }

showDisplay

void showDisplay (String message) {// Qhov zoo tshaj plaws ntawm cov ntaub ntawv tseem ceeb tshaj plaws, limpando os eventuais caracteres ntxiv display.setCursor (0, 0); display.println (xov + ""); }

Kauj ruam 5: Rub tawm Cov Ntaub Ntawv

PDF

INO

Pom zoo: