Inviare dati a Google Doc Spreadsheets con Picmicro: FTPmicro temperature monitor

Monitorare la temperatura (o qualsiasi altra grandezza) da qualsiasi parte del pianeta e condividere i dati sul cloud di Google Spreadsheet è possibile ed anche abbastanza semplice grazie ad FTPmicro e ad alcune implementazioni allo stack TCP/IP Microchip.

Vi piacerebbe poter monitorare la temperatura delle vostre celle frigorifere o di qualsiasi altro dispositivo sparso per il mondo ed inviare i dati in tempo reale su un documento tipo Foglio di Calcolo? E se poi questo documento fosse online e facilmente accessibile sempre da qualsiasi parte del pianeta? Il tutto è possibile, basta avere una connessione internet, un account Google ed un Picmicro sottomano 🙂

Inviare i dati a Google Documents Spreadsheets con il Picmicro

Per prima cosa si deve entrare su Google Documents (tra poco cambierà in Google Drive) e creare un MODULO (form). Successivamente apparirà una schermata dove è possibile impostare i "titoli delle domande" che non sono altro che le intestazioni delle colonne che organizzeranno i nostri dati.
Nel nostro caso abbiamo inserito Device in Rome e poi Device in Milan.
Dopo aver salvato (in automatico) torniamo nella nostra pagina principale Google Drive (ex Documents) e troviamo il nostro Documento al quale possiamo assegnare un nome, nel nostro esempio Temperature Monitor, poi modifichiamo la prima riga della prima colonna da "Informazioni Cronologiche" a Timestamp che ci fornirà l'orario preciso dell'aggiornamento della cella.
Quindi avremo la nostra prima riga che gestisce 3 colonne:
Timestamp - Device in Rome - Device in Milan

Ovviamente tutti questi nomi sono personalizzabili in base alle vostre esigenze, è anche possibile aumentare il numero di colonne per monitorare un numero maggiore di dispositivi.

Si dovrà poi condividere il documento per renderlo pubblico sia come visibilità che come accesso,
semplifichiamoci la vita, per ora, poi se necessario affronteremo anche la condivisione solo con alcune persone.

In un form apparirà anche un link per la condivisione, per un accesso rapido, segnatevi questo link da diffondere ai vostri collaboratori per avere accesso diretto, in real time, ai dati aggiornati sul documento:
https://docs.google.com/spreadsheet/ccc?key=0Ail81YGXRx8XdFVJMDBVYS02YjZwNFlPVXp4Q1dHMXc

A questo punto dobbiamo andare a scoprire il nome delle caselle, stiamo parlando del nome assegnato dal software per riconoscere le varie colonne, che è differente dal nome da noi assegnato 😉

Per farlo basta dare un'occhiata al sorgente della pagina web: dal nostro spreadsheet, nel menu trovate modulo->modifica, verificate gli input name delle caselle utilizzate come intestazioni. E' solo una conferma, perchè Google nomina gli input form con entry.NumeroProgressivo.single

quindi:

entry.0.single (Per la colonna Device in Rome)
ed
entry.1.single (Per la colonna Device in Milan)

alla fine della stessa pagina web, troverete anche il link con la formkey

"Puoi visualizzare il modulo pubblicato qui di seguito: https://docs.google.com/spreadsheet/viewform?formkey=dFVJMDBVYS02YjZwNFlPVXp4Q1dHMXc6MQ "

annotatela, servirà come chiave di accesso remoto al form!

Ora avete tutti i parametri da inserire nelle impostazioni del firmware da caricare sul Picmicro (FTPmicro)

Sappiamo quindi che, per accedere al documento dobbiamo utilizzare la FORMKEY
e per scrivere nelle righe relative alla colonna ROMA dobbiamo utilizzare entry.0.single , invece entry.1.single per MILANO

Saranno poi questi i parametri di programmazione sia per FTPmicro in ROMA (0) e per quello di MILANO (1)

HTTP HEADER

La stringa per aggiornare i dati nelle celle, può essere verificata attraverso il browser, infatti basta digitare la url composta dal formkey e dalle celle con i relativi valori nel proprio browser per vedere il dato inviato al relativo Google Spreadsheet.
Per tramutare questi dati in codice leggibile, è necessario passare attraverso un visualizzatore http header come ad esempio
http://web-sniffer.net/
In questo modo potete avere i dati precisi da inserire nel firmware.

Se avete problemi scrivetemi anche su questo nei commenti.

Il firmware per FTPmicro (Picmicro 18F67J60)

E' stato utilizzato lo stack Microchip tcp/ip versione 5.41 con le seguenti configurazioni e implementazioni:

nel file TCPIP ETH97.h abilitare i seguenti moduli:

#define STACK_USE_DHCP_CLIENT // Dynamic Host Configuration Protocol client for obtaining IP address and other parameters
#define STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE // HTTP Client example in GenericTCPClient.c
#define STACK_USE_DNS // Domain Name Service Client for resolving hostname strings to IP addresses

nel file GenericTCPClient.c eseguire le seguenti implementazioni:

static BYTE ServerName[] = "spreadsheets.google.com";
static WORD ServerPort = 80;

static ROM BYTE RemoteURL1[] = "formkey=";
static ROM BYTE FormKEY[] ="dFVJMDBVYS02YjZwNFlPVXp4Q1dHMXc6MQ";
static ROM BYTE RemoteURL2[] = "&ifq&";
//static ROM BYTE Entry0[] ="entry.0.single="; //change HERE number of coloumn to update (0 = Device in Rome)
static ROM BYTE Entry0[] ="entry.1.single="; //change HERE number of coloumn to update (1 = Device in Milan)

extern BYTE Temperature[2];

e poi

TCPPutROMString(MySocket, (ROM BYTE*)"POST /formResponse HTTP/1.1\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Host: ");
TCPPutString(MySocket, ServerName);
TCPPutROMString(MySocket, (ROM BYTE*)"\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Connection: close\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Content-Type: application/x-www-form-urlencoded\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Content-Length: 83\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"\r\n");
TCPPutROMString(MySocket, RemoteURL1);
TCPPutROMString(MySocket, FormKEY);
TCPPutROMString(MySocket, RemoteURL2);
TCPPutROMString(MySocket, Entry0);
TCPPutString(MySocket, Temperature);
TCPPutROMString(MySocket, (ROM BYTE*)"&#B0C&submit=Submit");

Poi nel file principale, quindi MainDemo.c inserite:

//
// Main application entry point.
//

unsigned char Temperature[2];

void main(void)

{
static DWORD t = 0;
static DWORD dwLastIP = 0;

// Initialize application specific hardware
InitializeBoard();

TickInit();

// Initialize Stack and application related NV variables into AppConfig.
InitAppConfig();

// Initialize core stack layers (MAC, ARP, TCP, UDP) and
// application modules (HTTP, SNMP, etc.)
StackInit();

while(1)
{
// if(TickGet() - t >= TICK_SECOND) // about 5 sec. ->> Device in Rome REFRESH
if(TickGet() - t >= TICK_MINUTE/8ul) // about 30 sec. -->> Device in Milan REFRESH
{
t = TickGet();
GenericTCPClient();
}

// This task performs normal stack task including checking
// for incoming packet, type of packet and calling
// appropriate stack entity to process it.
StackTask();

// This tasks invokes each of the core stack application tasks
StackApplications();

// Process application specific tasks here.
ProcessIO();

}
}

E' appunto questa la parte che si occupa della gestione dei tempi di aggiornamento. Infatti i due FTPmicro sono stati programmati con tempi di aggiornamento differenti. Il dispositivo in Roma invia i dati a Google Spreadsheet ogni 5 secondi, mentre quello in Milano ogni 30 secondi circa. Le temperature quindi si aggiorneranno in relazione a questi timing.

Nella chiamata a ProcessIO ci dovranno essere i risultati della conversione analogico digitale rivolti a rappresentare numericamente la temperatura misurata con il sensore di temperatura a bordo dell'FTPmicro.

Grazie sempre ai form di Google Drive è possibile convertire i dati della tabella in un grafico. Questo è il risultato per monitorare la temperatura di due dispositivi in due posti diversi.

Tutto il firmware è open source quindi facilmente personalizzabile, potete anche utilizzare i commenti di questo articolo per segnalare miglioramenti e/o implementazioni.

Ecco il link a Google Code per il download dei sorgenti e dell'intero progetto pronto per MPLAB di Microchip.
http://code.google.com/p/from-picmicro-to-google/downloads/list

Video su come inviare i dati della temperatura da FTPmicro a Google Drive

FTPmicro montato e collaudato è disponibile sul nostro store --> FTPmicro

Tutta la documentazione su FTPmicro è disponibile a questa pagina FTPmicro per Utenti Premium.
Potete realizzarlo da soli (fai-da-te) scaricando tutti i codici sorgenti (Schema elettrico realizzato con Orcad, lista parti, circuito stampato realizzato con Orcad, file gerber, codice sorgente assembler realizzato su piattaforma Microchip).

Il progetto montato e collaudato è disponibile sul nostro store --> FTPmicro

In pieno spirito open che da sempre ci contraddistingue, un FTPmicro sarà spedito in omaggio (nel rispetto del regolamento di Review4U quindi anche con le spese di spedizione comprese) a chi indovinerà gli effetti di Instagram applicati alla foto iniziale con FTPmicro.

I commenti a voi!

Scarica subito una copia gratis

6 Commenti

  1. Avatar photo LoryD 30 Maggio 2012
  2. Avatar photo telegiangi61 30 Maggio 2012
  3. Avatar photo LoryD 30 Maggio 2012
  4. Avatar photo Emanuele 1 Giugno 2012
  5. Avatar photo Emanuele 4 Giugno 2012
  6. Avatar photo Emanuele 4 Giugno 2012

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend