Et kõik ausalt ära rääkida tuleb alustada koosolekust ja varasemast vestlusest, kus minul tuleb hakata tegema tarkvaraarendajatele ülesanne IKT sisevõistluse jaoks. Plaanis oli üks veebileht koos vormi ja andmebaasiga kuhu vaja importida andmed ning et veebi kaudu saaks andmeid muuta. Andmeid oleks muidugi palju olnud. Kui koosolek oli olnud, siis tekkis teine plaan. See oli seotud Orange Pi-ga. Kuna lihtsalt lambist õpilastele ülesannet ei anna, sai hakatud vajalikke juppe otsima, mis on kõik koolil olemas.

Seega sai neljapäeval 16.03.2017 käia uurimas klassis, kus vajalikud osad olemas. Kahjuks leidsin ainult kaks asja. Järgmisel päeval (reedel) sai asjaomase persooniga uuesti käidud ning kõik vajalikud jupid sain kätte.

Reede õhtul alustasin asja tudeerimisega. Pole eriti kõva elektroonik, kuid kui vajalikud asjad olemas ja skeemid õiged, siis pole asi eriti keeruline. Skeeme uurides avastasin, et need Orange Pi on versiooniga One (Orange Pi One) ja see tegi murelikuks. Tegelikult oleks mulle meeldinud Raspberry Pi mis iganes versioon. Mis teha kui Orange on Raspberry analoog ja analoog on siiski jama, eriti kui pole viimane vaid vanem versioon ning kasutajatugi või kogukond on väike. Ühesõnaga, kui see oli juba tuvastatud üritasin Orangele ikkagi panna Raspberry peale mitte Orange enda varianti, mis oli kuidagi „ilmelik“. Sel ajal kui mälukaardi tõmmiseid alla laeti tegelesin elektroonika poolega.

Elektroonikaga eriti kaua ei läinudki, kuigi kõhklused olid pidevalt, kas on õigesti või mitte. Lõpp tulemusena võib öelda et algselt paika pandud asjad olid täpselt nii nagu peab.

Kui ühendused tehtud siis üritasin Raspberry versiooni Orangele peale panna. See õnnestus ja Orange ka töötas. Sai kõik vajalik peale pandud, uuendatud kuid, mis ei hakanud tööle oli Pythoni skript, mis hakkaks lugema niiskusanduri infot (niiskus koos temperatuuriga). Tere reed õhtu ja pool ööd läks sellega katsetamiseks.

Laupäeval alustasin sellest, et mälukaart tühjaks ja Debian XFCE Desktop OrangePiOne v0.9.1 läks peale. Kogu tsirkus tarkvaraga hakkas otsast peale (uuendamine ja vajalik lisa tarkvara GPIOga suhtlemiseks). Tulemus sama mis reede õhtul. Pythoni skript ei suuda lugeda GPIO-d. Ma kohe mitte ei tahtnud tekitada olukorda et on vaja kasutada mitut skripti millest üks oli veel C keeles. Kahjuks muud üle ei jäänud.

Lõpuks jäigi nii, et C skript loeb andurit ning väljastab kolm tulemust niiskuse ja temperatuuri kohta. Kusjuures C keeles kirjutatud skript vajab juurkasutaja õiguseid. Pythoni skript aga käivitab C skripti, loeb andmed, arvutab keskmise kolme tulemuse põhjal ning kirjutab info kahte eraldi faili. Üks on XML fail, mis on veebiserveri juurkaustas ja seal on viimati mõõdetud info kus on kuupäev, kellaaeg, niiskus ja temperatuur. See kirjutatakse iga 30 sekundi järgi üle. Teine fail on LOG fail, mis on tegelikult CSV kujul. Seal on kolm veergu: kuupäev koos kellaajaga (eesti variant (dd.mm.yyyy hh:mm:ss)) niiskus ja temperatuur.

Antud variandi sai tööle mõni minut enne laupäeva keskööd enne pühapäeva (olgem täpsed 6 min enne keskööd juba jäi asi logima). Nii ta siis terve öö ehk 12 tundi logis infot. Kõik töötas! Tegin veel ühe lolli loomkatse, et näha mis juhtub, kuigi tagajärjed võivad olla  halbade juhuste kokkulangemiste tõttu katastroofilised. Sel ajal kui asi töötas võtsin ühe kuni mitu ühendust anduri küljest lahti mõneks ajaks, et näha mis toimub või juhtub. Õnneks ei juhtunud midagi. Infot ei logitud mis pidigi juhtuma ega veateateid ka kuhugi ei paisatud. Ühesõnaga süsteem töötas jätkuvalt ning kui andur oli jälle ühendatud jätkas info logimist kahte kohta.

Pühapäeval tegin mälukaardist programmiga Win32DiskImager tõmmise ja kirjutasin asja teisele mälukaardile. Küll see võttis ikka aega. Aga samal ajal sai anduri ühendused lühemaks tehtud. Kui uue mälukaardi Orange Pi-sse ühendasin hakkas kõik tööle ja jätkas sealt, kus asi pooleli jäi. Hurraaaa, ta töötab siiski J

Ahjaa, kuidas sai iga 30 sekundi tagant logima pandud? Selleks tuli jällegi guugeldada, sest crontab töötab minuti baasil. Kasutasin antud varianti http://stackoverflow.com/a/9619441

Kokkuvõtteks

Algnevariant, et õpilased paneks ja teeks kõik ühendused, paigaldaks tarkvara ja paneks asja logima langeb ära. Neil pole nii palju aega ja kõike teadmisi ning oskusi. Sellega neid „peedistada“ me ei tohiks. Isegi, kui minu eksperimenteerimise aeg välja jätta ei pruugi nad asja toimima saada. Rääkimata info logimisest.

Seega jääb lahenduseks: Orange Pi kuhugi võrku võistluse ajaks tiksuma. Öelda selle IP ning neil tuleb lugeda XML faili veebiserverist, mis uueneb iga 30 sekundi tagant. Nemad peavad selle info kätte saama ja endale veebilehele näitama panema. Mis veel täpselt juhtuma hakkab on veel mõttes aga kirja siia ei pane J

Nagu töökäigus selgus, siis analoogidel ei tööta Pythoni asjad GPIO-dega lugemiseks/suhtlemiseks. Raspberry-ga sai kõik Pythoni baasil tehtud ja oli väga mõnus.

Paar pilti kah. Algne varustus ja töötav lõpptulemus