Insinööreinä / kehittäjinä luotamme aina kerättyihin tietoihin järjestelmän suunnittelussa tai parantamisessa. Tietojen tallentaminen ja analysointi on yleinen käytäntö useimmilla toimialoilla, tässä rakennamme Arduino Data Logger Project -ohjelmaa, jossa opitaan, miten voimme kirjata tietoja tietyllä aikavälillä. Käytämme Arduino-korttia lukemaan joitain tietoja (tässä lämpötila, kosteus, päivämäärä ja aika) ja tallentamaan ne SD-kortille ja tietokoneelle samanaikaisesti.
Tallennetut tiedot voidaan helposti avata Excel-taulukossa jatkoanalyyseja varten. Päivämäärän ja kellonajan ylläpitämiseksi käytämme kuuluisaa RTC-moduulia DS3231 ja lämpötilan ja kosteuden saamiseksi käytämme DHT11-anturia. Projektin lopussa opit
- Kuinka kirjata tiedot SD-kortille päivämäärä-, aika- ja anturiarvoilla.
- Kuinka kirjoittaa tietoja suoraan Excel-taulukkoon PC: llä sarjaliikenteen avulla.
Tarvittavat materiaalit:
- Leipälauta
- Arduino UNO (mikä tahansa Arduino-levy)
- DHT11 Lämpötila-anturi
- DS3231 RTC-moduuli
- SD-korttimoduuli
- Sd-kortti
- Johtojen liittäminen
- Tietokone / kannettava tietokone
Piirikaavio:
Tämän Arduino Temperature Logger -projektin piirikaavio on esitetty alla.
Kuten piirikaaviosta käy ilmi, liitännät ovat hyvin yksinkertaisia, koska olemme käyttäneet niitä moduuleina, joten voimme rakentaa ne suoraan leipälaudalle. Liitännät on luokiteltu tarkemmin alla olevaan taulukkoon
Arduino Pin |
Moduulin tappi |
Lämpötila-anturi - DHT11 |
|
Vcc |
5 V |
Gnd |
Gnd |
Nc |
Nc |
Ulos |
Tappi 7 |
RTC-moduuli DS3231 |
|
Vcc |
5 V |
Gnd |
Gnd |
SCL |
Tappi A5 |
SDA |
Kiinnitä A4 |
SD-korttimoduuli |
|
Vcc |
5 V |
Gnd |
Gnd |
MISO |
Tappi 12 |
MOSI |
Tappi 11 |
SCK |
Tappi 13 |
CS |
Tappi 4 |
Voit vaihtaa DHT11-lämpötila-anturin mihin tahansa anturistasi, josta sinun on kirjattava arvot. Voit tarkistaa LM35: n Arduinolla lämpötilan lukemiseksi.
RTC-moduuli DS3231 on liitetty Arduinoon I2C-tiedonsiirron (SCL, SDA) avulla ja SD-korttimoduuli SPI-tietoliikenteen (MISO, MOSI, SCK, CS) kautta. Nastat 4 ja 7 on määritetty CS-nastaksi ja ulostulotapiksi Arduino-ohjelmassa, voit vaihtaa ne mihin tahansa muuhun nastaa tarvittaessa. Olemme aiemmin liittäneet SD-kortin Arduinoon musiikkisoitinprojektissa.
Arduino-ohjelman selitys:
Meidän on kirjoitettava Arduino-ohjelma, joka voi tehdä seuraavat.
- Lue tiedot DTH11-anturista (tai muut tiedot, jotka haluat kirjautua).
- Alusta I2C-väylä lukemaan tietoja RTC-moduulista.
- Alusta SPI-väylä liittääksesi SD-korttimoduulin Arduinoon.
- Tallenna päivämäärä, kellonaika, lämpötila ja kosteus SD-kortille.
- Tallenna päivämäärä, kellonaika, lämpötila ja kosteus Excel-taulukolle, joka toimii tietokoneella / kannettavalla tietokoneella.
Yllä olevat vaiheet saattavat kuulostaa monimutkaisilta, mutta ne ovat erittäin helppoja, koska meillä on kirjastot tekemään kovaa työtä puolestamme. Sinun on ladattava seuraavat kaksi kirjastoa
- DHT11-anturikirjasto GitHubilta
- DS3231 RTC -moduulikirjasto Rinky-Dink Electronicsilta
Kun olet ladannut kirjaston, lisää ne Arduino IDE -laitteeseesi seuraamalla
Luonnos-> Sisällytä kirjasto -> Lisää.ZIP-kirjasto
Jos haluat syöttää tietoja Arduinosta vilkkaasti Excel-taulukkoon tietokoneella, meidän on myös asennettava ohjelmisto nimeltä PLX-DAQ, jonka tarjoaa Parallax Inc. Seuraa tiedostolinkkiä lataamalla tiedosto ja asentamalla ne käyttöjärjestelmän mukaan. Tämän olisi pitänyt luoda työpöydällesi kansio nimeltä PLS-DAQ. Hoidamme sen myöhemmin työosassamme.
Nyt kun olet lisännyt molemmat kirjastot ja asentanut ohjelmiston, voit käyttää täydellistä koodia (annettu opetusohjelman alaosassa) ja ladata ne Arduinoon. Olen yrittänyt parhaani pitää koodi mahdollisimman yksinkertainen ja selitykset annetaan myös kommenttiosien kautta. Seuraavassa selitän tärkeät segmentit alla.
1. Tietojen lukeminen mallilta DS3231:
DS3231 on RTC (Real Time Clock) -moduuli. Sitä käytetään pitämään päivämäärä ja aika useimmissa elektroniikkaprojekteissa. Tällä moduulilla on oma kolikkovirtalähde, jonka avulla se ylläpitää päivämäärää ja kellonaikaa, vaikka päävirta irrotettaisiin tai MCU olisi mennyt kovan palautuksen jälkeen. Joten kun asetamme päivämäärän ja kellonajan tässä moduulissa, se seuraa sitä aina.
Tämän moduulin käyttö on erittäin helppoa Arduinon tarjoaman kirjaston takia.
// Aloita DS3231 laitteistoliitännällä DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Alusta rtc-objekti rtc.begin (); // #### seuraavia rivejä ei voi kommentoida päivämäärän ja kellonajan asettamiseksi ensimmäistä kertaa ### / * rtc.setDOW (FRIDAY); // Aseta viikonpäiväksi SUNDAY rtc.setTime (18, 46, 45); // Aseta kellonaika 12:00:00 (24 tunnin muoto) rtc.setDate (6, 30, 2017); // Aseta päivämääräksi 1. tammikuuta 2014 * /}
Huomaa: Kun käytät tätä moduulia ensimmäistä kertaa, sinun on asetettava päivämäärä ja kellonaika. Se voidaan tehdä yksinkertaisesti poistamalla yllä mainitut kommentit ja kirjoittamalla päivämäärä ja kellonaika. Varmista, että kommentoit heidät takaisin ja lähetät sen, muuten joka kerta, kun suoritat taulua, päivämäärä ja aika asetetaan uudelleen. Voit myös käyttää RTC IC DS1307: tä ajan lukemiseen Arduinolla.
2. DHT11: n tietojen lukeminen:
DHT11 on lämpötila-anturi. Se lähettää lämpötilan ja kosteuden arvot 8-bittisenä datana sarjana moduulin ulostulon kautta. Kirjasto lukee nämä tiedot käyttämällä Arduinon ohjelmistosarjatoimintoa.
#define DHT11_PIN 7 // Anturin ulostulotapa on kytketty tapaan 7 dht DHT; // Anturikohde nimeltään DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Täällä olen liittänyt lähtönastan nastaan 7, esimerkiksi voit valita minkä tahansa nastan, joka tukee Software Serialia. Soitetaan DHT.read (PIN-numero); lukee arvon lämpötila ja kosteus, ja tallentaa sen parametrin DHT.temperature ja DHT.Humidity vastaavasti. Tarkista myös tämä DHT11-pohjainen Arduino-lämpötilan mittaus.
3. SC-korttimoduulin alustaminen:
void Initialize_SDcard () {// katso, onko kortti läsnä ja voidaanko se alustaa: if (! SD.begin (chipSelect)) {Serial.println ("Kortti epäonnistui tai sitä ei ole"); // älä tee mitään muuta: return; } // avaa tiedosto. Huomaa, että vain yksi tiedosto voi olla auki kerrallaan, // joten sinun on suljettava tämä tiedosto ennen toisen avaamista. Tiedoston dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // jos tiedosto on käytettävissä, kirjoita siihen: if (dataFile) {dataFile.println ("päivämäärä, aika, lämpötila, kosteus"); // Kirjoita Excel-tiedoston dataFile.close () ensimmäinen rivi; }}
SD-kortin käyttö Arduinon kanssa on helppoa, koska SD-korttikirjasto lisätään Arduino IDE: hen oletuksena. SD-kortin alustustoiminnossa luomme tekstitiedoston nimeltä “LoggerCD.txt” ja kirjoitamme sisällön ensimmäisen rivin. Tässä erotellaan arvot käyttämällä erotinmerkkinä “,”. Kun pilkku asetetaan, se tarkoittaa, että meidän on siirryttävä seuraavaan soluun Excel-taulukossa.
4. Tietojen kirjoittaminen SD-kortille
void Write_SDcard () {// avaa tiedosto. Huomaa, että vain yksi tiedosto voi olla auki kerrallaan, // joten sinun on suljettava tämä tiedosto ennen toisen avaamista. Tiedoston dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // jos tiedosto on käytettävissä, kirjoita siihen: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Tallenna päivämäärä SD-kortille dataFile.print (","); // Siirtyminen seuraavaan sarakkeeseen käyttämällä "," dataFile.print (rtc.getTimeStr ()); // Tallenna päivämäärä SD-kortille dataFile.print (","); // Siirry seuraavaan sarakkeeseen käyttämällä "," dataFile.print (DHT.temperature); // Tallenna päivämäärä SD-kortille dataFile.print (","); // Siirtyminen seuraavaan sarakkeeseen käyttämällä "," dataFile.print (DHT.kosteus); // Tallenna päivämäärä SD-kortille dataFile.print (","); // Siirry seuraavaan sarakkeeseen käyttämällä "," dataFile.println (); // Rivin loppu siirtyminen seuraavalle riville dataFile.close ();// Sulje tiedosto} else Serial.println ("OOPS !! SD-kortin kirjoittaminen epäonnistui"); }
Kuten aiemmin mainittiin, aikomuksemme on tallentaa päivämäärä, aika, lämpötila ja kosteus SD-kortillemme. DS3231-kirjaston ja DHT11-kirjaston avulla Arduino pystyy lukemaan kaikki nämä neljä parametria ja tallentamaan ne seuraaviin parametreihin alla olevan taulukon mukaisesti
Päivämäärä |
rtc.getDateStr ()); |
Aika |
rtc.getTimeStr ()); |
Lämpötila |
DHT. Lämpötila |
Kosteus |
DHT. Kosteus |
Nyt voimme käyttää näitä parametreja suoraan tallentaa ne SD-kortille käyttämällä tulostuslinjaa
dataFile.print (parametri);
Voit huomata, että jokainen parametri erotetaan pilkulla, jotta se näyttää luettavalta, ja dataFile.println (); käytetään osoittamaan rivin loppua.
5. Tietojen kirjoittaminen PLX-DAQ: lle
PLX-DAQ on Microsoft Excel Plug-in -ohjelmisto, joka auttaa meitä kirjoittamaan arvoja Arduinosta suoraan Excel-tiedostoon kannettavalla tietokoneella tai PC: llä. Tämä on henkilökohtainen suosikkini kahdesta syystä:
1.Voit kirjoittaa ja seurata tietoja samanaikaisesti ja antaa meille mahdollisuuden piirtää ne kaavioiksi.
2. Päivämäärän ja kellonajan seuraamiseksi ei tarvita RTC-moduulia, kuten DS3231. Voit käyttää vain kannettavan tietokoneen / tietokoneen päivämäärää ja kellonaikaa ja tallentaa ne suoraan Exceliin.
Jos haluat käyttää tätä ohjelmistoa Arduinon kanssa, meidän on lähetettävä tiedot sarjaan tietyssä mallissa samalla tavalla kuin arvon näyttäminen sarjavalvonnassa. Tärkeimmät linjat selitetään alla:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // tyhjentää kaikki edellisistä projekteista jäljelle jääneet tiedot Serial.println ("LABEL, Date, Time, Temperature, Humidity"); // kirjoita aina LABEL, merkitsemällä se ensimmäiseksi riviksi} void Write_PlxDaq () {Serial.print ("DATA"); // kirjoita aina "DATA" vahvistaaksesi seuraavat tiedot Data Serial.print (","); // Siirry seuraavaan sarakkeeseen käyttämällä "," Sarja.tulos ("PÄIVÄYS"); // Tallenna päivämäärä Excel Serial.print (","); // Siirry seuraavaan sarakkeeseen käyttämällä "," Sarja.tulos ("TIME"); // Tallenna päivämäärä Excel Serial.print (","); // Siirry seuraavaan sarakkeeseen käyttämällä "," Sarja.tulos (DHT.lämpötila); // Tallenna päivämäärä Excel Serial.print (","); // Siirry seuraavaan sarakkeeseen käyttämällä "," Sarjaprintti (DHT.kosteus);// Tallenna päivämäärä Excel Serial.print (","); // Siirry seuraavaan sarakkeeseen käyttämällä "," Serial.println (); // rivin loppu siirrä seuraavalle riville}
Ohjelmisto tunnistaa avainsanat, kuten LABEL, DATA, TIME, DATE jne. Kuten Initialize-toiminnossa näkyy, avainsanalla “LABEL” käytetään Excel-arkin ensimmäisen rivin kirjoittamiseen. Myöhemmin kirjoitustoiminnossa käytämme avainsanaa "DATA" osoittamaan, että seuraavia tietoja on pidettävä DATA-tiedoina. Osoittaaksemme, että meidän on siirryttävä seuraavalle riville, on käytettävä pilkkua (“,”). Rivin lopun osoittamiseksi meidän on lähetettävä Serial.println ();.
Kuten aiemmin mainittiin, voimme kirjoittaa järjestelmän päivämäärän ja kellonajan lähettämällä avainsanat "PÄIVÄYS" ja "AIKA", kuten yllä on esitetty.
Huomaa: Älä käytä sarjamonitoria käyttäessäsi tätä PLX_DAQ-ohjelmistoa.
Työselitys:
Työskentely on Arduino tiedonkeruumoduulia on yksinkertainen. Kun laitteisto ja ohjelmisto ovat valmiita, on aika polttaa ohjelma Arduino Boardillesi. Heti kun ohjelmasi ladataan, lämpötila- ja kosteusarvosi alkavat tallentaa SD-kortillesi. Sinun on noudatettava seuraavia vaiheita, jotta PLX-DAQ voi kirjautua sisään Excel-taulukoon tietokoneessa.
Vaihe 1: Avaa "Plx-Daq Spreadsheet" -tiedosto, joka luotiin työpöydällesi asennuksen aikana.
Vaihe 2: Jos suojauslohko on, napsauta Asetukset-> Ota sisältö käyttöön -> Valmis -> OK saadaksesi seuraavan näytön.
Vaihe 3: Valitse nyt siirtonopeudeksi ”9600” ja portti, johon Arduino on kytketty, ja napsauta Yhdistä. Arvojen tulisi alkaa kirjautua kuten alla olevassa kuvassa.
Voit jättää tämän Excel-taulukon auki ja seurata arvoja niiden kirjautuessa. Koska näin tapahtuu, myös SD-korttimme olisi tallentanut samat arvot. Tarkista, että se toimii, poistamalla SD-kortti ja avaamalla se tietokoneellasi. Sinun pitäisi löytää tekstitiedosto nimeltä ”LoggerCD.txt” . Avattuna se näyttäisi tältä.
Tässä tiedostossa on tietoja, mutta niitä on vaikea analysoida muistikirjalla. Siksi voimme avata sen Excelissä CSV-tiedostona (pilkuilla erotetut arvot), mikä tekee siitä tehokkaamman. Avata Excelissä
1.Avaa Excel. Napsauta Tiedosto-> Avaa ja valitse oikeasta alakulmasta ”Kaikki tiedostot” ja valitse ”LoggerCD” -tiedosto SD-kortilta. Tämä avaa ohjatun tekstin tuomisen.
2.Napsauta Seuraava ja valitse pilkku erottimeksi. Napsauta uudelleen Seuraava. Lopeta sitten.
3. nyt arvot avataan Excel-tiedostossa alla olevan kuvan mukaisesti
Olen kirjautunut arvot 5 sekunnin välein; voit kirjata ne haluamaasi ajaksi muuttamalla ohjelman viivetoimintoa. Katso alla olevasta videosta yksityiskohtainen käsitys työskentelystä.
Toivottavasti pidit projektista, jos sinulla on epäilyksiä, kirjoita ne alla olevaan kommenttiosioon ja autan sinua.
Bonusparannus - langaton tiedonkeruu Arduinolla:
Kun olet onnistunut tähän pisteeseen asti, voit kirjata tietoja langattomasti muutamalla edistyksellä ja vain lisäämällä muutaman rivin koodia.
Liitä vain Bluetooth-laite, kuten HC-05, ja kirjoita tiedot PLX-DAQ-laitteeseen Bluetoothin kautta Serialin sijaan. Se korvaa Serial.print (parametri); kanssa BluetoothName.print (parametri); ja liitä kannettava tietokoneesi Bluetooth-moduuliin ja valitse COM-portti, johon Bluetooth-kannettavat tietokoneesi on kytketty, ja Taadaaa…… Sinulla on toimiva langaton tiedonkeruujärjestelmä hetkessä.