Leggere dati SD card da remoto

BuonSalve a tutti,

la necessità del nuovo progetto sarebbe quella di analizzare i dati (Temperatura, Data, Ora) che vengono scritti ogni 5 minuti su una SD (tramite SD Shield) senza rimuovere la SD stessa.

In pratica ogni settimana dovrei analizzare i dati con excel.

Potete consigliarmi la via più semplice ?

  1. PLX-DAQ ma non è più supportato (quindi max Excel 2003) e poi non mi serve in "diretta"
  2. Un web server ? (Problema necessità IP statico?)
  3. Potrei "raggiungere" (come ?) il file es. dati.txt ed importarlo in excel

Grazie

Non dici come è raggiungibile codesta scheda, dove salvi i dati su SD, dall'esterno.
Via seriale, Ethernet, WiFI, Wireless etc etc

Perchè il sistema più semplice è :

  1. Aggiungere due righe di codice nello sketch, che leggano da SD e stampino su seriale
  2. Usare un prg terminale su seriale che salvi su file

Ciao Brunello,
grazie della risposta.
Il modulino che uso è tipo questo:
http://www.ebay.it/itm/like/131974303761?lpid=96&chn=ps
ma usare una ethernet shield con slot SD sarebbe lo stesso.
Non ho capito bene il tuo sistema. Il mio problema è proprio come recuperare i dati settimanalmente per analizzarli con excel.
Esiste un sistema per accedere ad un ipotetico file chiamato dati.txt da importare su excel senza staccare fisicamente la SD ?
Se ti va spiegami meglio, magari con un link, il prg terminale che salva su file

Puoi usare una SD e da remoto fare una richiesta http dando un comando di download, dal pc remoto ottieni il file con il classico popup che poi apri e ci fai quello che devi.

client.println("HTTP/1.1 200 OK");    
client.println("Content-Type: application/octet-stream");
client.println("Content-Description: File Transfer");
client.println("Content-Disposition: attachment; filename=MYFILE.HTM");
client.println("Content-Transfer-Encoding: binary");
client.println("Cache-Control: must-revalidate, post-check=0, pre-check=0");
//client.println("Content-Length: " + size(webFile )); //questo mostra quanto è grande il file nel popup di download      
client.println("Connection: close");
client.println();

Grazie Pablos,
l'idea mi piacerebbe, ma ti chiedo di spiegarmi un pochino meglio:

  1. Devo quindi usare la ethernet shield con SD, giusto ?
  2. Come risolvo il problema dell'IP dinamico ? Devo usare DynDns ? Comunque è un po' rognoso
  3. Non so molto di http... dove devo "caricare" le righe che mi hai così gentilmente creato ?
    E' che, fra l'altro, non saprei come interpretare il path in caso di richiesta Get o la query in caso di richiesta post.

Veramente la mia domanda non era rivolta alla scheda SD, ma all'Arduino che lo gestisce

Come ti ci colleghi dal mondo esterno ?

Ho fatto riferimento a una mia risposta su un treadh di 2 anni fa che ricordavo, però non è completo ... odio quelli che non mettono lo sketch completo !! :slight_smile: :slight_smile:
http://forum.arduino.cc/index.php?topic=265287.0;nowap

lo completo adesso se necessario, però chiarisci la questione IP ormai quasi tutti i gestori danno IP statico, sei sicuro che cambia?
Non è che stai usando un CUBO o un antenna Linkem, perchè li ci puoi fare poco essendo dentro una nat.

  1. Devo quindi usare la ethernet shield con SD, giusto ?

Puoi usare anche un modulo SD separato se la tua shield non ha lo slot SD

Per lo sketch coumunque va preso l'esempio webserver, l'esempio SD read e cambiato la risposta HTTP con quella sopra.

E' semplicei devi fare poi solo da browse l'IP e basta, si apre il popup del download, se invece i file sono diversi, allora bisogna aggiungere il parse dell header della richiesta che vada a prendere il file specificato nell'indirizzo.

Attenzione ai file troppo lunghi, arduino è molto veloce .... un file da 5Mb ci mette circa 6 min a dartelo.

@Brunello: mi ci potrei collegare con una Ethernet Shield.... ho usato il condizionale perchè se ci fosse un modo per "vedere" la scheda semplicemente tramite USB sarebbe ancora più semplice.

@Pablos: l'IP è dinamico e non posso neanche acquistare quello statico in quanto tutta la connessione Internet dell'azienda (siamo in piena campagna) funge tramite SIM.

Tramite sim dati perfetto, è raggiungibile un po' come facciamo per la teleassistenza sulle centrali, comunque se ti va bene su pc locale tramite seriale ancora meglio, io pensavo che arduino si trovasse in un posto non raggiungibile fisicamente o che volevi farlo da km di distanza.

ciao

Ehmmmmm
Non è che potreste spiegarmi dunque la procedura ?

L'idea di chiedere il download del file presente sulla SD mi piaceva molto.
Con la scheda arduino (a cui è collegata la scheda SD) connessa tramite USB come faccio a "chiedere" il file ?
:slight_smile:

puoi vedere questo

se non hai excell della microsoft che costicchia puoi scaricare gratuitamente openoffice
http://www.openoffice.org/it/

io lo uso per fatture, preventivi, gestione ore lavorative, conformità e documenti vari da anni alla faccia di bill, puoi importare file csv da seriale, da link web ecc

Ciao Pablos grazie,

conoscevo quel link tanto è vero che nel primo post di questo topic citavo PLX-DAQ.

Conosco anche openoffice che tuttavia presenta qualche piccolo problema di compatibilità con alcuni fogli excel che uso (ad esempio se sono molto complessi con ricerche di dati dentro altri file excel).

Il problema (che magari sarà banale :slight_smile: ) è come fare ad arrivare al file sulla SD.

Abbiamo Arduino, la sua bella scheda SD con il suo bel file chiamato Dati.txt in cui di continuo vengono salvate data, ora e temperatura.

Come faccio a salvare quel file sul pc ? ? ? ? ?

E se volessi raggiungerlo tramite Ethernet Shield sarebbe possibile senza IP Statico ? Ossia è complicato utilizzare servizi tipo dyndns con Arduino ?

se ci fosse un modo per "vedere" la scheda semplicemente tramite USB sarebbe ancora più semplice.

Con la scheda arduino (a cui è collegata la scheda SD) connessa tramite USB come faccio a "chiedere" il file ?

Dentro Arduino dovrai metterci uno sketch con cui gestire il salvataggio dei dati su SD ?
Bene, e allora puoi pure metterci due righe di programma per gestire la lettura della SD e scrivere su seriale ( vedi esempio DumpFile nella libreria della SD )

E' chiaro che per avviare la procedura dovrai , nel Loop, controllare ad esempio se sulla seriale arriva la richiesta .
E per gestire il tutto consigliavo di usare un programma Terminale ( ad esempio Realterm Link con cui puoi salvare su HDD detto file

Lui vorrebbe richiamarlo da excel se ho capito bene, il programma appunto office da la possibilità di creare script sulle celle praticamente visual basic un poì più magro. Io non l'ho mai fatto, ma sono certo che si può, altrimenti bill sarebbe l'uomo più ricco del mondo ma anche il più inutile ahahahha

Ciao.
Io un problema di questo tipo l'ho risolto aggiungendo il bluetooth, però devi chiaramente trovarti ad una distanza coperta da questo tipo di hardware. Inoltre i dati così ottenuti, viaggiando sulla seriale del bluetooth, sono riprodotti in un file in cui ogni riga corrisponde ad un carattere. Il file lo scarico su cell tramite un'applicazione sviluppata con AppInventor, poi ho sviluppato uno script in php che "pulisca" il file e lo rigenera in un formato csv in modo da poterlo importare in qualsiasi programma (io analizzo i dati con gnuplot)