LAKI PINGVINI<>
112017<><>

Štitovi Arduina (2)

Data Logging Shield

Nastavljamo sa šildovima za Arduino. Na redu je, na neki način proširena verzija Proto šilda iz prošlog broja, koja ima mogućnost upisivanja log fajlova na SD karticu. Pride, tu je RTC (Real Time Clock) koji će dodati vreme svakom upisu u log fajl.

Šild koji ćemo koristiti za potrebe ovog teksta, kineska je kopija Adafruit Data Logging šilda v1.0. Šild je standardnih dimenzija za UNO sa takozvanim „prolaznim” pinovima. To znači da se na ovaj šild može ubosti neki drugi (TFT, Ethernet i sl). Na njemu je slot za SD karticu maksimalnog kapaciteta do 32 gigabajta, a podržani formati su FAT16 i FAT32. Taster za reset je odmah pored, na istoj poziciji kao na Unu. Odmah do tastera su dve LED (L1, L2). Sa druge strane SD slota je mesto za CR1220 bateriju koja služi da napaja RTC, tako da se podešavanje vremena neće izgubiti prilikom nestanka struje ili pražnjenja baterije (u zavisnosti od napajanja), ili kad Uno odvojimo od računara posle prebacivanja skeča. Do baterije je RTC (DS1307) čip sa sopstvenim kristalom. Ugrađeni RTC čip je jedan od veoma popularnih čipova i može se sresti u raznim modulima i šildovima. Revizija šilda (B) ima PCF8523 RTC, na šta bi trebalo obratiti pažnju prilikom postavljanja tačnog vremena. Primećujemo još i level šifter koji pegla sve napone (5V i 3,3V) na 3,3V neophodna za rad sa SD slotom. Tu su još i 3,3V LDO i power LED.

Ostaje nam prostor za lemljenje modula i senzora. Taj prostor zauzima drugu polovinu centralnog dela šilda i sastoji se od sitnih otvora kao na prethodno opisanom Proto šildu. Kao i na njemu, i ovde su ti otvori veoma sitni i kontakti su prolazni, što znači da se može lemiti sa bilo koje strane. U praksi to najčešće znači da će se komponente postavljati sa gornje strane, a lemiti sa donje. Svi izlazni pinovi šilda imaju svoje „izlaze” u vidu već pomenutih otvora za lemljenje, tako da se mogu vrlo lako premostiti žicama do radnog dela šilda. Na šildu primećujemo vrlo jasno označene otvore sa SPI, a koji prate hedere na Unu ispod. Tu su još dve sekcije otvora gde su Open Drain (CD, WP, SQ i 3V) direktno vezani sa SD slotom i mogu se iskoristiti za određene potrebe. Recimo, WP (write protect) se može koristiti za detektovanje da li je na kartici isključeno upisivanje. Svi ovi otvori su open-drain (već vezani na GND), što znači da se mogu koristiti, bilo preko otpornika, bilo u okviru samog skeča. Druga sekcija sadrži CS, L1 i L2 otvore. CS se koristi ako nam pin 10 (inače zadužen za SD slot) pravi određene konflikte. L1 i L2 se koriste da pale dve opcione LED, za koje smo pomenuli da su kod reset tastera. Te LED već imaju svoje otpornike, tako da se mogu preko pinova veoma lako programirati.

Prvo što treba da uradimo jeste da postavimo bateriju na svoje mesto, nakon toga treba podesiti tačno vreme na šildu. Za rad sa RTC nam treba odgovarajuća biblioteka, a mi smo koristili RTClib, koju možete preuzeti sa goo.gl/WUguud. U okviru biblioteke, a u zavisnosti koji RTC je na našem šildu, pokrećemo odgovarajući skeč, u našem slučaju ds1307. U okviru skeča pod komentare je stavljena linija:

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

gde kose crte brišemo i dozvoljavamo skeču da postavi vreme. Bitno je napomenuti da će skeč vreme koje je na računaru, a koje je obično tačno, upisati u RTC, ali ipak treba obratiti pažnju. Zatim, prilikom postavljanja vremena, treba odmah ići na upload, pri čemu će se skeč usput i kompajlirati. U suprotnom, ako bismo išli prvo na verify pa upload, sat će biti „isključen” za taj kratki vremenski period. Na serijal monitoru dobićemo očitavanja, a u okviru skeča su sva pojašnjenja kako prikazati vreme shodno našim potrebama. Vreme se, osim funkcijom now() može dobiti i kao now.timestamp(), sve u zavisnosti od naših potreba. Vreme će se resetovati u slučaju da nam se baterija isprazni, tako da ćemo nakon zamene baterije morati ponovo da podesimo vreme, ali dok je ispravna baterija na šildu, RTC će davati tačno vreme bez potrebe da se više bilo šta radi, osim da se po našoj potrebi očita. Inače, baterija CR1220 na šildu može trajati godinama.

Sledeći na redu je SD slot. Prvo što bi trebalo da uradimo je da formatiramo SD karticu u neki od podržanih formata. Zatim sledi preuzimanje biblioteke neophodne za rad sa SD karticama, a koju možete preuzeti sa goo.gl/xvehzA. U okviru biblioteke je CardInfo skeč, koji ne menja na kartici ništa, već nam samo daje određene informacije, da li je Arduino prepoznaje i da li će uopšte moći da radi sa njom. Vrlo je bitno proveriti da nam je chipSelect (CS) na pinu 10, jer je tako povezan na šildu.

const int chipSelect = 10;

Ukoliko je sve u redu, možemo pristupiti našem projektu. Mi smo vam spremili data logger sobne temperature i vlažnosti vazduha u okviru 24 časa sa DHT22 modulom o kome smo već pisali. Pritom će prilikom svakom upisa ugrađena LED na šildu trepnuti.

Preuzmite: http://www.sk.rs/2017/11/shield2_datalogging.ino

Nakon uključivanja neophodnih biblioteka vezanih za šild (Wire, RTCLib, SPI, SD), dodali smo i DHT zbog DHT22 senzora. Posle toga pravimo objekte (rtc, dht) i definišemo pinove koji su nam potrebni. U Setup funkciji pokrećemo RTC, SD i DHT. Zatim toga kreiramo fajl na SD kartici u okviru koga ćemo upisivati naša očitavanja. Fajl može biti i TXT, a mi smo se odlučili za CSV. Ukoliko već imamo fajl pod ovim nazivom, on će biti obrisan i upisan novi. Otvaramo fajl i u njega upisujemo nazive kolona koje će nam kasnije biti potrebne. U Loop funkciji počinje magija. Otvaramo fajl koji smo napravili, prikupljamo podatke sa senzora i RTC-a i sve to prikladno formatiramo i upisujemo. Nakon upisa, uključujemo i isključujemo LED. Pod delay() smo stavili jedan minut, ali je to stvar ličnog izbora i eventualnih potreba projekta. U okviru CSV fajla, Arduino će puniti tri kolone na svaki minut podacima koje smo mi odredili. Nakon jednog dana upisivanja podataka u log fajl, uvezli smo ga u Excel i napravili grafikon gde se jasno vide promene temperature i vlažnosti vazduha u okviru jednog dana u sobnim uslovima.

Vrlo upotrebljiv šild koji se uz dodatke određenih modula i/ili senzora može nadograđivati po želji. I ovaj šild, poput prethodnog, spada u kategoriju rezervisanu za početnike. Za stand alone projekte idealan je izbor. Ostaje samo da se ovlada „veštinom” lemljenja.

Dejan PETROVIĆ

 
Ubuntu 17.10 Artful Aardvark
PDF Split and Merge 3.3.2
gscreenshot 2.9.2
Orange Pi 2G-IoT
CROduino
Štitovi Arduina (2)
Šta mislite o ovom tekstu?
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 2.54
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera