Allarme per terremoti forti

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.

Figura 1: lo schema elettrico

Figura 1: lo schema elettrico

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.

Figura 2: interrogazione della URL

Figura 2: interrogazione della URL

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.

 

 

7 Commenti

  1. Antonio 28 giugno 2017
  2. Antonio 28 giugno 2017
  3. Giovanni Di Maria Giovanni Di Maria 28 giugno 2017
  4. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 29 giugno 2017
  5. Giancamad 11 luglio 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *