Tabla de contenido:
- Suministros
- Paso 1: el código
- Paso 2: el mapa
- Paso 3: La fiesta del pegamento caliente
- Paso 4: el producto terminado
Video: ESP32 Scraper-parser-mailer y Live Mapper: 4 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Hola Mundo! ¡Este es mi primer Instructable! Soy Marco de Grosseto Italia, no soy un desarrollador, no soy un ingeniero electrónico, pero soy un guía ambiental en nuestro parque natural local (parque natural de Maremma).
En mi cooperativa trabajamos mucho con recorridos en canoa, recorridos naturalistas y tranquilos en el río Ombrone para la observación de aves y un poco de relajación.
Pero el río Ombrone también es famoso por su tipo de caudal característico: desde el verano "cero" hasta el caudal otoño-invierno de varios miles de metros cúbicos de agua por hora.
Por esta razón, el río Ombrone es monitoreado constantemente por el excelente servicio hidrométrico regional (SIR), con un sitio fantástico que pone a disposición los datos recolectados.
Ahora estamos esperando el final de la temporada y las primeras inundaciones de otoño para retirar el muelle y las canoas …
Pero, ¿cuándo empezamos a hablar de scraping, parsing, esp32ing, etc.? un momento mas
Durante el bloqueo italiano, hice la primera lección de parpadeo de arduino, genial … y seguí jugando con sensores y arduino C. ¡Así que si encuentra mi código crudo o lleno de vacíos lógicos sin sentido, considere esto!
Hice muchas cosas solo para perder el tiempo, pero con este riesgo constante de inundaciones decidí hacer algo genial: gracias a un ESP32 con factor de forma arduino (Wemos d1 r32) que mantuve envuelto durante meses porque pensaba que era "difícil"., Realmente tuve muchas satisfacciones:
He hecho un scraper que trae y analiza datos de una página web SIR y muestra las variables obtenidas en una pantalla LCD i2c barata, y como brillo-frecuencia parpadeando en algunos leds en un mapa realista.
por lo que si viene una inundación desde la ladera de la montaña, seré advertido por el aumento de brillo (cambio de nivel) y por la frecuencia creciente (cambio de nivel en una hora) de los leds en el mapa … ¡pero el ESP32 también puede enviar correos electrónicos! Entonces, ¿por qué no hacer una función para esto?
¡Vamos a ver el código de abajo ahora!
Suministros
- Placa basada en ESP32: he usado Wemos d1 r32 porque tiene pines hembra y es más fácil de manejar
- leds, el rojo es más "alerta como"
- I2C 16x2 LCD es solo uno azul, pero el verde es más elegante
- tablero de corcho barato
- noche (opcional)
Paso 1: el código
en línea solo he encontrado tutoriales vaporosos que utilizan sitios externos para analizar datos, así que intenté probar la potencia de los núcleos esp32 analizando los datos directamente en la placa … ¡sin problemas!
así que si ves la fuente de la página SIR puedes entender cómo funciona: afortunadamente usan valores "separados por comas como" para mostrar sus datos, así que con este código busco una estación hidrográfica (código TOSnumber) y cuento el número de comas (como separador) que contienen el valor que quiero (y almacenarlo como variable), luego reasignarlo como brillo del LED y tiempo en milisegundos para el "nivel de variación" parpadeando
El núcleo de este raspador está en la pestaña
ind = payload.indexOf ("TOSstation_number"); // obtener la posición (ind) desde donde empezar a contar las comas
String my_var = getValue_ind (carga útil, ',', 8); // donde 8 es la octava celda definida por comas (separador)
"carga útil" es lo que obtengo de la web previamente limpiado de "citas" y "& nbsp";
y la función getValue_ind que se encuentra en la pestaña principal
String getValue_ind (datos de cadena, separador de caracteres, índice int) {
int encontrado = 0; int strIndex = {0, -1}; int maxIndex = data.length () - 1; for (int i = ind; i <= maxIndex && found <= index; i ++) {// desde la posición ind if (data.charAt (i) == separator || i == maxIndex) {found ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} retorno encontrado> índice? data.substring (strIndex [0], strIndex [1]): ""; }
adaptado de
el código pide la página cada 15min, es de 44Kb, no creo que sea una gran carga para los servidores y para el ESP32.. Para evitar demasiados desplazamientos he dividido el programa en diferentes funciones, lee los comentarios
aquí el código de pegar es realmente un lío … puse los archivos.ino directamente
He utilizado la función de pestañas del IDE de arduino, por lo que tengo diferentes archivos.ino
esta es la última versión del código (?), hay muchos esfuerzos, ¡así que agradeceré cualquier sugerencia!
- para enderezar el brillo del led para valores bajos, - para la función "map" para variables de punto flotante - para el uso del segundo núcleo en el ESP32, - para entender cómo imprimir un correo html desde una cadena con sprintf Pasé mucho "tiempo de nerding" así que lea los comentarios en los archivos.ino o en github.
como configuración de carga, he usado Herramientas: Esquema de partición: NO OTA para tener más espacio para este enorme código
¡divertirse
haga clic aquí para obtener el código en github
Paso 2: el mapa
este tut está incentivado en el código ESP32, por lo que puedo darle solo algunas palabras clave, enlaces y herramientas utilizadas:
el excelente servicio para extraer áreas vectoriales de openstreetmap
- el QG "ostico" para digerirlos
- busque la tabla de atributos para simplificar su mapa
- cree un diseño de impresión y exporte el mapa en formato svg en formato de papel A3
- diviértete con el ilustrador "más suave"
- Imprímelo
Paso 3: La fiesta del pegamento caliente
Así que puedo sugerir que corte los orificios para el LED y la pantalla en el papel antes de fijarlo en el tablero de corcho.
el cableado es realmente simple y mal hecho por mí: P
Mi nivel de soldadura: Paloma
como puede ver en el código, los leds van a los pines IO
#define LED_PIN0 14 // si # define LED_PIN1 27 // buon #define LED_PIN2 16 // sass #define LED_PIN3 17 // tur #define LED_PIN4 25 // ist #define LED_PIN5 26 // berr
busque el pinout ESP32 para entender
Paso 4: el producto terminado
así que esta foto no es la mejor, pero cuando tengamos una inundación en el río, ¡pondré un buen video!
Recomendado:
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática Este / Oeste: 11 pasos (con imágenes)
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática de este a oeste: El proyecto: Una oficina de 200 pies cuadrados debe funcionar con baterías. La oficina también debe contener todos los controladores, baterías y componentes necesarios para este sistema. La energía solar y eólica cargará las baterías. Hay un pequeño problema de solo
Cómo: Instalación de Raspberry PI 4 Headless (VNC) con Rpi-imager e imágenes: 7 pasos (con imágenes)
Cómo: Instalar Raspberry PI 4 Headless (VNC) con Rpi-imager e imágenes: planeo usar este Rapsberry PI en un montón de proyectos divertidos en mi blog. No dudes en comprobarlo. Quería volver a usar mi Raspberry PI, pero no tenía un teclado ni un mouse en mi nueva ubicación. Ha pasado un tiempo desde que configuré una Raspberry
Termómetro de cocina con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura: 7 pasos (con imágenes)
Termómetro de cocción con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura: Aún en camino para completar un " proyecto próximo ", " Termómetro de cocina con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura " es un Instructable que muestra cómo agrego una sonda de temperatura NTP, piezo b
Cómo desmontar una computadora con sencillos pasos e imágenes: 13 pasos (con imágenes)
Cómo desmontar una computadora con sencillos pasos e imágenes: esta es una instrucción sobre cómo desmontar una PC. La mayoría de los componentes básicos son modulares y se quitan fácilmente. Sin embargo, es importante que se organice al respecto. Esto ayudará a evitar que pierda piezas y también a que el reensamblaje sea más fácil
The Path Mapper: 6 pasos
Path Mapper: En este proyecto de IoT, conectamos un NEO-6M (módulo GPS) para entregar datos de ubicación a través del Arduino a una hoja de Excel que se guardará en la computadora. Luego, con Tableau Public, creamos una visualización de datos de estos datos para trazar el patrón