Proiectele Arduino pot varia foarte mult de la manageri de producție la domiciliu până la stații meteorologice până la automatizări avansate de acasă. Adesea, veți dori să înregistrați date din aceste proiecte. În acest tutorial vă voi arăta cum să integrați un card SD și un modul de ceas în timp real într-un proiect care să permită înregistrarea temporală a datelor.
Descărcați următoarele biblioteci Arduino din depozitele lor. Pentru fiecare bibliotecă, dezarhivați folderul în Arduino / biblioteci pliant. Redenumiți fiecare dintre folderele care urmează să fie SD, RTCLib, și DHT respectiv. ID-ul Arduino nu se poate ocupa de liniuțele din numele fișierelor.
Dispozitivele de înregistrare a datelor sunt disponibile ca elemente discrete și pot varia în costuri de la 35 $ la sute. Alegerea loggerului potrivit este o decizie importantă în proiect. Ar fi o dezamăgire enormă pentru a recupera un proiect de observare a adâncurilor pentru a descoperi că datele din ultimul an au fost corupte.
Ca și în cazul tuturor proiectelor, trebuie să luați în considerare consumul de energie, dar există mai multe alte caracteristici pe care doriți să le cunoașteți atunci când selectați un înregistrator de date pentru un anumit proiect.
Poate că proiectul va fi în condiții dure. Dispersiile fizice, temperaturile ridicate, umiditatea și alte condiții vor afecta alegerea. Există loggers disponibile care pot suporta diferite condiții. Asigurați-vă că știți unde va trăi proiectul și loggerul dvs. și selectați tehnologia potrivită.
Există înregistratori de serie care vorbesc doar despre orice protocol, I2C, RS232, CAN, SPI și multe altele. Protocolul de interfață va afecta cât de repede pot fi scrise datele jurnalului. Asigurați-vă că selectați loggerul care se potrivește cu tehnologia proiectului și cerințele de viteză de scriere.
Nu este bine dacă datele înregistrate nu pot fi preluate. Este arborele proverbial care nu se încadrează fără ca cineva să audă. Asigurați-vă că înțelegeți modul în care datele vor fi preluate din loggerul pe care îl selectați. În unele cazuri de chips-uri discrete logger IC, va trebui să construiți o interfață externă pe care o puteți utiliza pentru a trage datele din chip.
Unele înregistrări doar dump de date, în timp ce altele au incredibil de timbre timbre pentru înregistrările de date. După cum v-ați aștepta, cu cât sunt mai precise timbrele de timp, în general, cu atât este mai mare prețul. Dacă proiectul dvs. necesită înregistrarea cu viteză foarte mare a timestampurilor în nanosecundă, loggerul va rula un pic mai mult decât un logger care nu are nicio idee despre ce oră din zi este.
Aceasta este ceea ce doriți să se întâmple atunci când depășiți sfârșitul stocării. Schemele variază de la oprirea înregistrării pentru a începe suprascrierea celor mai vechi date.
Asigurați-vă că ați evaluat de câte ori poate fi suprascrisă memoria dispozitivului și ce plan este atunci când începe ruperea. Dacă trebuie să înlocuiți tot loggerul după ce 10.000 suprascrie, valoarea va depinde de câte scrie scrieți pe planul pe secundă.
Posibilitățile de utilizare a unei cartele SD pentru înregistrare sunt multe. Este relativ ieftin. Puteți alege propriul format de înregistrare și dacă doriți sau nu timbre. Mediul este ușor de înlocuit când este uzat și poate fi eliminat rapid și citit de orice computer standard.
Înregistrarea cardurilor SD are și unele dezavantaje.
Nu este cel mai bun mediu robust în care umezeala ar putea afecta contactele. De asemenea, consumă o mulțime de pini prețioși pe un microcontroler. Între ceasul în timp real (RTC) și bordul SD breakout consumă șase pini de diferite tipuri.
Am ales cardul SD pentru acest tutorial din cauza ușurinței și flexibilității de a lucra cu cardul SD pentru scrierea și citirea jurnalelor. Mai important, abilitățile de utilizare a cardului SD și a unui RTC vor fi utile pentru o varietate de alte proiecte.
Urmați pașii de mai jos pentru a asambla panza. Acest tutorial utilizează un senzor simplu de temperatură și umiditate pentru a culege date pentru înregistrare. După ce urmați pașii, ar trebui să aveți un tablă care arată similar cu diagrama de mai jos.
Completat card de date SD CardPlaca de blocare a cardului SD este prevăzută cu ghimpe prietene, plăcuțe prietenoase, dar acestea nu sunt atașate. O sesiune rapidă de lipire o va rezolva și vă va permite să așezați placa așa cum este prezentat în diagramă.
Puneți cardul SD într-un computer și verificați dacă acesta este formatat cu un sistem de fișiere FAT32. Este posibil să aveți nevoie de un microSD pentru adaptorul SD Card standard. Cardul SD din lista de componente vine cu un adaptor. Introduceți cu atenție cardul SD în placa de bucle.
Ceasul Real Clock, sau RTC, vine ca un kit și va necesita un pic mai mult de lipit pentru a pune împreună. Toate componentele sunt incluse în kit. Urmați instrucțiunile pas cu pas pentru asamblarea plăcii, inclusiv anteturile prin gaură.
Asigurați-vă că ați introdus bateria inclusă în clemă după asamblare. Acesta nu va funcționa corect fără ca acumulatorul să funcționeze. RTC trage numai de la baterie atunci când nu există tensiune principală, deci bateria ar trebui să dureze ani.
Multe cazuri de baterii, cum ar fi cele din lista de piese de mai sus, vin cu conductori de sârmă care nu sunt prietenoși. Pentru a face ca firele de pâslă să cupleze ușor un fir sau un cap de capăt la capătul fiecărui cablu de sârmă.
Cititoarele de carduri SD pot fi achiziționate mult mai ieftin decât cel recomandat în acest tutorial. Captura este însă că cititorii de carduri SD sunt o tehnologie de 3 volți, în timp ce Arduino utilizează un microcontroler de 5 volți.
Acest lucru înseamnă că, pentru a folosi în siguranță un cititor de carduri SD cu un arduino un convertor de nivel logic este necesar pentru a converti tensiunile între cele două. Acest lucru adaugă costuri și complexitate. Cititorul specificat în lista de părți ar putea fi puțin mai scump, dar are mai multe lucruri care merg.
Cititorul utilizează protocolul SPI pentru a comunica. Plăcile arduino vin cu niște pini care sunt proiectați pentru acest protocol. În timp ce este posibil să utilizați pini alternativi într-un vârf, veți obține cea mai rapidă și cea mai fiabilă performanță utilizând ajutorul pinilor dedicați hardware.
Pinii indicați în imaginea schematică sunt corecți pentru un Arduino Uno sau Arduino Nano.
Cu proiectul hardware asamblat, următorul pas este să îl programați. Descărcați zipul ambalat cu acest tutorial sau din depozitul github pentru acest proiect de înregistrare a datelor.
datalogger.ino
în IDE-ul Arduinortc.adjust (DateTime (F (__DATE__), F (__ TIME__)));
Prin punerea a //
la începutul liniei. Prima dată când ați încărcat codul, acesta a setat data și ora RTC la momentul compilației. Dar nu doriți să continuați resetarea ceasului pentru a compila timpul de fiecare dată când tabla se resetează. Încărcarea codului fără aceasta rtc.adjust
în ea va lăsa singur timpul de ceas pe următoarea bootInițializarea unui datalogger cu versiunea RTC 1.0 Pornirea senzorului de temperatură și umiditate Pornirea cititorului SDCard și a cardului Deschiderea fișierului log pentru scriere. Pornirea ceasului în timp real 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
Programul datalogger îmbină funcțiile din biblioteca RTC, biblioteca DHT și biblioteca SD. Există câteva opțiuni în partea superioară a programului pe care le puteți acorda, cum ar fi numele fișierului de date și ce tip de DHT aveți.
Totuși, toate setările implicite ar trebui să funcționeze bine dacă ați folosit componentele sugerate mai sus.
Buclele principale ale programului simplu fac trei lucruri.
logThis ()
funcție pentru scrierea pe cardRepeta procesul atâta timp cât există putere și spațiu pe cardul SD.
logThis ()
funcția ia un șir de caractere de date ca argument, primește timpul din RTC, îl formatează cu datele și îl scrie în fișierul jurnal. Numele fișierului jurnal este specificat în #defini
secțiune a programului. Schița deschide fișierul de jurnal când începe configurarea, astfel încât fișierul de înregistrări de fișiere nu trebuie să-l deschidă din nou pentru fiecare intrare din jurnal. Cripticul sprintf
comanda afișată mai jos formatează datele.
Dacă doriți să schimbați modul în care datele sunt înregistrate, asigurați-vă că sunteți familiarizat cu funcția sprintf și puteți muta elementele de formatare și date în jur. Dacă trebuie doar să rearanjați câmpurile de date, puteți schimba ordinea între virgule și fiecare lucru ar trebui să funcționeze foarte bine.
sprintf (mesaj, "% ld,% d /% d /% d% 02d:% 02d:% 02d,% s", epoca, Anul, Luna, Ziua, Oră,
În cele din urmă, dataFile.println (mesaj)
comandă șirul formatat în fișier. Funcția se comportă exact ca și Serial.println
comanda.
Sistemul de fișiere FAT32 aflat pe cardul SD are câteva limitări care merită să fie cunoscute. Numele fișierului trebuie să fie și în format 8.3. Cea mai mare dimensiune de fișier pe care o poate deține este un fișier de 2 GB și poate conține numai 268.173.300 de fișiere. Sperăm că puteți trăi cu aceste constrângeri puțin.
Funcțiile now.year ()
și prietenii efectuează munca necesară pentru citirea elementelor de timp curente (unix epoch, an, lună, zi, oră, minut, secundă) de la placa RTC și returnează valoarea.
Lucrul cool cu ceasurile în timp real este că aceștia își păstrează timpul, desigur. În timp ce codul și proiectul pot să dispară, făcând alte lucruri importante, cum ar fi să vă asigurați că berea dvs. fermentează la temperatura potrivită, continuă să vă mențineți timp. Chiar dacă proiectul dvs. își pierde puterea, acesta continuă să ticăie cu o baterie independentă.
Tot ce trebuie să faceți este să-l întrebați și vă va spune cât este momentul. Acest lucru este, desigur, perfect pentru logarea datelor. Componenta specificată în lista de piese este un cronometru acceptabil, dar specificațiile spun că poate câștiga până la două secunde pe zi.
În cazul în care vă ține o noapte, apoi verificați ChronoDot fantezie pentru o precizie mai mare cu exact același protocol. Este complet interschimbabil cu RTC în acest proiect pentru câțiva dolari mai mult și vine complet asamblat.
Ați construit proiectul, l-ați programat (de două ori) și ați citit totul despre teoria operației de mai sus. E timpul să-l încercați.
datalog.txt
Ar trebui să vedeți ceva de felul următor.
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/16 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
În acest tutorial v-am arătat cum să integrați un card SD și un modul ceas în timp real în proiectul dvs. Cu exemplul de cod puteți înregistra date pentru o perioadă lungă de timp, care pot fi copiate rapid și ușor pe un computer.
După finalizarea acestui proiect, puteți încerca modificări sau upgrade-uri la acesta. Încercați să actualizați cipul de timp pentru timbre mai precise. Programul inclus include pur și simplu în același fișier, până când este plin. Puteți încerca să creați o schemă de rotație a fișierelor bazată pe date pentru a rota fișiere o dată pe săptămână.
Nici măcar nu am menționat că firul de detectare a cardului de la cititor vă va permite să modificați schema și placa pentru a testa prezența unei cartele înainte de a încerca orice operațiuni de citire sau scriere. Mult noroc și să te distrezi experimentând.