V tokratnem članku boste lahko prebrali kako uporabiti tipalo BME280 za merjenje temperature, ki jo nadzirate.
Kartični računalnik, SD kartica, napajalnik in tipalo BME280 zadostujejo za vodenje temperature v prostoru in izris tedenskega grafa temperature, vlage in tlaka. Gre za prvi predstavljeni delujoči šolski primer na slovenski izdaji.
Avtor: Boštjan Šuhel
E-pošta: bostjan.suhel@gmail.com
2021-301-49
Strojna oprema
Klimat uporablja kartični računalnik (Vir:1), tipalo BME280 (Vir:2) in izhod l2 (pin 19) za vklop gretja prostora.
Ta vsebina je samo za naročnike
Kartični računalnik
Kartični računalnik RPI4 podpira vse danes uporabljane komunikacije, ima naložen celoten operacijski sistem, kar omogoča uporabo standardnih komunikacijskih storitev in strežnikov. Naložimo slovensko izdajo (Vir:4) in imamo poleg operacijskega sistema dodan SQL strežnik, Samba strežnik deljenih map in spletni strežnik Apatche. Dodana so tudi vsa potrebna orodja in moduli za izvajanje opisovanih vaj in učnih projektov.
BME280
Uporabljen je modul s tipalom BME280. To je tipalo temperature, vlage in tlaka. Priklopimo ga na maso, napajanje 3,3V in SDA ter SCL I2C sinhrono serijsko komunikacijo. Pri čemer je SCL ura in SDA dvosmerna komunikacija.
Povezava
Povežemo modul. Odprite brskalnik in uporabite Orodja->Sistem->i2cdetect preverimo pravilnost povezave. Vse zajete slike spletne so iz mojega domače IP številke (Vir:3). Za razlago imam doma postavljen strežnik slovenske izdaje.
Pravilno priklopljeno tipalo se odzove na I2C naslovu 76. Slovenska izdaja podpira številne module. Če imate tipalo BME280 dodano na osnovno učilo (glej številko SE297) s štirimi kapacitivnimi tipkami in štirimi LED-icami toliko bolje. Sam učni projekt klimat poleg tipala ne potrebuje nič drugega. Razen če želimo regulirati temperaturo preko histerezne regulacije moramo na pin l2(led2) priklopiti krmilje za gretje.
Nastavitev programa
Domov->Klimat->PHP->Python
Klimat je python program, ki opravlja zajem podatkov iz tipala, poskrbi za histerezno regulacijo, vpiše podatke tipala v SQL tabelo in pobriše podatke v SQL tabeli, ki so starejši od enega tedna. V podatkovno tabelo vpiše podatke vsake 10 minut, tekoče podatke zapiše v datoteko vsako sekundo. Tekoče podatke uporablja tudi za histerezno regulacijo temperature. Referenčno temperaturo lahko nastavimo ročno, lahko pa si napišemo urnik temperature, ki potem vodi temperaturo v prostoru.
Avtomatski zagon ob vklopu
Če si pogledamo sliko 4 imamo na spletni strani roza gumb Programi. Izpiše nam program, ki se izvaja v ozadju. Če bi kartični računalnik ponovno zagnali, bi se program Klimat ob zagonu računalnika zagnal tudi sam.
Za absolutne časovne dogodke skrbi program chrontab. Delo s chrontab-om označujejo rumeni gumbi.
Gumb Izpis vsi izpiše programe, ki se zaženejo ob ponovnem zagonu, vsako sekundo, vsaki dve sekundi in tako do vsakih 12 ur.
Gumb Stop vsi izbriše vse absolutne časovne dogodke, z gumbom Stop in zraven izbira zaustavi izbrani dogodek.
Z gumbom Ponavljaj dodamo program, ki ga preučujemo (na levi) v avtomatski zagon ob zagonu računalnika. Z gumboma Odpri in Shrani si obravnavani program spravimo za kasnejšo uporabo. Program , ki ga zaženemo ob vklopu, mora biti program s krmilnim jedrom in se nikoli ne ustavi. Program z časovnimi dogodki (npr. na 1 sekundo) se morajo končati.
Krmilno jedro
Program se odvija v neskončni zanki, slika 4a. Zaženemo ga ob zagonu računalnika. Zaustavimo ga z uporabo tipke Konec ali pritiskom na tipko T4. Elementi krmilnega jedra so:
Vpis v SQL tabelo
Element se izvaja na 10 minut. Vpišemo zadnjo prebrano izmerjeno vrednost temperature iz datoteke v SQL tabelo podatektipala. Po vpisu element izbriše vse vpise starejše od enega tedna. Na koncu prebere vpis v urnik in izračuna trenutno referenčno temperaturo. Referenčna temperatura se zapiše v datoteko conf.json. Ta referenčna temperatura se, če jo ne povozimo z ročnim ukazom, uporablja za histerezno regulacijo temperature na l2.
Zajemanje temperature
Element se izvaja na eno sekundo. Preberemo trenutno vrednost tipala in datoteko conf.json. Popravimo vrednosti izmerjene temperature in datoteko ponovno zapišemo z popravljenimi vrednostmi. Zajemanje temperature na začetku prižge signalno diodo l1 in jo na koncu ugasne. Pravilno delovanje je tako signalizirano s pobliski l1.
Vpis v podatkovno skladišče
Krmilno jedro ima dodano zajemanje sistemskih spremenljivk. Le-te lahko prikažemo v lepem trend diagramu. Podatki se shranjujejo v delovnem spominu. Imamo zgodovino dolgo 400 zapisov. Cikle zapisa lahko nastavimo od 1ms navzgor. Pred-nastavljena vrednost, ki jo uporabljamo v našem primeru je 1s.
Histerezna regulacija temperature
Histerezna regulacija se izvaja nad l2. Izvaja se neomejeno v krmilnem jedru, kar pomeni cca. 8000/sekundo. Uporablja spremenljivke shranjene v delavnem spominu. Histerezni regulator uporablja nastavljeno temperaturo kot referenco in izmerjeno temperaturo kot vhoda v histerezno regulacijo.
Spletne strani
Domov->Klimat->PHP->diagram.php
Php program izriše tedenski graf temperature, vlage in tlaka. Z uporabo povezave Nov zavihek lahko izrišemo samo graf v nov zavihek. Podatke jemljemo iz tabele podatektipala. Imamo dva gumba za absolutni in relativni izris. Dodatno se izpišejo številski podatki datuma, temperature, tlaka in vlage, če z miško pridemo na graf. Če podatki manjkajo, se za tisto obdobje ne izpišejo.
Domov->Klimat->PHP->temperatura.php
Spletna stran je namenjena ročni nastavitvi referenčne temperature. Prednost nastavitve ima urnik, vendar lahko v vsakem trenutku nastavimo želeno temperaturo, in jo vpišemo v datoteko /var/www/html/projekti/klimat/conf.json, ki jo uporablja histerezni regulator za referenčno temperaturo. Kot smo že napisali, v ozadju teče opravilo na 10 minut, ki poleg ostalega nastavi referenčno temperaturo iz urnika. Temu se v tem programu ne moremo izogniti, razen če urnik pustimo prazen.
Domov->Klimat->PHP->urnik.php
Z urnikom lahko nastavimo referenčno tedensko temperaturo. Program, ki se izvaja na 10 minut , med drugim preračuna trenutno referenčno temperaturo in jo vpiše v datoteko /var/www/html/projekti/klimat/conf.json, ki jo uporablja histerezni regulator za referenčno temperaturo.
Zaključek
Delujoči projekti so noviteta na slovenski izdaji. Govorimo o orkestraciji tehnologij. Odprta koda deluje tako. Vzameš projekt (ali več projektov), ki so naj bližje tvojemu problemu. Vzameš iz vseh projektov najboljše, združiš in dobiš dobro osnovo za lasten projekt. Slovenska izdaja je poleg delujočih primerov, vaj iz ključnih tehnologij tudi uradni operacijski sistem z nameščenimi ključnimi strežniki za hitro delo v šoli in širše. Koncept je bil mednarodno predstavljen, nahaja se v Cobis zapisu in ima mednarodne odzive (citiranja). Celotna spletna stran z vsemi primeri je dostopna iz raziskovalca, oz. če priklopimo na kartični računalnik miško in tipkovnico imamo hiter računalnik z vsemi orodji za projektiranje. Razvijamo lahko v Windows ali Linux okolju. Za šolsko okolje je ključno odlično delovanje easistenta in teams-ov. Ključni razvojni moment je izredno mala poraba, ki se vrti okoli 15W na delovno mesto oz. v stanju spanja, ko znaša okoli 1W, kar omogoča, da računalnika ne izklapljamo. Končni udarec starim računalnikom je cena. Monitor, miška, napajalnik, SD kartica, kartični računalnik, koračni motor s krmilnikom in 4x kapacitivne tipke stanejo okoli 200€.
Naslednjič
Naslednjič si bomo pogledali šolski projekt Robot. Tu se ukvarjamo s hitrimi UDP komunikacijami in uporabljamo tipala pametnega telefona za upravljanje robota. Pametni telefon je prava mala zakladnica tipal, poleg slike in zvoka imamo še tipala pospeška, magnetnega polja, žiroskop, temperature, vlage, tlaka, časa, daljinomer, GPS, zaslon na dotik, NFC in RFID. Upam , da nisem katerega pozabil. Na izhodni strani imamo zaslon, zvočnike in vibrator. Kar lepa zakladnica, za vsakogar nekaj. Iz vsega tega si bomo pogledali, kako s pomočjo kartičnega računalnika, krmilnega modulčka, DC hobby motorčkov in aplikacije za pametni telefon, krmilimo robotka z nagibanjem telefona. Pogledali si bomo izdelavo ohišja v 3D programu tinkerpad (Vir:4). Mehatronika na stereoidih 🙂
Viri:
https://www.banggood.com/5pcs-BME280-Digital-Sensor-Temperature-Humidity-Atmospheric-Pressure-Sensor-Module-p-1430737.html
http://77.38.33.244/
http://77.38.33.244/indexorodja.php
http://77.38.33.244/projekti/robot/tinkercad.php