Kot inženirji / razvijalci se pri načrtovanju ali izboljšanju sistema vedno zanašamo na zbrane podatke. Snemanje podatkov in njihova analiza je običajna praksa v večini panog. Tu gradimo Arduino Data Logger Project, kjer se bomo naučili, kako lahko zapisujemo podatke v določenem časovnem intervalu. Z ploščo Arduino bomo prebrali nekatere podatke (tukaj temperatura, vlažnost, datum in čas) in jih hkrati shranili na SD kartico in računalnik.
Shranjene podatke lahko enostavno odprete v Excelovem listu za nadaljnje analize. Za vzdrževanje datuma in ure bomo uporabili znameniti RTC modul DS3231, za doseganje temperature in vlažnosti pa senzor DHT11. Na koncu projekta se boste naučili
- Kako prijaviti podatke na kartico SD z datumom, časom in vrednostmi senzorja.
- Kako zapisati podatke neposredno v Excel Sheet na osebnem računalniku prek serijske komunikacije.
Potrebni materiali:
- Breadboard
- Arduino UNO (katera koli plošča Arduino)
- DHT11 Temperaturni senzor
- Modul DS3231 RTC
- Modul SD kartice
- sD kartice
- Priključne žice
- Računalnik / prenosni računalnik
Shema vezja:
Shema vezja za ta projekt Arduino Temperature Logger je prikazana spodaj.
Kot je prikazano v vezju, so povezave zelo preproste, saj smo jih uporabili kot module, ki jih lahko neposredno zgradimo na plošči. Povezave so nadalje razvrščene v spodnji tabeli
Arduino Pin |
Zatič modula |
Temperaturni senzor - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Ven |
Zatič 7 |
RTC modul DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Zatič A5 |
SDA |
Zatič A4 |
Modul SD kartice |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
Zatič 12 |
MOSI |
Zatič 11 |
SCK |
Zatič 13 |
CS |
Zatič 4 |
Senzor temperature DHT11 lahko zamenjate s katerim koli senzorjem, iz katerega morate zapisovati vrednosti. LM35 lahko preverite pri Arduinu, da odčita temperaturo.
Modul RTC DS3231 je povezan z Arduinom z uporabo komunikacije I2C (SCL, SDA), modul kartice SD pa s komunikacijo SPI (MISO, MOSI, SCK, CS). Zatiči 4 in 7 so v programu Arduino definirani kot zatiči CS in izhodni zatiči, po potrebi jih lahko spremenite v kateri koli drug. Pred tem smo kartico SD povezali z Arduino v projektu Music player.
Pojasnilo programa Arduino:
Napisati moramo program Arduino, ki lahko naredi naslednje.
- Preberite podatke s senzorja DTH11 (ali katere koli druge podatke, ki jih želite prijaviti).
- Inicializirajte vodilo I2C za branje podatkov iz modula RTC.
- Inicializirajte vodilo SPI, da povežete modul kartice SD z Arduinom.
- Datum, čas, temperaturo in vlažnost shranite na kartico SD.
- Datum, čas, temperaturo in vlažnost shranite v Excelovem listu, ki se izvaja v računalniku / prenosnem računalniku.
Zgornji koraki se morda zdijo zapleteni, vendar so zelo enostavni, saj imamo knjižnice težko delo. Naložiti morate naslednji dve knjižnici
- Knjižnica senzorjev DHT11 podjetja GitHub
- Knjižnica modulov DS3231 RTC podjetja Rinky-Dink Electronics
Ko prenesete knjižnico, jih dodajte v svoj Arduino IDE tako, da sledite
Skica-> Vključi knjižnico -> Dodaj knjižnico.ZIP
Če želite podatke iz Arduina živahno posredovati v Excelov list v računalniku, bomo morali namestiti tudi programsko opremo PLX-DAQ, ki jo je zagotovila Parallax Inc. Sledite povezavi, da prenesete datoteko in jih namestite glede na vaš operacijski sistem. To bi moralo ustvariti mapo z imenom PLS-DAQ na namizju. Za to bomo poskrbeli kasneje v naši delovni rubriki.
Zdaj po dodajanju obeh knjižnic in po namestitvi programske opreme lahko uporabite celotno kodo (podano na dnu vadnice) in ju naložite v svoj Arduino. Po najboljših močeh sem se trudil, da je koda čim bolj enostavna, pojasnila pa so podana tudi v oddelkih za komentarje. Nadalje bom spodaj razložil pomembne segmente.
1. Branje podatkov iz DS3231:
DS3231 je RTC (Real Time Clock) modul. Uporablja se za vzdrževanje datuma in ure za večino projektov Elektronika. Ta modul ima lastno napajalno celico, s katero ohranja datum in uro, tudi če je glavno napajanje odvzeto ali je MCU prišlo do trde ponastavitve. Torej, ko bomo v tem modulu nastavili datum in uro, ga bo vedno spremljal.
Uporaba tega modula je zelo enostavna zaradi knjižnice, ki jo ponuja Arduino.
// Zaženite DS3231 s pomočjo vmesnika strojne opreme DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Inicializirajte rtc objekt rtc.begin (); // #### naslednje vrstice lahko nekomentiramo, da prvič nastavimo datum in uro ### / * rtc.setDOW (PETEK); // Nastavi Dan v tednu na NEDELJA rtc.setTime (18, 46, 45); // nastavimo čas na 12:00:00 (24-urna oblika) rtc.setDate (6, 30, 2017); // Nastavite datum 1. januarja 2014 * /}
Opomba: Ko prvič uporabljate ta modul, morate nastaviti datum in uro. To lahko storite tako, da zgoraj omenjene komentarje preprosto odstranite in zapišete datum in uro. Poskrbite, da jih boste komentirali in naložili, sicer bodo vsakič, ko zaženete ploščo, datum in čas znova nastavljeni. Za odčitavanje časa z Arduinom lahko uporabite tudi RTC IC DS1307.
2. Branje podatkov iz DHT11:
DHT11 je senzor vlažnosti temperature. Vrednosti temperature in vlage pošilja kot 8-bitne podatke zaporedno skozi izhodni zatič modula. Knjižnica te podatke bere z uporabo programske serijske funkcije Arduino.
#define DHT11_PIN 7 // Izhodni zatič senzorja je povezan z zatičem 7 dht DHT; // Senzorni objekt, imenovan kot DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Tu sem izhodni zatič priključil na zatič 7, saj lahko na primer izberete kateri koli zatič, ki podpira programsko serijo. Klicanje DHT.read (pin številka); bo odčitala vrednost temperature in vlažnosti ter jo shranila v parametru DHT.temperature oziroma DHT.Humidity . Preverite tudi to merjenje temperature Arduino na osnovi DHT11.
3. Inicializacija modula kartice SC:
void Initialize_SDcard () {// preverite, ali je kartica prisotna in jo je mogoče inicializirati: if (! SD.begin (chipSelect)) {Serial.println ("Kartica ni uspela ali ni prisotna"); // ne naredi nič več: return; } // odpre datoteko. upoštevajte, da je naenkrat mogoče odpreti samo eno datoteko //, zato morate to datoteko zapreti, preden odprete drugo. Datoteka dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // če je datoteka na voljo, ji zapišite: if (dataFile) {dataFile.println ("Datum, čas, temperatura, vlažnost"); // Napišite prvo vrstico datoteke excel dataFile.close (); }}
Uporaba kartice SD z Arduinom je enostavna zaradi knjižnice kartic SD, ki bo privzeto dodana v IDE Arduino. V funkciji inicializacije kartice SD bomo ustvarili besedilno datoteko z imenom »LoggerCD.txt« in napisali prvo vrstico naše vsebine. Tu ločimo vrednosti tako, da za ločilo uporabimo »,«. Ko pomeni vejico, pomeni, da se moramo premakniti v naslednjo celico na Excelovem listu.
4. Zapisovanje podatkov na kartico SD
void Write_SDcard () {// odpre datoteko. upoštevajte, da je naenkrat mogoče odpreti samo eno datoteko //, zato morate to datoteko zapreti, preden odprete drugo. Datoteka dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // če je datoteka na voljo, ji zapišite: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Datum shranjevanja na kartici SD dataFile.print (","); // Premakni se na naslednji stolpec z uporabo "," dataFile.print (rtc.getTimeStr ()); // Datum shranjevanja na kartici SD dataFile.print (","); // Premakni se na naslednji stolpec z uporabo "," dataFile.print (DHT.temperature); // Datum shranjevanja na kartici SD dataFile.print (","); // Premakni se na naslednji stolpec z uporabo "," dataFile.print (DHT.humidity); // Datum shranjevanja na kartici SD dataFile.print (","); // Premakni se na naslednji stolpec z uporabo "," dataFile.println (); // Konec vrstice se premakne na naslednjo vrstico dataFile.close ();// Zaprite datoteko} else Serial.println ("OOPS !! Pisanje kartice SD ni uspelo"); }
Kot smo že omenili, je naš namen shraniti datum, čas, temperaturo in vlažnost na našo SD kartico. S pomočjo knjižnice DS3231 in knjižnice DHT11 bo naš Arduino sposoben prebrati vse te štiri parametre in jih shraniti v naslednje parametre, kot je prikazano v spodnji tabeli
Datum |
rtc.getDateStr ()); |
Čas |
rtc.getTimeStr ()); |
Temperatura |
DHT.temperatura |
Vlažnost |
DHT.vlažnost |
Zdaj lahko te parametre neposredno uporabimo za shranjevanje na kartico SD s pomočjo tiskalne vrstice
dataFile.print (parameter);
Opazite lahko, da je vsak parameter ločen z vejico, da je videti čitljiv, in z dataFile.println (); se uporablja za označevanje konca vrstice.
5. Zapisovanje podatkov v PLX-DAQ
PLX-DAQ je vtična programska oprema Microsoft Excel, ki nam pomaga zapisovati vrednosti iz Arduina neposredno v Excel datoteko na prenosnem računalniku ali računalniku. To je moj osebni favorit iz dveh razlogov:
1. Podatke lahko pišete in spremljate hkrati in nam omogoča, da jih narišemo v grafikone.
2. Za sledenje datuma in ure ne potrebujete modula RTC, kot je DS3231. Lahko preprosto uporabite datum in čas, ki se izvajata v prenosnem računalniku / računalniku, in jih shranite neposredno v Excel.
Za uporabo te programske opreme z Arduinom moramo podatke serijsko pošiljati po določenem vzorcu, tako kot prikazuje vrednost na serijskem monitorju. Ključne vrstice so razložene spodaj:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // izbriše vse podatke, ki so ostali iz prejšnjih projektov Serial.println ("LABEL, Date, Time, Temperature, Vlažnost"); // vedno napiši LABEL, da ga označiš kot prvo vrstico} void Write_PlxDaq () {Serial.print ("DATA"); // vedno napišite "DATA", da označite naslednje kot Data Serial.print (","); // Premakni se na naslednji stolpec z uporabo "," Serial.print ("DATE"); // Datum shranjevanja v Excelu Serial.print (","); // Premakni se na naslednji stolpec z uporabo "," Serial.print ("TIME"); // Datum shranjevanja v Excelu Serial.print (","); // Premakni se na naslednji stolpec z uporabo "," Serial.print (DHT.temperature); // Datum shranjevanja v Excelu Serial.print (","); // Premakni se na naslednji stolpec z uporabo "," Serial.print (DHT.humidity);// Datum shranjevanja v Excelu Serial.print (","); // Premakni se na naslednji stolpec z uporabo "," Serial.println (); // konec vrstice se premakne v naslednjo vrstico}
Programska oprema lahko prepozna ključne besede, kot so LABEL, DATA, TIME, DATE itd. Kot je prikazano v funkciji Initialize, se s ključno besedo »LABEL« zapiše prvi RED v Excelovem listu. Kasneje v funkciji Write uporabljamo ključno besedo "DATA", da označimo, da je treba naslednje podatke obravnavati kot DATA. Za označitev, da se moramo premakniti v naslednjo vrstico, moramo uporabiti vejico (“,”). Za označitev konca vrstice moramo poslati Serial.println ();.
Kot smo že omenili, lahko sistemski datum in čas zapišemo s pošiljanjem ključnih besed »DATUM« in »ČAS«, kot je prikazano zgoraj.
Opomba: Pri uporabi te programske opreme PLX_DAQ ne uporabljajte serijskega monitorja.
Delovna razlaga:
Delo Arduino Data Loggerja je preprosto. Ko sta strojna in programska oprema pripravljeni, je čas, da zapišete program na Arduino Board. Takoj, ko se program naloži, se bodo vaše vrednosti temperature in vlažnosti začele shranjevati na kartici SD. Sledite spodnjim korakom, da PLX-DAQ omogočite prijavo na Excelov list v računalniku.
1. korak: Odprite datoteko »Plx-Daq Spreadsheet«, ki je bila ustvarjena na namizju med namestitvijo.
2. korak: Če obstaja varnostni blok, kliknite Možnosti-> Omogoči vsebino -> Dokončaj -> V redu, da se prikaže naslednji zaslon.
3. korak: Zdaj izberite hitrost prenosa kot "9600" in vrata, na katera je povezan vaš Arduino, in kliknite Poveži. Vaše vrednosti bi se morale začeti zapisovati, kot je prikazano na spodnji sliki.
Ta excel list lahko pustite odprt in spremljate vrednosti, ko se zabeležijo. Ker se to dogaja, bi tudi naša kartica SD shranila enake vrednosti. Če želite preveriti, ali deluje, preprosto odstranite kartico SD in jo odprite v računalniku. V njem bi morali najti besedilno datoteko z imenom "LoggerCD.txt" . Ko se odpre, bi bilo videti nekako tako.
Ta datoteka vsebuje podatke, vendar bi jih bilo težko analizirati v beležki. Zato ga lahko v Excelu odpremo kot datoteko CSV (vrednosti, ločene z vejico), s čimer postane učinkovitejša. Če želite odpreti v Excelu
1. Odprite Excel. Kliknite Datoteka-> Odpri in v spodnjem desnem kotu izberite »Vse datoteke« in na kartici SD izberite datoteko »LoggerCD«. S tem se odpre čarovnik za uvoz besedila.
2. Kliknite »Naprej« in izberite vejico kot ločilo. Ponovno kliknite "Naprej". Potem Končaj.
3. Zdaj se bodo vaše vrednosti odprle v Excelovi datoteki, kot je prikazano spodaj
Vrednosti sem zapisoval vsakih 5 sekund; lahko jih prijavite za poljuben čas s spreminjanjem funkcije zakasnitve v programu. Za podrobnejše razumevanje dela si oglejte spodnji video.
Upam, da vam je bil projekt všeč, če imate kakršen koli dvom, jih napišite v spodnji odsek za komentarje in pomagal vam bom.
Izboljšanje bonusa - brezžično beleženje podatkov z uporabo Arduina:
Ko ste uspeli do te točke, lahko z nekaj napredki in samo z dodajanjem nekaj vrstic kode podatke brezžično prijavite.
Preprosto povežite Bluetooth napravo, kot je HC-05, in podatke zapišite v PLX-DAQ prek Bluetootha namesto prek Serial. To je zamenjava Serial.print (parameter); z BluetoothName.print (parameter); in povežite svoj prenosni računalnik z modulom Bluetooth, izberite vrata COM, na katera je povezan prenosni računalnik Bluetooth, in Taadaaa…… V hipu imate vzpostavljen brezžični sistem za beleženje podatkov.