In questo articolo descriveremo una possibile applicazione con ESPertino per leggere segnali di terremoti da Internet, e avvisare la presenza di eventi particolarmente forti. Non si tratta del solito sismografo, composto da sensori, segnalatori e altri componenti hardware. Questa volta è il nostro ESPertino ad attingere i dati degli ultimi sismi e a determinare se, nel mondo, è successo un evento sismico di notevole entità. Nel qual caso la nostra scheda provvede subito ad attivare un diodo Led di segnalazione.
Introduzione
Si tratta, come specificato nel titolo dell'articolo, di un semplice dispositivo, costituito dal solo ESPertino e da un diodo Led di segnalazione. Esso si collega ad Internet e preleva l'ultimo terremoto avvenuto nel mondo. I dati raccolti, ricevuti in formato testuale, vengono elaborati e da essi ne viene estratta la magnitudo. Se essa supera un certo livello, impostabile dall'utente, un diodo Led di segnalazione si illuminerà e resterà acceso definitivamente, proprio per dare modo di far sapere, anche a chi non è presente durante la registrazione, dell'importante evento . Per far tornare il sistema alla normalità è sufficiente resettarlo.
Schema elettrico
Lo schema è banale ed è visibile in figura 1. E' previsto solamente il diodo Led di segnalazione, collegato alla porta "0" di ESPertino, attraverso una resistenza di limitazione da 100 ohm.
Da dove il sistema legge i terremoti?
Per venire a conoscenza degli ultimi eventi, è stato preparato un piccolo programma in linguaggio PHP, da caricare su un Web Server oppure su un fornitore di Web Hosting. Tale programma, visibile più sotto, ha il compito di leggere il file testuale, riportante l'ultimo sisma avvenuto, codificarlo effettuando un parsing della stringa letta ed estrapolare il solo dato della magnitudo (questa cosa può essere fatta per mezzo di siti scientifici che mettono a disposizione dati di eventi relativamente ai terremoti, uno di questi è il sito USGS). Quest'ultimo sarà visualizzato sullo schermo.
//----------terremoti.php------------- <?php $url = "link al sito contenente gli eventi dei terremoti"; $page = file_get_contents($url); $elementi = explode("|", $page); echo $elementi[22]; ?>
Richiamando la pagina da un qualsiasi browser, si può vedere, a video, il solo dato della magnitudo dell'ultimo evento (temporalmente parlando), accaduto sulla Terra, come mostrato in figura 2. ESPertino, come si vedrà, si collegherà proprio a questa URL e preleverà tale dato per tutte le elaborazioni del caso.
Lo scketch
Il programma, in sostanza, esegue i seguenti compiti:
- Dichiara le variabili relative alle credenziali del WiFi e all'host da interrogare;
- Nella funzione setup(), eseguita una volta sola:
- Configura la porta "0" come uscita;
- Configura la comunicazione seriale a 9600 baud;
- Instaura la comunicazione con il router WiFi;
- Nella funzione loop(), eseguita all'infinito:
- Si collega alla nostra pagina Web, prelevando tutti i dati secondo richiesta HTTP;
- Estrae dal pacchetto ricevuto, mediante parsing di stringa, l'informazione relativa alla magnitudo del sisma, visualizzandolo anche sul monitor seriale;
- Se la magnitudo acquisita supera un certo livello, viene acceso il diodo Led per un tempo indefinito. Per ripristinare la funzionalità del sistema occorre resettare ESPertino con l'apposito pulsantino on-board;
- Infine, attende 5 secondi prima di effettuare un'altra interrogazione del sito.
//------------------------------------ // Legge i terremoti da Internet // by Giovanni Di Maria //------------------------------------ #include <WiFi.h> //------Dichiarazioni di variabili------------- WiFiClient client; const char* ssid = "NETGEAR-gio22"; const char* password = "mia-password"; const char* host = "www.elektrosoft.it"; //-----------------------------SETUP-------------------------- void setup() { pinMode(0,OUTPUT); digitalWrite(0,LOW); Serial.begin(9600); //--------------Gestione iniziale WiFi e aspetta 10 secondi------ WiFi.begin(ssid, password); delay(10000); } //-------------LOOP---------------- void loop(){ //--------Si collega alla pagina con richiesta HTTP---------- if(client.connect(host, 80)); { String url = "/hd/terremoti.php"; client.print((String)"GET " + url + " HTTP/1.1\r\n" + "Host: " + String(host) + "\r\n" + "Connection: close\r\n\r\n"); } //---------Aspetta fino a quando arrivano caratteri dalla pagina web--------- while (!client.available()); //----Costruisce una stringa con tutto il contenuto di cio' che arriva dal Web------- String pacchetto=""; while (client.available()) { char c = client.read(); pacchetto+=c; } //-------Dalla intera risposta HTTP estrae solo la MAGNITUDO (che si trova in coda alla stringa)---- int lunghezza=pacchetto.length(); pacchetto=pacchetto.substring(lunghezza-3,lunghezza); float magnitudo=pacchetto.toFloat(); client.stop(); Serial.println(magnitudo); //----------------LED di allarme------------------ if(magnitudo >= 6) digitalWrite(0,HIGH); delay(5000); }
Conclusioni e considerazioni
Questo segnalatore di forti terremoti avvenuti può rilevarsi utile in molte occasioni. Per il suo funzionamento occorre, naturalmente, il collegamento ad Internet. Il controllo dell'epicentro è effettuato, secondo specifiche, in tutta l'area della Terra ma è possibile focalizzarlo, ad esempio, solamente all'Italia. Per far ciò è, sufficiente osservare il breve listato PHP che riporta, tra gli altri, la stringa passata alla pagina Web con alcuni parametri GET:
- minmag;
- maxmag;
- mindepth;
- maxdepth;
- minlat;
- maxlat;
- minlon;
- maxlon;
- minversion;
- format;
- limit=1.
E' sufficiente modificare alcune di esse per ottenere tutte le funzionalità desiderate. ESPertino è realmente bello. Alle prossime.
Bravissimo!!
Chiedevo
Vista la notevole potenza di calcolo di espertino, non sarebbe bello utilizzare l’ADC per campionare un segnale audio con BW fino a 60Khz così da mandare in streaming il segnale composito MPX di un ecoder per il broadcasting Radio FM?
e’ da tanto che ci sbatto sù anche se forse sarabbe meglio fare qualcosa con il Raspberry…….
Tu che ne pensi?
CIao, si, sarebbe interessante.
Sto lavorando proprio per scoprire i limiti estremi di ESPertino (probabilmente uscira’ anche un articolo su cio’).
E parallelamente sto conducendo prove per vedere se l’ESP32 è capace di reggere tale potenza. Penso proprio che con un processore simile si possa fare.
Ti consiglio, soprattutto, di leggere e strudiare le specifiche del datasheet dell’ESP32.
A presto.
Articolo intetessante che permette di valutare le applicazioni scientifiche di ESPertino.
Buongiorno, mi sono abbonato perchè ho un Raspberry PI3 e conto di interfacciare e gestire ESPertino con quest’ultimo: dove trovo specifiche indicazioni in merito?Grazie Giancarlo
Salve, al seguente link trova tutte le info su ESPertino con articoli tecnici e data sheet http://it.emcelettronica.com/tag/espertino
Trova anche info sul sito ufficiale di ESPertino:
http://www.espertino.com/
I datasheet sono in questo articolo:
http://it.emcelettronica.com/e-disponibile-il-datasheet-di-espertino-in-italiano
Saluti