Índice:
- Etapa 1: Montagem
- Etapa 2: Montagem - Mesa
- Etapa 3: Biblioteca TFT_eSPI
- Etapa 4: ESP32_Check_Internet_Connection.ino
- Etapa 5: Baixe os arquivos
Vídeo: E se o seu link falhar ?: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Neste vídeo, criaremos um sensor de queda de link com um ESP32 e um SIM800. Isso significa que com este projeto, podemos verificar a conexão com a internet e, em caso de falha de conexão, ligar para um número de telefone para avisar que a rede está com problemas.
Esta é uma das muitas maneiras de realizar esse tipo de monitoramento. Embora seja simples, ele permite que você teste vários dispositivos que podem existir no seu CPD. Seu poder de verificação se torna muito maior ao usar o ESP32. Embora eu use WiFi neste exemplo, você pode usar internet com fio, se preferir.
Etapa 1: Montagem
Etapa 2: Montagem - Mesa
Etapa 3: Biblioteca TFT_eSPI
No IDE do Arduino, vá para Sketch-> Incluir
Biblioteca-> Gerenciar Bibliotecas…
Instale TFT_eSPI
Vá para a pasta da biblioteca e altere as linhas do arquivo User_Setup.h para deixá-lo como mostrado na imagem.
Etapa 4: ESP32_Check_Internet_Connection.ino
Inclui e define
#define TINY_GSM_MODEM_SIM800 # include
#incluir
#incluir
#incluir
// 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 para esperar considerar comoado #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); TinyGsm modemGSM (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 ();
Configurar
void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // 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 preenchido) 2, // Prioridade da tarefa NULL, // Caso queria manter uma referência para uma tarefa que vai ser criada (no caso não precisa) 0); // Número do core que será executado a tarefa (meta 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 equivocado) 2, // Prioridade da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisa) 0); // Número do core que será executada a tarefa (localização 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 um 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}
SetupGSM
void setupGSM () {showDisplay ("Setup GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, falso); atraso (1000); // Reinicia o módulo if (! ModemGSM.restart ()) {ESP.restart (); Retorna; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("Erro de rede GSM"); atraso (3000); ESP.restart (); Retorna; }}
checkWiFiConnection
void checkWiFiConnection (void * p) {while (true) {// Se não estiver conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Atraso de 1s da tarefa. É feita em carrapatos. Para executar em milis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}
conectarWiFi
void connectWiFi () {// Manda conectar ao roteador com o nome e senha WiFi.begin (SSID, SENHA); Serial.println ("Conectando"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); atraso (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Conectado"); }
checkInternet
void checkInternet (void * p) {// Delay de 5 segundos da tarefa. É feita em carrapatos. Para executar em milis 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 útlima conexão lastTimeConnected = millis (); } // Aplica o delay vTaskDelay (taskDelay); }}
hasInternet
bool hasInternet () {cliente 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 conectado = client.connect (adr, 80); // Fecha a conexão client.stop (); // Retorna true se está conectado ou false se está desconectado retornar conectado; }
Ciclo
void loop () {// Se está desconectado por mais tempo que definimos if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("Desconectado"); // 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 ("Conectado"); } // 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 para maior que o definido return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {// Retorna verdadeiro se o tempo desde a última ligacão para o telefone para 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 uma 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 uma ligação Serial.println ("callphone failed"); } // Termina a ligação modemGSM.callHangup (); }
showDisplay
void showDisplay (String message) {// Mostra a mensagem na primeira linha do display, limpando os caracteres extras display.setCursor (0, 0); display.println (mensagem + ""); }
Etapa 5: Baixe os arquivos
EU NÃO
Recomendado:
Steam Punk seu UPS para obter horas de atividade para seu roteador Wi-fi: 4 etapas (com fotos)
Steam Punk seu UPS para obter horas de atividade para seu roteador Wi-fi: Há algo fundamentalmente desagradável em ter seu UPS convertendo sua bateria de 12 V DC em 220 V AC para que os transformadores que executam seu roteador e fibra ONT possam convertê-la de volta em 12 V DC! Você também está lutando contra o [normalmente
Como fazer seu próprio gateway WIFI para conectar seu Arduino à rede IP?: 11 etapas (com imagens)
Como fazer seu próprio gateway WIFI para conectar seu Arduino à rede IP?: Como tantas pessoas, você acha que o Arduino é uma solução muito boa para fazer automação residencial e robótica! Mas em termos de comunicação, os Arduinos só vêm com links seriais. Estou trabalhando em um robô que precisa estar permanentemente conectado a um servidor que roda
Controle o layout do seu trem modelo com o seu celular !: 11 etapas (com imagens)
Controle o layout do seu trem-modelo com o seu celular !: Controlar o layout do trem-modelo com um acelerador com fio e controladores de desvio pode ser um bom começo para iniciantes, mas eles representam um problema de não portabilidade. Além disso, os controladores sem fio que vêm no mercado podem controlar apenas alguns locom
Steam Link no seu Raspberry Pi: 4 etapas
Steam Link em seu Raspberry Pi: Steam Link é uma solução para estender sua biblioteca de jogos Steam para qualquer cômodo da casa através de sua rede doméstica. Você pode transformar seu Raspberry Pi em um Steam Link
Como obter o seu ipod touch (ou iphone se você realmente bagunçou) para parar de falhar por falta de memória: 3 etapas
Como obter o seu ipod touch (ou iphone, se você realmente bagunçou) para parar de falhar por falta de memória: Olá, usuários de ipod touch e iphone. Ok, então tenho certeza de que todos vocês têm um entendimento um pouco básico de como o ipod da apple funciona, certo? Você abre um aplicativo. Esse aplicativo usará em qualquer lugar entre talvez em um ipod touch 1G, 5-30 MB do disponível