V preteklem nadaljevanju smo sliko iz ESP32-CAM analizirali s funkcijami računalniškega vida. Za osnovo smo uporabili odprtokodno programsko knjižnico OpenCV z bogato funkcionalnostjo. Nadaljevali smo s programiranjem odprtokodne pametne ure LILYGO T-Watch 2020 v3, ki je namenjena vsem tistim, ki želijo svoje znanje Arduino programiranja smelo preizkusiti v vsakdanjem življenju, ter izdelali video zvonec in video domofon.
Avtor:dr. Simon Vavpotič
Avtor fotografij: Simon Vavpotič
2022-303-43
Tokrat nas bo zanimalo, kako priključiti in sprogramirati cenen črni-beli SHARP-ov LCD grafični prikazovalnik brez tiskanine. Lotili se bomo tudi preizkušanja med graditelji Arduino projektov priljubljenega barvnega 1,25-inčnega Adafruitovega SSD1351 prikazovalnika, za priklop katerega ne potrebujemo kakih posebnih spretnosti spajkanja, saj je konektor z natičnimi kontakti priložen. Lotili se bomo tudi izdelave mini vremenske postaje z barvnim prikazovalnikom in merilniki temperature, zračnega tlaka in relativne zračne vlažnosti. Za povezovanje zunanjih modulov in prenos podatkov v PC ali pametni telefon bomo uporabili Wi-Fi omrežje…
Pred nadaljevanjem naj pojasnim še, da je bile v preteklem nadaljevanju z naslovom Izdelajmo Video domofon z OpenCV in ESP32-EYE v SE302 zaradi tehnične napake, na katero kot avtor članka nimam vpliva, vstavljene napačne slike 1, 4, 5, 7 in 10, namesto katerih bi morale biti objavljene moje avtorske risbe. Popisi z navedbo, da gre za moje avtorske risbe so zato pri teh napačni. Prav tako se je pri postavljanju revije v tekst prikradla ena od mojih pripomb glavnemu uredniku, ki je zgolj navodilo zanj in ni za objavo (slika 11). V zvezi z navedenim bralce vljudno prosim za razumevanje.
Ta vsebina je samo za naročnike
LCD in TFT prikazovalniki brez tiskanine
Graditelji projektov na osnovi preizkusnih ploščic se redno sprašujemo, koliko dela so nam prihranili snovalci slednjih in ali se splača preizkusno ploščico izdelati doma, če imamo na razpolago ustrezna orodja. Sodobni LCD in TFT prikazovalniki, ki jih lahko uporabimo za domače projekte, so zgrajeni na tanki stekleni plošči, na kateri se nahaja krmilnik zaslona, tekoči kristali in vse potrebne povezave. Zaslon napajamo in krmilimo prek upogljivega trakastega kabla z 8 do 30 kontakti.
Proizvajalci tovrstne prikazovalnike, ki so mimogrede zelo krhki, prilepijo na razvojno ploščo, na katero dodajo še nekaj podporne elektronike, ki omogoča enostavno povezavo in uporabo zaslona z mikrokontrolerskim modulom.
Če se lotimo izdelave lastne razvojne plošče, je dobro, da prej v spletu poiščemo načrt razvojne plošče s podobnimi funkcionalnostmi, kot jo želimo izdelati. Obenem moramo natančno pregledati tudi podatkovno polo prikazovalnike, v kateri sta opisana način priklopa in programiranje zaslona. Naslednji korak je izdelava tiskanine in spajkanje elementov in prikazovalnika, za kar navadno potrebujemo ustrezne stroje.
Če se implementacije razvojne plošče lotimo sami potrebujemo vsaj lupo z močno optično povečavo, še bolje pa enostaven mikroskop. Večina trakastih kablov sodobnih LCD in TFT prikazovalnikov ima namreč kontakte razmaknjene za 0,5 mm ali 0,4 mm, ki jih brez povečave in spajkalnika s konico 0,2 mm ali tanjšo ne moremo ročno spajkati. Mimogrede omenim, da se pri tako majhnih kontaktih celo konica šivanke zdi dokaj robustna.
Za svoj projekt sem uporabil dva enaka SHARP-ova črno-bela zaslona LS013B7DH03, od katerih sem enega prispajkal neposredno na tiskano vezje, pri drugem pa sem namesto tega na tiskanino najprej prispajkal ustrezno vtičnico in nato trakast kabel enostavno vtaknil vanjo. Slednjega načina implementacije zaradi zahtevnosti spajkanja trakastih kablov z vse tanjšimi bakrenimi robnimi kontakti danes uporablja večina proizvajalcev razvojnih plošč. Tudi sam moram priznati, da je taka implementacija bistven enostavnejša, saj je pred neposrednim spajkanjem trakasti kabel potrebno nepremično pritrditi, krati pa lahko s prekomernim segrevanjem s konico spajkalnika kaj hitro poškodujemo ali uničimo kontakte. Naj omenim še to, da sem imel pri izbranem tipu prikazovalnika srečo, da je vseh 10 priključkov na isti strani oranžnega trakastega kabla, sicer bi jih bilo vsaj zame nemogoče ročno prispajkati.
Spajkanje kontaktov ali konektorja?
Naslednje vprašanje je, kakšno žico uporabiti. Klasičen barvni kabel seveda ne pride v poštev, saj je vsaka žica z izolacijo vred debela okoli vsaj okoli 1 mm in sestavljena iz okoli 5 bakrenih laskov, debelih okoli 0,01 mm, ki se pri pogostem upogibanju hitro odtrgajo. Zato moramo žico vselej prispajkati z vsemi laski in je zato predebela. Sam sem namesto tega uporabil okoli 0,4 mm debelo izolirano žico za povezovanje kontaktov na prototipnih ploščah z enim samim okoli 0,2 mm debelim laskom, ki je veliko bolj vzdržljiv. Kljub temu spajkanje slednjega na kontakte trakastega kabla ni ravno preprosto, saj med žicami hitro nastane gneča. Obenem je na tako tanko površino tudi težko nanesti spajko, pri čemer brez 0,5 mm spajke ne gre.
Boljši način spajkanja trakastega kabla prikazovalnika bi bil s hkratnim segrevanjem vseh kontaktov in kontaktov na kablu, t.i. hkratno termično spajkanje, za kar potrebujemo poseben pribor. Opcija je tudi lepljenje na kontakte s posebnim prevodnim lepilom. No, sam nisem imel ne enega en drugega, zato sem se moral zanesti na mikroskop in nekako uspel v obeh poskusih. Ob tem pomislimo, da bi morda lahko trakasti kabel vseeno neposredno prispajkali tudi, če bi imeli tiskanino s kontakti z ustreznim razmikom (0,5 mm), vendar naj opozorim, da plastični trakasti kabel ni mogoče spajkati z robom, temveč le s tiste strani, kjer so kontakti. Ko kabel položimo na tiskano vezje, mora spajka nekako »splezati« čez rob kabla, da doseže miniaturne kontakte, kar pa se zdi vsaj pri ročnem spajkanju v miniaturnem svetu skoraj kot misija nemogoče…
A moram priznati, da je veliko lažje najprej prispajkati ustrezen konektor in nato vanj vtakniti kabel prikazovalnika. S tem se obenem tudi pri strojnem polaganju komponent izognemo spajkanju občutljivega prikazovalnika. Slednjega lahko na izdelano tiskano vezje nato priključimo in prilepimo ročno. Modra še nasvet pri izbiri konektorja za priklop prikazovalnika. Večina enostavnejših prikazovalnikov ima na trakastem kablu priključke zgolj z ene strani. Zato lahko v bolje založenih svetovnih spletnih trgovinah z elektronskimi komponentami poiščemo SMD vtičnico s kontakti na tiskano vezje na obe strani, s čemer se razmik med kontakti iz 0,4 mm poveča na 0,8 mm, kar omogoča tudi ročno spajkanje pod lupo. Sam sem tako vtičnico odspajkal kar iz vezja pokvarjenega digitalnega fotoaparata.
Kako deluje SHARP-ov spominski prikazovalnik?
SHARP LS013B7DH03 nima zmogljivega krmilnika, čeprav si matrika LCD elementov zapomni stanja vseh pik in je ni potrebno neprestano osveževati, je vseeno potreben alternirajoči signal VCOM, ki preprečuje nabiranje enosmernega naboja v prikazovalniku. Ustvarjamo ga lahko na dva načina, med katerima izbiramo s signalom EXTMODE. Navadno proizvajalci razvojnih plošč EXTMODE fiksno povežejo na napajalno napetost ali na maso in tako fiksno izberejo način generiranja VCOM signala.
Ob nizki vrednosti EXTMODE (0), je osveževanje programsko. Vrednost bita VCOM lahko spremeni katerakoli od pisalnih operacij prek vodila SPI, če pa vsebine dlje časa ne želimo spreminja, je na voljo tudi ukaz, s katerim zgolj spremenimo vrednost tega bita.
Pri visoki vrednosti EXTMODE (1), vrednost VCOM določamo prek vhoda EXTCOMIN. Pri 3,3-voltnih spominskih zaslonih je potreben VCOM med 54 Hz in 60 Hz, pri nekaterih tudi več, medtem ko pri 5-voltnih zadošča signal s frekvenco med 1 Hz in 20 Hz. Hitrejši signal omogoča bolj kontrastno sliko, s počasnejšim pa varčujemo z energijo.
Dodajmo, da lahko SHARP-ove spominske zaslone napajamo z napetostmi med 2,7 V in 3,3 V, kar povsem ustreza napajalnim napetostnim novejših mikrokontrolerjev, a žal ne tudi zahtevanim napetostnim nivojem logičnih ničel in enic, ki jih zahteva prikazovalnik. Visok logični nivo je med napajalno napetostjo minus 0,1 V (VDD-0,1 V) in VDD, nizek logični nivo med VSS (navadno masa 0 V) in VSS+0,1 V. Zato potrebujemo prilagoditveno vezje.
Denimo, ESP32 čip ima nizek izhodni logični nivo med 0,8 VDD in VDD. To pomeni, da je v najslabšem primeru lahko izhodna napetost GPIO priključka lahko tudi 3,3 V x 0,8 = 2,64 V, kar pa je bistveno manj od zahtevanih 3,2 V. Podobno je pri nizkem logičnem nivoju, kjer mora biti vrednost napetosti med 0 V in 0,1 V. ESP32 ima nizek izhodni nivo med 0 V in 0,1 VDD. Če je VDD=3,3 V, to znese 0,33 V, kar pa je precej več od dovoljenih 0,1 V. Pri vhodnih nivojih ni težav, saj ima ESP modul večjo toleranco, a teh tudi ne potrebujemo, saj SHARP-ov zaslon ne omogoča povratne SPI komunikacije. Zato nima izhodnih priključkov. Seveda je potrebno dodati, da sta mejni izhodni napetosti za vsak logični nivo določeni tudi glede na maksimalno tokovno obremenitev posameznega GPIO ESP32 modula ali drugega krmilnega čipa in da je tok skozi SHARP-ov zaslon neznaten.
No, ko sem šel z voltmetrom na GPIO14 ESP32 modula preverjati nivoje na neobremenjenem izhodu, je bilo vse v najlepšem redu. Napetost nizkega stanja je bila okoli 0,005 V in enaka napajalni napetosti okoli 3,3 V v visokem stanju (vsaj na 2 decimalki). Torej prilagajanje načeloma ni potrebno. Nato sem isti test ponovil s priključenim prikazovalnikom.
Ukazi SHARP-ovih spominskih prikazovalnikov
Ukazi SHARP-ovih LCD prikazovalnikov so: Write line, Write multiple lines, Change VCOM in Clear screen. Pri tem prek SPI vodila bite prenesemo od najmanj pomembnega (0) do najbolj pomembnega (npr. 7, pri 8-bitni besedi). Pri ESP32 modulu je v zvezi s tem dovolj, da izberemo LSB način delovanja SPI vodila. Ukazi zaslona so 8-bitni. Ukaz za pisanje 1 vrstice zaslona je tako v desetiškem zapisu 128 ali 192, pri čemer je v prvem primeru vrednost bita VCOM 0, v drugem pa 1. Sledi 8-bitna številka zaslonske vrstice, tej pa podatki vrstice, ki določajo nove vrednosti posameznih pik, nazadnje pa še 16-btni, sestavljen iz samih logičnih ničel.
Write multiple lines ukaz ima skoraj enako zgradbo kot Write line ukaz, le da 8-bitnemu repu iz samih ničel sledi še 8-bitni naslov naslednje vrstice, ki jo želimo prepisati. Tako nadaljujemo, dokler ne zapišemo vseh spremenjenih vrstic, pri čemer zadnji vrstici dodamo 16-bitni rep iz samih ničel.
Clear screen ukaz ima postavljen bit 5, medtem ko bit 6 (enako kot pri Write line in Write multiple lines ukazih) določa vrednosti signala VCOM, ostali biti v ukazu imajo vrednost 0, sledi pa tudi 8-bitni rep iz samih ničel. Zadnji, Toggle VCOM ukaz vse bite, razen bita 6 enake 0. Bit 6 določa vrednost VCOM.
Omenimo še, da je potrebno SPI prenos izvajati tako, da sta signala SCS in SCLK med nedejavnostjo vmesnika na nizkem nivoju. Pri zmogljivejših mikrokontrolerjih zadošča ustrezna nastavitev SPI krmilnika.
Kako uporabljamo spominske prikazovalnike?
Serijski prenos podatkov prek SPI vodila ni nič posebnega, saj so ukazi zelo preprosti za implementacijo, zato pa imamo toliko več dela z zagotavljanjem signala VCOM. Alterniranje bita VCOM v ukazih nam morda res prihrani en podatkovni vodnik, zato pa moramo natančno meriti čas in v vsak ukaz vstaviti VCOM bit z visokim ali nizkim nivojem. A to ne po meni, da mora biti bit pri vsakem drugem ukazu 0 in sicer pa 1, ampak, da vrednost bita določamo neodvisno z merjenjem časa in ga nato v vsak ukaz zgolj vstavimo. To je podobno kot, če bi uporabljali EXTCOMIN signal, le da moramo spremembo stanja sporočiti prek vodila SPI.
Je potem implementacija z EXTCOMIN signalom enostavnejša? Kot generator EXTCOMIN signala lahko uporabimo v ESP32 modul vgrajeni PWM modulator, ki ga povežemo z GPIO, na katerega vežemo EXTCOMIN signal. Pri osnovni frekvenci pri ESP modulih PWM nastavimo s tremi ukazi: ledcSetup(PWMchannel, PWMfreq, PWMresolution), ledcAttachPin(GPIOpin, PWMchannel), ledcWrite(PWMchannel, PWMvalue). Izberemo lahko kateregakoli od osmih PWM kanalov. Osnovna frekvenca mora biti 120 Hz, pri čemer mora biti polovico časa logična 0, polovico časa pa logična 1. Če izberemo ločljivost (PWMresolution) 8 bitov, moramo nastaviti PWMvalue na 127, kar je polovica obsega. Poglejmo primer:
ledcSetup(0, 120, 8); ledcAttachPin
(GPIOpin, 0); ledcWrite(0, 127);
Kot vidimo, je vzpostavljanje PWM modulacije enostavno. Sicer v Arduino razvojnem okolju pogosteje uporabljamo funkcijo analogWrite, a moramo prej poskrbeti za pravilno nastavitev osnovne frekvence in ločljivosti. Ker pa slednje pri mnogih z Arduino združljivih mikrokontrolerjih ni predvideno, si moramo pomagati z raznimi triki, med katerimi je tudi neposredno pisanje v registre PWM generatorja. Pri enostavnejših mikrokontrolerjih brez PWM generatorja, si lahko pomagamo s časovnikom in prekinitvijo, ki v izbranem ritmu utripa vrednost EXTCOMIN.
Mini in malo večji barvni OLED prikazovalniki
Zdaj, ko smo se spoznali z enostavnim in poceni LCD prikazovalnikom, se lahko lotimo še priklopa barvnega OLED, ki pa sem ga že lani raje nabavil kar 1,25-inčnega skupaj z Adafruit razvojno ploščico z barvnim prikazovalnikom s krmilnikom SSD1351 in si tako prihranil obilico dela. Obenem sem bolj iz radovednosti pregledal tudi današnjo ponudbo ugodnih barvnih LCD zaslonov za domače projekte. Za okoli 25 EUR lahko kupimo 4,4-inčni barvni prikazovalnik, posebej prirejen za priključitev na namenski priključek na tiskanem vezju Raspberry Pi (display port), ki ga lahko vgradimo namesto pokrova njegovega ohišja in ga uporabljamo vzporedno s HDMI zaslonom kot drugi zaslon, ali pa kot osnovi zaslon pri mobilnih aplikacijah. Ločljivost okoli 400 x 240 sicer ni kdo ve kako visoka, je pa še vedno veliko večja od 96 x 64 pik in 18-bitno barvno ločljivostjo, kar je dovolj za prikaz 262.144 barv. Kakorkoli, pa je SPI način komunikacije mikrokontrolerja z zaslonom podoben, zato ga lahko uporabimo tudi v ESP projektih.
Kot zanimivost povejmo, še da v barvni prikazovalnik vgrajeni SSD1351 mikrokontroler omogoča tudi komunikacijo po 18-bitnem, 16-bitnem ali 8-bitnem vzporednem podatkovnem vodilu, po katerem lahko podatke tudi beremo in zato ne potrebujemo dvojnega shranjevanja slike v delovnem pomnilniku glavnega mikrokontrolerja, nasprotno lahko z uporabo SPI vodila podatke samo pišemo. Je pa morda za marsikaterega računalniškega navdušenca razočaranje, ko ugotovi, da večina razvojnih plošč s tem prikazovalnikom podpira zgolj zaporedno SPI komunikacijo. Omenimo še, da enostavnejši Atmel mikrokontrolerji na z Arduinom združljivih razvojnih ploščah (npr. Arduino Uno) nimajo dovolj RAM-a za vmesno shranjevanje slike z več kot 96 x 64 pik v 16-bitni barvni globini. No, k sreči se pri ESP modulih, PIC32 in večini drugih 32-bitnih mikrokontrolerjev s tem problemom ni potrebno ukvarjati.
Sicer je prednost OLED prikazovalnikov tudi to, da se nam ni potrebno ukvarjati z osveževanjem zaslona, hkrati pa tudi ne potrebujejo osvetlitve ozadja in zato omogočajo odlične barvne kontraste. Nenazadnje, lahko kljub sorazmerno majhni ločljivosti prikažejo tudi barvne fotografije. Preden se lotimo programiranja naj omenim še to, da je omenjeni 1,25-inčni prikazovalnik združljiv tudi z Raspberry Pi računalniki, vendar ga povežemo prek razvojnega konektorja s 40-kontakti in ne prek namenskega konektorja za priklop monitorja.
Programiranje OLED
Čeprav dokumentacija barvnega zaslona iz Interneta zadošča za razvoj programske kode zanj, je veliko udobneje, če v spletu poiščemo ustrezne Adafruit programske knjižnice za Arduino, Raspberry Pi ali drugo podprto strojno osnovo. Kakorkoli, za enostavnejše projekte je boljše izbrati kako razvojno ploščo z ESP32 modulom, Raspberry Pi Pico, ali drugo miniaturno z Arduinom združljivo razvojno ploščico. Sam sem imel pri roki LILYGO-Ethrnet-POE modul, ki sem ga predstavil že v preteklem nadaljevanju. Za testiranje je bil kot nalašč, saj spajkanje zaradi ločenih natičnih kontaktov ni bilo potrebno.
Za osnovni preizkus delovanja ni bilo treba narediti skoraj ničesar drugega kot zapisati številke priključkov ESP32 modula, ki sem jih namenil SPI povezavi. Ker pa veliko priključkov ESP32-WROOM modula na LILYGO-Ethrnet-POE modulu zasede povezave z Ethernet vmesnikom LAN8720A, sem nato raje uporabil eno od zaprašenih razvojnih vezij na osnovi ESP32-WROOM modula z VS1503B avdio vmesnikom z ležiščem za mikro SD kartico. Vendar modul porabi veliko manj priključkov od LAN8720A vmesnika…
Vremenska postaja v3.0
Ko pišem tale članek, smo v Sloveniji ravno dobili temperature pod lediščem in prvo pošiljko snega, zato domača vremenska postaja z uro, predvajalnikom glasbe in spletnim radijem še kako prav pride. Prvo modularno vremensko postajo sem izdelal na osnovi PIC18 (osrednji modul) in PIC32 (oddaljeni modul), njej pa ste lahko brali seriji člankov Modularna vremenska postaja (SE220-SE225). Začeli smo z enostavnim segmentnim LCD prikazovalnikom, ki ga je na koncu serije nadomestil belo-modri grafični prikazovalnik z ločljivostjo 128 x 64 pik. Posebnost je bila tudi PIC18F4550, ki je omogočil serijski I2C prenos podatkov z glavnega mikrokontrolerja vremenske postaje in nazaj. V desetem delu Programiranja PIC32 v SE234, sem predstavil novo vremensko postajo v2.0, ki pa je še vedno uporabljala isti zaslon in iste oddaljene enote. Prednost je bil zmogljivejši mikrokontroler PIC32MX250F128B, ki je omogočil boljši prikaz izmerjenih vrednosti in enostavnejše programiranje. Čeprav obe vremenski postaji še vedno odlično delujeta, ob čemer je prva po predaji grafičnega prikazovalnika vremenski postaji v2.0 ohranila zgolj segmentni LCD prikazovalnik, je končno napočil čas za novo sodobnejšo vremensko postajo, pri kateri bomo izkoristili prednosti Arduino razvojnega in Adaftuit in drugih programskih knjižnic za enostavne razvojne projekte.
Če smo morali včasih podrobno preučiti dokumentacijo kompleksnejših elektronskih komponent, kot so prikazovalniki in merilniki vremenskih parametrov, preden smo se lahko lotili mukotrpnega pisanja programske kode, so danes za vse popularne komponente že na voljo programske knjižnice, za uporabo katerih moramo navadno izvesti zgolj osnovne nastavitve, oziroma podati hitrost komunikacije in definirati uporabljene GPIO priključke. Način komunikacije je navadno vnaprej določen (pogosto je na voljo SPI ali I2C), pri prikazovalnikih pa lahko pogosto celo izbiramo med 3- ali 4-žičnim SPI in 3-žičnim I2C. Danes v Arduino razvojnem okolji ni več vprašanje, kako povezati zmogljiv prikazovalnik z mikrokontrolerjem, temveč predvsem, kakšen prikazovalnik si želimo in koliko smo zanj pripravljeni plačati. Podobno velja tudi za številne senzorje, ki jih potrebujemo pri samogradnji vremenske postaje.
Vremenska postaja v3.0 ohranja modularnost, vendar gradi na novih komunikacijskih tehnologijah in brezžičnem prenosu podatkov prek Wi-Fi in LoRa omrežij, ki je dosti zanesljivejši in zmogljivejši od enostavnih radijskih povezav s HopeRF RFM69CW transiver moduli, ki sem jih uporabil za komunikacijo med glavno enoto vremenske postaje in oddaljenimi moduli. Z uporabo novih tehnologij lahko vremensko postajo sestavlja več glavnih enot, ki si delijo oddaljene enote z merilniki vremenskih parametrov. Vse enote lahko po novem komunicirajo po principu mreže, kar pomeni, da si medsebojno posredujejo podatkovne pakete na način, da ti po optimalni poti pridejo do ciljne enote. Tako ni več nujno, da bi glavna enota s svojim radijskih signalom pokrivala vse oddaljene enote. Saj lahko slednje podatke posredujejo naprej.
Prednost nove vremenske postaje je tudi večja kompaktnost, saj za upravljanje grafičnega prikazovalnika ne potrebuje namenskega mikrokontrolerja, saj imajo novejši LCD in OLED prikazovalniki že vgrajeno možnost serijske I2C ali SPI komunikacije.
Prihodnjič
Prihodnjič nadaljujemo z gradnjo vremenske postaje 3.0. Priključiti moramo še tipali za merjenje relativne zračne vlaga in zračnega pritiska, poleg teh pa izdelati še zunanje merilne enote, ki jih bodo poganjali ESP32 moduli. Zdaj, ko imamo 262.143 barv, moramo na zaslon naložiti vsaj eno barvno fotografijo, ki bo popestrila ozadje, obenem pa lahko vremensko postajo spremeni tudi v enostaven fotoalbum. Algoritem za nalaganje slik BMP ali JPG je kar zapleten, zato se ga lotimo prihodnjič.
Izdelali bomo tudi Ethernet prehod na ožičeno povezavo v Internet, ki bo omogočal tudi spremljanje izmerjenih podatkov iz vremenske postaje na osebnem računalniku, obenem pa bo javnih časovnih srečnikov v Internetu zajemal vrednost realnega časa, ki bo na voljo vremenski postaji pa tudi za prihodnje projekte. Omogočili bomo tudi shranjevanje vremenskih parametrov in na osnovi statistike izdelali algoritem za samodejno napovedovanje vremen. Električne sheme in podrobne opise gradnje v članku predstavljenih projektov najdete na spletni strani sites.google.com/site/pcusbprojects.