I progetti Arduino possono variare ampiamente dai responsabili della produzione di birra domestica alle stazioni meteorologiche fino alla domotica avanzata. Spesso vorrete registrare i dati da questi progetti. In questo tutorial ti mostrerò come integrare una scheda SD e un modulo di orologio in tempo reale in un progetto per consentire la registrazione dei dati con timestamp.
Scarica le seguenti librerie Arduino dai loro repository. Per ogni libreria, decomprimere la cartella in Arduino / librerie cartella. Rinominare ciascuna delle cartelle in modo che siano SD, RTCLib, e DHT rispettivamente. L'IDE Arduino non può gestire i trattini nei nomi dei file.
I data logger sono disponibili come elementi discreti e possono variare da $ 35 a centinaia. La scelta del logger giusto è una decisione importante nel progetto. Sarebbe un'enorme delusione recuperare un progetto di osservatori di acque profonde per scoprire che i dati dell'ultimo anno sono stati corrotti.
Come per tutti i progetti, è necessario considerare il consumo di energia, ma ci sono molte altre funzionalità di cui si desidera essere a conoscenza quando si seleziona un data logger per un particolare progetto.
Forse il progetto sarà in condizioni difficili. Scosse fisiche, temperature elevate, umidità e altre condizioni influenzeranno la scelta. Sono disponibili logger in grado di resistere a condizioni diverse. Assicurati di sapere dove vivranno il tuo progetto e il tuo logger e scegli la tecnologia giusta.
Esistono logger seriali che parlano praticamente di qualsiasi protocollo, I2C, RS232, CAN, SPI e altro. Il protocollo dell'interfaccia influenzerà la velocità di scrittura dei dati del registro. Assicurati di selezionare il logger che si adatta alla tecnologia del progetto e ai requisiti di velocità di scrittura.
Non va bene se i dati registrati non possono essere recuperati. È il proverbiale albero che cade senza nessuno intorno a sentirlo. Assicurati di aver compreso in che modo i dati devono essere recuperati dal registratore che stai selezionando. In alcuni casi di chip IC logger discreti, sarà necessario creare un'interfaccia esterna che è possibile utilizzare per estrarre i dati dal chip.
Alcuni logger eseguono semplicemente il dump dei dati mentre altri hanno timestamp incredibilmente accurati per i record di dati. Come ci si aspetterebbe, più accurati sono i timestamp, generalmente maggiore è il prezzo. Se il tuo progetto richiede una registrazione ad altissima velocità che timestamp al nanosecondo, il logger funzionerà un po 'più di un logger che non ha idea di che ora del giorno è.
Questo è ciò che vuoi che succeda quando superi la fine dello spazio di archiviazione. Gli schemi variano dalla registrazione di stop per iniziare a sovrascrivere i dati più vecchi.
Assicurati di valutare quante volte la memoria del dispositivo può essere sovrascritta e quale è il piano quando inizia a scomporre. Se è necessario sostituire l'intero programma di registrazione dopo aver sovrascritto 10.000, il valore dipenderà dal numero di scritture pianificate per il secondo al secondo.
I lati positivi dell'utilizzo di una scheda SD per la registrazione sono molti. È relativamente economico. È possibile scegliere il proprio formato di registrazione e se si desidera o meno timestamp. Il supporto è facilmente sostituibile se usurato e può essere rimosso rapidamente e letto da qualsiasi computer standard.
La registrazione della scheda SD ha anche alcuni aspetti negativi.
Non è il miglior ambiente robusto in cui l'umidità possa influire sui contatti. Inoltre consuma un sacco di pin preziosi su un microcontrollore. Tra il real time clock (RTC) e la breakout board SD consuma sei pin di vario tipo.
Ho scelto il logger della scheda SD per questo tutorial a causa della facilità e della flessibilità di lavorare con la scheda SD per scrivere e leggere i registri. Ancora più importante, le capacità di utilizzare la scheda SD e un RTC saranno utili per una varietà di altri progetti.
Seguire i passaggi seguenti per assemblare la breadboard. Questo tutorial utilizza un semplice sensore di temperatura e umidità per raccogliere i dati per la registrazione. Dopo aver seguito i passaggi, dovresti avere una breadboard che assomiglia allo schema qui sotto.
Datalogger della scheda SD completatoLa scheda di sblocco della scheda SD viene fornita con fori passanti, intestazioni per breadboard, ma non sono collegati. Una rapida sessione di saldatura la risolverà e ti consentirà di posizionare la tavola come mostrato nel diagramma.
Inserire la scheda SD in un computer e verificare che sia formattata con un filesystem FAT32. Potrebbe essere necessario un MicroSD per l'adattatore per schede SD standard. La scheda SD nell'elenco dei componenti viene fornita con un adattatore. Inserire con attenzione la scheda SD nella scheda di sblocco.
La scheda Real Time Clock, o RTC, viene fornita in kit e richiede un po 'più di saldatura da assemblare. Tutti i componenti sono inclusi nel kit. Seguire le istruzioni passo passo per assemblare la scheda comprese le intestazioni foro passante.
Assicurarsi di inserire la batteria inclusa nella clip dopo il montaggio. Non funzionerà correttamente senza la batteria in posizione. L'RTC attinge solo dalla batteria quando non c'è tensione principale, quindi la batteria dovrebbe durare anni.
Molti casi di batteria come quello nella lista delle parti sopra sono dotati di cavi non compatibili con il breadboard. Per fare in modo che i cavi si possano saldare, saldare un filo o un capocorda all'estremità di ciascun conduttore.
I lettori di schede SD possono essere acquistati in modo molto più economico di quello consigliato in questo tutorial. Il problema, tuttavia, è che i lettori di schede SD sono una tecnologia a 3 volt mentre l'Arduino utilizza un microcontrollore da 5 volt.
Ciò significa che per utilizzare in sicurezza un lettore di schede SD con un Arduino è necessario un convertitore di livello logico per convertire le tensioni tra i due. Ciò aggiunge costi e complessità. Il lettore specificato nell'elenco delle parti potrebbe essere un po 'più costoso, ma ha molte cose da fare per questo.
Il lettore utilizza il protocollo SPI per comunicare. Le schede Arduino sono dotate di alcuni pin progettati per questo protocollo. Mentre è possibile utilizzare pin alternativi in un pizzico, otterrete le prestazioni più veloci e affidabili utilizzando i pin dedicati all'hardware.
I pin indicati nella figura schematica sono precisi per uno Arduino Uno o Arduino Nano.
Con l'hardware del progetto assemblato, il passo successivo è programmarlo. Scarica il pacchetto zip compresso con questo tutorial o dal repository github per questo progetto di registrazione dei dati.
datalogger.ino
nell'IDE di Arduinortc.adjust (DateTime (F (__ DATE__), F (__ TIME__)));
Mettendo a //
all'inizio della linea. La prima volta che hai caricato il codice, imposta la data e l'ora dell'RTC al momento della compilazione. Ma non vuoi continuare a reimpostare l'orologio per compilare il tempo ogni volta che la scheda viene reimpostata. Caricamento del codice senza questo rtc.adjust
in esso lascerà il tempo di clock da solo al prossimo avvioInizializzazione del datalogger con RTC versione 1.0 Avvio del sensore di temperatura e umidità Avvio del lettore e della scheda SDCard Apertura del file di registro per la scrittura. Avvio di Real Time Clock Unixtime: 1405787147 1405787148,2014 / 7/19 16: 25: 48,69.80,40,00 1405787151,2014 / 7/19 16: 25: 51,69.80,40,00 1405787155,2014 / 7/19 16:25: 55,69.80,40,00 1405787158,2014 / 7/19 16: 25: 58,69.80,40,00 1405787162,2014 / 7/19 16: 26: 02,69.80,40,00 1405787165,2014 / 7/19 16:26:05, 69.80,40.00
Il programma del datalogger unisce le funzioni della libreria RTC, della libreria DHT e della libreria SD. Ci sono alcune opzioni nella parte superiore del programma che puoi regolare come il nome del file di dati e il tipo di DHT che hai.
Tutte le impostazioni predefinite, tuttavia, dovrebbero funzionare correttamente se si utilizzano i componenti suggeriti sopra.
Il ciclo principale del programma fa tre cose.
logThis ()
funzione per scrivere sulla cartaRipete il processo finché c'è alimentazione e spazio sulla scheda SD.
Il logThis ()
funzione prende una stringa di caratteri di dati come argomento, ottiene il tempo dall'RTC, lo formatta con i dati e lo scrive nel file di registro. Il nome del file di registro è specificato nel file #definire
sezione del programma. Lo schizzo apre il file di registro all'avvio dell'installazione in modo che il registratore di file non debba riaprirlo per ciascuna voce di registro. Il criptico sprintf
il comando mostrato sotto forma i dati.
Se si desidera modificare la modalità di registrazione dei dati, assicurarsi di avere familiarità con la funzione sprintf e di spostare la formattazione e gli elementi di dati. Se hai solo bisogno di riordinare i campi della data, puoi semplicemente cambiare il loro ordine tra le virgole e ogni cosa dovrebbe funzionare bene.
sprintf (messaggio, "% ld,% d /% d /% d% 02d:% 02d:% 02d,% s", epoca, anno, mese, giorno, ora, minuti, secondi, logmessage);
Finalmente, il dataFile.println (messaggio)
comando scrive la stringa formattata sul file. La funzione si comporta proprio come il Serial.println
comando.
Il filesystem FAT32 che si trova sulla scheda SD ha alcune limitazioni che vale la pena conoscere. Anche il nome del file deve essere in formato 8.3. La dimensione massima del file che può contenere è un file da 2 GB e può contenere solo 268.173.300 file. Spero che tu possa vivere con questi vincoli per un po '.
Le funzioni now.year ()
e gli amici eseguono il lavoro richiesto per leggere gli elementi del tempo corrente (unix epoca, anno, mese, giorno, ora, minuto, secondo) dalla scheda RTC e restituiscono il valore.
La cosa bella degli orologi in tempo reale è che mantengono ovviamente il tempo. Mentre il codice e il progetto possono andare avanti facendo altre cose importanti come assicurarsi che la tua birra stia fermentando alla giusta temperatura, continua a mantenere il tempo. Anche se il tuo progetto perde potenza, continua a scorrere con una batteria indipendente.
Tutto quello che devi fare è chiederlo e ti dirà a che ora è. Questo è ovviamente perfetto per la registrazione dei dati. Il componente specificato nell'elenco delle parti è un timekeeper passabile, ma le specifiche dicono che può guadagnare fino a due secondi al giorno.
Se questo ti fa alzare la notte, controlla il fantasioso ChronoDot per una maggiore precisione con lo stesso identico protocollo. È completamente intercambiabile con RTC in questo progetto per pochi dollari in più e viene completamente assemblato.
Hai costruito il progetto, programmato (due volte) e leggi tutto sulla teoria dell'operazione di cui sopra. È tempo di provarlo.
datalog.txt
Dovresti vedere qualcosa di simile al seguente.
1405787012,2014 / 7/19 16: 23: 32,69.80,40,00 1405787015,2014 / 7/19 16: 23: 35,69.80,40,00 1405787019,2014 / 7/19 16: 23: 39,69.80,40,00 1405787022, 24/7/19 16: 23: 42,69.80,40,00 1405787026,2014 / 7/19 16: 23: 46,69,80,40,00 1405787029,2014 / 7/19 16: 23: 49,69.80,40,00 1405787053,2014 / 7/19 16: 24: 13,69.80,40.00
In questo tutorial ti ho mostrato come integrare una scheda SD e un modulo di orologio in tempo reale nel tuo progetto. Con il codice di esempio è possibile registrare i dati per un periodo di tempo prolungato che può essere copiato rapidamente e facilmente su un computer.
Dopo aver completato questo progetto, potresti provare alcune modifiche o aggiornamenti ad esso. Prova ad aggiornare il cronometro per timestamp più accurati. Il programma incluso scrive semplicemente nello stesso file più e più volte fino a quando non è pieno. Puoi provare a creare uno schema di rotazione dei file basato sulla data per ruotare i file una volta alla settimana.
Non ho nemmeno menzionato il filo di rilevamento delle carte del lettore che ti permetterà di modificare lo schema e la scheda per testare la presenza di una scheda prima di provare qualsiasi operazione di lettura o scrittura. Buona fortuna e divertiti a sperimentare.