Jako inženýři / vývojáři se vždy spoléháme na shromážděná data, abychom mohli navrhnout nebo vylepšit systém. Zaznamenávání dat a jejich analýza je běžnou praxí ve většině průmyslových odvětví, zde vytváříme projekt Arduino Data Logger Project, kde se naučíme, jak můžeme zaznamenávat data v konkrétním časovém intervalu. Budeme používat desku Arduino ke čtení některých dat (zde teplota, vlhkost, datum a čas) a současně je uložíme na SD kartu a do počítače.
Uložená data lze snadno otevřít v listu Excel pro další analýzy. Abychom udrželi datum a čas, použijeme slavný RTC modul DS3231 a pro získání teploty a vlhkosti použijeme snímač DHT11. Na konci projektu se naučíte
- Jak zaznamenávat data na SD kartu s datem, časem a hodnotami senzoru.
- Jak zapisovat data přímo do listu Excel na PC prostřednictvím sériové komunikace.
Potřebné materiály:
- Nepájivá deska
- Arduino UNO (libovolná deska Arduino)
- Snímač teploty DHT11
- Modul RTC DS3231
- Modul SD karty
- SD karta
- Připojovací vodiče
- Počítač / notebook
Kruhový diagram:
Schéma zapojení tohoto projektu Arduino Temperature Logger je uvedeno níže.
Jak je znázorněno na schématu zapojení, připojení je velmi jednoduché, protože jsme jej použili jako moduly, můžeme je přímo postavit na prkénko. Připojení jsou dále klasifikována v tabulce níže
Pin Arduino |
Pin modulu |
Snímač teploty - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Ven |
Pin 7 |
RTC modul DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Pin A5 |
SDA |
Kolík A4 |
Modul SD karty |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
Kolík 12 |
MOSI |
Kolík 11 |
SCK |
Kolík 13 |
CS |
Pin 4 |
Teplotní senzor DHT11 můžete vyměnit za kterýkoli z vašich senzorů, ze kterého potřebujete zaznamenávat hodnoty. Můžete zkontrolovat LM35 s Arduino pro čtení teploty.
RTC modul DS3231 je propojen s Arduino pomocí komunikace I2C (SCL, SDA) a modul SD karty je propojen pomocí komunikace SPI (MISO, MOSI, SCK, CS). Pin 4 a 7 jsou definovány jako pin CS a výstupní pin programem Arduino, v případě potřeby je můžete změnit na jakýkoli jiný pin. Dříve jsme propojili SD kartu s Arduino v projektu hudebního přehrávače.
Vysvětlení programu Arduino:
Musíme napsat program Arduino, který dokáže následující.
- Načtěte data ze snímače DTH11 (nebo jakákoli jiná data, která chcete zaznamenat).
- Inicializujte sběrnici I2C pro čtení dat z modulu RTC.
- Inicializujte sběrnici SPI na rozhraní modulu SD karty s Arduino.
- Uložte datum, čas, teplotu a vlhkost na SD kartu.
- Uložte datum, čas, teplotu a vlhkost na list aplikace Excel spuštěný v počítači / notebooku.
Výše uvedené kroky mohou znít komplikovaně, ale jsou velmi snadné, protože máme knihovny, které za nás odvádějí těžkou práci. Musíte si stáhnout následující dvě knihovny
- Knihovna senzorů DHT11 od GitHub
- Knihovna modulů RTC DS3231 od společnosti Rinky-Dink Electronics
Jakmile si stáhnete knihovnu, přidejte je do svého Arduino IDE podle následujícího postupu
Skica-> Zahrnout knihovnu -> Přidat knihovnu.ZIP
Abychom mohli živě přenášet data z Arduina do listu aplikace Excel v počítači, musíme také nainstalovat software s názvem PLX-DAQ poskytovaný společností Parallax Inc. Postupujte podle odkazu a stáhněte soubor a nainstalujte jej podle svého operačního systému. To mělo na vašem počítači vytvořit složku s názvem PLS-DAQ. Postaráme se o to později v naší pracovní sekci.
Nyní po přidání obou knihoven a po instalaci softwaru můžete použít Kompletní kód (uvedený ve spodní části tutoriálu) a nahrát je do svého Arduina. Snažil jsem se ze všech sil, aby byl kód co nejjednodušší, a vysvětlení jsou také uvedena v komentářích. Dále vysvětlím důležité segmenty níže.
1. Čtení dat z DS3231:
DS3231 je modul RTC (hodiny reálného času). Používá se k udržení data a času pro většinu projektů elektroniky. Tento modul má vlastní napájení knoflíkových článků, pomocí kterého udržuje datum a čas, i když je odpojeno hlavní napájení nebo došlo k úplnému resetování MCU. Jakmile tedy v tomto modulu nastavíme datum a čas, bude to vždy sledovat.
Používání tohoto modulu je velmi snadné díky knihovně poskytované Arduino.
// Spusťte DS3231 pomocí hardwarového rozhraní DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Inicializovat objekt rtc rtc.begin (); // #### následující řádky lze odkomentovat pro první nastavení data a času ### / * rtc.setDOW (PÁTEK); // Nastavit den v týdnu na NEDĚLE rtc.setTime (18, 46, 45); // Nastavte čas na 12:00:00 (24hodinový formát) rtc.setDate (6, 30, 2017); // Nastavte datum na 1. ledna 2014 * /}
Poznámka: Při prvním použití tohoto modulu musíte nastavit datum a čas. Lze to provést jednoduše odstraněním komentářů, jak je uvedeno výše, a napsáním data a času. Ujistěte se, že jste je komentovali a nahráli, jinak se při každém spuštění karty znovu nastaví datum a čas. Pro čtení času pomocí Arduina můžete také použít RTC IC DS1307.
2. Čtení dat z DHT11:
DHT11 je snímač teploty a vlhkosti. Posílá hodnoty teploty a vlhkosti jako 8bitová data sériově přes výstupní kolík modulu. Knihovna čte tato data pomocí softwarové sériové funkce Arduina.
#define DHT11_PIN 7 // Výstupní pin snímače je připojen k pinu 7 dht DHT; // Objekt senzoru pojmenovaný jako DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Tady jsem připojil výstupní pin na pin 7 jako příklad, můžete si vybrat libovolný pin, který podporuje Software Serial. Volání DHT.read (číslo PIN); přečte hodnotu teploty a vlhkosti a uloží ji do parametru DHT.teplota a DHT.vlhkost . Zkontrolujte také toto měření teploty Arduino založené na DHT11.
3. Inicializace modulu SC karty:
void Initialize_SDcard () {// zjistit, zda je karta přítomna a lze ji inicializovat: if (! SD.begin (chipSelect)) {Serial.println ("Karta selhala nebo není k dispozici"); // nic víc nedělejte: return; } // otevřít soubor. všimněte si, že najednou lze otevřít pouze jeden soubor, // takže tento musíte před otevřením dalšího zavřít. Soubor dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // pokud je soubor k dispozici, zapište jej: if (dataFile) {dataFile.println ("Date, Time, Temperature, Humidity"); // Napište první řádek souboru Excel dataFile.close (); }}
Použití SD karty s Arduino je snadné díky knihovně SD karet, která bude standardně přidána do Arduino IDE. Ve funkci inicializace karty SD vytvoříme textový soubor s názvem „LoggerCD.txt“ a napíšeme první řádek našeho obsahu. Zde oddělujeme hodnoty pomocí oddělovače „,“. To znamená, že když je umístěna čárka, znamená to, že se musíme přesunout na další buňku v listu aplikace Excel.
4. Zápis dat na SD kartu
void Write_SDcard () {// otevřít soubor. všimněte si, že najednou lze otevřít pouze jeden soubor, // takže tento musíte před otevřením dalšího zavřít. Soubor dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // pokud je soubor k dispozici, zapište jej: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Uložení data na SD kartu dataFile.print (","); // Přesunout do dalšího sloupce pomocí "," dataFile.print (rtc.getTimeStr ()); // Uložení data na SD kartu dataFile.print (","); // Přesun do dalšího sloupce pomocí "," dataFile.print (DHT.temperature); // Uložení data na SD kartu dataFile.print (","); // Přesun do dalšího sloupce pomocí "," dataFile.print (DHT.humidity); // Uložení data na SD kartu dataFile.print (","); // Přesun do dalšího sloupce pomocí "," dataFile.println (); // Konec řádku přesun na další řádek dataFile.close ();// Zavřete soubor} else Serial.println ("OOPS !! zápis na SD kartu se nezdařil"); }
Jak již bylo řečeno, naším záměrem je uložit datum, čas, teplotu a vlhkost na naši SD kartu. S pomocí knihovny DS3231 a knihovny DHT11 bude naše Arduino schopné číst všechny tyto čtyři parametry a ukládat je do následujících parametrů, jak je uvedeno v tabulce níže
datum |
rtc.getDateStr ()); |
Čas |
rtc.getTimeStr ()); |
Teplota |
DHT. Teplota |
Vlhkost vzduchu |
DHT. Vlhkost |
Nyní můžeme tyto parametry přímo použít k jejich uložení na SD kartu pomocí tiskové linky
dataFile.print (parametr);
Můžete si všimnout, že každý parametr je oddělen čárkou, aby vypadal čitelně a dataFile.println (); se používá k označení konce řádku.
5. Zápis dat do PLX-DAQ
PLX-DAQ je software Microsoft Excel Plug-in, který nám pomáhá zapisovat hodnoty z Arduina přímo do souboru Excel na našem notebooku nebo počítači. Toto je můj osobní favorit ze dvou důvodů:
1. Data můžete zapisovat a sledovat současně a poskytuje nám způsob, jak je vykreslit jako grafy.
2. Ke sledování data a času nepotřebujete modul RTC, jako je DS3231. Můžete jednoduše použít datum a čas běžící na vašem notebooku / počítači a uložit je přímo do aplikace Excel.
Abychom mohli tento software používat s Arduinem, musíme data posílat sériově v určitém vzoru, jako je zobrazení hodnoty na sériovém monitoru. Klíčové řádky jsou vysvětleny níže:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // vymaže veškerá data zbývající z předchozích projektů Serial.println ("LABEL, Date, Time, Temperature, Humidity"); // vždy napište LABEL, abyste jej označili jako první řádek} void Write_PlxDaq () {Serial.print ("DATA"); // vždy napište „DATA“, abyste následující identifikovali jako Data Serial.print (","); // Přesunout do dalšího sloupce pomocí "," Serial.print ("DATUM"); // Uložení data na Excel Serial.print (","); // Přesun do dalšího sloupce pomocí "," Serial.print ("TIME"); // Uložení data na Excel Serial.print (","); // Přesun do dalšího sloupce pomocí "," Serial.print (DHT.temperature); // Uložení data na Excel Serial.print (","); // Přesunout do dalšího sloupce pomocí "," Serial.print (DHT.humidity);// Uložení data na Excel Serial.print (","); // Přesun do dalšího sloupce pomocí "," Serial.println (); // Konec řádku přesun do dalšího řádku}
Software dokáže rozpoznat klíčová slova jako LABEL, DATA, TIME, DATE atd. Jak je znázorněno ve funkci Initialize, klíčové slovo „LABEL“ se používá k napsání prvního ŘÁDKU listu aplikace Excel. Později ve funkci Write použijeme klíčové slovo „DATA“ k označení, že následující informace by měly být považovány za DATA. Abychom naznačili, že se musíme přesunout na další řádek, musíme použít čárku („,“). Abychom označili konec řádku, musíme poslat Serial.println ();.
Jak již bylo řečeno, můžeme napsat systémové datum a čas odesláním klíčových slov „DATE“ a „TIME“, jak je uvedeno výše.
Poznámka: Pokud používáte tento software PLX_DAQ, nepoužívejte sériový monitor.
Pracovní vysvětlení:
Práce s Arduino Data Logger je jednoduchá. Jakmile je hardware a software připraven, je čas vypálit program do vaší desky Arduino. Jakmile se váš program nahraje, vaše hodnoty teploty a vlhkosti se začnou ukládat na SD kartu. Chcete-li povolit PLX-DAQ přihlásit se do listu aplikace Excel v počítači, musíte postupovat podle následujících kroků.
Krok 1: Otevřete soubor „Plx-Daq Spreadsheet“, který byl vytvořen na ploše během instalace.
Krok 2: Pokud existuje bezpečnostní blok, kliknutím na Možnosti-> Povolit obsah -> Dokončit -> OK zobrazte následující obrazovku.
Krok 3: Nyní vyberte přenosovou rychlost jako „9600“ a port, ke kterému je vaše Arduino připojeno, a klikněte na Připojit. Vaše hodnoty by se měly začít protokolovat, jak je znázorněno na obrázku níže.
Tento list aplikace Excel můžete nechat otevřený a sledovat hodnoty při jejich protokolování. Protože se to děje, naše SD karta by také uložila stejné hodnoty. Chcete-li zkontrolovat, zda funguje, jednoduše vyjměte kartu SD a otevřete ji v počítači. Měli byste v něm najít textový soubor s názvem „LoggerCD.txt“ . Po otevření by to vypadalo nějak takto.
Tento soubor obsahuje data, ale bylo by těžké je analyzovat pomocí poznámkového bloku. Z tohoto důvodu jej můžeme otevřít v aplikaci Excel jako soubor CSV (hodnoty oddělené čárkami), čímž bude efektivnější. Chcete-li otevřít v aplikaci Excel
1. Otevřete Excel. Klikněte na Soubor-> Otevřít a vyberte „Všechny soubory“ v pravém dolním rohu a vyberte soubor „LoggerCD“ z SD karty. Otevře se průvodce importem textu.
2. Klikněte na „Další“ a jako oddělovač vyberte čárku. Znovu klikněte na „Další“. Pak dokončete.
3. Nyní budou vaše hodnoty otevřeny v souboru Excel, jak je uvedeno níže
Hodnoty jsem zaznamenával každých 5 sekund; můžete je přihlásit na libovolný požadovaný čas změnou funkce zpoždění v programu. Podrobné pochopení práce naleznete ve videu níže.
Doufám, že se vám projekt líbil, pokud máte pochybnosti, napište je do níže uvedené sekce komentářů a já vám pomůžu.
Vylepšení bonusu - bezdrátové protokolování dat pomocí Arduina:
Jakmile jste uspěli až do tohoto bodu, pak s několika pokroky a pouhým přidáním několika řádků kódu můžete bezdrátově protokolovat data.
Jednoduše připojte zařízení Bluetooth, jako je HC-05, a zapište data do PLX-DAQ přes Bluetooth namísto sériového připojení. To je nahradit Serial.print (parametr); s BluetoothName.print (parametr); a připojte svůj notebook k modulu Bluetooth a vyberte port COM, ke kterému je váš notebook připojen Bluetooth, a Taadaaa…… Máte funkční bezdrátový systém protokolování dat v žádném okamžiku.