Arduino-prosjekter kan variere mye fra hjemmebryggingsforvaltere til værstasjoner til avansert hjemmeautomatisering. Ofte vil du logge data fra disse prosjektene. I denne veiledningen vil jeg vise deg hvordan du integrerer et SD-kort og en sanntidsmodul i et prosjekt for å tillate tidsstemplet datalogging.
Last ned følgende Arduino-biblioteker fra deres arkiver. For hvert bibliotek, pakke ut mappen til Arduino / bibliotek mappe. Gi nytt navn til hver av mappene som skal være SD, RTCLib, og DHT henholdsvis. Arduino IDE kan ikke håndtere bindestrekene i filnavnene.
Data loggers er tilgjengelige som diskrete elementer og kan variere i kostnad fra $ 35 til hundrevis. Å velge riktig logger er en viktig beslutning i prosjektet. Det ville være en enorm skuffelse for å hente et dyphav observatørprosjekt for å oppdage at dataene i løpet av det siste året har blitt korrupte.
Som med alle prosjekter må du vurdere strømforbruket, men det finnes flere andre funksjoner du vil være oppmerksom på når du velger en datalogger for et bestemt prosjekt.
Kanskje prosjektet kommer til å være i tøffe forhold. Fysiske støt, høye temperaturer, fuktighet og andre forhold vil påvirke valget. Det finnes loggere som tåler forskjellige forhold. Sørg for å vite hvor prosjektet og loggeren skal leve og velg riktig teknologi.
Det er serielle loggere som snakker bare om noen protokoller, I2C, RS232, CAN, SPI og mer. Grensesnittprotokollen vil påvirke hvor fort loggdataene kan skrives. Sørg for at du velger loggeren som passer med prosjektteknologien og skrivhastighetskrav.
Det er ikke bra hvis de loggede dataene ikke kan hentes. Det er det ordspråklige treet som faller uten noen for å høre det. Pass på at du forstår hvordan data skal hentes fra loggeren du velger. I enkelte tilfeller av diskrete logger IC-chips, må du bygge et eksternt grensesnitt som du kan bruke til å trekke dataene tilbake fra brikken.
Noen loggere dumper bare data mens andre har utrolig nøyaktige tidsstemmer for datapostene. Som du forventer, jo mer nøyaktig tidstemplene, generelt jo høyere prisen. Hvis prosjektet krever meget høyhastighets logging som tidsstempel til nanosekunden, vil loggeren kjøre litt mer enn en logger som ikke har noen anelse om hvilken tid på dagen det er.
Dette er hva du vil skje når du overskrider slutten av lagringen. Ordninger varierer fra stopplogging for å begynne å overskrive de eldste dataene.
Sørg for at du vurderer hvor mange ganger enhetens minne kan overskrives og hva planen er når det begynner å bryte ned. Hvis du må erstatte hele loggeren etter at 10 000 overskriver, vil verdien avhenge av hvor mange skriver du planlegger å lage per sekund.
Ulempene med å bruke et SD-kort for logging er mange. Det er relativt billig. Du kan velge ditt eget loggingsformat og om du vil ha tidsstemmer eller ikke. Mediet kan enkelt byttes ut når det er slitt og kan fjernes raskt og leses av en hvilken som helst vanlig datamaskin.
SD-kortlogging har også noen ulemper.
Det er ikke det beste robuste miljøet der fuktighet kan påvirke kontaktene. Det bruker også mange dyrebare pins på en mikrokontroller. Mellom sanntidsuret (RTC) og SD-pausebryteren bruker den seks pinner av forskjellige typer.
Jeg valgte SD-kortloggeren for denne opplæringen på grunn av enkelheten og fleksibiliteten til å jobbe med SD-kortet for å skrive og lese loggene. Viktigere, ferdighetene i å bruke SD-kortet og en RTC vil komme til nytte for en rekke andre prosjekter.
Følg trinnene under for å montere breadboard. Denne opplæringen bruker en enkel temperatur- og fuktighetsføler for å samle data for logging. Etter å ha fulgt trinnene, bør du ha et brødbrett som ligner på diagrammet nedenfor.
Fullført SD-kortdataloggerSD-kortspaltbordet kommer med gjennomgående hull, brødbrettvennlige hoder, men de er ikke festet. En rask løpemøte vil fikse det og gi deg mulighet til å sette bordet som vist på diagrammet.
Sett SD-kortet inn i en datamaskin og kontroller at den er formatert med et FAT32-filsystem. Du kan trenge en MicroSD til standard SD-kortadapter. SD-kortet i komponentlisten følger med en adapter. Sett SD-kortet forsiktig inn i breakoutbordet.
Real Time Clock, eller RTC, kommer som et sett og vil kreve litt mer lodding å sette sammen. Alle komponentene er inkludert i settet. Følg trinnvise instruksjonene for å montere brettet, inkludert de gjennomgående hullene.
Pass på at du setter det medfølgende batteriet i klemmen etter montering. Det fungerer ikke riktig uten at batteriet er på plass. RTC trekker bare fra batteriet når det ikke er noen spenning, så batteriet skal vare i flere år.
Mange batterisaker som den som er på dellisten ovenfor, kommer med ledninger som ikke er breadboard-vennlig. For å gjøre ledningene tilbrettet, loddetråd en ledning eller hodestift til slutten av hver ledning.
SD-kortlesere kan kjøpes mye billigere enn den som er anbefalt i denne opplæringen. Fangsten er imidlertid at SD-kortlesere er en 3 volt-teknologi mens Arduino bruker en 5-volts mikrokontroller.
Dette betyr at for å kunne bruke en SD-kortleser sikkert med en Arduino, er det nødvendig med en logisk nivåomformer for å konvertere spenninger mellom de to. Dette legger til kostnader og kompleksitet. Leseren spesifisert i dellisten kan være litt dyrere, men det har flere ting å gjøre for det.
Leseren bruker SPI-protokollen til å kommunisere. Arduino boards leveres med visse pinner som er designet for denne protokollen. Mens det er mulig å bruke alternative stifter i en klemme, får du den raskeste og mest pålitelige ytelsen ved å bruke maskinvarepennene.
Pinnene som er angitt i skjematisk bildet, er nøyaktige for en Arduino Uno eller Arduino Nano.
Når prosjektmaskinen er montert, er neste trinn å programmere det. Last ned pakken pakket med denne opplæringen eller fra github-depotet for dette dataloggingprosjektet.
datalogger.ino
i Arduino IDErtc.adjust (DateTime (F (__ DATE__), F (__ TIME__)));
Ved å sette en //
ved starten av linjen. Første gang du lastet opp koden, stiller du dato og klokkeslett for RTC til kompileringstidspunktet. Men du vil ikke beholde klokken igjen for å kompilere tid hver gang styret tilbakestilles. Laster opp koden uten dette rtc.adjust
i det vil la klokken tid alene på neste oppstartInitialisering av datalogger med RTC versjon 1.0 Start Temp og fuktighetssensor Start SDCard-leser og kort Åpning loggfil for skriving. Starte sanntidsklokke 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
Datalogger-programmet blander sammen funksjoner fra RTC-biblioteket, DHT-biblioteket og SD-biblioteket. Det er noen alternativer i toppen av programmet som du kan stille, for eksempel navnet på datafilen og hvilken type DHT du har.
Alle standardverdier skal imidlertid fungere bra hvis du brukte komponentene som er foreslått ovenfor.
Hovedløkken i programmet gjør det enkelt tre ting.
logThis ()
Fungerer for å skrive til kortetDet gjentar prosessen så lenge det er strøm og plass på SD-kortet.
De logThis ()
funksjonen tar en tegnstreng av data som et argument, får tiden fra RTC, formater den med dataene og skriver den til loggfilen. Logfilnavnet er spesifisert i #definere
del av programmet. Skissen åpner loggfilen når oppsettet starter slik at filloggeren ikke trenger å åpne den for hver loggoppføring. Den kryptiske sprintf
Kommandoen som vises nedenfor formater dataene.
Hvis du vil endre hvordan dataene logges, må du være sikker på at du er kjent med sprintf-funksjonen, og du kan flytte formaterings- og dataelementene rundt. Hvis du bare trenger å ombestille datafeltene, kan du bare endre rekkefølgen mellom kommaene, og alt skal fungere helt fint.
sprintf (melding, "% ld,% d /% d /% d% 02d:% 02d:% 02d,% s", epoke, år, måned, dag, time, minutt, andre, logmessig melding);
Endelig, den dataFile.println (melding)
kommandoen skriver den formaterte strengen til filen. Funksjonen oppfører seg akkurat som Serial.println
kommando.
FAT32-filsystemet som er på SD-kortet, har noen begrensninger verdt å vite. Filnavnet må også være i et 8.3-format. Den største filstørrelsen den kan holde, er en 2GB-fil, og den kan bare inneholde 268.173.300 filer. Forhåpentligvis kan du leve med disse begrensningene for litt.
Funksjonene now.year ()
og venner utfører arbeidet som kreves for å lese gjeldende tidselementer (unix epoke, år, måned, dag, time, minutt, sekund) fra RTC-styret og returnere verdien.
Den kule tingen om sanntidsklokker er at de holder tid selvfølgelig. Mens koden og prosjektet kan gå av, gjør andre viktige ting som å sørge for at ølene gjærer til riktig temperatur, går det bare på å holde tiden. Selv om prosjektet mister strøm, fortsetter det å tikkes med et uavhengig batteri.
Alt du trenger å gjøre er å spørre det, og det vil fortelle deg hvilken tid det er. Dette er selvfølgelig perfekt for logging av data. Komponenten som er spesifisert i dellisten, er en god tidsspenning, men spesifikasjonene sier at den kan få opptil to sekunder om dagen.
Hvis det holder deg oppe en natt, så sjekk ut ChronoDot-fargene for høyere presisjon med nøyaktig samme protokoll. Det er helt utbytbart med RTC i dette prosjektet for noen få dollar mer, og det kommer fullt sammen.
Du har bygget prosjektet, programmert det (to ganger), og les alt om operasjonsteorien ovenfor. Det er på tide å prøve det ut.
datalog.txt
Du bør se noe som følger.
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, 2014/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
I denne veiledningen har jeg vist deg hvordan du integrerer et SD-kort og en sanntidsmodul i prosjektet. Med eksempelkoden kan du logge data i lengre tid som raskt og enkelt kan kopieres til en datamaskin.
Etter at du har fullført dette prosjektet, kan du prøve noen endringer eller oppgraderinger til det. Prøv å oppgradere tidsbrikken for mer nøyaktige tidsstemmer. Det medfølgende programmet skriver ganske enkelt til samme fil igjen og igjen til den er full. Du kan prøve å lage en datoper basert filrotasjon for å rotere filer en gang i uken.
Jeg nevnte ikke engang kortdetektorkabelen fra leseren som vil tillate deg å endre skjematisk og styret for å teste for tilstedeværelsen av et kort før du prøver å lese eller skrive operasjoner. Lykke til og ha det gøy å eksperimentere.