Mérnökökként / fejlesztőként mindig az összegyűjtött adatokra támaszkodunk a rendszer tervezéséhez vagy fejlesztéséhez. Az adatok rögzítése és elemzése a legtöbb iparágban bevett gyakorlat, itt építjük fel az Arduino Data Logger Project-et, ahol megtudhatjuk, hogyan tudjuk naplózni az adatokat egy meghatározott időközönként. Arduino táblát használunk néhány adat (itt hőmérséklet, páratartalom, dátum és idő) kiolvasására, és egyidejűleg SD-kártyára és a számítógépre történő mentésére.
A mentett adatok könnyen elemezhetők egy Excel lapon további elemzések céljából. A dátum és az idő fenntartásához a híres DS3231 RTC modult, a hőmérséklet és páratartalom megszerzéséhez pedig a DHT11 érzékelőt fogjuk használni. A projekt végén megtanulja
- Hogyan lehet naplózni az adatokat az SD kártyára Dátum, Idő és érzékelő értékekkel.
- Hogyan írhatunk adatokat közvetlenül PC-s Excel-lapra soros kommunikációval.
Szükséges anyagok:
- Kenyérlemez
- Arduino UNO (bármilyen Arduino tábla)
- DHT11 hőmérséklet-érzékelő
- DS3231 RTC modul
- SD kártya modul
- SD kártya
- Csatlakozó vezetékek
- Számítógép / laptop
Kördiagramm:
Az Arduino Temperature Logger projekt áramköri diagramja az alábbiakban látható.
Amint az a kapcsolási rajzon látható, a csatlakozások nagyon egyszerűek, mivel modulként használtuk őket, és közvetlenül egy kenyérlapra építhetjük őket. A csatlakozásokat az alábbi táblázat tovább osztályozza
Arduino Pin |
Modul csap |
Hőmérséklet-érzékelő - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Ki |
7. tű |
RTC modul DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
A5 tű |
SDA |
PIN-kód A4 |
SD kártya modul |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
12. tű |
MOSI |
11. tű |
SCK |
13. tű |
CS |
4. tű |
Cserélheti a DHT11 hőmérséklet-érzékelőt bármelyik érzékelőjére, amelyről naplóznia kell az értékeket. Az LM35-t az Arduino segítségével ellenőrizheti a hőmérséklet leolvasásához.
A DS3231 RTC modul az I2C kommunikáció (SCL, SDA) és az SD kártya modul az SPI kommunikáció (MISO, MOSI, SCK, CS) segítségével kapcsolódik az Arduinóhoz. Az Arduino program a 4-es és 7-es csapokat CS-ként és kimeneti tűként definiálja. Bármelyik másik csapra szükség esetén megváltoztathatja őket. Korábban csatlakoztattuk az SD-kártyát az Arduino-hoz a Zenelejátszó projektben.
Az Arduino program magyarázata:
Meg kell írnunk az Arduino programot, amely a következőket tudja megtenni.
- Olvassa el a DTH11 érzékelő adatait (vagy bármely más adatot, amelyet naplózni szeretne).
- Inicializálja az I2C buszt az adatok RTC modulból történő olvasásához.
- Inicializálja az SPI buszt az SD-kártya modul és az Arduino összekapcsolására.
- Tárolja a dátumot, az időt, a hőmérsékletet és a páratartalmat az SD-kártyára.
- Tárolja a dátumot, az időt, a hőmérsékletet és a páratartalmat egy számítógépen / laptopon futó Excel lapon.
A fenti lépések bonyolultnak tűnhetnek, de nagyon egyszerűek, mivel a könyvtáraknak megvan a nehéz feladat helyettünk. Töltse le a következő két könyvtárat
- DHT11 érzékelő könyvtár a GitHub-tól
- DS3231 RTC modul könyvtár a Rinky-Dink Electronics cégtől
Miután letöltötte a könyvtárat, kövesse őket, és adja hozzá őket Arduino IDE-jéhez
Vázlat-> Könyvtár hozzáadása ->.ZIP könyvtár hozzáadása
Ahhoz, hogy az adatokat az Arduino élénken továbbítsa egy számítógépes Excel-lapba, telepítenünk kell a Parallax Inc. által biztosított PLX-DAQ nevű szoftvert is. Kövesse a linket a fájl letöltéséhez és telepítéséhez az operációs rendszere alapján. Ezzel létre kellett hoznia egy PLS-DAQ nevű mappát az asztalon. Később a munkarovatunkban gondoskodunk róla.
Miután mindkét könyvtárat hozzáadta és a szoftvert telepítette, használhatja a teljes kódot (az oktatóanyag végén található), és feltöltheti azokat az Arduino-ra. Igyekeztem mindent megtenni azért, hogy a kód a lehető legegyszerűbb legyen, és a magyarázatokat a megjegyzés szakaszokban is megadom. Az alábbiakban ismertetem a fontos szegmenseket.
1. Adatok olvasása a DS3231-től:
A DS3231 egy RTC (Real Time Clock) modul. A legtöbb elektronikai projekt dátumának és idejének fenntartására szolgál. Ennek a modulnak saját érmecellás tápegysége van, amely segítségével megtartja a dátumot és az időt akkor is, ha a fő áramellátás megszűnik, vagy ha az MCU kemény visszaállítással megy végbe. Tehát miután beállítottuk a dátumot és az időt ebben a modulban, mindig nyomon fogja követni.
Ennek a modulnak a használata nagyon egyszerű az Arduino által biztosított könyvtár miatt.
// Inicializálja a DS3231-et a DS3231 rtc (SDA, SCL) hardveres felületen; void Initialize_RTC () {// Az rtc objektum inicializálása rtc.begin (); // #### a következő sorok nem kommentálhatók a dátum és az idő első beállításához ### / * rtc.setDOW (FRIDAY); // A hét napjának beállítása VASÁRNAP rtc.setTime (18, 46, 45); // Állítsa be az időt 12:00:00 (24 órás formátum) rtc.setDate (6, 30, 2017); // állítsa a dátumot 2014. január 1-jére * /}
Megjegyzés: A modul első használatakor be kell állítania a dátumot és az időt. Megtehető úgy, hogy egyszerűen eltávolítja a megjegyzéseket a fent említettek szerint, és megírja a dátumot és az időt. Ügyeljen arra, hogy visszajelezze őket, és feltöltse, különben a tábla futtatásakor a dátum és az idő újra be lesz állítva. Az RTC IC DS1307 IC-t is használhatja az idő leolvasására az Arduino segítségével.
2. A DHT11 adatainak olvasása:
A DHT11 egy hőmérséklet-érzékelő páratartalom-érzékelő. A hőmérséklet és a páratartalom értékeit 8 bites adatként sorban küldi a modul kimeneti tűjén keresztül. A könyvtár ezeket az adatokat az Arduino szoftveres soros funkciójának használatával olvassa el.
#define DHT11_PIN 7 // Az érzékelő kimeneti csatlakozója csatlakozik a 7-es csaphoz dht DHT; // DHT nevű érzékelőobjektum void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Itt csatlakoztattam a kimeneti tűt a 7-es tűhöz, például kiválaszthat bármelyik csapot, amely támogatja a Software Serialt. DHT.read (PIN-szám) hívása ; kiolvassa a hőmérséklet és a páratartalom értékét, és eltárolja a DHT.temperature és a DHT.Humidity paraméterekben. Ellenőrizze ezt a DHT11 alapú Arduino hőmérsékletmérést is.
3. Az SC kártya modul inicializálása:
void Initialize_SDcard () {// nézze meg, hogy a kártya van-e és inicializálható-e: if (! SD.begin (chipSelect)) {Serial.println ("A kártya nem sikerült, vagy nincs"); // ne csinálj többet: return; } // nyissa meg a fájlt. vegye figyelembe, hogy egyszerre csak egy fájl nyitható meg, // ezért ezt bezárnia kell, mielőtt megnyitná a másikat. File dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ha a fájl elérhető, írjon rá: if (dataFile) {dataFile.println ("Dátum, idő, hőmérséklet, páratartalom"); // Írja az dataFile.close () excel fájl első sorát; }}
Az Arduino SD-kártyájának használata egyszerű az SD-kártya könyvtár miatt, amely alapértelmezés szerint hozzáadódik az Arduino IDE-hez. Az SD-kártya inicializálása funkcióban létrehozunk egy „LoggerCD.txt” nevű szövegfájlt, és megírjuk tartalmunk első sorát. Itt választjuk el az értékeket úgy, hogy elválasztójelként „,” -t használunk. A vessző elhelyezése azt jelenti, hogy át kell lépnünk az Excel lap következő cellájába.
4. Adatok írása SD-kártyára
void Write_SDcard () {// nyissa meg a fájlt. vegye figyelembe, hogy egyszerre csak egy fájl nyitható meg, // ezért ezt bezárnia kell, mielőtt megnyitná a másikat. File dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // ha a fájl elérhető, írjon rá: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Dátum tárolása az SD-kártyán dataFile.print (","); // Ugrás a következő oszlopra a "," dataFile.print (rtc.getTimeStr ()) használatával; // Dátum tárolása az SD-kártyán dataFile.print (","); // Ugrás a következő oszlopra a "," dataFile.print (DHT.temperature) használatával; // Dátum tárolása az SD-kártyán dataFile.print (","); // Ugrás a következő oszlopra a "," dataFile.print (DHT.nedvesség) használatával; // Dátum tárolása az SD-kártyán dataFile.print (","); // Ugrás a következő oszlopra a "," dataFile.println () használatával; // Sor vége lépés a következő sorra dataFile.close ();// Zárja be a fájlt} else Serial.println ("OOPS !! Az SD-kártya írása nem sikerült"); }
Mint korábban említettük, az a szándékunk, hogy SD-kártyánkra mentsük a dátumot, az időt, a hőmérsékletet és a páratartalmat. A DS3231 könyvtár és a DHT11 könyvtár segítségével az Arduino képes lesz mind a négy paraméter kiolvasására és tárolására a következő paraméterekbe, az alábbi táblázat szerint
Dátum |
rtc.getDateStr ()); |
Idő |
rtc.getTimeStr ()); |
Hőfok |
DHT. Hőmérséklet |
páratartalom |
DHT. Páratartalom |
Most közvetlenül felhasználhatjuk ezeket a paramétereket az SD-kártyára a nyomtatási sor segítségével
dataFile.print (paraméter);
Észreveheti, hogy az egyes paramétereket vessző választja el, hogy olvasható legyen, és egy dataFile.println (); a vonal végének jelzésére szolgál.
5. Adatok írása a PLX-DAQ-ra
A PLX-DAQ a Microsoft Excel Plug-in szoftver, amely segítséget nyújt számunkra, hogy az Arduino-tól az értékeket közvetlenül egy Laptop vagy PC-n lévő Excel fájlba írjuk. Ez a személyes kedvencem két ok miatt:
1. Egyszerre írhat és figyelhet az adatokról, és lehetőséget nyújt számunkra, hogy grafikonként ábrázoljuk őket.
2. A dátum és idő nyomon követéséhez nincs szüksége RTC-modulra, mint a DS3231. Egyszerűen használhatja a laptopon / számítógépen futó dátumot és időt, és közvetlenül az Excelbe mentheti őket.
Ahhoz, hogy ezt a szoftvert az Arduino-val együtt használhassuk, az adatokat sorban kell küldenünk egy meghatározott mintában, ugyanúgy, mint az érték megjelenítése a soros monitoron. A legfontosabb sorokat az alábbiakban ismertetjük:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // törli a korábbi projektekből maradt adatokat Serial.println ("LABEL, Dátum, Idő, Hőmérséklet, Páratartalom"); // mindig írja a CÍMKÉT, első sorként jelölve} void Write_PlxDaq () {Serial.print ("DATA"); // mindig írja a "DATA" -t, hogy a következőket azonosítsa Data Serial.print (",") néven; // Ugrás a következő oszlopra a "," Sorozatprint ("DATE") használatával; // Tárolás dátuma az Excel Serial.print (","); // Ugrás a következő oszlopra a "," Sorozatprint ("TIME") használatával; // Tárolás dátuma az Excel Serial.print (","); // Ugrás a következő oszlopra a "," Sorozatprint (DHT.hőmérséklet) használatával; // Tárolás dátuma az Excel Serial.print (","); // Ugrás a következő oszlopra a "," Sorozatprint (DHT.nedvesség) használatával;// Tárolás dátuma az Excel Serial.print (","); // Ugrás a következő oszlopra a "," Serial.println () használatával; // Sor vége lépés a következő sorra}
A szoftver felismeri az olyan kulcsszavakat, mint a LABEL, DATA, TIME, DATE stb. Amint az az Initialize funkcióban szerepel, a „LABEL” kulcsszót használják az Excel lap első sorának megírásához. Később az Írás funkcióban a „DATA” kulcsszót használjuk annak jelzésére, hogy az alábbi információkat DATA-nak kell tekinteni. Annak jelzésére, hogy a következő sorra kell lépnünk, vesszőt kell használnunk („,”). A sor végének jelzéséhez el kell küldenünk egy Serial.println ();.
Mint korábban említettük, a rendszer dátumát és idejét megírhatjuk a „DATE” és „TIME” kulcsszavak elküldésével a fentiek szerint.
Megjegyzés: Ne használja a soros monitort, ha ezt a PLX_DAQ szoftvert használja.
Munka magyarázat:
Az Arduino Data Logger működése egyszerű. Miután a hardver és a szoftver készen áll, itt az ideje, hogy beírja a programot az Arduino Boardba. Amint a program feltöltődik, a hőmérséklet és a páratartalom értékei elkezdenek tárolni az SD-kártyán. Kövesse az alábbi lépéseket annak engedélyezéséhez, hogy a PLX-DAQ bejelentkezhessen az Excel lapba a számítógépen.
1. lépés: Nyissa meg a telepítés során az asztalon létrehozott „Plx-Daq Spreadsheet” fájlt.
2. lépés: Ha van biztonsági blokk, kattintson az Opciók-> A tartalom engedélyezése -> Befejezés -> OK gombra a következő képernyő megjelenítéséhez.
3. lépés: Most válassza ki az átviteli sebességet „9600” -ként, és azt a portot, amelyhez Arduino csatlakozik, majd kattintson a Csatlakozás gombra. Értékeinek el kell kezdenie naplózni, ahogy az az alábbi képen látható.
Ezt az excel lapot nyitva hagyhatja, és figyelheti az értékeket a naplózás során. Mivel ez történik, az SD-kártyánk is ugyanazokat az értékeket mentette volna el. Ellenőrizze, hogy működik-e, egyszerűen vegye ki az SD-kártyát, és nyissa meg a számítógépén. Találnia kell benne egy „LoggerCD.txt” nevű szövegfájlt . Amikor kinyitják, valami ilyennek tűnik.
Ennek a fájlnak vannak adatai, de nehéz lenne elemezni őket egy jegyzettömbön. Ezért meg tudjuk nyitni az Excel-en CSV (vesszővel elválasztott értékek) fájlként, ezáltal hatékonyabbá téve azt. Megnyitni az excelben
1. Nyissa meg az Excel programot. Kattintson a Fájl-> Megnyitás elemre, és válassza a jobb alsó sarokban az „Összes fájl” lehetőséget, majd válassza az SD-kártyáról a „LoggerCD” fájlt. Ez megnyitja a szövegimportáló varázslót.
2. Kattintson a „Next” gombra, és válassza ki a vesszőt elválasztóként. Kattintson ismét a „Next” gombra. Ezután fejezd be.
3. Most az értékei megnyílnak egy Excel fájlban, az alábbiak szerint
5 másodpercenként naplóztam az értékeket; bármikor naplózhatja őket a program késleltetési funkciójának módosításával. A munka részletes megértéséhez kérjük, nézze meg az alábbi videót.
Remélem, tetszett a projekt, ha kétségei vannak, írja be őket az alábbi megjegyzés szakaszba, és segítek.
Bónusz fejlesztés - vezeték nélküli adatrögzítés az Arduino használatával:
Ha eddig elérted a sikert, akkor néhány előrelépéssel és csupán néhány sornyi kód hozzáadásával vezeték nélkül naplózhatod az adatokat.
Egyszerűen csatlakoztasson egy olyan Bluetooth-eszközt, mint a HC-05, és írja az adatokat a soros helyett Bluetooth-on keresztül a PLX-DAQ-ra. Ez a Serial.print (paraméter) helyettesítője ; a BluetoothName.print (paraméter) segítségével; és csatlakoztassa a laptopot a Bluetooth moduljához, és válassza ki azt a COM portot, amelyhez a Bluetooth laptopok csatlakoznak, és Taadaaa…… Egy működő vezeték nélküli adatnaplózó rendszerrel rendelkezik, pillanatok alatt.