In articolele anterioare, vorbeam despre IoT (Internet of Things) – o retea alcatuita din multiple device-uri care colecteaza si proceseaza date fara interventie umana. Domeniul este unul de viitor si din acest motiv gigantul tehnologic Google  lanseaza un sistem de operare pentru IoT, bazat pe Android OS.

Vestea nu este neaparat una noua, Google avand aceste intentii inca din 2015. In momentul respectiv se vorbea despre Project Brillo, insa s-a renuntat la acesta din cauza feedback-ului primit de la developeri.

De aceasta data ne indreptam atentia catre Android Things – un sistem de operare bazat pe elemente care se regasesc in Android OS. De fapt, dezvoltatorii care se orienteaza catre programarea dispozitivelor din cadrul IoT vor putea folosi aceleasi SDK-uri (Software Development Kit), API-uri (Application Programming Interface), dar si servicii precum platforma Google Cloud.

Trebuie sa precizam ca Android Things se afla la inceput de drum, fiind necesare unele imbunatatiri si modificari, dar chiar si asa programatorii se pot apuca deja de proiecte bazate pe acest sistem de operare.

Hardware

            In acest moment, Android Things suporta trei tipuri de placi integrate: Intel Edison, NXP Pico i.MX6UL si Raspberry Pi 3. Primul lucru pe care il putem observa, este ca toate cele 3 placi folosesc procesoare cu arhitectura Intel sau ARM, ruland atat pe 32 de biti, cat si pe 64 de biti. Minimul de memorie RAM este de 512MB si toate cele trei placi suporta atat Wi-Fi, cat si Bluetooth.

Tinand cont de faptul ca Android este un sistem de operare derivat din Linux, care suporta multi-tasking datorita unei unitati de control a memoriei, inseamna ca Android Things necesita si el un procesor ce detine o unitate de control a memoriei. Acest lucru este deosebit de important, pentru ca multi-tasking-ul este posibil doar datorita asa-zisei Memorii Virtuale (Virtual Memory).

In esenta, orice aplicatie/proces care ruleaza pe un anumit device, foloseste o parte din memoria RAM, care este finita. In momentul in care ruleaza o a doua aplicatie, este necesar un proces de control care se va asigura ca aplicatiei ii revin adrese din memoria RAM care nu au fost deja ocupate. Daca crestem semnificativ numarul de procese/aplicatii, procesul de control va suprasatura procesorul, rezultand o viteza de calcul mica sau chiar un crash.

Pentru a evita acest proces de cautare si sortare a adreselor din memoria RAM, a fost introdus conceptul de Memorie Virtuala. Aceasta, printr-un MMU (Memory Management Unit) incapsuleaza fiecare proces, facandu-l sa “creada” ca doar el ruleaza pe dispozitivul respectiv. In acest fel, distributia memoriei RAM este una eficienta si rapida, fara a suprasolicita procesorul.

Va intrebati de ce sunt importante aceste detalii? Ei bine, alegand procesoare ce contin MMU in arhitectura lor, Google se autoexclude din anumite segmente ale IoT care nu necesita procese foarte complexe si au nevoie de mult mai putine resurse. Ramane de vazut daca decizia este una corecta sau nu.

            Conexiune

            Dupa cum spuneam mai devreme, Android Things este disponibil pentru anumite placi integrate care dispun de conector HDMI. Asadar, conectarea unui display este relativ simpla. Conexiunea dintre developer si device se face in prima faza printr-un port Ethernet, iar mai apoi prin Wi-Fi.

Programarea in Android Things

            Inainte de a incepe dezvoltarea aplicatiilor in Android Things,  trebuie sa mentionam faptul ca acestea se bazeaza pe versiunea 7.0  de Android. Adica, aplicatiile beneficiaza de toate imbunatatirile aduse odata cu versiunea 7.0 si vor tine pasul, pe viitor, cu fiecare update.

Exista doua posibilitati in ceea ce priveste produsul finit: se pot dezvolta aplicatii cu interfata grafica sau fara. In cazul primului tip, experienta vizuala este controlata in intregime de aplicatie, avand in vedere ca nu exista un Status Bar sau butoane de navigare.

Diferenta intre Android OS si Android Things este ca cel de-al doilea poate controla dispozitive periferice si poate interpreta date furnizate de senzori. Se poate folosi orice tip de senzori, dar si servo-motoare, actuatoare, accelerometre, termometre, display-uri si multe altele. Acest lucru este posibil datorita porturilor GPIO (General Purpose Input Output) care se regasesc pe placile programabile.

Programarea efectiva ar trebui sa le fie familiara tuturor celor cu experienta in Android Studio. Comenzile au ramas aceleasi, sintaxa este la fel si se folosesc inclusiv fisiere XML sau cod Java pentru layout-uri.

Din cauza ca Android Things este o versiune specializata de Android, inseamna ca placa programabila va rula o singura aplicatie in acelasi timp, adica pe cea pe care o gaseste in memorie. In momentul in care placa este pornita, doar aplicatia respectiva va rula, deci vobim de o diferenta majora fata de Android OS.

Pentru cei interesati, Google a pregatit o serie de aplicatii pe care le puteti studia AICI .

 

Avantaje-Dezavantaje

Cel mai mare avantaj al sistemului de operare Android Things este inrudirea cu Android OS, pe care toata lumea il cunoaste. Din acest motiv, dezvoltatorii de aplicatii bazate pe Android se pot indrepta catre IoT fara sa depuna prea mult efort. Daca tinem cont si de cantitatile mari de linii de program care pot fi reutilizate in cadrul Android Things, dar si de aplicatiile deja existente care pot functiona fara interventie umana, constatam ca avem de-a face cu un sistem de operare foarte versatil.

Toate acestea vin insa cu un pret. Resursele necesare rularii Android Things sunt destul de mari comparativ cu dispozitivele bazate pe microcontrollere si sisteme de operare precum mbed OS. Deci, intrebarea este: Oare masina de spalat chiar are nevoie de un procesor quad-core si 512MB RAM?

Lasand la o parte ironiile, o putere de procesare mai mare poate fi un lucru de bun augur. Se preconizeaza implementarea la scara larga a unor caracteristici precum recunoastere faciala, procesare voce si o retea de mare anvergura bazata pe AI (Artificial Intelligence). Acestea au nevoie de o capacitate si o viteza de calcul marite. Daca luam totusi in calcul si tehnologia Cloud, o caracteristica de baza a IoT, care reduce resursele necesare rularii aplicatiilor, nu se justifica puterea mare de calcul. Tot ceea ce putem spune momentan, este ca va trebui sa asteptam.

Concluzie

Tehnologia din spatele sistemului de operare Android Things este una destul de cunoscuta de dezvoltatorii de aplicatii din intreaga lume. Impreuna cu placile programabile precum Raspberry Pi, Android Things ar putea fi formula castigatoare pentru Google. Totodata, cerintele mari si versiunea destul de primitiva ofera avantaje platformelor care ofera mai mult cu mai putine resurse.

Dupa cum spuneam si mai devreme, timpul ne va oferi toate raspunsurile. Daca producatorii de dispozitive IoT vor opta pentru Android Things, Google va suferi o crestere de piata enorma. Aceasta crestere nu va fi cauzata de dispozitive, ci de serviciile Cloud pe care aceste dispozitive le vor folosi.

Voi ce parere aveti? Ce produse credeti ca ar putea beneficia de acest sistem de operare?

Comentează prin Facebook

Comentează prin Facebook