GUI-O in razvojni proces 3. del
Avtor: Janez Pirc
Danes je oddaljeni dostop do naprav nekaj standardnega in pričakovanega. Uporabnikom in serviserjem lahko prihrani čas, denar ter tudi reši kak problem, ko naprava pošlje obvestilo.
Oddaljeni dostop do naprave
Tako, kot je bil včasih za ugnezdene specialiste trd oreh izdelava sodobnega GUI, je danes tudi za GUI specialiste trd oreh drugačna tehnologija za oddaljeni dostop. Klasičen stroškovno učinkovit razvoj oddaljenega dostopa do naprav ponuja spletne tehnologije ter razvoj spletne aplikacije na zalednem strežniku. Potrebna namestitev zalednega strežnika skupaj z vsemi potrebnimi komunikacijskimi programi ter razvoj spletne aplikacije je zahteven proces in temu primerno drag. Še dražji je razvoj samostojne ANDROID mobilne aplikacije. Klasični pristop izdelave GUI za oddaljeni dostop do naprave pogosto ustvari novo ločeno arhitekturo MVC. Že opisani problemi podvajanja MVC se tu ponovno rešujejo. Relativno visoka cena kasneje izdelanega projekta pa pogosto tudi po nepotrebnem oklesti želeno funkcionalnost.
Ta vsebina je samo za naročnike
Zunanji izvajalci za izdelavo rešitve navajajo vrsto možnih tehnologij ter zagovarjajo tezo: »Ni enotne rešitve za različne projekte.« Že sam izbor rešitve je zahteven. Rešitev, ki jo zunanje podjetje obvlada, se kasneje, za čuda, izkaže kot najboljša za vaš projekt. Marketing zunanjih podjetij izkorišča kompleksno področje varnosti podatkov kot argument, da se postavitve IoT povezav ne bi lotili sami. Ponujajo tudi hibridni pristop: za izdelavo in adaptacijo aplikacije postopno usposobijo strokovnjaka naročnika oziroma vašega podjetja. S tem vaše podjetje dobi novega strokovnjaka, ki bo za konkreten projekt na novi, drugačni tehnologiji izdelal nov GUI. Ponovi se cikel istih problemov, ki sem jih opisal zgoraj. Tesnemu sodelovanju ostalih strokovnjakov ter večjim posegom v napravo se ne morete izogniti. Seveda imajo ta podjetja legitimen poslovni interes in tudi naredijo predstavljene rešitve. Vendar obstaja učinkovitejša rešitev.
Če analitično razdelamo oziroma razčlenimo osnovne zahteve nekega projekta, hitro ugotovimo, da je teza različnih rešitev za različne projekte samo strategija za pridobivanje posla. Probleme razdelimo na podprobleme in izkaže se, da marsikaj rešujemo napačno in z neoptimalnimi rešitvami. Če celotno rešitev razdelimo samo na dva neodvisna dela, rešimo vrsto vprašanj. Prenos podatkov preko interneta: je lahko enotna in učinkovita rešitev ne glede na specifike posameznega projekta. Varnost prenosa podatkov je vključena v enotno rešitev. Ni potrebe po različnih rešitvah. Uporabi se standarden pristop z najvišjo stopnjo varnosti. Tehnologija za izdelavo GUI: je lahko enotna za izdelavo GUI na napravi in GUI na telefonu oddaljenega uporabnika.
GUI-O rešitev za oddaljeni dostop
GUI-O ponuja celovito rešitev, ki jo lahko uporabite brez dodatnega znanja in brez postopne adaptacije na nove tehnologije. V osnovi aplikacija deluje na ANDROID napravah. Če na ugnezdenem mikrokontrolerju namesto lokalne, ali poleg lokalne podatkovne povezave, postavite tudi komunikacijski kanal preko interneta, lahko uporabnik do naprave dostopa od koderkoli s svojim ANDROID telefonom.
Do iste naprave lahko dostopa več uporabnikov, pri čemer ima naprava popoln nadzor nad različnimi uporabniki. Programer mikrokontrolerja izbira med več načini delovanja. Najenostavneje je zgraditi enoten vmesnik za vse uporabnike brez obdelave uporabniških imen/vlog. V splošnem pa lahko programer na isti napravi zgradi več različnih grafičnih uporabniških vmesnikov za različne uporabnike/vloge/skupine. Seveda pa glavno prednost aplikacija GUI-O pokaže s tem, da omogoča dostop do katerekoli naprave, ki podpira GUI-O ASCII protokol. Uporabnik svojo GUI-O aplikacijo upari z napravo, oziroma vpiše potrebne komunikacijske podatke. V postopku povezovanja uporabnik sam poimenuje napravo oziroma vpiše ime naprave. Kasneje ob startu GUI-O aplikacije preko izbire imena naprave postavi pravi connect ter dostop do prave naprave.
Različne konfiguracije NAPRAVA – GUI
Samo oddaljen GUI: preko WiFi modula napravo povežemo na internet ter z mobilnim telefonom odpiramo GUI od koderkoli.
Več oddaljenih GUI z enakim vmesnikom: prvi uporabnik se poveže, nato podatke preko QR kodnega zapisa posreduje ostalim uporabnikom. Več oddaljenih GUI z različnimi vlogami: pri povezovanju uporabnik poleg imena naprave vpiše tudi ime uporabnika ali ime grupe. Ime uporabnika se dodaja v vseh komunikacijskih stringih in omogoča različne uporabniške vloge.
Lokalni GUI in ločen ODDALJENI GUI: je kombinacija obojega. Ugnezden mikrokontroler ima dva komunikacijska porta in dva ločena modula ter neodvisno krmili lokalni GUI in enega ali več oddaljenih GUI.
ANDROID PC kot lokalni GUI s programom GUI-O omogoča tudi funkcionalnost komunikacijskega vmesnika proti oddaljenim uporabnikom (USB, BT, BLE / WiFi ali mobilna podatkovna omrežja (mobile data networks): komunikacijska povezava proti ugnezdenem mikrokontrolerju je tu ena sama – lokalna (UART / USB, BT, BLE). Tu ne potrebujemo dveh komunikacijskih modulov. Ugnezden program pa neodvisno krmili lokalni GUI ter oddaljeni GUI z dodajanjem PUB: parametra v vse stringe. Ta primer je grafično prikazan na sliki 11 (IoT posredovanje)
Prednosti GUI-O IoT rešitve
Celotna rešitev je dostopna vsem programerjem ugnezdenih programov. Za programerje ugnezdenih programov dodatno usposabljanje na novih razvojnih okoljih ter sodobnih tehnologijah ni potrebno, kar močno dvigne učinkovitost razvoja. Enak GUI-O ASCII protokol je za krmiljenje lokalnega in za oddaljeni GUI. Ista cena licence je za oddaljeni in za lokalni GUI. GUI-O aplikacija omogoča dostop do katerekoli naprave, ki podpira GUI-O protokol. Isti uporabnik lahko nadzorovano dostopa do več naprav. Več uporabnikov lahko nadzorovano dostopa do iste naprave. GUI-O ohranja enotno MVC arhitekturo tudi pri oddaljenem dostopu.
GUI-O ima velik potencial za nadaljnji razvoj
Širitev funkcionalnosti z novimi pred programiranimi elementi: uvajanje dodatnih bolj specifičnih funkcionalnosti bo omogočilo večjo prilagodljivost in širšo uporabnost sistema. Enostavnejši izbor in uporaba različnih grafičnih zasnov: izboljšave v uporabniškem vmesniku bodo omogočile lažjo izbiro in implementacijo različnih vizualnih stilov. Prilagoditev na druge operacijske sisteme, kot je iOS: razširitev podpore na več operacijskih sistemov bo povečala dostopnost in uporabnost GUI-O. Večjezična podpora: implementacija različnih jezikov ter izbor s strani programerja ali uporabnika bo omogočila širšo uporabo sistema v mednarodnem okolju.
Primerjava z internetom
Zanimiva je primerjava med GUI-O rešitvijo in razvojem interneta. Internet je centraliziran HTML zapis na strežniku ter prikaz vsebine pri uporabniku z univerzalnim brskalnikom. GUI-O rešitev pa temelji na zapisu vsebine na mikrokontrolerju in prikazu na univerzalnem GUI-O programu. Internet se je razvijal počasi in sprva je naletel na veliko nasprotovanje. Ustvarjalci interneta so iskali potrditev svojih zamisli med strokovnjaki za napredno programsko opremo, ki se je uporabljala v novinarski in tiskarski industriji. Na začetku so naleteli na skepticizem in dvome, da internet ne bo nikoli dosegel ravni uporabnosti in kakovosti, ki sta ju že takrat zagotavljala tradicionalna programska orodja za urejanje dokumentov. Podobno lahko danes razmišljamo o GUI-O aplikaciji. Tako kot je HTML postal „mainstream“ in de facto standard, bo tudi protokol GUI-O sčasoma pridobil širšo sprejetost.
GUI-O prinaša občutne spremembe v sam koncept programske arhitekture. Na kompleksnih sistemih je dobro uveljavljene prakse zelo težko spremeniti, še zlasti, če spremembe segajo preko okvirja posameznih podsistemov. Razvijalci, ki se specializirajo na določenem segmentu, so razumljivo globoko vpeti v svoje delo in močneje zavezani svoji razvojni platformi. Enako velja za podjetja, ki ponujajo razvojne rešitve.
Vsaka noviteta potrebuje nekaj več časa, da se širše uveljavi. Uporabniki, ki so že vložili potreben čas v spoznavanje GUI-O ASCII protokola in izdelali svoj prvi GUI, so v večini zelo navdušeni. Mnogi med njimi so pozneje nadgradili svoje starejše, že dokončane projekte z modernim GUI in IoT. Prav nihče med njimi ne dvomi, da GUI-O odpira nov dejanski standard. Aplikaciji GUI-O bi lahko rekli „brskalnik naprav“.
Zaključek
Mikrokontroler in ugnezden računalnik (ugnezden PC) sta različna sistema, vsak s svojimi prednostmi. Uporaba obeh v eni napravi prinaša dve HW arhitekturi, ki ju je treba povezati. Dober koncept povezovanja vodi do enotne programske arhitekture. Enoten kontrolni program na napravi prinaša številne prednosti. Kadar PC nadzoruje celotno napravo, mora mikrokontroler kot aktuator dobro opraviti naloge, ki jih PC ne zmore. Obrnemo pa lahko programsko arhitekturo napišemo tako, da mikrokontroler nadzoruje celotno napravo. Razlogi za to odločitev so lahko pragmatični, kot je zgodovinsko stanje postopnega razvoja naprave na mikrokontrolerju ali lažja dostopnost razvojnih virov. V tem primeru PC deluje kot aktuator za funkcionalnosti, ki jih na mikrokontrolerju ni optimalno programirati. Takšno rešitev omogoča program GUI-O na operacijskem sistemu ANDROID.
GUI-O je namenjen programerjem mikrokontrolerjev, ki želijo ustvariti sodoben grafični uporabniški vmesnik (GUI) in uporabiti druge vire operacijskega sistema ANDROID. GUI-O program preko ASCII protokola povezuje svet mikrokontrolerjev in računalnikov na način, ki ohranja enotno programsko arhitekturo ter vse prednosti krmiljenja HW na mikrokontrolerju. Tudi najpreprostejši krmilniki lahko krmilijo vrhunske GUI in druge funkcionalnosti računalnikov. Če sem vas prepričal, je to prvi korak v pravo smer. GUI-O je zmogljiv, izjemno prilagodljiv, enostaven in predvsem cenovno ugoden. Na enak način rešuje gradnjo lokalnega dostopa do ANDROID sistema in IoT dostopa. Bistvo rešitve pa je, da programer ugnezdenih programov kar v svojem programskem okolju, ki ga najbolje pozna, začne delati in naredi vse. Na spletu so članki, ki opisujejo prve korake pri uporabi GUI-O:
GUI-O: A Virtual Front Panel
GUI for Atmel, PIC, STM, NXP, ESP32, ESP8266, Arduino and Others
Hvaležen bom za vaše povratne informacije, tako pozitivne kot morda negativne. Samo kritika na podlagi izkušenj uporabnikov nam omogoča, da se razvijamo v pravo smer.
Nekaj referenc
Kurilne naprave
Danes je vsaka hišna kurilna naprava opremljena z ugnezdenim mikrokontrolerjem. Nadgradnja tega mikrokontrolerja z WiFi modulom in dodatno programsko kodo je enostavna in cenovno ugodna. Na povezavi spodajsi lahko ogledate primer delovanja izdelanega vmesnika.
https://www.youtube.com/watch?v=EuO0-0lfZL0
Kurilne naprave predstavljajo le eno od številnih področij, kjer se lahko uporabi GUI-O rešitev za nadgradnjo in izboljšavo delovanja. Z dodatkom WiFi modula in preprosto oddajo nekaj ukazov je mogoče te naprave nadzorovati od kjerkoli prek pametnih telefonov ali tablic. Nadaljnji razvoj lahko vključuje tudi izboljšano diagnostiko napak, ki uporabnika ali serviserja pravočasno obvesti in s tem zmanjša stroške popravil.
Procesna avtomatizacija
Proizvajalec sira in drugih mlečnih izdelkov mora nevtralizirati pH odpadne sirotke. Avtomatizacija nevtralizatorja je dosežena z uporabo mikrokontrolerja in vmesnika GUI-O.
Merilna oprema
Merjenje jakosti mobilnega signala na določenem območju, bodisi na cestnih ali železniških povezavah, zahteva drago merilno opremo. Vendar pa je osrednji del te opreme cenovno dostopen GSM 900 modul. Z uporabo tega modula v povezavi z ekonomičnim mikrokontrolerjem in monitorjem GUI-O lahko dosežemo primerljivo, a bistveno bolj cenovno ugodno rešitev.
Tehtnica čebeljih panjev je nepogrešljiva za sodobne čebelarje. Spodaj pa je prikazana nadgradnja tehtnice z merilnikom položaja matice ter prikazom podatkov na mobilnem telefonu z GUI-O vmesnikom.
Kvalitetni laboratorijski univerzalni digitalni multimeter XDM1041 ali digitalno napajanje DPM8605 ter podobni instrumenti podpirajo komunikacijski protokol za povezavo z zunanjim računalnikom. Z uporabo preprostega mikrokontrolerja lahko na instrumentu ustvarimo komunikacijski most med OWON SCPI protokolom in GUI-O protokolom. S tem mikrokontrolerjem poganjamo GUI-O, ki omogoča upravljanje instrumenta ter prikaz rezultatov meritev, bodisi iz sosednjega laboratorija ali od kjerkoli drugod.
Medicinske naprave
Med pandemijo COVID-19, ko je virus v italijanskem Bergamu razkril svojo pravo nevarnost, so epidemiologi v univerzitetnem kliničnem centru opozarjali na izjemno resno stanje. Čeprav je bilo medicinskih ventilatorjev dovolj za običajne razmere, je postalo jasno, da za pričakovano širjenje epidemije teh ne bo dovolj. Odgovorni niso oklevali in so takoj sprožili vse razpoložljive vire. Med drugim so me zaprosili za hiter razvoj lastnega medicinskega ventilatorja. Sestavil sem razvojno ekipo in v izjemno kratkem času smo razvili uporaben prototip. Hkrati smo pripravili vse potrebne vire za zagon serijske proizvodnje. Brez GUI-O rešitve ne bi mogel tako učinkovito razviti celotne programske rešitve za mikrokontroler v tako kratkem času.
Konkurenčne ekipe, ki so bile sestavljene iz več programerjev, so potrebovale bistveno več časa za dosego podobnih rezultatov. Spodnji video prikazuje testiranje naprave na simulatorju intubiranega pacienta: https://www.youtube.com/watch?v=zwguMlz9i5c
Elektrokardiogram senzor priključen na mikrokontroler in GUI-O:
https://www.youtube.com/watch?v=9sYq7rQF0fU