Kaip inžinieriai / kūrėjai, mes visada pasikliaujame surinktais duomenimis kurdami ar tobulindami sistemą. Duomenų įrašymas ir analizavimas yra įprasta praktika daugelyje pramonės šakų, čia mes kuriame „ Arduino Data Logger“ projektą, kuriame sužinosime, kaip galime registruoti duomenis tam tikru laiko tarpu. Kai kuriuos duomenis (čia temperatūra, drėgmė, data ir laikas) nuskaitysime ir išsaugosime SD kortelėje bei kompiuteryje, naudosime „Arduino“ plokštę.
Išsaugotus duomenis galima lengvai atidaryti „Excel“ lape tolesnei analizei. Norėdami išlaikyti datą ir laiką, naudosime garsųjį RTC modulį DS3231, o temperatūrai ir drėgmei gauti naudosime DHT11 jutiklį. Projekto pabaigoje sužinosite
- Kaip registruoti duomenis į SD kortelę su datos, laiko ir jutiklio reikšmėmis.
- Kaip rašyti duomenis tiesiai į „Excel“ lapą kompiuteryje per nuoseklųjį ryšį.
Reikalingos medžiagos:
- Bandomoji Lenta
- „Arduino UNO“ (bet kuri „Arduino“ lenta)
- DHT11 temperatūros jutiklis
- DS3231 RTC modulis
- SD kortelės modulis
- SD kortelė
- Jungiamieji laidai
- Kompiuteris / nešiojamas kompiuteris
Grandinės schema:
Šio „ Arduino“ temperatūros registravimo įrenginio schemos schema parodyta žemiau.
Kaip parodyta grandinės schemoje, jungtys yra labai paprastos, nes mes juos naudojome kaip modulius, kuriuos galime tiesiogiai pastatyti ant duonos lentos. Jungtys toliau klasifikuojamos žemiau esančioje lentelėje
Arduino kaištis |
Modulio kaištis |
Temperatūros jutiklis - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Išeina |
7 kaištis |
RTC modulis DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Kaištis A5 |
SDA |
Kaištis A4 |
SD kortelės modulis |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
12 kaištis |
MOSI |
11 kaištis |
SCK |
13 kaištis |
CS |
4 kaištis |
DHT11 temperatūros jutiklį galite pakeisti bet kuriuo jutikliu, iš kurio turite registruoti reikšmes. Norėdami patikrinti temperatūrą, galite patikrinti LM35 su „Arduino“.
RTC modulis DS3231 yra susietas su „Arduino“ naudojant I2C ryšį (SCL, SDA), o SD kortelės modulis - su SPI ryšiu (MISO, MOSI, SCK, CS). „Arduino“ programa kaiščius 4 ir 7 apibrėžia kaip CS ir išvesties kaiščius. Jei reikia, galite juos pakeisti į bet kurį kitą kaištį. Anksčiau mes susiejome SD kortelę su „Arduino“ muzikos grotuvo projekte.
„Arduino“ programos paaiškinimas:
Turime parašyti „Arduino“ programą, kuri gali atlikti šiuos veiksmus.
- Perskaitykite duomenis iš DTH11 jutiklio (arba bet kokius kitus duomenis, kuriuos norite prisijungti).
- Inicijuokite I2C magistralę, kad galėtumėte skaityti duomenis iš RTC modulio.
- Inicijuokite SPI magistralę, kad sąsaja su „Arduino“ būtų SD kortelės modulis.
- Datą, laiką, temperatūrą ir drėgmę laikykite SD kortelėje.
- Datą, laiką, temperatūrą ir drėgmę saugokite „Excel“ lape, kuriame veikia kompiuteris / nešiojamas kompiuteris.
Pirmiau minėti veiksmai gali atrodyti sudėtingi, tačiau jie yra labai lengvi, nes bibliotekos turime atlikti sunkų darbą. Turite atsisiųsti šias dvi bibliotekas
- DHT11 jutiklių biblioteka iš „GitHub“
- DS3231 RTC modulių biblioteka iš „Rinky-Dink Electronics“
Atsisiuntę biblioteką, pridėkite juos prie „Arduino IDE“ sekdami
Eskizas-> Įtraukti biblioteką -> Pridėti.ZIP biblioteką
Kad „Arduino“ duomenys būtų gyvi, į „Excel“ lapą kompiuteryje taip pat turėsime įdiegti „Parallax Inc.“ teikiamą programinę įrangą, vadinamą PLX-DAQ. Norėdami atsisiųsti failą ir įdiegti juos pagal savo operacinę sistemą, spustelėkite nuorodą. Tai turėjo sukurti darbalaukyje aplanką pavadinimu PLS-DAQ. Mes tuo pasirūpinsime vėliau mūsų darbo skyriuje.
Dabar, pridėję abi bibliotekas ir įdiegę programinę įrangą, galite naudoti visą kodą (pateiktą vadovėlio apačioje) ir įkelti juos į „Arduino“. Stengiausi, kad kodas būtų kuo paprastesnis, o paaiškinimai taip pat pateikiami per komentarų skiltis. Toliau paaiškinsiu svarbius segmentus.
1. Skaitydami duomenis iš DS3231:
DS3231 yra RTC (Real Time Clock) modulis. Jis naudojamas daugumos „Electronics“ projektų datai ir laikui palaikyti. Šis modulis turi savo monetų elementų maitinimo šaltinį, kurį naudodamas jis palaiko datą ir laiką net tada, kai pagrindinė energija yra pašalinta arba MCU išjungtas, jei iš naujo nustatyta. Taigi, kai šiame modulyje nustatysime datą ir laiką, ji visada ją stebės.
Naudoti šį modulį labai lengva dėl „Arduino“ teikiamos bibliotekos.
// Inicijuokite DS3231 naudodamiesi aparatine sąsaja DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Inicializuokite rtc objektą rtc.begin (); // #### šias eilutes galima nekomentuoti, kad pirmą kartą nustatytumėte datą ir laiką ### / * rtc.setDOW (FRIDAY); // Nustatykite savaitės dieną į SEKMADIENĮ rtc.setTime (18, 46, 45); // Nustatykite laiką iki 12:00:00 (24 val. Formatas) rtc.setDate (2017 m. 6, 30); // Nustatykite datą iki 2014 m. Sausio 1 d. * /}
Pastaba: Pirmą kartą naudodamiesi šiuo moduliu turite nustatyti datą ir laiką. Tai galima padaryti paprasčiausiai pašalinus komentarus, kaip minėta aukščiau, ir parašius datą bei laiką. Nepamirškite jų pakomentuoti ir įkelti, kitaip kiekvieną kartą paleidus lentą data ir laikas bus vėl nustatyti. Taip pat galite naudoti RTC IC DS1307 skaitydami laiką su „Arduino“.
2. DHT11 duomenų skaitymas:
DHT11 yra drėgmės jutiklis. Jis per modulio išvesties kaištį nuosekliai siunčia temperatūros ir drėgmės vertes kaip 8 bitų duomenis. Biblioteka nuskaito šiuos duomenis naudodama „Arduino“ programinės įrangos serijinę funkciją.
#define DHT11_PIN 7 // Jutiklio išvesties kaištis sujungtas su kaiščiu 7 dht DHT; // Jutiklio objektas pavadintas DHT negaliojantis Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Čia aš prijungiau išvesties kaištį prie 7 kaiščio, kaip pavyzdį galite pasirinkti bet kurį kaištį, palaikantį „Software Serial“. Skambinama DHT.read (PIN kodas); nuskaitys temperatūros ir drėgmės vertę ir išsaugos ją atitinkamai parametruose DHT. temperatūra ir DHT . Drėgmė . Taip pat patikrinkite šį DHT11 pagrįstą „Arduino“ temperatūros matavimą.
3. SC kortelės modulio inicijavimas:
void Initialize_SDcard () {// pažiūrėkite, ar kortelė yra ir ar ją galima inicijuoti: if (! SD.begin (chipSelect)) {Serial.println ("kortelė nepavyko arba jos nėra"); // daugiau nieko nedaryk: grįžk; } // atidarykite failą. atkreipkite dėmesį, kad vienu metu gali būti atidarytas tik vienas failas, // todėl prieš atidarydami kitą turite uždaryti šį failą. Failo dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // jei failas yra, parašykite jam: if (dataFile) {dataFile.println ("Data, laikas, temperatūra, drėgmė"); // Parašykite pirmąją „Excel“ failo „dataFile.close ()“ eilutę; }}
Naudoti SD kortelę su „Arduino“ lengva dėl SD kortelių bibliotekos, kuri pagal numatytuosius nustatymus bus pridėta prie „Arduino IDE“. SD kortelės inicializavimo funkcijoje sukursime tekstinį failą pavadinimu „LoggerCD.txt“ ir parašysime pirmąją savo turinio eilutę. Čia mes atskiriame vertes naudodami „,“ kaip skiriklį. Reiškia, kai dedamas kablelis, tai reiškia, kad turime pereiti į kitą langelį „Excel“ lape.
4. Duomenų rašymas į SD kortelę
void Write_SDcard () {// atidarykite failą. atkreipkite dėmesį, kad vienu metu gali būti atidarytas tik vienas failas, // todėl prieš atidarydami kitą turite uždaryti šį failą. Failo dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // jei failas yra, parašykite jam: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Laikyti datą SD kortelėje dataFile.print (","); // Pereikite į kitą stulpelį naudodami „,“ dataFile.print (rtc.getTimeStr ()); // Laikyti datą SD kortelėje dataFile.print (","); // Pereikite į kitą stulpelį naudodami „,“ dataFile.print (DHT.temperature); // Laikyti datą SD kortelėje dataFile.print (","); // Pereikite į kitą stulpelį naudodami „,“ dataFile.print (DHT.humidity); // Laikyti datą SD kortelėje dataFile.print (","); // Pereikite į kitą stulpelį naudodami „,“ dataFile.println (); // Eilutės pabaiga pereiti į kitą eilutę dataFile.close ();// Uždarykite failą} else Serial.println ("OOPS !! SD kortelės rašyti nepavyko"); }
Kaip minėjome anksčiau, mes ketiname išsaugoti datą, laiką, temperatūrą ir drėgmę į savo SD kortelę. Naudodamiesi „DS3231“ biblioteka ir „DHT11“ biblioteka, mūsų „Arduino“ galės nuskaityti visus šiuos keturis parametrus ir įrašyti juos į šiuos parametrus, kaip parodyta toliau pateiktoje lentelėje.
Data |
rtc.getDateStr ()); |
Laikas |
rtc.getTimeStr ()); |
Temperatūra |
DHT. Temperatūra |
Drėgmė |
DHT. Drėgmė |
Dabar mes galime tiesiogiai naudoti šiuos parametrus, kad išsaugotume juos SD kortelėje, naudodami spausdinimo liniją
dataFile.print (parametras);
Galite pastebėti, kad kiekvienas parametras yra atskirtas kableliu, kad jis atrodytų įskaitomas, ir dataFile.println (); naudojamas eilutės pabaigai nurodyti.
5. Duomenų rašymas į PLX-DAQ
PLX-DAQ yra „Microsoft Excel“ įskiepių programinė įranga, padedanti mums iš „Arduino“ įrašyti reikšmes tiesiai į „Excel“ failą nešiojamajame kompiuteryje. Tai yra mano asmeninis mėgstamiausias dėl dviejų priežasčių:
1. Galite rašyti ir stebėti duomenis tuo pačiu metu ir pateikti mums būdą juos pavaizduoti kaip grafikus.
2. Norint sekti datą ir laiką, jums nereikia tokio RTC modulio kaip DS3231. Galite tiesiog naudoti nešiojamojo kompiuterio / kompiuterio datą ir laiką ir išsaugoti juos tiesiai „Excel“.
Norėdami naudoti šią programinę įrangą su „Arduino“, duomenis turime siųsti nuosekliai pagal tam tikrą modelį, kaip ir vertės rodymą serijiniame monitoriuje. Pagrindinės eilutės paaiškintos toliau:
negaliojantis Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // išvalo visus duomenis, likusius iš ankstesnių projektų Serial.println ("LABEL, Date, Time, Temperature, Drėgmė"); // visada rašykite LABEL, nurodydami ją kaip pirmąją eilutę} void Write_PlxDaq () {Serial.print ("DATA"); // visada rašykite „DATA“, kad įtvirtintumėte šiuos duomenis kaip „Data Serial.print“ („,“); // Pereikite į kitą stulpelį naudodami „,“ Serial.print („DATE“); // Išsaugoti datą „Excel Serial.print“ („,“); // Pereikite į kitą stulpelį naudodami "," Serial.print ("TIME"); // Išsaugoti datą „Excel Serial.print“ („,“); // Pereikite į kitą stulpelį naudodami „,“ Serial.print (DHT.temperature); // Išsaugoti datą „Excel Serial.print“ („,“); // Pereikite į kitą stulpelį naudodami „,“ Serial.print (DHT.humidity);// Išsaugoti datą „Excel Serial.print“ („,“); // Pereikite į kitą stulpelį naudodami „,“ Serial.println (); // Eilutės pabaiga pereiti į kitą eilutę}
Programinė įranga gali atpažinti raktinius žodžius, pvz., LABEL, DATA, TIME, DATE ir kt. Kaip parodyta funkcijoje Initialize, raktinis žodis „LABEL“ naudojamas rašyti pirmajai „Excel“ lapo eilutei. Vėliau rašymo funkcijoje mes naudojame raktinį žodį „DATA“, nurodydami, kad ši informacija turėtų būti laikoma DATA. Norėdami nurodyti, kad turime pereiti į kitą eilutę, turime naudoti kablelį („,“). Norėdami nurodyti eilutės pabaigą, turime išsiųsti Serial.println ();.
Kaip minėta anksčiau, sistemos datą ir laiką galime parašyti siunčiant atitinkamai raktinius žodžius „DATA“ ir „LAIKAS“, kaip parodyta aukščiau.
Pastaba: nenaudokite serijinio monitoriaus, kai naudojate šią programinę įrangą PLX_DAQ.
Darbinis paaiškinimas:
„ Arduino Data Logger“ darbas yra paprastas. Kai aparatinė įranga ir programinė įranga bus paruošta, laikas įrašyti programą į „Arduino“ plokštę. Kai tik jūsų programa bus įkelta, jūsų temperatūros ir drėgmės vertės bus pradėtos saugoti jūsų SD kortelėje. Norėdami įgalinti PLX-DAQ prisijungti prie „Excel“ lapo kompiuteryje, turite atlikti toliau nurodytus veiksmus.
1 žingsnis: Atidarykite failą „Plx-Daq Spreadsheet“, kuris buvo sukurtas darbalaukyje diegimo metu.
2 žingsnis: Jei yra saugos blokas, spustelėkite Parinktys-> Įgalinti turinį -> Baigti -> Gerai, kad gautumėte šį ekraną.
3 žingsnis: Dabar pasirinkite duomenų perdavimo greitį kaip „9600“ ir prievadą, prie kurio prijungtas „Arduino“, ir spustelėkite Prisijungti. Jūsų vertės turėtų pradėti registruotis, kaip parodyta paveikslėlyje žemiau.
Galite palikti šį „Excel“ lapą atidarytą ir stebėti vertes, kai jos registruojamos. Kadangi tai vyksta, mūsų SD kortelė taip pat būtų išsaugojusi tas pačias vertes. Norėdami patikrinti, ar tai veikia, tiesiog išimkite SD kortelę ir atidarykite ją savo kompiuteryje. Jame turėtumėte rasti tekstinį failą pavadinimu „LoggerCD.txt“ . Atidarius atrodys maždaug taip.
Šis failas turi duomenų, tačiau juos būtų sunku išanalizuoti bloknotuose. Taigi mes galime jį atidaryti „Excel“ kaip CSV (kableliais atskirtų reikšmių) failą, taip padarydami jį efektyvesnį. Norėdami atsidaryti „Excel“
1. Atidarykite „Excel“. Spustelėkite File-> Open ir apatiniame dešiniajame kampe pasirinkite „All file“ ir iš SD kortelės pasirinkite failą „LoggerCD“. Tai atvers teksto importavimo vedlį.
2. Spustelėkite „Kitas“ ir pasirinkite kablelį kaip skiriklį. Dar kartą spustelėkite „Next“. Tada baikite.
3. Dabar jūsų vertės bus atidarytos „Excel“ faile, kaip parodyta žemiau
Aš registravau vertes kas 5 sekundes; galite užregistruoti juos bet kokiam norimam laikui, pakeisdami programos vėlavimo funkciją. Norėdami išsamiau suprasti darbą, žiūrėkite toliau pateiktą vaizdo įrašą.
Tikiuosi, kad jums patiko projektas, jei abejojate, parašykite juos žemiau esančiame komentarų skyriuje ir aš jums padėsiu.
Premijos tobulinimas - belaidis duomenų registravimas naudojant „Arduino“:
Kai jums pavyks iki šio taško, naudodamiesi keliais patobulinimais ir pridėję kelias kodo eilutes, duomenis galėsite prisijungti belaidžiu būdu.
Tiesiog prijunkite „Bluetooth“ įrenginį, pvz., HC-05, ir įrašykite duomenis į „PLX-DAQ“ per „Bluetooth“, o ne „Serial“. Tai pakeis Serial.print (parametras); su „ BluetoothName.print“ (parametras); ir prijunkite nešiojamąjį kompiuterį prie „Bluetooth“ modulio, pasirinkite COM prievadą, prie kurio prijungtas jūsų „Bluetooth“ nešiojamas kompiuteris, ir „Taadaaa……“.