Non ci sono prodotti a carrello.
Uno dei motivi del successo di Arduino è la grande disponibilità di librerie che rendono lo sviluppo semplice e veloce. Realizzare un Web Server, un Web Client o inviare un Tweet, grazie alla libreria dell’ethernet shield, non è affatto complicato.
Provate a fare la stessa applicazione con Stack TCP / IP Microchip …. Non è impossibile, ma per niente facile.
Invece con lo shield Ethernet o WiFi si può connettere Arduino al mondo di internet, avere informazioni, inviare e-mail, pubblicare dati…
Pubblicare dati? Ma dove?
Qualche sito si presta ad ospitare i vostri dati, alcuni mettono a disposizione anche elementi grafici come Pachube.
Ma in qualche caso potrebbe essere utile avere i dati in un foglio di calcolo, in modo da poter poi fare operazioni e gestire i vari dati.
In questo post voglio spiegare la soluzione trovata da RobertMParker per inviare i dati sul foglio di calcolo di Google. Un ringraziamento ad Andrea Fainozzi che ha adattato il codice.
Il modo migliore per accedere al foglio di calcolo di Google non è l’accesso al foglio di calcolo di Google …
Non ho trovato un modo per accedere direttamente al foglio di calcolo (magari qualcuno può darci una dritta), ma possiamo comunque inviare i dati al nostro foglio utilizzando un modulo (form).
Tutti i risultati di un modulo vengono importati nel foglio corrispondente …. quindi … i dati sono su Google Spreadsheet.
Il metodo passo dopo passo per inviare dati da Arduino a Google Spreadsheet
1) Si deve creare un modulo dalla pagina di Google Documenti (è necessario essere registrati):
2) Selezionare “Crea nuovo” -> “Form” dal menu Google Documenti:
3) Creare il form con campo di testo. È possibile inserire quanti campi volete. Date un nome al form e alle domande (i nomi delle domande saranno i nomi delle colonne):
4) Clicca su “Done”. È stato creato il modulo. Nell’URL è possibile vedere la formkey. Nel mio caso è dDBMdUx3TmQ5Y2xvX2Z0V183UVp2U0E6MQ Prendere nota di questa chiave. La useremo nello sketch di Arduino.
5) Normalmente le caselle di testo (Data 1 e Data 2 in questo esempio) sono chiamate entry.0.single e entry.1.single …. ecc, ma il nome può cambiare se si modifica la struttura di base. Quindi il modo migliore è esplorare il codice HTML per verificare effettivamente i nomi.
6) Io uso Google Chrome, ma la procedura è simile con Firefox o IE. Il codice mostra il nome esatto delle due caselle di testo. Prendete nota di questi nomi.
7) Nel mio caso i nomi sono entry.0.single per Data 1 e entry.2.single per Data 2. Per inviare i dati al modulo dobbiamo usare questa sintassi:
https://spreadsheets.google.com/formResponse?formkey=YOUR FORM KEY &ifq& YOUR ENTRY =THE VALUE TO STORE &submit=Submit
Per esempio:
https://spreadsheets.google.com/formResponse?formkey=dDBMdUx3TmQ5Y2xvX2Z0V183UVp2U0E6MQ&ifq&entry.0.single=Boris&entry.2.single=Landoni&submit=Submit
Questo il risultato:
8 ) I dati vengono copiati nel foglio di calcolo di Google. Questo è il mio foglio con i vari dati:
9) Ora dobbiamo inviare i dati con Arduino. Usiamo il metodo POST per inviare i dati al modulo. Il codice è molto semplice.
/* Arduino to Google Docs created 2011 This example code is in the public domain. http://www.open-electronics.org http://www.futurashop.it https://spreadsheets.google.com/formResponse?formkey=dDBMdUx3TmQ5Y2xvX2Z0V183UVp2U0E6MQ &ifq&entry.0.single=Boris&entry.2.single=Landoni&submit=Submit Original from http://goodsite.cocolog-nifty.com/uessay/2010/07/arduinogoogle-d.html Modified by John Missikos 11/6/11 Modified by Andrea Fainozzi 30/6/11 Modified by Boris Landoni 8/7/11 */ #include <Ethernet.h> #include <SPI.h> char formkey[] = "dDBMdUx3TmQ5Y2xvX2Z0V183UVp2U0E6MQ"; //Replace with your Key byte mac[] = { 0x90,0xA2,0xDA,0x00,0x55,0x8D}; //Replace with your Ethernet shield MAC byte ip[] = { 192,168,0,109}; //The Arduino device IP address byte subnet[] = { 255,255,255,0}; byte gateway[] = { 192,168,0,254}; byte server[] = { 209,85,229,101 }; // Google IP Client client(server, 80); void setup() { Serial.begin(9600); Ethernet.begin(mac, ip , gateway , subnet); delay(1000); Serial.println("connecting..."); } void loop(){ String data; data+=""; data+="entry.0.single="; data+=analogRead(A0); data+="&entry.2.single="; data+=analogRead(A1); data+="&submit=Submit"; if (client.connect()) { Serial.println("connected"); client.print("POST /formResponse?formkey="); client.print(formkey); client.println("&ifq HTTP/1.1"); client.println("Host: spreadsheets.google.com"); client.println("Content-Type: application/x-www-form-urlencoded"); client.println("Connection: close"); client.print("Content-Length: "); client.println(data.length()); client.println(); client.print(data); client.println(); Serial.print("POST /formResponse?formkey="); Serial.print(formkey); Serial.println("&ifq HTTP/1.1"); Serial.println("Host: spreadsheets.google.com"); Serial.println("Content-Type: application/x-www-form-urlencoded"); Serial.println("Connection: close"); Serial.print("Content-Length: "); Serial.println(data.length()); Serial.println(); Serial.print(data); Serial.println(); } delay(1000); if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); } delay(10000); }
Questo codice pubblica sul foglio di calcolo di Google il valore di ingresso analogico A0 e A1.
L’applicazione potrebbe essere differente. Si potrebbero inviare temperature, stato degli ingressi, tutto quello che si vuole. Una volta che i dati sono su Google è possibile realizzare grafici, scaricare i dati sul PC, condividerli con amici …
Se avete qualche idea …. Inviatemi i vostri progetti e cercherò di soddisfare le vostre esigenze.
32 Commenti