Tabla de contenido:
- Paso 1: Montaje
- Paso 2: Montaje - Mesa
- Paso 3: Biblioteca TFT_eSPI
- Paso 4: ESP32_Check_Internet_Connection.ino
- Paso 5: descarga los archivos
Video: ¿Qué pasa si su enlace falla?: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
En este video, crearemos un sensor de caída de enlace con un ESP32 y un SIM800. Esto significa que con este proyecto, podemos verificar la conexión a Internet y, en caso de una falla en la conexión, llamar a un número de teléfono para notificar que la red está en problemas.
Esta es una de las muchas formas en que puede realizar este tipo de monitoreo. Si bien es simple, le permite probar varios dispositivos que pueden existir dentro de su CPD. Su poder de control se vuelve mucho mayor cuando se usa el ESP32. Aunque utilizo WiFi en este ejemplo, puede usar Internet por cable, si lo prefiere.
Paso 1: Montaje
Paso 2: Montaje - Mesa
Paso 3: Biblioteca TFT_eSPI
En el IDE de Arduino, vaya a Sketch-> Incluir
Biblioteca-> Administrar bibliotecas…
Instalar TFT_eSPI
Vaya a la carpeta de la biblioteca y cambie las líneas del archivo User_Setup.h para dejarlo como se muestra en la imagen.
Paso 4: ESP32_Check_Internet_Connection.ino
Incluye y 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 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 // Usar serial 1 para o módulo gsm HardwareSerial SerialGSM (1); Módem TinyGsmGSM (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 inmediatamente // 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 ();
Configuración
configuración vacía () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o visualiza setupGSM (); // Inicializa o módulo GSM xTaskCreatePinnedToCore (checkWiFiConnection, // Função que será ejecutada "checkWiFiConnection", // 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á ejecutada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) xTaskCreatePinnedToCore (checkInternet, // Função que será ejecutada "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á ejecutada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
Configuración Pantalla
void setupDisplay () {display.init (); // Inicializa o display display.setRotation (1); // Rotaciona display.fillScreen (TFT_BLUE); // Limpiar la pantalla com a 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}
ConfiguraciónGSM
void setupGSM () {showDisplay ("Configurar GSM"); // O Módulo GSM está nos GPIOs 4 e 2 SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); retraso (1000); // Reinicia el módulo if (! ModemGSM.restart ()) {ESP.restart (); regreso; } // Espera pela rede celular if (! ModemGSM.waitForNetwork ()) {display.setCursor (0, 0); showDisplay ("Error de red GSM"); retraso (3000); ESP.restart (); regreso; }}
checkWiFiConnection
void checkWiFiConnection (void * p) {while (true) {// Se no está conectado ao roteador if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Retraso de 1s da tarefa. É feita em tictac. Para ejecutar en milis dividimos pela constante portTICK_PERIOD_MS TickType_t taskDelay = 1000 / portTICK_PERIOD_MS; vTaskDelay (taskDelay); }}
conectar wifi
void connectWiFi () {// Manda conectar ao roteador com o nome e senha WiFi.begin (SSID, PASSWORD); Serial.println ("Conectando"); // Espera no while até conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); retraso (500); } // Se chegou aqui está conectado Serial.println (); Serial.println ("Conectado"); }
checkInternet
void checkInternet (void * p) {// Retraso de 5 segundos da tarefa. É feita em tictac. Para ejecutar en 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 connected = client.connect (adr, 80); // Fecha de una conexión client.stop (); // Retorna true se está conectado ou false se está desconectado retorno conectado; }
Círculo
void loop () {// Se está desconectado por más tempo que definimos if (isDisconnectedForTooLong ()) {// Mostra no display que está desconectado showDisplay ("Disconnected"); // Se faz tempo que no 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 una próxima iteração do loop delay (1000); }
isDisconnectedForTooLong
bool isDisconnectedForTooLong () {// Retorna true se o tempo desde una última conexión para mayor que o definido return millis () - lastTimeConnected> MAX_DISCONNECTED_TIME; } bool hasNotCalledPhoneInAWhile () {// Retorna true se o tempo desde una última ligacão para o telefone for maior que o definido return millis () - lastTimeCalledPhone> MAX_CALL_TIME_INTERVAL; }
llamada telefónica
void callPhone () {// Faz a ligação para o telefone definido if (modemGSM.callNumber (USER_PHONE_NUMBER)) {// Se entrou aqui é porque conseguiu realizar una ligação Serial.println ("callphone ok"); // Atualiza o tempo em que foi feita a última ligação lastTimeCalledPhone = millis (); } else {// Se entrou aqui é porque no conseguiu fazer a ligação Serial.println ("falló el teléfono de llamada"); } // Termina una ligação modemGSM.callHangup (); }
showDisplay
void showDisplay (String message) {// Muestra un mensaje en la pantalla principal, limpando los caracteres eventuales extras display.setCursor (0, 0); display.println (mensaje + ""); }
Paso 5: descarga los archivos
INO
Recomendado:
Contador de pesas rusas (falla): 4 pasos
Contador de pesas rusas (falla): Historia: Construí este proyecto simplemente como un experimento. Quería ver si podía usar la detección de caída libre de un acelerómetro para contar los movimientos de una pesa rusa. Partes: 1 * Arduino nano 1 * MAX7219 Módulo de pantalla LED de 7 segmentos 1 * Acelerómetro ADXL345
Alarma de falla de energía para el congelador: 6 pasos (con imágenes)
Alarma de falla de energía para el congelador: Con un congelador en el sótano y el riesgo de carne podrida debido a un fusible fundido mientras estamos fuera, diseñé este circuito de alarma simple para que nuestros vecinos sean alertados para que arreglen el fusible. Como se puede ver en la foto, el timbre de la puerta suena desde
Reparación de problemas básicos de hardware de la computadora (falla del disco del sistema y PSU rota y archivos perdidos / corruptos): 4 pasos
Reparación de problemas básicos de hardware de computadora (falla del disco del sistema y PSU rota y archivos perdidos / corruptos): ESTA GUÍA NO ESTÁ FINALIZADA, AGREGARÉ MÁS INFORMACIÓN CUANDO TENGA UNA OPORTUNIDAD. Si tiene alguna pregunta, no dude en enviarme un mensaje " En este instructivo, le diré cómo reparar el com básico
Solucionar una falla de diseño menor con Dell Dimension serie 4300 - 5000: 5 pasos
Solucionar una falla de diseño menor con la serie Dell Dimension 4300 - 5000: Así que estoy hurgando dentro de mi dell dimension 5000, decidiendo qué debo hacer con respecto a las actualizaciones de RAM, ya que el procesador es rápido como es y los mobos de Dell no lo son. overclockable o cambiable. Me quemé la mano con el enorme disipador de calor de la CPU y
¡Épico! Guitar Hero - Guitarra de doble cuello Falla: 7 pasos (con imágenes)
¡Épico! Guitar Hero - Guitarra de doble cuello … Fail: 2015 marca el décimo aniversario del fenómeno de la cultura pop Guitar Hero. ¿Recuerdas el videojuego que se hizo más popular que el instrumento musical que solo logró imitar vagamente? Qué mejor manera de celebrar su decenio que