ITIS Water Watch

Un dispositivo sperimentale per il monitoraggio dei corsi d’acqua per la sicurezza del territorio e
per salvare vite umane

Il prototipo ITISWW è un dispositivo realizzato nell’ambito di un progetto coordinato da un gruppo di alunni e docenti del Polo Tecnologico Imperiese per la partecipazione al “Premio Rotary Club del ponente ligure Fiorenzo Squarciafichi per il Ponente e la sua sicurezza (Water Watch)”, basato sul lavoro originario WaterWatch 1.1 reperibile all’indirizzo: http:// www.rotaryimperia.it/?page=waterwatch.

Documentazione

Particolare del dispositivo durante i primi test del prototipo

Prima Versione: 1.0 del 14-02-2017
– prototipo iniziale

Ultima Versione:  1.3 del 15-03-2017
– miglioramenti sezione GSM per riconnessione alla rete

Canali Social

La scheda Arduino montata sulla PCB realizzata in laboratorio.

Di seguito i link ai canali dimostrativi collegati all’unità “DEMO” realizzata dall’ITIS.

Gallery

Foto scattate durante i 3 mesi di realizzazione del prototipo.

Crediti

Realizzazione del prototipo:
Giacomo Galletti – Studente 5B ITIS ind. Informatica e TLC
Andrea Ruo – Studente 5B ITIS ind. Informatica e TLC
Referente:
Ing. Simone Zanella – Docente TPSIT
Contributi:
Giuseppe Murzio, ITP Itis, per la stampa 3D e il montaggio della scatola, Lino Addiego, ITP Itis, per la saldatura del pannello solare e la stampa della scheda PCB, Romano Calcagno, Tecnico di Laboratorio ITIS, per supporto nella realizzazione della scatola, FabLab Imperia, per supporto nella stampa 3D della scatola.

 

Problema comunicazione con Arduino: avrdude: stk500v2_ReceiveMessage(): timeout

Recentemente mi è capitato di non riuscire più a caricare sketch su un Arduino UNO da USB, ricevendo questa serie di errori:

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

A nulla sono valsi tentativi di reset e varie guide trovate in rete, fino a quando sono riuscito a ripristinarlo seguendo la procedura basato sull’utilizzo di Arduino come ISP, ecco come:

innanzitutto bisogna disporre di 2 schede ARDUINO UNO, collegate come in figura:

Immagine originale: Arduino.cc

Dopodichè carichiamo l’IDE di Arduino (nel mio caso la versione per MacOS), selezioniamo dagli “ESEMPI” lo schema “ARDUINO ISP“:

Compiliamo e lo carichiamo sulla board.

Ora selezioniamo dal menu “STRUMENTI” -> “PROGRAMMATORE” -> “ARDUINO as ISP“:

Poi procediamo con “STRUMENTI” -> “SCRIVI IL BOOTLOADER

Se tutto è andato per il verso giusto, scollegate il tutto e provate a caricare uno sketch sulla vostra Arduino UNO (è sufficiente il semplice e classico “Blink”).

Per ulteriori approfondimenti fate riferimento a questo tutorial: https://www.arduino.cc/en/Tutorial/ArduinoISP

Problema Arduino YUN: l’interfaccia web non si carica

Può capitare che con la scheda Arduino YUN si ottenga un errore tentando di accedere al web panel all’indirizzo arduino.local o 192.168.140.1:

/usr/lib/lua/luci/template.lua:81: Failed to load template 'linino/set_password'.
Error while parsing template '/usr/lib/lua/luci/view/linino/set_password.htm':
No such file or directory
stack traceback:
 [C]: in function 'error'
 /usr/lib/lua/luci/template.lua:81: in function '__init__'
 /usr/lib/lua/luci/util.lua:68: in function 'Template'
 /usr/lib/lua/luci/template.lua:50: in function 'render'
 /usr/lib/lua/luci/controller/linino/index.lua:182: in function 'authen'
 /usr/lib/lua/luci/dispatcher.lua:370: in function 'dispatch'
 /usr/lib/lua/luci/dispatcher.lua:195: in function

Non disperate, dopo aver fatto gli opportuni reset si risolve cancellando completamente la cache del browser, provate ad accedere e dovrebbe ricomparire il web panel:

Collegare Arduino a un canale Telegram con IFTTT

Spesso Telegram viene usato per far comunicare Arduino con dei canali creati appositamente per raccogliere o divulgare dati. La libreria Telegram Bot tuttavia al momento funziona solo sull’Arduino MKR1000. Per poter sfruttare le potenzialità di Telegram usando altre versioni di Arduino può essere utile il sito IFTTT, che mette a disposizione una semplice interfaccia per interagire con un canale (o gruppo) Telegram.

Se non conoscete IFTTT partite dalla mia guida veloce per collegare Arduino al Maker Channel prima di proseguire.

Prepariamo innanzitutto Telegram, collegandoci al bot IFTTT (@IFTTT). Nella mia guida è stato utilizzato un canale Telegram pubblico chiamato @waterwatch.

Nel canale dove volete pubblicare, aggiungete agli AMMINISTRATORI il Bot IFTTT:

Ora tornate sul bot e digitate /connect_channel:

Digitate a questo punto il nome del canale o il link al canale:

Ora il canale è connesso!

Andiamo su IFTTT e completiamo il nostro Applet/Recipe con Telegram:

Come azione scegliamo SEND MESSAGE:

Dopodichè, nella lista dei canali collegabili comparirà il vostro:

Personalizzate il messaggio, e vedrete comparire sul canale i messaggi sul Canale Telegram scelto ogni volta che Arduino invia una Web Request al Maker Channel:

Buon divertimento!

Guida: collegare Arduino al Maker Channel di IFTTT per mandare SMS, mail, post su Facebook, Twitter, Telegram e altro

Questa guida vi consentirà di sfruttare i numerosi servizi del Maker Channel del portale IFTTT (If THIS than THAT) per connettere facilmente il vostro Arduino (o qualsiasi altro sistema embedded dotato di connessione alla rete internet) ai servizi della rete, facendogli ad esempio inviare mail ed SMS, oppure postare messaggi su Facebook, Twitter o su un canale Telegram. I servizi di IFTTT sono molteplici, ma la procedura di utilizzo è la stessa, questa guida spiega come inviare mail da Arduino con il Maker Channel e come inviare messaggi su un canale Telegram da Arduino.

Innanzitutto occorre creare un account gratuito sul sito IFTTT, dopodichè dal proprio menu utente creiamo un nuovo applet (new applet):

Clicchiamo su THIS e nella pagina di ricerca, insieriamo “Maker” per collegare il servizio:

Il servizio è molto semplice: si invia una “web request” al Maker Channel, e si inserisce un’azione da effettuare una volta che l’evento è innescato “Trigger” (da cui il principio cardine del sito: “SE succede QUESTO, fai QUELLO”, ovvero “If THIS than THAT”). La web request è semplicemente un URL contenente il nome dell’evento da “triggerare” (che scegliamo noi) e la propria chiave segreta fornita da IFTTT. Clicchiamo su RECEIVE A WEB REQUEST e diamo il nome al nostro evento, dopodichè si tornerà alla schermata di connessione dove sceglieremo “THAT”:

Scegliamo ora il servizio che ci interessa, ad esempio EMAIL, per fare inviare una mail ogni volta che il nostro Arduino invierà la richiesta al Maker Channel (ad esempio per comunicare un evento o comunicare dei dati):

Scegliete “EMAIL” e proseguite:

Ora il Maker Channel è pronto per ricevere delle web request! Ecco come deve essere formato l’URL:

https://maker.ifttt.com/trigger/NOME_DELL'EVENTO/with/key/CHIAVE-SEGRETA

NOME_DELL’EVENTO è quello che avete scelto nella creazione dellevento sul Maker Channel.

CHIAVE-SEGRETA è la vostra chiave, che trovate nella pagina di impostazioni del Maker Channel che trovate qui: https://internal-api.ifttt.com/maker

E’ possibile anche inviare ulteriori valori, scoprite come cliccando su HOW TO TRIGGER EVENTS sempre nella pagina https://internal-api.ifttt.com/maker.

Se vuoi invece inviare un messaggio in un canale Telegram, ecco qui un’altra guida.

Se avete collegato il vostro Arduino a Internet (con una ethernet o Wifi Shield ad esempio) sarà sufficiente eseguire una richiesta http come client, ecco un codice di esempio funzionante sulla Arduino YUN Shield basato sullo sketch HTTPClient:

#include <Bridge.h>
#include <HttpClient.h>

void setup() {
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  Bridge.begin();
  digitalWrite(13, HIGH);

  SerialUSB.begin(9600);

  while (!SerialUSB); 
}

void loop() {
  
  HttpClient client;

  // SOSTITUIRE EVENTO E CHIAVE SEGRETA CON I PROPRI!
  client.get("https://maker.ifttt.com/trigger/EVENTO/with/key/CHIAVESEGRETA");
  
  Serial.println("Richiesta inviata!");

  while (client.available()) {
    char c = client.read();
    SerialUSB.print(c);
  }
  SerialUSB.flush();

  delay(5000);
}