Uređaj za mjerenje količine svjetlosti, vlage i temperature
Srednja škola JelkovecNamjena ovog uređaja je da istovremeno izmjeri osnovne uvjete (količinu svjetlosti, vlagu i temperaturu) na nekoj udaljenoj lokaciji i rezultate prikaže mjerilom na mobitelu za svaku veličinu posebno, te grafički tako da se može pratiti i povijest mjerenja. Pri tome indikator količine svjetlosti postoji i na mjestu mjerenja. Što je mračnije, upaljeno je više LED dioda. Cilj projekta bio je naučiti primijeniti aplikaciju na mobitelu za kontrolu uvjeta na nekoj udaljenoj lokaciji učenje programiranja te spajanja elektroničkih komponenti i uređaja.
Najprije je napravljen indikator količine svjetlosti pomoću modula s fotootpornikom, osam LED dioda i posmačnog registra. Posmačni registar odabran je kako bi se lakše upravljalo većim brojem LED dioda i za to koristilo samo tri digitalna izlaza Arduina. Posmačni registar ima četrnaest pinova, od toga je jedan za uzemljenje, a jedan za napajanje. Osam pinova su izlazi, a još tri pina su ulazi koje koristimo za pristup podacima – pin 14 (DS ili SER) je serijski ulaz za podatke, pin 11 je impuls ritma posmačnog registra (SH_CP ili SRCLK), a pin 12 je impuls ritma spremnika (ST_CP ili RCLK). Kada se pin 11 prebaci iz 0 u 1, vrijednost serijskog ulaza pohranjuje se u registar, a vrijednosti koje su bile u registru pomiču se kako bi napravile mjesta za novi bit. Pin 12 ostaje u logičkoj nuli dok se u registar upisuju podaci. Kada se on prebaci u logičku 1, vrijednosti posmačnog registra blokiraju spremnik i onda se šalju na izlazne pinove. Na eksperimentalnoj pločici je napravljen prototip sklopa. LED diode su spojene na izlaze posmačnog registra preko otpornika. Registar je spojen na napajanje i uzemljenje, a ulazni pinovi registra spojeni su na Arduino. Modul s fotootpornikom spojen je na uzemljenje, napajanje i analogni ulaz A0 Arduina. Modul DHT11 spojen je također na napajanje, uzemljenje i digitalni ulaz 6 Arduina. Napravljen je program koji pri registriranju određene količine svjetlosti fotootpornikom pali, odnosno gasi određeni broj LED dioda na mjestu mjerenja, a na zaslonu mobitela prikazuje se količina svjetlosti. U program je dodano očitavanje vlage i temperature te prikaz tih podataka na zaslonu mobitela. Sva tri podatka o količini svjetlosti, vlazi i temperaturi prikazuju se na pojedinačnim mjerilima. Dodan je i grafikon na kojem se prikazuju sva tri podatka, a očitanje se može pratiti u stvarnom vremenu, te pogledati i podaci iz prošlosti. Zatim je napravljena tiskana pločica sa SMD otpornicima i tiskanim vodovima kako bi se smanjio broj vodiča i veličina uređaja. Uz malu doradu, tako da se uzmu SMD LED diode, dimenzije uređaja bi se mogle još smanjiti.
Izrada projekta
Prikaz eksperimentalne pločice sa spojenim komponentama. Gore lijevo gotov uređaj. Gore desno: uređaj mjeri vlagu, temperaturu i svjetlost, LED diode signaliziraju srednju količinu svjetlosti. Dolje lijevo upaljena je jedna LED dioda jer je jako svjetlo (osvijetlili smo fotootpornik svjetiljkom u mobitelu). Dolje desno: potpuni mrak, svijetle sve LED diode (fotootpornik smo prekrili prstom).
Izgled tiskane pločice. Gore lijevo stražnja strana pločice gdje se vide tiskani vodovi i smd otpornici. Dolje lijevo gornja strana tiskane pločice s izvodima i podnožjem za IC74HC595. Desno: shema tiskane pločice.
Mobilna aplikacija
Dva zaslona mobitela u različitim uvjetima. Korištena su tri mjerila, po jedan za vlagu, temperaturu i svjetlost. Dodan je grafikon koji uživo prikazuje podatke s istih senzora za vlagu, temperaturu i svjetlost.
Prikazuje parametre postavljene na mjerila za vlagu, temperaturu i svjetlost. Za fotootpornik se koristi analognu ulaz A0, za temperaturu virtualni ulaz V6, a za vlagu virtualni ulaz V0. uz /pin/ dodana je decimalna točka koja znači da se brojke ispisuju kao cjelobrojne.
10 ugašena.
Shema projekta
Korišten je posmačni registar SN74HC595. osam LED diode spojeno je na izlaze posmačnog registra preko otpornika (izvodi 15 i 1 do 7). Ulazni pinovi registra (11, 12 i 14) spojeni su na Arduino na digitalne pinove 3, 4, 5. Osmi izvod spojen je na uzemljenje, kao i 13 (OE), a napajanje je na 16. izvodu. deseti izvod spojen je također na napajanje. Modul s fotootpornikom spojen je na uzemljenje, napajanje i analogni ulaz A0 Arduina. Modul DHT11 spojen je također na napajanje, uzemljenje i digitalni ulaz 6 Arduina.
Shemu ovoga projekta možete preuzeti ovdje.
Arduino program
#define BLYNK_PRINT /* #define BLYNK_PRINT SerialUSB #include // pozivamo potrebne bibilioteke #include #include #include #include #define DHTpin 6 // definira digitalni pin na koji je senzor povezan s MKR1000 #define DHTTYPE DHT11 // DHT 11, senzor vlage i temperature DHT dht(DHTpin, DHTTYPE); SimpleTimer timer; char auth[] = "433100205520403c92111b81a5ef6334"; char ssid[] = "Tele2 Pokucni Internet-EFCC"; char pass[] = "JYQFY7JGA0A"; void sendSensor()// dio programa koji očitava podatke sa senzora vlage i temperature { float v = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(v) || isnan(t)) { Serial.println("Nemoguće očitatit DHT senzor!"); return; } Blynk.virtualWrite(V5, v); // ispis potaka sa senzora vlage i temperature na virtualne izlaze Blyink aplikacija Blynk.virtualWrite(V6, t); } BLYNK_WRITE(A0) // ispis količine svjetlosti na analogni izlaz Blyink aplikacije { int svjetlo = param.asInt(); SerialUSB.print("Količina svjetlosti: "); SerialUSB.println(svjetlo); } int foto = A0;// pin na koji je spojena fotodioda int blok = 4;// pin na koji je spojen impuls ritma spremnika int impuls ritma = 5;// pin na koji je spojen impuls ritma posmačnog registra int podaci = 3;// pin na koji je spojen serijski ulaz int leds = 0; //jedan byte je osam bitova, koristi se za prikaz brojeva; svaki bit može biti u dva stanja, 0 ili 1 // kako imamo osam ledica, naredba nam odgovara void setup() { SerialUSB.begin(9600); Blynk.begin(auth, ssid, pass); timer.setInterval(1000L, sendSensor); // u kojim vremenskim razmacima očitavamo podatke sa senzora DHT , 1 sekunda pinMode(blok, OUTPUT); // postavljamo izlazne pinove pinMode(podaci, OUTPUT); pinMode(impulsritma, OUTPUT); } void loop() { Blynk.run(); // pokrećemo bibilioteke potrebne za prikaz podataka na mobitelu timer.run(); //pokreće se biblioteka za vremenske odrednice int reading = analogRead(svjetlo); // inicijalizacija očitanja fotodiode int brojLED = reading / 57; //1023 / 2 / 9 = 57 // računamo koliko ledica se upali // fotodioda ima otpor oko 1kOhm, a ugrađeni otpor isto toliko, zato 1023 dijelimo s dva // onda dijelimo s devet jer je sve skupa devet razina - prva razina kada su sve diode ugašene, pa do devete kada su sve ledice upaljene if (brojLED > 8) brojLED = 8; leds = 0; // na početku su sve ledice ugašene for (int i = 0; i < brojLED; i++) { leds = leds + (1 << i); // postavlja i-ti bit, ledice se pale ovisno o količini svjetlosti } updateShiftRegister(); } void updateShiftRegister() { digitalWrite(blok, LOW);// ova funkcija najprije postavlja ulaz "blok" u nulu, onemogućuje prolaz podataka shiftOut(podaci, impulsritma, LSBFIRST, leds); //poziva ugrađenu funkciju shiftOut //prva dva parametra su pinovi , treći parametar označava korištenje bita najmanjeg značaja, četvrti parametar je podatak koji ie u posmačni registar digitalWrite(blok, HIGH);// postavlja "blok" u jedinicu, šalje nove podatke na izlaze }
Arduino program ovoga projekta možete preuzeti ovdje.
Autori
Projekt su izradili Dora Medvarić i Marko Kunješić uz mentorstvo Mirjane Malarić iz Srednje škole Jelkovec.
Projekt je prijavljen na temu: Internet of Things: Pametna rasvjeta.