Kao inženjeri / programeri, uvijek se oslanjamo na prikupljene podatke kako bismo dizajnirali ili poboljšali sustav. Snimanje podataka i njihova analiza uobičajena je praksa u većini industrija, ovdje gradimo Arduino Data Logger Project gdje ćemo naučiti kako možemo bilježiti podatke u određenom vremenskom intervalu. Upotrijebit ćemo Arduino ploču za čitanje nekih podataka (ovdje temperatura, vlaga, datum i vrijeme) i njihovo istovremeno spremanje na SD karticu i računalo.
Spremljeni podaci mogu se lako otvoriti u Excelovom listu za daljnje analize. Za održavanje datuma i vremena koristit ćemo poznati RTC modul DS3231, a za dobivanje temperature i vlažnosti upotrijebit ćemo senzor DHT11. Na kraju projekta naučit ćete
- Kako prijaviti podatke na SD karticu s datumom, vremenom i vrijednostima senzora.
- Kako zapisati podatke izravno u Excel Sheet na računalu putem serijske komunikacije.
Potrebni materijali:
- Breadboard
- Arduino UNO (bilo koja Arduino ploča)
- DHT11 Senzor temperature
- DS3231 RTC modul
- Modul SD kartice
- SD kartica
- Spajanje žica
- Računalo / Laptop

Kružni dijagram:
Dijagram kruga za ovaj projekt Arduino temperaturnog zapisničara prikazan je u nastavku.

Kao što je prikazano na shemi spojeva, veze su vrlo jednostavne, jer smo ih koristili kao module, možemo ih izravno graditi na ploči. Veze su dalje klasificirane u donjoj tablici
| Arduino pin | Pin modula | 
| Osjetnik temperature - DHT11 | |
| Vcc | 5V | 
| Gnd | Gnd | 
| Nc | Nc | 
| Van | Pribadača 7 | 
| RTC modul DS3231 | |
| Vcc | 5V | 
| Gnd | Gnd | 
| SCL | Pribadača A5 | 
| SDA | Prikvači A4 | 
| Modul SD kartice | |
| Vcc | 5V | 
| Gnd | Gnd | 
| MISO | Pribadača 12 | 
| MOSI | Pribadača 11 | 
| SCK | Pin 13 | 
| CS | Pribadača 4 | 
Možete zamijeniti temperaturni osjetnik DHT11 bilo kojim od svojih senzora s kojeg trebate zabilježiti vrijednosti. Možete provjeriti LM35 s Arduinom da očita temperaturu.
RTC modul DS3231 povezan je s Arduinom pomoću I2C komunikacije (SCL, SDA), a modul SD kartice povezan je SPI komunikacijom (MISO, MOSI, SCK, CS). Pinovi 4 i 7 definirani su kao CS pin i izlazni pin u programu Arduino, po potrebi ih možete promijeniti na bilo koji drugi pin. Prethodno smo povezali SD karticu s Arduinom u projektu Music player.
Objašnjenje programa Arduino:
Moramo napisati program Arduino koji može učiniti sljedeće.
- Čitajte podatke sa senzora DTH11 (ili bilo koje druge podatke koje želite prijaviti).
- Inicijalizirajte I2C sabirnicu za čitanje podataka s RTC modula.
- Inicijalizirajte SPI sabirnicu radi povezivanja modula SD kartice s Arduinom.
- Pohranite datum, vrijeme, temperaturu i vlažnost na SD karticu.
- Pohranite datum, vrijeme, temperaturu i vlažnost u Excel listu na računalu / prijenosnom računalu.
Gornji koraci možda zvuče složeno, ali vrlo su jednostavni jer biblioteke rade težak posao umjesto nas. Morate preuzeti sljedeće dvije knjižnice
- Biblioteka senzora DHT11 tvrtke GitHub
- Biblioteka modula DS3231 RTC tvrtke Rinky-Dink Electronics
Nakon što preuzmete biblioteku, dodajte ih u svoj Arduino IDE slijedeći
Skica-> Uključi biblioteku -> Dodaj.ZIP biblioteku
Da bismo podatke iz Arduina živahno uložili u Excel list na računalu, trebat ćemo instalirati i softver nazvan PLX-DAQ, koji osigurava Parallax Inc. Slijedite vezu da biste preuzeli datoteku i instalirali ih na temelju vašeg operativnog sustava. Ovo je trebalo stvoriti mapu s imenom PLS-DAQ na vašoj radnoj površini. Za to ćemo se pobrinuti kasnije u našem radnom dijelu.
Nakon dodavanja obje knjižnice i nakon instalacije softvera, možete upotrijebiti Kompletni kod (naveden na dnu vodiča) i prenijeti ih na svoj Arduino. Trudio sam se da kôd bude što jednostavniji, a objašnjenja se daju i kroz komentare. Dalje, u nastavku ću objasniti važne segmente.
1. Čitanje podataka s DS3231:
DS3231 je RTC (sat u stvarnom vremenu) modul. Koristi se za održavanje datuma i vremena za većinu projekata Elektronike. Ovaj modul ima svoje vlastito napajanje ćelijskim novčićem pomoću kojeg održava datum i vrijeme, čak i kad je glavno napajanje uklonjeno ili je MCU prošao kroz hard reset. Dakle, nakon što postavimo datum i vrijeme u ovom modulu, on će ih uvijek pratiti.
Korištenje ovog modula vrlo je jednostavno zbog biblioteke koju pruža Arduino.
// Uvođenje DS3231 pomoću hardverskog sučelja DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Inicijalizirajte rtc objekt rtc.begin (); // #### sljedeći se redovi mogu nekomentirati kako bi se prvi put postavili datum i vrijeme ### / * rtc.setDOW (PETAK); // Postavi dan u tjednu na NEDJELJA rtc.setTime (18, 46, 45); // Postavite vrijeme na 12:00:00 (24-satni format) rtc.setDate (6, 30, 2017); // Postavite datum 1. siječnja 2014. * /}
Napomena: Kada prvi put koristite ovaj modul, morate postaviti datum i vrijeme. To se može učiniti jednostavnim uklanjanjem komentara kao što je gore spomenuto i upisivanjem datuma i vremena. Svakako ih ponovno komentirajte i prenesite, inače će se svaki put kad pokrenete ploču datum i vrijeme ponovno postaviti. Također možete koristiti RTC IC DS1307 za očitavanje vremena s Arduinom.
2. Čitanje podataka s DHT11:
DHT11 je senzor za vlagu s temperaturom. Vrijednosti temperature i vlage šalje kao 8-bitne podatke serijski kroz izlazni pin modula. Biblioteka čita ove podatke pomoću serijske funkcije softvera Arduino.
#define DHT11_PIN 7 // Izlazni pin osjetnika spojen je na pin 7 dht DHT; // Objekt senzora imenovan kao DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Ovdje sam spojio izlazni pin na pin 7, kao primjer možete odabrati bilo koji pin koji podržava softverski serijski. Pozivanje DHT.read (pin broj); očitat će vrijednost temperature i vlažnosti i pohraniti je u parametar DHT.temperature odnosno DHT.Humidity . Također provjerite ovo mjerenje temperature Arduino temeljeno na DHT11.
3. Inicijalizacija modula SC kartice:
void Initialize_SDcard () {// provjerite je li kartica prisutna i može li se inicijalizirati: if (! SD.begin (chipSelect)) {Serial.println ("Kartica nije uspjela ili nije prisutna"); // ne radi ništa više: return; } // otvorite datoteku. imajte na umu da istodobno može biti otvorena samo jedna datoteka, // pa ovu morate zatvoriti prije otvaranja druge. Datoteka dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ako je datoteka dostupna, napišite joj: if (dataFile) {dataFile.println ("Datum, Vrijeme, Temperatura, Vlažnost"); // Napišite prvi red excelove datoteke dataFile.close (); }}
Korištenje SD kartice s Arduinom jednostavno je zbog biblioteke SD kartica koja će se prema zadanim postavkama dodati u Arduino IDE. U funkciji inicijalizacije SD kartice stvorit ćemo tekstualnu datoteku pod nazivom "LoggerCD.txt" i napisati prvi redak našeg sadržaja. Ovdje vrijednosti odvajamo pomoću znaka "," kao graničnika. Što znači kad se postavi zarez, to znači da se moramo premjestiti na sljedeću ćeliju u Excelovom listu.
4. Zapisivanje podataka na SD karticu
void Write_SDcard () {// otvori datoteku. imajte na umu da istodobno može biti otvorena samo jedna datoteka, // pa ovu morate zatvoriti prije otvaranja druge. Datoteka dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ako je datoteka dostupna, napišite joj: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Datum pohrane na SD kartici dataFile.print (","); // Prelazak na sljedeći stupac pomoću "," dataFile.print (rtc.getTimeStr ()); // Datum pohrane na SD kartici dataFile.print (","); // Prelazak na sljedeći stupac pomoću "," dataFile.print (DHT.temperature); // Datum pohrane na SD kartici dataFile.print (","); // Prelazak na sljedeći stupac pomoću "," dataFile.print (DHT.humidity); // Datum pohrane na SD kartici dataFile.print (","); // Prelazak na sljedeći stupac pomoću "," dataFile.println (); // Prelazak na kraj retka na sljedeći redak dataFile.close ();// Zatvorimo datoteku} else Serial.println ("OOPS !! Zapisivanje SD kartice nije uspjelo"); }
Kao što je ranije rečeno, namjera nam je spremiti datum, vrijeme, temperaturu i vlažnost na našu SD karticu. Uz pomoć knjižnice DS3231 i biblioteke DHT11, naš će Arduino moći pročitati sva ova četiri parametra i pohraniti ih u sljedeće parametre kao što je prikazano u donjoj tablici
| Datum | rtc.getDateStr ()); | 
| Vrijeme | rtc.getTimeStr ()); | 
| Temperatura | DHT.temperatura | 
| Vlažnost | DHT.vlažnost | 
Sada ove parametre možemo izravno koristiti za njihovo spremanje na SD karticu pomoću linije za ispis
dataFile.print (parametar);
Možete primijetiti da je svaki parametar odvojen zarezom kako bi izgledao čitko i dataFile.println (); koristi se za označavanje kraja retka.
5. Zapisivanje podataka u PLX-DAQ
PLX-DAQ je dodatak za Microsoft Excel koji nam pomaže da zapisujemo vrijednosti iz Arduina izravno u Excel datoteku na našem prijenosnom računalu ili računalu. Ovo mi je osobno najdraže iz dva razloga:
1. Možete istodobno pisati i nadzirati podatke i pruža nam način da ih ucrtamo u grafikone.
2. Za praćenje datuma i vremena ne treba vam RTC modul poput DS3231. Možete jednostavno upotrijebiti datum i vrijeme na vašem prijenosnom računalu / računalu i spremiti ih izravno u Excel.
Da bismo koristili ovaj softver s Arduinom, moramo podatke slati serijski u određenom uzorku, baš poput prikazivanja vrijednosti na serijskom monitoru. U nastavku su objašnjeni ključni redovi:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // briše sve podatke preostale iz prethodnih projekata Serial.println ("LABEL, Date, Time, Temperature, Vlažnost"); // uvijek napiši LABEL, da ga označiš kao prvi redak} void Write_PlxDaq () {Serial.print ("DATA"); // uvijek napiši "DATA" da bi se sljedeće označilo kao Data Serial.print (","); // Prelazak na sljedeći stupac pomoću "," Serial.print ("DATE"); // Datum pohrane na programu Excel Serial.print (","); // Prelazak na sljedeći stupac pomoću "," Serial.print ("TIME"); // Datum pohrane na programu Excel Serial.print (","); // Prelazak na sljedeći stupac pomoću "," Serial.print (DHT.temperature); // Datum pohrane na programu Excel Serial.print (","); // Prelazak na sljedeći stupac pomoću "," Serial.print (DHT.humidity);// Datum pohrane na programu Excel Serial.print (","); // Prelazak na sljedeći stupac pomoću "," Serial.println (); // prelazak kraja retka na sljedeći redak}
Softver može prepoznati ključne riječi poput LABEL, DATA, TIME, DATE itd. Kao što je prikazano u funkciji Initialize, ključna riječ "LABEL" koristi se za pisanje prvog REDA Excel lista. Kasnije u funkciji Write koristimo ključnu riječ "DATA" kako bismo naznačili da sljedeće podatke treba smatrati DATA-om. Da bismo naznačili da se moramo pomaknuti na sljedeći redak, moramo upotrijebiti zarez (","). Da bismo označili kraj reda, moramo poslati Serial.println ();.
Kao što je ranije rečeno, možemo zapisati datum i vrijeme sustava slanjem ključnih riječi „DATUM“ i „VRIJEME“, kako je gore prikazano.
Napomena: Nemojte koristiti serijski monitor kada koristite ovaj PLX_DAQ softver.
Radno objašnjenje:
Rad Arduino Data Loggera je jednostavan. Jednom kad su hardver i softver spremni, vrijeme je da program spališ na svoju Arduino ploču. Čim se vaš program prenese, vrijednosti temperature i vlažnosti počet će se pohranjivati na SD karticu. Morate slijediti korake u nastavku kako biste PLX-DAQ omogućili prijavu u Excel list na računalu.
Korak 1: Otvorite datoteku „Plx-Daq Spreadsheet“ koja je stvorena na vašoj radnoj površini tijekom instalacije.
Korak 2: Ako postoji sigurnosni blok, kliknite Opcije-> Omogući sadržaj -> Završi -> U redu da biste dobili sljedeći zaslon.

Korak 3: Sada odaberite brzinu prijenosa podataka kao "9600" i port na koji je povezan vaš Arduino i kliknite na Connect. Vrijednosti bi se trebale evidentirati kao što je prikazano na donjoj slici.

Možete ostaviti ovaj excel list otvorenim i nadzirati vrijednosti dok se bilježe. Kako se to događa, naša SD kartica također bi sačuvala iste vrijednosti. Jednostavno izvadite SD karticu i otvorite je na računalu kako biste provjerili radi li. U njemu biste trebali pronaći tekstualnu datoteku pod nazivom "LoggerCD.txt" . Kad bi se otvorio, izgledalo bi otprilike ovako.

Ova datoteka ima podatke, ali bilo bi ih teško analizirati na bilježnici. Stoga ga možemo otvoriti u programu Excel kao CSV datoteku (vrijednosti odvojene zarezom), što ga čini učinkovitijim. Otvoriti u excelu
1. Otvorite Excel. Kliknite Datoteka-> Otvori i odaberite "Sve datoteke" u donjem desnom kutu i odaberite "LoggerCD" datoteku sa SD kartice. Otvorit će se čarobnjak za uvoz teksta.
2. Kliknite "Dalje" i odaberite zarez kao graničnik. Ponovno kliknite "Dalje". Zatim Završi.
3. Sada će se vaše vrijednosti otvoriti u Excelovoj datoteci kao što je prikazano dolje

Logirao sam vrijednosti svakih 5 sekundi; možete ih prijaviti za bilo koje željeno vrijeme promjenom funkcije odgode u programu. Za detaljno razumijevanje rada pogledajte video u nastavku.
Nadam se da vam se svidio projekt, ako sumnjate, napišite ih u odjeljku za komentare u nastavku, a ja ću vam pomoći.

Poboljšanje bonusa - bežično bilježenje podataka pomoću Arduina:
Nakon što uspijete do ove točke, s nekoliko napretka i samo dodavanjem nekoliko redaka koda možete bežično bilježiti podatke.
Jednostavno spojite Bluetooth uređaj poput HC-05 i zapišite podatke na PLX-DAQ putem Bluetootha umjesto Serijskog. To je zamijeniti Serial.print (parametar); s BluetoothName.print (parametar); i povežite svoj laptop s Bluetooth modulom, odaberite COM priključak na koji su povezani vaši prijenosnici Bluetooth i Taadaaa…… Ubrzo imate uspostavljen bežični sustav za evidentiranje podataka.

