Ako inžinieri / vývojári sa pri návrhu alebo vylepšovaní systému vždy spoliehame na zhromaždené údaje. Zaznamenávanie údajov a ich analýza je bežnou praxou vo väčšine priemyselných odvetví. Tu budujeme projekt Arduino Data Logger, kde sa dozvieme, ako môžeme zaznamenávať údaje v konkrétnom časovom intervale. Použijeme dosku Arduino na načítanie niektorých údajov (tu teplota, vlhkosť, dátum a čas) a ich súčasné uloženie na SD kartu a do počítača.
Uložené údaje je možné ľahko otvoriť v hárku programu Excel pre ďalšie analýzy. Na udržanie dátumu a času použijeme slávny RTC modul DS3231 a na získanie teploty a vlhkosti použijeme snímač DHT11. Na konci projektu sa dozviete
- Ako prihlásiť údaje na kartu SD s dátumom, časom a hodnotami snímača.
- Ako zapisovať údaje priamo do hárka Excel v počítači pomocou sériovej komunikácie.
Potrebné materiály:
- Nepál
- Arduino UNO (ľubovoľná doska Arduino)
- Snímač teploty DHT11
- Modul RTC DS3231
- Modul SD karty
- SD karta
- Pripojovacie vodiče
- Počítač / notebook
Schéma zapojenia:
Schéma zapojenia tohto projektu záznamníka teploty Arduino je uvedená nižšie.
Ako je znázornené na schéme zapojenia, zapojenia sú veľmi jednoduché, pretože sme ich použili ako moduly, môžeme ich priamo vytvoriť na doske. Pripojenia sú ďalej klasifikované v nasledujúcej tabuľke
Pin Arduino |
Pin modulu |
Snímač teploty - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Von |
Pin 7 |
RTC modul DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Pin A5 |
SDA |
Špendlík A4 |
Modul SD karty |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
Pin 12 |
MOSI |
Pin 11 |
SCK |
Kolík 13 |
CS |
Pin 4 |
Teplotný snímač DHT11 môžete nahradiť ktorýmkoľvek snímačom, z ktorého je potrebné zaznamenávať hodnoty. Môžete skontrolovať LM35 s Arduino na čítanie teploty.
RTC modul DS3231 je prepojený s Arduino pomocou komunikácie I2C (SCL, SDA) a modul SD karty je prepojený pomocou SPI komunikácie (MISO, MOSI, SCK, CS). Kolíky 4 a 7 sú definované ako pin CS a výstupný pin programom Arduino, v prípade potreby ich môžete zmeniť na akýkoľvek iný pin. Predtým sme v projekte Hudobný prehrávač prepojili kartu SD s Arduino.
Vysvetlenie programu Arduino:
Musíme napísať program Arduino, ktorý dokáže nasledujúce.
- Prečítajte si údaje zo snímača DTH11 (alebo akékoľvek iné údaje, ktoré chcete zaznamenať).
- Inicializujte zbernicu I2C na načítanie údajov z modulu RTC.
- Inicializujte zbernicu SPI na prepojenie modulu SD karty s Arduino.
- Uložte dátum, čas, teplotu a vlhkosť na SD kartu.
- Uložte dátum, čas, teplotu a vlhkosť do tabuľky Excel spustenej na počítači / notebooku.
Vyššie uvedené kroky môžu znieť komplikovane, ale sú veľmi ľahké, pretože máme knižnice, ktoré za nás vykonajú ťažkú prácu. Musíte si stiahnuť nasledujúce dve knižnice
- Knižnica senzorov DHT11 od GitHub
- Knižnica modulu RTC DS3231 od spoločnosti Rinky-Dink Electronics
Po stiahnutí knižnice ich pridajte do svojho Arduino IDE podľa nasledujúceho postupu
Skica-> Zahrnúť knižnicu -> Pridať knižnicu.ZIP
Aby sme mohli dáta z Arduina živo prenášať do hárka programu Excel v počítači, musíme si tiež nainštalovať softvér s názvom PLX-DAQ od spoločnosti Parallax Inc. Podľa nasledujúceho odkazu si stiahnite súbor a nainštalujte ich na základe vášho operačného systému. Týmto by sa mal na vašom počítači vytvoriť priečinok s názvom PLS-DAQ. Postaráme sa o to neskôr v našej pracovnej časti.
Teraz po pridaní oboch knižníc a po inštalácii softvéru môžete použiť Kompletný kód (uvedený v dolnej časti tutoriálu) a nahrať ich do svojho Arduina. Snažil som sa čo najviac snažiť, aby bol kód čo najjednoduchší a vysvetlenia sú tiež uvedené v sekciách komentárov. Ďalej vysvetlím dôležité segmenty nižšie.
1. Čítanie údajov z DS3231:
DS3231 je modul RTC (hodiny v reálnom čase). Používa sa na zachovanie dátumu a času pre väčšinu projektov elektroniky. Tento modul má vlastné napájanie z gombíkových článkov, pomocou ktorého udržiava dátum a čas aj po odpojení hlavného napájania alebo po úplnom resetovaní MCU. Akonáhle teda nastavíme dátum a čas v tomto module, bude ho vždy sledovať.
Používanie tohto modulu je veľmi jednoduché kvôli knižnici poskytovanej Arduino.
// Spustenie DS3231 pomocou hardvérového rozhrania DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Inicializuje objekt rtc rtc.begin (); // #### z nasledujúcich riadkov je možné odkomentovať, aby ste nastavili dátum a čas prvýkrát ### / * rtc.setDOW (PIATOK); // Nastaviť deň v týždni na NEDEĽU rtc.setTime (18, 46, 45); // Nastavte čas na 12:00:00 (24h formát) rtc.setDate (6, 30, 2017); // Nastavte dátum na 1. januára 2014 * /}
Poznámka: Pri prvom použití tohto modulu musíte nastaviť dátum a čas. Môžete to urobiť jednoduchým odstránením komentárov, ako je uvedené vyššie, a napísaním dátumu a času. Nezabudnite ich komentovať a nahrať. V opačnom prípade bude dátum a čas nastavený znova. Na čítanie času pomocou Arduina môžete použiť aj RTC IC DS1307.
2. Čítanie údajov z DHT11:
DHT11 je snímač teploty a teploty. Hodnoty teploty a vlhkosti odosiela ako 8-bitové dáta sériovo cez výstupný kolík modulu. Knižnica tieto dáta číta pomocou softvérovej sériovej funkcie Arduina.
#define DHT11_PIN 7 // Výstupný kolík snímača je pripojený k kolíku 7 dht DHT; // Objekt snímača pomenovaný ako DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Tu som pripojil výstupný pin na pin 7, napríklad si môžete zvoliť ľubovoľný pin, ktorý podporuje softvérové sériové číslo. Volanie DHT.read (číslo PIN); načíta hodnotu teploty a vlhkosti a uloží ju do parametra DHT.teplota a DHT.vlhkosť . Skontrolujte tiež toto meranie teploty Arduino založené na DHT11.
3. Inicializácia modulu karty SC:
void Initialize_SDcard () {// zistite, či je karta prítomná a je možné ju inicializovať: if (! SD.begin (chipSelect)) {Serial.println ("Karta zlyhala alebo nie je k dispozícii"); // už nič viac nerobte: return; } // otvoriť súbor. Upozorňujeme, že súčasne možno otvoriť iba jeden súbor, // takže pred otvorením iného musíte tento súbor zavrieť. Súbor dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ak je súbor k dispozícii, napíšeme do neho: if (dataFile) {dataFile.println ("Date, Time, Temperature, Humidity"); // Napíš prvý riadok súboru excelu dataFile.close (); }}
Používanie SD karty s Arduinom je jednoduché kvôli knižnici SD kariet, ktorá bude štandardne pridaná do Arduino IDE. Vo funkcii inicializácie karty SD vytvoríme textový súbor s názvom „LoggerCD.txt“ a napíšeme prvý riadok nášho obsahu. Tu oddeľujeme hodnoty pomocou oddeľovača „,“. To znamená, že keď je umiestnená čiarka, znamená to, že sa musíme presunúť do ďalšej bunky v hárku programu Excel.
4. Zápis dát na SD kartu
void Write_SDcard () {// otvoriť súbor. Upozorňujeme, že súčasne možno otvoriť iba jeden súbor, // takže pred otvorením iného musíte tento súbor zavrieť. Súbor dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ak je súbor k dispozícii, napíšeme do neho: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Uložiť dátum na SD kartu dataFile.print (","); // Presun do nasledujúceho stĺpca pomocou znaku „,“ dataFile.print (rtc.getTimeStr ()); // Uložiť dátum na SD kartu dataFile.print (","); // Presun do nasledujúceho stĺpca pomocou znaku „,“ dataFile.print (DHT.temperature); // Uložiť dátum na SD kartu dataFile.print (","); // Presun do nasledujúceho stĺpca pomocou znaku „,“ dataFile.print (DHT.humidity); // Uložiť dátum na SD kartu dataFile.print (","); // Presun do nasledujúceho stĺpca pomocou znaku „,“ dataFile.println (); // Koniec riadku presun na nasledujúci riadok dataFile.close ();// Zatvorte súbor} else Serial.println ("OOPS !! zápis na SD kartu zlyhal"); }
Ako už bolo povedané, naším zámerom je uložiť dátum, čas, teplotu a vlhkosť na našu SD kartu. Pomocou knižnice DS3231 a knižnice DHT11 bude naše Arduino schopné načítať všetky tieto štyri parametre a uložiť ich do nasledujúcich parametrov, ako je uvedené v tabuľke nižšie
Dátum |
rtc.getDateStr ()); |
Čas |
rtc.getTimeStr ()); |
Teplota |
DHT. Teplota |
Vlhkosť |
DHT.vlhkosť |
Teraz môžeme tieto parametre priamo použiť na ich uloženie na SD kartu pomocou tlačovej linky
dataFile.print (parameter);
Môžete si všimnúť, že každý parameter je oddelený čiarkou, aby vyzeral čitateľne, a dataFile.println (); sa používa na označenie konca riadku.
5. Zápis dát do PLX-DAQ
PLX-DAQ je softvér Microsoft Excel Plug-in, ktorý nám pomáha zapisovať hodnoty z Arduina priamo do súboru Excel na našom notebooku alebo počítači. Toto je môj osobný favorit z dvoch dôvodov:
1. Údaje môžete zapisovať a monitorovať súčasne a poskytuje nám spôsob, ako ich vykresliť ako grafy.
2. Na sledovanie dátumu a času nepotrebujete modul RTC, napríklad DS3231. Môžete jednoducho použiť dátum a čas bežiaci na vašom notebooku alebo počítači a uložiť ich priamo v programe Excel.
Aby sme mohli tento softvér používať s Arduinom, musíme dáta posielať sériovo v špecifickom vzore, rovnako ako zobrazenie hodnoty na sériovom monitore. Kľúčové riadky sú vysvetlené nižšie:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // vymaže všetky údaje, ktoré zostali z predchádzajúcich projektov Serial.println ("LABEL, Date, Time, Temperature, Humidity"); // vždy napíšte LABEL, aby ste ho označili ako prvý riadok} void Write_PlxDaq () {Serial.print ("DATA"); // vždy napíš „DATA“, aby sa nasledujúce údaje identifikovali ako Data Serial.print (","); // Presun do nasledujúceho stĺpca pomocou znaku „,“ Serial.print („DATE“); // Uloženie dátumu na Excel Serial.print (","); // Presun do nasledujúceho stĺpca pomocou znaku „,“ Serial.print („TIME“); // Uloženie dátumu na Excel Serial.print (","); // Presun do nasledujúceho stĺpca pomocou znaku „,“ Serial.print (DHT.temperature); // Uloženie dátumu na Excel Serial.print (","); // Presun do nasledujúceho stĺpca pomocou znaku „,“ Serial.print (DHT.humidity);// Uloženie dátumu na Excel Serial.print (","); // Presun do nasledujúceho stĺpca pomocou znaku „,“ Serial.println (); // Koniec riadku presun na ďalší riadok}
Softvér dokáže rozpoznať kľúčové slová ako LABEL, DATA, TIME, DATE atď. Ako je uvedené vo funkcii Initialize, kľúčové slovo „LABEL“ sa používa na napísanie prvého riadku hárka programu Excel. Neskôr vo funkcii Write použijeme kľúčové slovo „DATA“ na označenie toho, že nasledujúce informácie by sa mali považovať za DATA. Aby sme naznačili, že sa musíme presunúť do nasledujúceho riadku, musíme použiť čiarku („,“). Na označenie konca riadku musíme poslať Serial.println ();.
Ako už bolo povedané, systémový dátum a čas môžeme napísať zaslaním kľúčových slov „DATE“ a „TIME“, ako je uvedené vyššie.
Poznámka: Pri používaní tohto softvéru PLX_DAQ nepoužívajte sériový monitor.
Pracovné vysvetlenie:
Práca s Arduino Data Logger je jednoduchá. Keď je hardvér a softvér pripravený, je čas napáliť program na vašu dosku Arduino. Hneď ako sa program nahrá, vaše hodnoty teploty a vlhkosti sa začnú ukladať na kartu SD. Musíte povoliť PLX-DAQ prihlásiť sa do hárka programu Excel v počítači.
Krok 1: Otvorte súbor „Plx-Daq Spreadsheet“, ktorý bol vytvorený na pracovnej ploche počas inštalácie.
Krok 2: Ak existuje bezpečnostný blok, kliknutím na Možnosti-> Povoliť obsah -> Dokončiť -> OK získate nasledujúcu obrazovku.
Krok 3: Teraz zvoľte prenosovú rýchlosť ako „9600“ a port, ku ktorému je vaše Arduino pripojené, a kliknite na Pripojiť. Vaše hodnoty by sa mali začať zaznamenávať, ako je to znázornené na obrázku nižšie.
Tento hárok programu Excel môžete nechať otvorený a sledovať hodnoty pri jeho zaznamenávaní. Pretože sa to deje, naša SD karta by tiež uložila rovnaké hodnoty. Ak chcete skontrolovať, či funguje, jednoducho vyberte kartu SD a otvorte ju v počítači. Mali by ste v ňom nájsť textový súbor s názvom „LoggerCD.txt“ . Po otvorení by to vyzeralo asi takto.
Tento súbor obsahuje údaje, ale bolo by ťažké ich analyzovať pomocou poznámkového bloku. Preto ho môžeme otvoriť v programe Excel ako súbor CSV (hodnoty oddelené čiarkou), čím sa zefektívni. Ak chcete otvoriť v programe Excel
1. Otvorte program Excel. Kliknite na Súbor-> Otvoriť a v pravom dolnom rohu vyberte „Všetky súbory“ a na SD karte vyberte súbor „LoggerCD“. Otvorí sa sprievodca importom textu.
2. Kliknite na „Ďalej“ a ako oddeľovač vyberte čiarku. Znova kliknite na „Ďalej“. Potom dokončiť.
3. Teraz sa vaše hodnoty otvoria v súbore Excel, ako je uvedené nižšie
Hodnoty som zapisoval každých 5 sekúnd; môžete ich prihlásiť na ľubovoľný požadovaný čas zmenou funkcie oneskorenia v programe. Podrobné informácie o práci nájdete na videu nižšie.
Dúfam, že sa vám projekt páčil, ak máte pochybnosti, napíšte ich do sekcie komentárov nižšie a pomôžem vám.
Vylepšenie bonusu - bezdrôtové zaznamenávanie údajov pomocou Arduina:
Ak ste doteraz uspeli, potom s niekoľkými pokrokmi a jednoduchým pridaním niekoľkých riadkov kódu môžete údaje protokolovať bezdrôtovo.
Jednoducho pripojte zariadenie Bluetooth ako HC-05 a namiesto sériového rozhrania zapisujte údaje do protokolu PLX-DAQ cez Bluetooth. To je nahradiť Serial.print (parameter); s BluetoothName.print (parameter); a pripojte svoj laptop k modulu Bluetooth a vyberte port COM, ku ktorému sú pripojené vaše notebooky, Bluetooth a Taadaaa…… Máte k dispozícii funkčný bezdrôtový systém na zaznamenávanie údajov.