VIDI Project X #70:
Vidi X mikroračunalo u ulozi termostata centralnog grijanja

U ovome tutorijalu naučit ćete kako napraviti osnovni termostat centralnog grijanja koristeći Vidi X mikroračunalo.

Osim samog mikroračunala trebat će vam Relay modul koji služi kao prekidač (isklopnik i uklopnik) te, naravno, kompatibilni bojler centralnog grijanja. Naš Vidi X termostat montirali smo na zid za kontrolu Viessmanovog plinskog bojlera centralnog grijanja. Kako biste vi to mogli učiniti na vašem bojleru, prvo što morate napraviti je saznati specifikacije vašeg termostata koji trenutno upravlja grijanjem ili specifikacije bojlera, kako biste saznali koji termostat smijete koristiti.

Postoji previše vrsta termostata da bismo ih sve opisali, pa ćemo se osvrnuti samo na neke. Dakle, termostati su najčešće prekidači koji pale i gase grijanje u odnosu na postignutu temperaturu. Ovaj naš, koji smo zamijenili Vidi X-om, je najjednostavnija i najnepreciznija vrsta termostata koju možete naći. Riječ je o analognom termostatu koji radi na principu bimetala. Bimetal je načinjen od dvije metalne vrpce koje reagiraju na toplinu te se uslijed promjene temperature šire ili skupljaju, pa tako pale ili gase struju ili, u našem primjeru, bojler.

Nemate li odgovarajući bojler, ne treba odmah zanemariti ovaj projekt, jer na istom principu i uz isti kod možete regulirati grijanje vode akvarija s ribicama, no tada biste senzor temperature također trebali spojiti na expansion slot kako bi se mogao uroniti u vodu, ili ga koristiti za hlađenje sobe ventilatorom. Možete li se sjetiti još neke primjene? Za vašu je primjenu važno znati samo je li ovaj Relay dostatan. Naime, on ne može upravljati većim (jačim) potrošačima poput vešmašine ili kalorifera.

 

 

Ovaj bojler trpjet će teror koji mu diktira Vidi X mikroračunalo kao termostat centralnog grijanja.

 

 

Početni dio krivulje na slici dolje prikazuje stabiliziranje senzora na „radnu temperaturu“, pa nakon što se krivulja stabilizira, senzor stavljamo u frižider za koji znamo da ima temperaturu od 8 °C. Varijabla DeltaMin prikazat će nam sirovu vrijednost očitanu na tih 8 °C, naravno uz minimalna odstupanja senzora.

 

Kako biste znali odabrati Relay koji će zamijeniti termostat, morate znati koliko i kada struja prolazi vašim termostatom. Kod Viessmanovog bojlera mjernim instrumentom izmjerili smo 220 volti izmjenične struje jakosti manje od jednog ampera uz povremene špiceve struje do 4 ampera pri paljenju. Kako smo mjerili hoby mjernim uređajem, taj podatak treba uzeti kao djelomično točan jer hoby instrumenti imaju neka svoja odstupanja pri mjerenju. Tako možemo pretpostaviti kako ti špicevi dosežu i do 6 A, pa tako i do 10 deklariranih A na Relayu može biti sasvim dovoljno za naš projekt. Nikada nemojte izabrati komponente na knap, tj. da smo izmjerili 10 A potrošnje na bojleru, morali bismo uzeti bolji mjerni instrument, jer hoby instrumenti većinom ne mogu mjeriti više od toga. Ako i profesionalnim mjerenjem utvrdite jakost struje od 10 A, opet nemojte odabrati Relay do 10 A, nego barem onaj koji može podržati jakost struje od 16 A.

 

Nemojte mjeriti amperažu struje ako niste školovani za rad s izmjeničnom strujom, jer nespretnim rukovanjem možete nastradati. Izmjenična struja može ubiti čovjeka. Primite li žicu pod naponom izmjenične struje, između dva prsta nećete je moći pustiti, jer struja grči mišiće te time uzrokuje da još čvršće primite žicu. Radije takav posao prepustite profesionalcima, jer nekoliko stotina kuna radnog sata stručnjaka je malena cijena za izbjegavanje nesreće uslijed nestručnog rukovanja.

 

Iz dobivenih mjerenja zaključili smo kako nam je u ovom slučaju dovoljan Arduino kompatibilni 5 V relej modul. On je sposoban propustiti 10 A struje pri naponu od 250 V izmjenične struje ili 10 A pri 30 V istosmjerne struje.

Dakle, bit će nam dovoljno 4 A pri 220 V. Neki drugi bojleri mogu na termostatu imati žice kojima prolazi struja jakosti do 16 A te nikako ne smijete pokušati modificirati jedan takav bojler, jer će vrlo vjerojatno doći do pregrijavanja Relaya, što može uzrokovati i požar.

Požar mogu uzrokovati i labavo spojene žice ili (tanke) žice premale kvadrature. Mi smo koristili žice od kvadrat i pol. Njihov promjer bakrene niti iznosi 1,5 mm.

 

Termostat s bimetalom koji ima vrlo malu točnost. Žice smo samo „produžili“ do Relaya kako bismo imali redundantnost u slučaju kvara jednog od termostata.

Nešto su češći termostati koji na žicama za paljenje imaju 24 V napona ili manje, a ovaj naš termostat možete koristiti i na takvim bojlerima.
Postoje i bojleri koji za komunikaciju s termostatom koriste neki komunikacijski protokol koji je razvio proizvođač. Takvim bojlerima nećete moći upravljati pomoću softvera koji smo predvidjeli za ovaj tutorijal, no svakako ćete se moći poslužiti kodom kako biste razvili vlastiti kod za te bojlere.

 

Ako nemate odgovarajući bojler, ne treba odmah zanemariti ovaj projekt, jer na istom principu i uz isti kod te minimalne hardverske izmjene možete regulirati grijanje vode akvarija s ribicama

 

Arduino kompatibilni 5 V relej modul

Vidi X mikroračunalo ima logički napon od 3,3 V. Vjerojatno se pitate kako je moguće pokrenuti Relay koji je deklariran na 5 V. Ako ste pratili neke ranije objavljene tutorijale, mogli ste primijetiti kako smo koristili LLC (Logic Level Converter) za pretvaranje 3,3 V logičkih signala u 5 V logički signal.

No kako smo ovdje koristili brandirani Relay modul, a on poštuje standard za 5 V logičke sklopove, možemo ga koristiti izravno spojenog na logički pin Vidi X mikroračunala od 3,3 V. Napajanje Relaya morat ćemo spojiti na pin koji napon dobiva izravno s USB-a. Dakle, 5 V naponom s USB-a napajat ćemo sklopovlje Relaya.

 

S Vidi X-a možemo izvući 5 V za napajanje Relaya, dok će signal Vidi X-ovog logičkog pina biti dovoljan za upravljanje Relayom.

 

Standardni 5 V logički naponi

Logika će raditi zbog standardnih razina napona logičkog signala, koje pri 5 V izgledaju ovako:

 

V OH – Minimalna IZLAZNA razina napona koji TTL uređaju daje HIGH signal.
V IH – Minimalna ulazna razina napona koja se smatra VISOKOM.
V OL – Maksimalna IZLAZNA razina napona koji će uređaju pružiti LOW signal.
V IL – Maksimalna ulazna razina napona i dalje se smatra NISKOM.

 

 

 

 

Primijetit ćete da je minimalni izlazni HI napon (V OH) 2,7 V. Dakle, imate li napon od 2,7 V na pinu Vidi X-a, smatrat će se da je to HI napon te će pokrenuti Relay sa stanjem 1. Minimalni ulazni napon koji će se smatrati HI naponom, tj. logičkim 1 (V IH), je 2 V. Dakle, bilo koji napon od najmanje 2 V i veći će se očitavati kao logička jedinica (tj. HI) na logičkom uređaju, odnosno Relayu u našem primjeru. Moguće je da raspon od 2 V do 2,7 V ne bude uvijek očitan kao HIGH napon, pa, kako biste bili sigurni da će uređaj ispravno raditi, taj raspon struje morate testirati na vašem Relayu. Kod jeftinijih proizvođača je, naime, moguće da nisu poštovali propisani standard. Taj prostor od 0,7 V se ponekad naziva marginom buke i moguće je da ga određeni proizvođači namjerno izbjegavaju.

Maksimalni izlazni LOW napon (V OL) je 0,4 V. To znači da će uređaj koji pokušava poslati logičku 0 uvijek biti ispod 0,4 V. Maksimalni ulazni LOW napon (V IL) je 0,8 V. Dakle, bilo koji ulazni signal ispod 0,8 V i dalje će se smatrati logičkom nulom (tj. LOW). Ovdje možete primijetiti marginu buke od 0,4 V.

Što se događa ako imate signalni napon između 0,8 V i 2 V? Ovaj raspon napona nije definiran i rezultira neispravnim stanjem, koje se često naziva plutajućim. Ako izlazni pin na vašem uređaju „pluta“ u ovom opsegu, okarakterizirat ćemo ga kao slučajni, a bit će čas nula, čas jedinica. Potpuno slučajno.

Sada kada znate kako radi logički signal, trebate razumjeti i drugu stranu Relay modula. Na toj drugoj strani nalaze se 3 pina. Pin oznake NC (normally closed) spojen je sa zajedničkim C (common) pinom u slučaju kada je signalni logički pin na LOW te kroz njih teče struja. Druga oznaka, NO (normally open), bit će povezana sa zajedničkim pinom C tek kada signalni logički pin očita HI vrijednost, dok se u tom slučaju prekida veza između C i NC pinova.

Hoće li Relay modul dobro očitati HI i LOW stanja logičkog signala najviše ovisi o tranzistoru koji propušta 5 V napona s pinova napajanja, ako je očitao logičku jedinicu sa signalnog pina, kao što smo opisali ranije. O njemu ovisi i odabir plutajućeg stanja kada je signalni napon između 0,8 V i 2 V.

 

Temperaturni senzor

Senzor očitava raspon od -40 °C do +150 °C, a Vidi X mikroračunalo mu omogućava čitanje temperature u 10 bitnoj rezoluciji.

 

Senzor temperature spojen je na pin 26 na Vidi X mikroračunalu. Kako biste mogli očitati vrijednost koju daje temperaturni senzor, prekidač na poleđini Vidi X mikroračunala mora biti u položaju kako je označeno na pločici. U suprotnom je na taj pin spojeno pojačalo zvuka.

Dakle, u jednom trenutku, ovisno o položaju tog prekidača, moguće je koristiti ili zvučnik (i slušalice) ili temperaturni senzor i infracrveni receiver.

Senzor očitava raspon od -40 °C do +150 °C, a Vidi X mikroračunalo mu omogućava čitanje temperature u 10 bitnoj rezoluciji. 10 bitna rezolucija je u biti broj 210 (2 na 10-u potenciju), što iznosi 4096 nivoa očitanja.

Kako senzor ima točnost od +-2 °C, potrebno ga je kalibrirati za precizna očitanja. No ta točnost ne znači da će on u jednom trenutku očitati 25 °C, a u sljedećem 23 °C, nego da će senzor konstantno očitavati 21 °C ili pak 25 °C pri temperaturi od 23 °C. Zato ga je potrebno kalibrirati.

U našem kodu postoje varijable koje smo prigodno nazvali DeltaMin i DeltaMax, a koje su nam poslužile upravo u svrhu kalibracije. Stavili smo nekoliko Vidi X mikroračunala u frižider zajedno s termometrom. Tako smo mogli potvrditi da su razlike između Vidi X mikroračunala svega par stupnjeva, i razlike su jednake i na temperaturama u frižideru, kao i na sobnim temperaturama.

Crvenim grafom i linijom koda

TFT.drawPixel(j, map(val, 500, 1000, myHeight - 41, 1), ILI9341_RED); // crtamo izraženiju krivulju temperature

 

na monitoru Vidi X-a iscrtavamo sirove vrijednosti koje smo očitali sa senzora temperature.
Funkcija map poslužit će za pretvorbu analognih vrijednosti raspona od 0 do 4095 u raspon koji ekran može prikazati, a to je od 0 do 240. Koristili bismo je ovako:

map(p.y, 0, 4095, 0, TFT.height());

 

Zatim funkcijom
drawPixel
crtamo piksel na dobivenim vrijednostima.

 

Možete primijetiti kako se ta crvena linija pomalo rasipa. Te točke koje odlutaju od sredine zapravo su greška senzora. U matematici se one nazivaju izoliranim točkama. To može biti uzrokovano oscilacijama u naponu, no ponekad se dogodi slučajno, tj. greškom senzora. Što je napon napajanja stabilniji, i greške senzora će biti manje. Vidi X napajan baterijama imao je znatno manje izoliranih točaka od onoga napajanog USB punjačem.

Raznim matematičkim metodama možemo kompenzirati nastale greške, tj. maknuti izolirane točke iz niza očitanja. Mi smo se odlučili za relativno jednostavnu metodu kompenziranja grešaka: računanje aritmetičke sredine od zadnjih 10 očitanja. Dakle, prvo smo deklarirali varijablu niza i napunili je inicijalnim podacima kroz ove linije koda. Te inicijalne vrijednosti postavili smo na znatno manje od očekivanih kako bismo jasnije vidjeli radi li naš kod kao što smo zamislili. Dodali smo i varijablu kojom možete promijeniti broj članova niza, no nemojte pretjerivati jer će aritmetička sredina dugo izjednačavati temperature. Ako je pak znatno smanjite, povećat će se greška.

 

const int brojUzoraka = 10; // Broj uzoraka temperature spremljene u niz, mora biti konstanta
int tempValues[brojUzoraka] = { 600, 600, 600, 600, 600, 600, 600, 600, 600, 600}; // niz

 

Nakon očitavanja nove vrijednosti sa senzora temperature, potrebno je niz premjestiti za jedno polje niza kako biste stvorili prostor za ubacivanje novoočitanog stanja senzora.

To činimo putem ove For petlje:

for(int o = 0; o < brojUzoraka; o = o + 1) { // Premještamo niz kako bismo napravili mjesta za novu vrijednost
tempValues[o] = tempValues[o+1];
}

 

Sada na posljednje mjesto niza ubacujemo to novo stanje kako bismo u narednoj For petlji mogli računati s novom vrijednosti.

tempValues[brojUzoraka-1] = val; // Spremi vrijednost senzora na zadnje mjesto niza
srednjaVrijednost = 0;
for(int o = 0; o < brojUzoraka; o = o + 1) { // Pripremamo varijablu za računanje aritmetičke sredine
srednjaVrijednost = srednjaVrijednost + tempValues[o];
}
srednjaVrijednost = srednjaVrijednost / brojUzoraka; // Računamo aritmetičku sredinu
ciljTemp = temperature(temperatura);
tempC1 = temperature(srednjaVrijednost); // Pozivamo funkciju za pretvorbu analognih očitanja u stupnjeve Cezijeve

 

Sama funkcija pretvorbe izgleda ovako:

float temperature(int analog) {
double temp = analog * 3.30 / 4095.0; // Analognu vrijednost pretvaramo u otpor
temp = temp - 0.40; // Oduzimamo 500 mA, tj. -40 °C
temp = temp / 0.01; // Pretvaramo vrijednosti u °C
return temp;
}

 

Varijablu temp množili smo s 3,3 V, što je vrijednost napona kojim napajamo ESP32 procesor. Veća točnost očitanja senzora može se postići ako kreirate sklop koji može pratiti stanje napajanja, pa ako biste tim sklopom očitali, na primjer, 3,38 V, trebalo bi tu vrijednost uvrstiti u formulu računice.

Nakon toga je taj račun potrebno podijeliti s rezolucijom pina, a s obzirom na to da se radi o 10 bitnoj rezoluciji koja ima 4096 stanja, u našu formulu uvrštavamo broj 4095, što je maksimalna vrijednost koju možemo očitati 10 bitnim pinom. Dakle, 4095 je maksimalna vrijednost iz razloga što je prva, tj. najmanja moguća očitana vrijednost 0, a ne 1. Tako 4095 zajedno s tom nulom daje 4096 različitih vrijednosti. Najčešća greška u programiranju je upravo ta kada programer zaboravi na vrijednost koja može biti nula, pa računicu obavlja pod pretpostavkom da je najmanja vrijednost 1.

Vrlo je važno zapamtiti i paziti na takve računice, jer množenje s nulom uvijek će dati nulu, dok će dijeljenje s nulom rezultirati greškom.
U sljedećoj se liniji koda oduzima negativni raspon senzora zato što ga, ako senzor očita -40 °C te nam analogni pin vrati vrijednost 0, moramo korisniku prikazati kao °C, pa ćemo to učiniti tako da jednostavno oduzmemo tih 40 °C.
Sada nam još preostaje pomaknuti decimalni zarez.

Ako imate uvjete za kalibraciju senzora na temperaturama manjim od naših 6 °C izmjerenih u frižideru te većim od 27 °C koje smo izmjerili unutar kućišta starog računala, mogli biste sada dodati i faktor greške očitanja senzora te time dobiti još malo preciznija očitanja.

Mi nismo išli u te ekstreme mjerenja temperatura, jer za potrebe sobnog termostata koji će regulirati grijanje u prostoriji dovoljno nam je precizan i ovako kalibrirani senzor. Dakle, ako vaš senzor očitava 21 °C pri sobnoj temperaturi od 23 °C, koju ste izmjerili drugim termometrom za koji znate da je precizan, dovoljno je u liniji koda gdje oduzimamo 40 °C oduzeti 38 °C i time ste popravili grešku senzora temperature.

 

Smješten pored starog, ovaj novi i moderni termostat vrhunski odrađuje zadatke koje mu nalaže programski kod.

 

Osnovnu verziju koda pronađite na našem GitHub kanalu https://github.com/VidiLAB-com/Vidi-X

 

Još malo o kodu

Primijetite kako odmah na početku glavne funkcije

 

void loop() {

 

krećemo s linijom koda

 

n++;

 

koja u biti predstavlja formulu n=n+1, a služi nam kako bismo znali koliko je puta procesor prošao kroz glavnu petlju programa.

Vrijednost senzora ćemo uz pomoć te varijable očitavati svaki milijunti put prolaska procesora kroz glavnu petlju. Iako naš senzor nema problema s pregrijavanjem, praksa je da se senzori očitavaju uz određenu stanku između očitanja. Neki senzori tako rade iz razloga što se, kada biste ih očitavali konstantno, bez „pauze“, dodatno griju uslijed konstantnog protoka električne energije kroz njih i time također mogu dati pogrešno očitane vrijednosti.

Dakle, umjesto funkcije delay koristimo spomenuti n brojač i if uvjet, nakon kojeg varijablu n postavljamo na 0 kako bi proces brojanja krenuo isponova.

 

if (n == 1000000) { // Smanjivanjem ovog broja, glavni dio programa se češće izvodi
n = 0;

 

Kako bi se centralno grijanje uključilo na određenoj vrijednosti, if uvjetom provjeravamo je li postignuta zadana temperatura paljenja.
Postavili smo i varijablu arm kako bismo njome mogli odrediti palimo li i gasimo uistinu centralno grijanje ili smo u demo modu, pa palimo samo plavu LE diodu. Ovo nam je trebalo pri testiranju, a ostavili smo kao ON / OFF opciju.

 

if ( arm ) {
if (srednjaVrijednost > temperatura ) {
digitalWrite(RELAY, LOW);
digitalWrite(stat, LOW);
}
if (srednjaVrijednost <= temperatura) {
digitalWrite(RELAY, HIGH);
digitalWrite(stat, HIGH);
}
} else {
digitalWrite(RELAY, LOW);
// ovaj dio koda koristi se samo za simulaciju
// kako bismo mogli kalibrirati senzor prije korištenja
if (srednjaVrijednost > temperatura ) {
digitalWrite(stat, LOW);
}
if (srednjaVrijednost <= temperatura) {
digitalWrite(stat, HIGH);
}
}

 

ON / OFF opciju palite i gasite pritiskom na tipku A Vidi X mikroračunala, a dio koda koji mijenja stanje varijable pri detekciji pritiska tipke A izgleda ovako:

 

GumbUP = analogRead(UP_DOWN);
if ( !digitalRead(Gumb_Arm) ) {
arm = !arm;
n = 1000000-1;
delay(500); // Kada smo pritisnuli gumb, trebamo odgodu
}

Vrijednost ciljane temperature postavljamo gumbima gore-dolje i dijelom koda koji očitava analogne vrijednosti pina 35, koje se mijenjaju ovisno o pritisnutom gumbu.

 

if (GumbUP > 0 ) {
if (GumbUP < 2048 ) {
temperatura=temperatura-1;
if (temperatura < 700) { temperatura = 700; }
n = 1000000-1; // Postavljamo varijablu kako bi se pokrenuo glavni dio koda
} else {
temperatura=temperatura+1;
if (temperatura > 800) { temperatura = 800; }
n = 1000000-1; // Postavljamo varijablu kako bi se pokrenuo glavni dio koda
}
delay(300); // Kada smo pritisnuli gumb, trebamo odgodu
}

 

Ovdje smo ujedno limitirali minimalnu i maksimalnu vrijednost temperature koju korisnik može namjestiti.

U kodu pronađite funkciju

 

void dijeljenje( int n)

 

 

koju koristimo kako bi tekst na ekranu naizmjence prikazivali RGB (Red, Green i Blue) bojama s ciljem očuvanja ekrana, tj. smanjivanja tzv. burn-in efekta koji se može pojaviti uslijed dugotrajnog prikazivanja istog sadržaja na istom mjestu.
Ovaj je problem moguće riješiti i drugim programskim metodama. Npr. moguće je napisati screensaver koji će pokušati smanjiti burn-in ekrana.

 

Shema spajanja

Kako bismo mogli koristiti pinove na expander slotu, mikro prekidače na srednjem S4 panelu treba postaviti u položaj prema oznaci USE EXP.
Mikro prekidač broj 3 stavljamo u taj položaj kako bi Vidi X bilo moguće programirati, jer u suprotnom ne možete flashati novi kod na Vidi X, dok mikro prekidač pod brojem 4 stavljamo u spomenuti položaj kako bismo funkcionalnost s menu gumba preusmjerili na expander slot te time pin broj 13 iskoristili za logičku vezu s Relayem.

Obratite pozornost i na prekidač desno, kojim reguliramo želimo li koristiti zvučnike Vidi X-a ili ćemo ta dva pina zvučnika preusmjeriti za korištenje temperaturnog senzora, kao i infrared receivera.

 

Mikro prekidači na S4 panelu u sredini, pod brojevima 3 i 4, moraju biti u položaju USE EXP. Prekidač desno mora biti u položaju TEMP / IRRX kako bi senzor temperature radio.

 

 

Programeri entuzijasti mogu se pozabaviti obogaćivanjem koda te vježbati svoje programerske vještine uz ove vježbe.

 

Vježba 1:

Potrebno je isprogramirati manja odstupanja pri paljenju i gašenju centralnog grijanja kako se bojler ne bi palio i gasio u određenim situacijama. Npr. namjestili ste termostat na željenu temperaturu od 20,04 °C te, ako je očitana temperatura u jednom trenutku 20,04 °C, a u drugom 19,96 °C, zatim opet 20,04 °C, pa 19,96°C, kod će čas paliti čas gasiti centralno grijanje u malenim razmacima.
Bolje bi bilo da paljenje termostata u takvim slučajevima isprogramiramo da se termostat pali tek kada temperatura padne na 19,79 °C, a ugasi kada se postigne nešto veća temperatura od željene, npr. 20,20 °C.

 

Vježba 2:

Što više koda potrebno je smjestiti u zasebne funkcije kako bi se kod lakše nadograđivao i održavao.

 

Zadaci za Vidi eXperte:

Kroz korištenje ovog termostata došle su nam ideje za razvoj koda koje bi mogle teći ovim smjerom. Dakle, uhvatite li se u koštac s ovim kodom, voljeli bismo da ga unaprijedite našim prijedlozima ili da smislite još bolja rješenja.

 

// - Dohvaćanje trenutnog vremena s NTP Servera
// - Zapisivanje statusa temperature i relaya u realnom vremenu na SD karticu
// - Zapisivanje statusa temperature i relaya u realnom vremenu u MySQL bazu
// - Postavljamo MENU za unošenje kalibracijskih vrijednosti
// - Detektiramo prisutnost ukućana kako bi termostat mogao procijeniti preferiranu vrijednost temperature prema željama pojedinog ukućana
// - Spremamo i učitavamo konfiguraciju, tj. setup vrijednosti s SD kartice
// - Mogućnost programiranja putem BT konekcije
// - Mogućnost programiranja putem Wi-Fi konekcije
// - Kontrola uz touchscreen...

 

Programski kod je dobro komentiran i u njegovu lakšem razumijevanju će vam napisani komentari uvelike pomoći. Nadamo se da i vaši kodovi koje stvarate imaju bogate i obilne komentare.

 

Za kraj

Ovaj naš termostat već mjesec dana uspješno kontrolira centralno grijanje u stambenom prostoru autora teksta. Iako je za prvi test ostavljen i stari, analogni termostat u paralelnom spoju kako bismo ipak imali backup soluciju za određeni testni period. Opreza nikad dovoljno!

Osnovnu verziju koda pronađite na našem GitHub kanalu https://github.com/VidiLAB-com/Vidi-X

LCD: se pokazao koristan pri iscrtavanju vrijednosti koje očitavamo sa senzora te pri ispisivanju vrijednosti varijabli.