Sommario:
- Forniture
- Passaggio 1: il codice
- Passaggio 2: la mappa
- Passaggio 3: la festa della colla a caldo
- Passaggio 4: il prodotto finito
Video: ESP32 Scraper-parser-mailer e Live Mapper: 4 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
Ciao mondo! Questo è il mio primo Instructable! Sono Marco di Grosseto Italia, non sono uno sviluppatore, non sono un ingegnere elettronico ma sono una guida ambientale nel nostro parco naturale locale (parco naturale della Maremma).
Nella mia cooperativa lavoriamo molto con tour in canoa, tour naturalistici e tranquilli sul fiume Ombrone per il birdwatching e un po' di senso di relax.
Ma il fiume Ombrone è famoso anche per il suo caratteristico tipo di portata: da "zero" estivo a quello autunno-invernale di diverse migliaia di metri cubi d'acqua all'ora.
Per questo motivo il fiume Ombrone è costantemente monitorato dall'ottimo servizio idrometrico regionale (SIR), con un fantastico sito che rende disponibili i dati raccolti.
Adesso aspettiamo la fine della stagione e le prime alluvioni autunnali per togliere la banchina e le canoe…
Ma quando iniziamo a parlare di scraping parsing esp32ing ecc? un momento in più
Durante il lockdown italiano ho fatto la prima lezione di arduino blink, figo… e ho continuato a giocare con i sensori e arduino C. Quindi se trovi il mio codice grezzo o pieno di lacune logiche senza senso considera questo!
Ho fatto tante cose solo per perdere tempo ma con questo costante rischio di allagamento ho deciso di fare qualcosa di figo: grazie a un ESP32 con fattore di forma arduino (Wemos d1 r32) che ho tenuto avvolto per mesi perché pensavo "difficile", ho avuto davvero tante soddisfazioni:
Ho fatto uno scraper che porta e analizza i dati da una pagina Web SIR e visualizza le variabili ottenute su un LCD i2c economico e come lampeggiamento della frequenza di luminosità su alcuni led su una mappa realistica.
quindi se un'alluvione arriva dal versante della montagna verrò avvisato dall'aumento della luminosità (cambio di livello) e dalla frequenza crescente (cambio di livello in un'ora) dei led sulla mappa… ma l'ESP32 può anche inviare email! Allora perché non fare una funzione per questo?
andiamo subito a vedere il codice qui sotto!
Forniture
- Scheda basata su ESP32: ho usato Wemos d1 r32 perché ha pin femmina ed è più facile da maneggiare
- led, il rosso è più "avviso come"
- I2C 16x2 LCD ne ho solo uno blu ma il verde è più elegante
- tavola di sughero a buon mercato
- notte (opzionale)
Passaggio 1: il codice
online ho trovato solo tutorial vaporosi che utilizzano siti esterni per analizzare i dati, quindi ho provato a testare la potenza dei core esp32 analizzando i dati direttamente sulla scheda… senza problemi!
quindi se visualizzi il sorgente della pagina SIR puoi capire come funziona: fortunatamente usano un valore "virgola separato come" per visualizzare i loro dati, quindi con questo codice cerco una stazione idrografica (codice TOSnumber) e conto il numero di virgole (come separatore) che contengono il valore che voglio (e lo memorizzo come variabile), quindi rimappalo come luminosità del led e tempo in millis per il "livello di variazione" lampeggiante
Il nucleo di questo raschietto è nella scheda
ind = payload.indexOf("TOSstation_number"); // ottieni la posizione (ind) da dove inizia a contare le virgole
String my_var = getValue_ind(payload, ', ', 8); //dove 8 è l'ottava cella definita da virgole (separatore)
"payload" è quello che ottengo dal web precedentemente pulito da "citazioni" e " ";
e la funzione getValue_ind che si trova nella scheda principale
String getValue_ind(String data, char separator, int index) {
int trovato = 0; int strIndex = {0, -1}; int maxIndex = data.length() - 1; for (int i = ind; i <= maxIndex && found <= index; i++) { //dalla posizione ind if (data.charAt(i) == separator || i == maxIndex) { found++; strIndex[0] = strIndex[1] + 1; strIndex[1] = (i == maxIndex) ? io + 1: io; } } ritorno trovato> indice ? data.substring(strIndex[0], strIndex[1]): ""; }
adattato da
il codice chiede la pagina ogni 15min, sono circa 44Kb, non credo sia un grosso carico per i server e per l'ESP32.. Per evitare troppo scroll ho diviso il programma in diverse funzioni, leggi i commenti
qui l'incollaggio del codice è davvero un disastro… ho messo i file.ino direttamente
ho usato la funzione schede dell'IDE arduino quindi ho diversi file.ino
questa è l'ultima versione del codice (?), ci sono molti sforzi, quindi apprezzerò qualsiasi suggerimento!
- per il raddrizzamento della luminosità del led per valori bassi, - per la funzione "map" per variabili in virgola mobile - per l'utilizzo del secondo core su ESP32, - per capire come stampare una mail html da una stringa con sprintfHo passato un sacco di vero "tempo da nerding", quindi leggi i commenti sui file.ino o su github!
come impostazioni di caricamento ho usato Strumenti: Schema di partizione: NO OTA per avere più spazio per questo enorme codice
divertiti
clicca qui per il codice su github
Passaggio 2: la mappa
questo tutorial è incentrato sul codice ESP32, quindi posso darti solo alcune parole chiave, collegamenti e strumenti utilizzati:
l'ottimo servizio per estrarre aree vettoriali da openstreetmap
- i QGi "ostici" per digerirli
- cerca la tabella degli attributi per semplificare la tua mappa
- creare un layout di stampa ed esportare la mappa in formato svg su carta formato A3
- divertiti con l'illustratore più "liscio"
- stampalo
Passaggio 3: la festa della colla a caldo
quindi posso suggerire di fustellare i fori per il led e il display sulla carta prima di fissarlo sulla bacheca di sughero
il cablaggio è davvero semplice e fatto male da me:P
Il mio livello di saldatura: Pigeon
come puoi vedere dal codice i led vanno ai pin 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
cerca il pinout ESP32 per capire
Passaggio 4: il prodotto finito
quindi questa foto non è delle migliori, ma quando avremo un po' di piena del fiume metterò un bel video!
Consigliato:
Moduli WiFi Live Reverse Engineering: 8 passaggi (con immagini)
Moduli WiFi Live Reverse Engineering: mi piace riutilizzare il maggior numero possibile di componenti funzionanti. Anche se sto effettuando il reverse engineering di una stampante WiFi, questo metodo funziona su molti altri dispositivi. Per favore; non limitarti a smontare l'elettronica obsoleta, quindi aspettati di trovare le schede tecniche per i componenti recuperati
Trappola live a misura di mouse IoT: 6 passaggi (con immagini)
Trappola live IoT Mouse-Friendly: questa è una trappola per catturare i topi senza ferirli, in modo da poterli rilasciare all'esterno. Se il sensore di prossimità rileva il mouse, il servomotore chiuderà la porta. Riceverai un messaggio istantaneo e/o un'e-mail per informarti che hai chiuso
Termometro da cucina con sonda di temperatura NTP ESP32 con correzione Steinhart-Hart e allarme temperatura.: 7 passaggi (con immagini)
Termometro da cucina con sonda di temperatura NTP ESP32 con correzione Steinhart-Hart e allarme di temperatura. è un Instructable che mostra come aggiungo una sonda di temperatura NTP, piezo b
Come smontare un computer con semplici passaggi e immagini: 13 passaggi (con immagini)
Come smontare un computer con semplici passaggi e immagini: questa è un'istruzione su come smontare un PC. La maggior parte dei componenti di base sono modulari e facilmente smontabili. Tuttavia è importante che tu sia organizzato al riguardo. Questo ti aiuterà a non perdere parti e anche a rendere più facile il rimontaggio
Il Path Mapper: 6 passaggi
Il Path Mapper: in questo progetto IoT, colleghiamo un NEO-6M (modulo GPS) per fornire dati sulla posizione tramite Arduino su un foglio Excel che verrà salvato sul computer. Successivamente, con Tableau Public, creiamo una visualizzazione dei dati di questi dati per mappare il pat