Conf. Dr. Ing. Popa Gabriel Nicolae Masterand : Sergiu -Daniel ZAHARIA HUNEDOARA 2019 UNIVERSITATEA POLITEHNICA TIMIȘOARA FACULTATEA DE INGINERIE… [627152]

LUCRARE DE DISERTAȚIE

Coordonator științific:
Conf. Dr. Ing. Popa Gabriel Nicolae

Masterand: [anonimizat]
2019
UNIVERSITATEA POLITEHNICA TIMIȘOARA
FACULTATEA DE INGINERIE HUNEDOARA
DEPARTAMENTUL DE INGINERIE ELECTRICĂ ȘI
INFORMATICĂ INDUSTRIALĂ
TEHNICI INFORMATICE ÎN INGINERIA
ELECTRICĂ

UNIVERSITATEA POLITEHNICA TIMIȘOARA
FACULTATEA DE INGINERIE HUNEDOARA
DEPARTAMENTUL DE INGINERIE ELECTRICĂ
SPECIALIZAREA TEHNICI INFORMATICE ÎN INGINERIA
ELECTRICĂ

SISTEM DE CONTROL VOCAL AL
DISPOZITIVELOR ELECTRICE ȘI
ELECTRONICE

Coordonator științ ific:
Conf. Dr. Ing. Popa Gabriel Nicolae Absolvent: [anonimizat]
2019

PROIECT DE DISERTA ȚIE

CUPRINS

CAPITOLUL 1 : SISTEMUL ALEXA 5
1.1. INFORMA ȚII GENERALE 5
1.2. APLICAȚIA ALEXA 6
1.3. FUNCTII AMAZON ALEXA 6
1.4. MESAJE SI APELURI AMAZON ALEXA 7
1.5. ALEXA PENTRU AFACERI 7
1.6 KITUL DE ABILITATI ALEXA 7
1.7 SERVICIUL DE VOCE ALEXA 8
1.8 CONFIDENTIALITATE AMAZON ALEXA 8
1.9 BOXA AMAZON ECHO 9
1.10 MODUL DE OPERARE AMAZON ECHO 11
1.11 SERVICII DISPONIBILE AMAZON ECHO 12
1.12 SISTEMUL DE VOCE 12
1.13 ACTUALIZARILE DE SISTEM 13
1.14 CASA INTELIGENTA 13
1.15 APELURI CU AMAZON ECHO 13
1.16 CONFIDENTIALITATE AMAZON ECHO 14

CAPITOLUL 2: LIMBAJUL DE PROGRAMARE PYTHON 15
2.1. IMPLEMENTARE 15
2.2. LUCRUL CU INTERPRETORUL 16
2.3. TRATAREA ERORILOR 16
2.4 FISIERE SURSA 17
2.5. STRUCTURI DE DATE 17
2.6. SINTAXA 18
2.7. TIPURI DE DATE 18
2.8. STIL 19
2.9. OPERATORI 20
2.10 BIBLIOTECI SI EXTINDERE 21

CAPITOLUL 3: MICROCOMPUTERUL R ASPBERRY PI 22
3.1. PRINCIPII GENERALE 22
3.2. SISTEMUL DE OPERARE 23
3.3 RASPBERRY PI 3B+ 24
3.4 INSTALAREA SISTEMULUI DE OPERARE 26
3.5 UTILIZAREA PLACII RASPBERRY PI DE LA DISTANTA 27

CAPITOLUL 4: PROIECTAREA SI REALIZAREA SISTEMULUI ALEXA CU
CONTROL VOCAL 30

CAPITOLUL 5: CONCLUZII

41

PROIECT DE DISERTA ȚIE

ANEXE
Anexa 1: Programul Principal 42
Anexa 2: Fauxmo 43
Anexa 3: Lucrarea SISTEM DE CONTROL VOCAL AL DISPOZITIVELOR
ELECTRICE 53

BIBLIOGRAFIE 60

PROIECT DE DISERTAȚIE

5

CAPITOLUL 1

SISTEMUL ALEXA

1.1 Informații generale

Amazon Alexa, cunoscut doar ca Alexa, este un asistent virtual dezvoltat de Amazon,
folosit pentru prima data in Amazon Echo si difuzoarele inteligente Amazon Echo Dot
dezvoltate de Amazon Lab126. Este capabil să interacționeze cu vo cal, să redea muzică, să
facă liste de sarcini, să stabilească alarme, să difuzeze podcast -uri, să redea audiobook -uri
și să furnizeze informatii privitor la vreme, trafic, sport și alte informații în timp real, cum ar fi
știrile. Alexa poate controla, de asemenea, mai multe dispozitive inteligente, utilizându -se ca
sistem de automatizare la domiciliu. Utilizatorii pot extinde capacitățile Alexa instalând
"abilități" (funcțio nalități suplimentare dezvoltate de furnizori terți ).
Majoritatea dispozitivelor cu Alexa permit utilizatorilor să activeze dispozitivul folosind
un cuvânt de avertizare (cum ar fi Alexa); alte dispozitive (cum ar fi aplicația mobilă Amazon
pe iOS sau Andr oid) solicită utilizatorului să apese un buton pentru a activa modul de
ascultare al lui Alexa. În prezent, interacțiunea și comunicarea cu Alexa sunt disponibile
numai în engleză, germană, franceză, italiană, spaniolă și japoneză.
În noiembrie 2014, Amaz on a anunțat Alexa alături de Echo. Alexa a fost inspirat de
sistemul de voce și de conversație la bordul companiei Starship Enterprise în seriile și filmele
TV stiintifico -fantastice , începând cu Star Trek: Seria originală și Star Trek: The Next
Generatio n. În 1964, cu un an înainte de seria originală Star Trek, o serie de televiziune
animată, numită Jonny Quest, avea un computer desktop numit UNIC [1].
Dezvoltatorii Amazonului au ales numele Alexa pentru că are o consonanță tare cu
X, ceea ce îl ajută să fie recunoscut cu o mai mare precizie. Ei au spus că numele aminteste
de Biblioteca din Alexandria, care este de asemenea folosită de Amazon Alexa Internet din
același motiv.

Figura 1.1 Logo Amazon Alexa

Un asistent vocal (AV) poate fi descris ca un personaj generat de calculator, care
simulează o conversație pentru a furniza unui utilizator informații – vocal sau sub formă de
text – printr -o interfață accesabilă de pe un dispozitiv. Un asistent vocal presupune abilitați
de procesare în limbaj natural , controlul dialogului, cunoașterea domeniului și un aspect
vizual(cum ar fi fotografii sau animație) care se modifică în funcție de conținutul și contextul
dialogului. Asistentul vocal executa o comanda/rutină atunci când ”aude” o comandă
standard și, de pildă, poate căuta și sintetiza de pe internet tot felul de informații: despre
vreme, trafic, artiști sau personaje din lumea politică. Poate accesa și rula librării muzicale
și video, poate căuta rezultate sportive, rețete sau chiar informații economice d isponibile pe
web.

PROIECT DE DISERTAȚIE

6
1.2 Aplicația ALEXA

Aplicația poate fi folosită de către utilizatorii care posed un dispozitiv cu Alexa pentru a
instala diverse aptitudini(skills), a controla muzică, a organiza alarmele și a vedea listele
pentru cumpărături .

Figura 1. 2 Logo aplicație

Aplicația poate fi descărcată din Apple App Store, Google Play și Amazon Appstore.
Instalarea unui dispozitiv cu Alexa se face prin intermediul acestei aplicații. O interfață web
este de asemenea disponibilă pentru configurarea dispozitivelor compatibile(Amazon Echo,
Amazon Dot și Amazon Echo Show).

1.3 Funcții Amazon Alexa

Alexa poate să gestioneze alarmele controlate vocal, poate să redea muzică cu ajutorul
unui cont pe Amazon Music, Pandora sau Spotify. Dispozitivele cu Alexa răspund la întrebări
privitor la calendarul google a utilizatorului. Atunci când o întrebare este adresată asistentului
virtual, Alexa convertește undele sonore în text, și astfel are posibilitatea să adune informații din
mai multe s urse. Datele adunate sunt trecute printr -o anumită tehnologie(Wolfram) pentru a
genera răspunsuri corecte. Asemănător generării de răspunsuri corecte, se pot crea funcții pentru
Alexa pentru a anticipa subiectul principal al unei conversații, pentru cele m ai comune interacțiuni.
În dată de 20 decembrie 2018 Amazon a anunțat integrarea motorului de căutare Wolfram Alpha
care oferă precizie sporită pentru utilizatori care pun întrebări asistentului virtual Alexa în legătură
cu matematică, știința, astronomia, ingineria, geografia, istoria și multe altele.
Alexa poate interactiona cu dispozitive de la mai multi producatori, atunci cand vorbim
despre automatizarea unei locuinte. Unii dintre acestia sunt: Belkin, ecobee, Geeni, IFTTT ,
Insteon, LIFX, LightwaveRF, Nest, Philips Hue, SmartThings, Wink , si Yonomi. Dezvoltatorii sunt
capabili să -și creeze propriile abilități de casa inteligent a, utilizând kitul Alexa Skills [2,3].
Alexa acceptă o multitudine de servicii de streaming bazate pe abonament și gratuite pe
dispozitivele Amazon. Aceste servicii de streaming includ: Prime Music, Amazon Music, Amazon
Music Unlimited, Apple Music, TuneIn, iHeartRadio, Audible, Pandora, si Spotify Premium .
Totuși, unele dintre aceste servicii muzicale nu sunt disponi bile pentru alte produse compatibile
cu Alexa produse de companii externe ale serviciilor sale. Alexa este capabil să transmită în
direct muzică. Pentru a face acest lucru, dispozitivul cu Alexa ar trebui să fie conectat la contul
Amazon, care permite acc esul la biblioteca Amazon Music. Membrii Amazon Prime au o
capacitate suplimentară de a accesa posturi, playlisturi și peste două milioane de melodii gratis.
Abonatii Amazon Music Unlimited au, de asemenea, acces la o lista de milioane de melodii.

PROIECT DE DISERTAȚIE

7
Amazon M usic pentru PC permite să reda rea muzic ii personal e de pe Google Play, iTunes și
altele, pe un dispozitiv Alexa. Acest lucru se poate face prin încărcarea unei colecții în Muzica
mea pe Amazon de pe un computer. Până la 250 de melodii pot fi încărcate grat uit. Odată ce
acest lucru este făcut, Alexa poate reda această muzică și poate controla redarea prin opțiunile
de comandă vocală.
Alexa permite utilizatorului să audă actualizările echipelor sportive acceptate. O
modalitate de a face acest lucru este adăugarea echipei sportive la lista creată în secțiunea de
aplicații pentru alerte sportive Alexa . Utilizatorul poate auzi actualizări cu până la 15 echipe
adaugate.

1.4 Mesaje și apeluri Amazon Alexa

Există mai multe moduri în care pot fi trimise mesaje de la aplicația lui Alexa. Alexa poate
trimite mesaje către aplicația Alexa a destinatarului, precum și la toate dispozitivele Echo
acceptate asociate cu contul lor Amazon. Alexa poate trimite mesaje scrise doar din aplicația lui
Alexa. Dacă trimiteți un mes aj de la un dispozitiv Echo asociat, acesta transmite mesajul vocal.
Alexa nu poate trimite atașamente, cum ar fi videoclipuri și fotografii.
Pentru gospodăriile cu mai mult de un membru, contactele Alexa sunt grupate pe toate
dispozitivele care sunt înregistrate în contul asociat. Cu toate acestea, în cadrul aplicației Alexa,
doar unul poate începe o conversatie cu contactele sale Alexa. Când este accesat și acceptat de
o aplicație Alexa sau de un dispozitiv Echo, mesageria Alexa este disponibilă oricui din
gospodăria sa. Aceste mesaje pot fi auzite de oricine are acces în gospodărie. Această funcție
de mesagerie nu conține încă o protecție cu parolă sau un cod PIN asociat. Oricine are acces la
numărul de telefon celular este capabil să utilizeze această funcție pentru a -i contacta prin
intermediul aplicației lor Alexa sau Echo acceptate. Funcția de blocare a alertelor pentru mesaje
și apeluri e ste disponibilă temporar prin utilizarea funcției „Nu deranjați ”.

1.5 Alexa pentru afaceri

Alexa pentru afaceri este un serviciu cu abonament cu plată, care permite companiilor să
utilizeze serviciul Alexa pentru a se alătura convorbirilor de conferințe, a p rograma săli de întâlnire
și abilități personalizate, concepute de furnizori terți. La lansare, competențe notabile sunt
disponibile de la SAP, Microsoft și Salesforce.

1.6 Kitul de abilități Alexa

Amazon permite dezvoltatorilor să construiască și să publice abilități pentru Alexa utilizând
Alexa Skills Kit, cunoscut sub numele de Alexa Skills. Aceste abilități dezvoltate de terți, odată
publicate, sunt disponibile pe dispozitivele cu funcții Alexa. Utilizatorii pot activa aceste abilități
utilizând ap licația Alexa.
Este disponibil un "API Smart Home Skill" , destinat utilizării de către producătorii de
hardware pentru a permite utilizatorilor să controleze dispozitive inteligente de acasă. Cele mai
multe abilități rulează codul aproape în întregime în cloud , folosind serviciul Amazon AWS
Lambda.
În aprilie 2018, Amazon a lansat Blueprints, un instrument pentru persoanele fizice de a
construi abilități pentru uzul personal. În februarie 2019, Amazon a extins în continuare

PROIECT DE DISERTAȚIE

8
capacitatea Blueprint -urilor, permițând clienț ilor să publice abilitățile pe care le -au construit cu
șabloanele către magazinul Alexa Skill Store din SUA pentru a fi utilizate de oricine dispune de
un dispozitiv compatibil cu Alexa .

1.7 Serviciul de voce Alexa

Amazon permite producătorilor de dispozitiv e să integreze capabilitățile de voce Alexa în
propriile produse conectate, utilizând serviciul Alexa Voice Service (AVS), un serviciu bazat pe
cloud care oferă interfețe API pentru interfața cu Alexa. Produsele construite folosind AVS au
acces la lista cr escândă a capabilităților Alexa, inclusiv toate competențele Alexa. AVS asigură
recunoașterea automată a vorbirii pe bază de cloud (ASR) și înțelegerea limbajului natural (NLU).
Nu există taxe pentru companiile care doresc să integreze Alexa în produsele lor utilizând AVS .
Vocea lui Amazon Alexa este generată de o rețea neurală artificială de memorie pe termen scurt .

1.8 Confidențialit ate Amazon Alexa

Există suspiciuni cu privire la accesul Amazon la conversațiile private la domiciliu și alte
indicații non -verbale care pot identifica cine este prezent în casă . Amazon răspunde acestor
suspiciuni afirmând că dispozitivele înregistrează n umai conversatii din casa utilizatorului atunci
când cuvântul " Alexa " activează dispozitivul. Amazon utilizează înregistrări de voce anterioare
trimise serviciului cloud pentru a îmbunătăți răspunsurile la întrebările viitoare. Utilizatorii pot
șterge înre gistrările vocale asociate contului lor.
La începutul anului 2018, cercetătorii din domeniul securității au reușit să transforme un
Echo într -un dispozitiv spion, creând o aptitudine rău intenționată, care ar putea înregistra
utilizatorii și să trimită transcrierea conversațiilor lor unui atacator.
În noiembrie 2018, Amazon a trimis 1700 de înregistrări ale unui cuplu american unui
bărbat european fără legătură. Incidentul demonstreaz ă că Alexa înregistrează oameni fără
știrea lor. Deși omul care a primit înregistrările a raportat anomalia lui Amazon, compania nu a
anunțat victima până când revista germană nu le -a contactat, de asemenea, și a publicat o
poveste despre incident. Când Am azon a contactat în cele din urmă omul ale cărui înregistrări
fuseseră trimise unui străin, ei au susținut că au descoperit eroarea în sine și i -au oferit o scutire
primă și noi dispozitive Alexa prin scuze.
Amazon a acuzat incidentul cu privire la "eroare a umană" și la numit "un singur caz izolat".
Cu toate acestea, în mai 2018, un dispozitiv Alexa din Portland, Oregon, a înregistrat o
conversație a unei familii și a trimis la unul dintre contactele lor fără să știe. Compania a respins
incidentul ca fiind o "situație extrem de rară" și a revendicat dispozitivul "conversație de fond
interpretat" ca o secvență de comenzi pentru a porni, a înregistra, a trimite înregistrarea și a
selecta un destinatar specific.
Un judecător din New Hampshire a decis în noiembr ie 2018 că autoritățile ar putea
examina înregistrările unui dispozitiv Echo Amazon recuperat din casa victimei crimei, Christine
Sullivan, pentru a fi folosit ca probă împotriva inculpatului Timothy Verrill. Anchetatorii cred că
dispozitivul, care aparțin ea iubitului victimei, ar fi putut capta sonorul crimei și consecințele ei
[1,3].

PROIECT DE DISERTAȚIE

9
1.9 Boxa Amazon Echo 2nd generation

Amazon Echo este o marcă de difuzoare inteligente dezvoltate de Amazon. Aparatele
Echo se conectează la serviciul inteligent de asistență personală Alexa, care răspunde la numele
"Alexa", "Echo" sau "Computer". Utilizatorii pot schimba acest cuvânt de trezire la "Amazon",
"Echo" sau "Computer". Printre caracteristicile dispozitivului se numără: interacțiunea vocală,
redarea muzicii , crearea de liste de sarcini, setarea alarmei, difuzarea de podcasturi și redarea
de audiobook -uri, pe lângă furnizarea de informații meteo, trafic și alte informații în timp real. De
asemenea, poate controla mai multe dispozitive inteligente, acționând c a un hub de automatizare
a locuinței.

Figura 1.3 Logo Amazon Echo

Potrivit rapoartelor confirmate, Amazon a inceput sa dezvolte dispozitive Echo in birourile
sale Lab126 din Silicon Valley si Cambridge, Massachusetts inca din 2010. Dispozitivul a
reprezentat una dintre primele incercari ale lui Amazon de a -si extinde portofoliul de dispozitive
dincolo de cititorul electronic Kindle. Echo -ul a apărut proeminent în prima emisiune a televiziunii
Amazon în primăvara anului 2016 [2].
Amazon, inițial a limitat accesul la Echo – prima generație la membrii Amazon Prime sau
prin invitație, dar a devenit disponibil pe scară largă în Statele Unite la 23 iunie 2015. Presa a
speculat că va face debutul canadian la mijlocul anului până la sfârșitu l anului 2016, după ce
Amazon a postat posturi de lucru pentru dezvoltatori pentru Alexa și a găzduit un hackathon în
Toronto. Echo -ul a devenit disponibil în Regatul Unit la 28 septembrie 2016 . În plus, serviciul de
voce Alexa este disponibil pentru a fi adăugat altor dispozitive, iar Amazon încurajează
dispozitivele și serviciile altor companii să se conecteze la acesta.
Lucrul pe Amazon Echo a început în 2011, cunoscut sub numele de "Proiectul D." Acesta
a fost numit pentru că Kindle a fost Proiectul A și Telefonul de Foc a fost Proiectul B. Amazon
Echo a fost un offshoot al Proiectului C. Proiectul C este necunoscut deși lucrul la el sa oprit.
Echo -ul Amazon a fost inițial presupus a fi numit Amazon Flash. Cuvântul pentru trezire, cuvântul
care face ca dispozitivul să răspundă, pentru Echo era "Amazon". Ambele atribute au fost
dezaprobate de Lab126, divizia Amazon care desfășoară activități de cercetare și dezvoltare și
creează hardware pentru calculator. Lab126 a crezut că "Amazon" este un cuvant prea mult
folosit în mod obișnuit, iar dispozitivul ar reacționa atunci când nu era destinat. Jeff Bezos,
directorul executiv al Amazonului, a fost influențat de Lab126 pentru a schimba numele
dispozit ivului la Echo Amazon și cuvântul pentru trezire la "Alexa". Echo -ul Amazon a fost inițial
așezat ca un difuzor inteligent, nu a fost intenționat inițial să fie un hub inteligent de acasă, așa
cum este acum, până când a intrat pe piață. Așa cum Alexa, inte ligența artificială (AI), care
amplifică Echo Amazon, s -a îmbunătățit, dispozitivul a devenit mai mult un centru de control
pentru aparatele electrocasnice inteligente. Dave Isbitski, evanghelistul principal al dezvoltatorilor
pentru Echo și Alexa, a primi t apeluri de la producătorii de case inteligente pentru a discuta
despre conectarea dispozitivelor lor, după lansarea Echo -ului Amazon. Dispozitivele inteligente
de acasă aveau o problemă, oamenii nu cumpărau dispozitive inteligente de origine, deoarece
adesea aveau nevoie de o aplicație suplimentară pentru a fi utilizate, ceea ce nu era mult mai
bun decât utilizarea manuală a dispozitivului. Acest lucru a descurajat mulți clienți să cumpere

PROIECT DE DISERTAȚIE

10
dispozitive de tip smart home. Viziunea actuală pentru Echo este c a acesta să fie centrul de
control al unei case inteligente.

Figura 1.4 Amazon Echo

Amazon Echo (prima generație) a fost lansat inițial în martie 2014 pentru Amazon Prime
și membrii invitați și a fost comercializat alături de vocea produsului, Alexa. Alexa este o voce
asociată cu Echo Amazon care va răspunde la întrebări și cereri prin intermediul inteligenței
artificiale. Amazon a susținut că vocea lui Alexa a fost inspirată de sistemele de comunicații
electronice prezentate în seri ile de televiziune Star Trek: Seria originală și Star Trek: The Next
Generation.
Dezvoltatorii Amazonului au decis să numească Alexa, pentru că X, în capătul numelui,
face ca cuvântul să pară simetric și atrăgător, iar sunetul consoanselor grele face ca nu mele
produsului să fie mai ușor de amintit cu mai multă acuratețe și precizie .
La scurt timp după lansarea Amazon Echo, Amazon a anunțat Alexa Fund în iunie 2015,
în care a investit în companii care au realizat dispozitive de control vocal. Acest fond a aj uns să
investească peste 100 milioane de dolari în mai multe companii care au produs produse precum
Echo Amazon [3].
De la lansarea boxei Amazon Echo la începutul anului 2014, compania Amazon a
dezvoltat mai multe dispozitive similare pe care le -au lansat în piețele tehnologiei inteligente și
tehnologice. În martie 2016 Amazon a lansat un produs secundar al Amazon Echo, numit
Amazon Echo Dot. Acest dispozitiv este, în esență, o versiune de dimensiuni a pucului de hochei
al versiunii originale Amazon Echo la nsată în 2014 și are aceleași capacități. Acest produs a fost
conceput pentru a fi utilizat în camere mai mici, cum ar fi dormitoarele datorită capacităților limitate
(dimensiune) ale difuzoarelor sau pentru a fi asociate cu un difuzor extern. În noiembrie 2016, a
doua generație a lui Echo Dot a fost lansată pentru un preț mai mic, cu o recunoaștere
îmbunătățită a vocii și culori noi.
Amazon Echo – prima generație constă dintr -un difuzor cilindric înalt de 9,55 cm (23,5
cm), cu o matrice de șapte microfoane. Suplimentul hardware Echo include un procesor Texas

PROIECT DE DISERTAȚIE

11
Instruments DM3725 ARM Cortex -A8, 256MB de LPDDR1 RAM și 4GB de spațiu de stocare.
Începând cu iulie 2017, Echo -prima generație a menținut un scor de 83% pe GearCaliber, un
agregator de recenzii.
Deși Echo este destinat a fi controlat vocal, o telecomandă cu microfon, similară celei
livrate împreună cu televizorul Amazon Fire, este disponibilă pentru cumpărare. Un buton de
acțiune deasupra apar atului este prevăzut pentru configurarea utilizatorului într -o locație nouă,
iar butonul de dezactivare a microfonului permite dezactivarea microfoanelor. Jumătatea
superioară a unității se rotește pentru a mări sau micșora volumul difuzorului. Echo -ul tre buie
conectat pentru a funcționa, deoarece nu are baterie internă .

Figura 1.5 Amazon Echo (vizualizare de sus)

Echo oferă suport pentru Wi -Fi 802.11a / b / g / n și Bluetooth Advanced Audio Distribution
Profile (A2DP) pentru streaming audio și AVRCP pentru control vocal al dispozitivelor mobile
conectate.
A doua generație a Amazon Echo a fost lansată în octombrie 2017. Această actualizare
a oferit o recunoaștere a vocii mai bună și o țesătură acoperind exterior ul.

1.10 Modul de operare Amazon Echo

În modul implicit, dispozitivul ascultă în permanență toate discursurile, monitorizând
cuvântul pentru trezire care urmează să fie rostit, care este în primul rând configurat ca "Alexa"
(derivat de la Alexa Internet, compania de indexare a internetului deținută de Amazon).
Microfoanele Echo pot fi dezactivate manual prin apăsarea unui buton de dezactivare a sunetu lui
pentru a opri circuitul de procesare audio. Aparatele Echo necesită o conexiune la internet
wireless pentru a funcționa. Capacitatea de recunoaștere vocală a Echo se bazează pe serviciile
Amazon Web Services și pe platforma vocală Amazon achiziționate de la Yap, Evi și IVONA .
Difuzoarele inteligente funcționează bine cu o conexiune la internet "bună" (latență redusă), care
minimizează timpul de procesare datorită călătoriilor minime de comunicații, răspunsurilor de

PROIECT DE DISERTAȚIE

12
streaming și a punctelor finale de ser vicii geo -distribuite. În timp ce aplicația este gratuită, este
necesar un cont Amazon și configurarea dispozitivului nu este posibilă fără aplicatie.

1.11 Servicii disponibile Amazon Echo

Dispozitivele Echo oferă informatii referitoare la vreme de la AccuWeather și știri dintr -o
varietate de surse, inclusiv posturile de radio locale, BBC, NPR și ESPN de la TuneIn. Echo
poate reda muzică din conturile Amazon Music și are suport pentru alte servicii muzicale de
strea ming precum Apple Music, iHeartRadio, Pandora, Sirius XM și Spotify printre altele , și are
suport pentru IFTTT și Nest termostate. Echo poate, de asemenea, să redea muzică din servicii
de streaming muzicale necompatibil, cum ar fi Muzică Google Play de pe un telefon sau o tabletă
prin Bluetooth. Echo reține alarme controlate prin voce, timere, cumpărături și liste de sarcini și
poate accesa articole Wikipedia. Echo va răspunde întrebărilor despre elementele din calendarul
Google. Se integrează, de asemenea, cu Yonomi, Philips Hue, Belkin Wemo, SmartThings,
Insteon și Wink. În plus, integrarea cu Echo se face în lucrările pentru Countertop de către
Orange Chef, Sonos, Alarmă Scout, Garageio, Toymail, MARA și Mojio. Întrebări precum "Cine
este Barack Obama?" s e răspund prin citirea primelor rânduri din articolul Wikipedia
corespunzător.
Aparatele Echo au, de asemenea, acces la "abilitățile" construite cu kitul de competențe
Alexa. Acestea sunt aplicații vocale dezvoltate de terțe părți care se adaugă la capabilitățile
oricărui dispozitiv cu funcții Alexa (cum ar fi Echo). Exemple de abilități includ abilitatea de a reda
muzică, de a răspunde la întrebări generale, de a seta o alarmă, de a comanda o pizza, de a
obține o mașină pentru călătorii î n mișcare Uber și multe altele. Abilitățile sunt adăugate în mod
continuu pentru a spori capacitățile disponibile pentru utilizator. De exemplu, o abilitate nouă pe
care A lexa a învățat -o este abilitatea de a juca "jocuri" cu dvs. Un astfel de joc este "Es cape the
Garage" în care trebuie să răspunzi în mod corect întrebările pe care le întreabă Alexa, în timp
ce găsim o cale de scăpare. Alexa Skills Kit este o colecție de interfețe de programare a
aplicațiilor (API), unelte, documentație și eșantioane de co duri care fac rapid și ușor pentru orice
dezvoltator să adauge abilități Alexei. Dezvoltatorii pot folosi, de asemenea, "API Smart Home
Skill", o nouă adăugire la kitul de competențe Alexa, pentru a învăța cu ușurință Alexa cum să
controlați dispozitivele de iluminat și termostate controlate de cloud. Tot codul rulează în cloud –
nimic nu apare pe niciun dispozitiv utilizator. Un dezvoltator poate urma tutoriale pentru a învăța
cum să construiască rapid capacitatea de răspuns vocal pentru aplicațiile lor no i și existente.
În noiembrie 2018, a fost lansată o nouă caracteristică importantă care va permite
utilizatorilor să efectueze apeluri prin Skype. Orice dispozitiv Echo din trecut și prezent va putea
să formeze un număr prin Skype. Echo -urile cu afișaj vo r oferi capabilități video complete Skype .

1.12 Sistemul de voce la Amazon Echo

Serviciul de voce Alexa (AVS) permite controlul volumului, redarea audio și recunoașterea
vorbirii. Dispozitivele au voci naturale din viața naturală care rezultă din tehno logia unității de
vorbire . Precizia de vorbire înaltă este obținută prin procesarea sofisticată a limbajului natural
(NLP), integrați în motorul TTS (Echo -to-speech) .

PROIECT DE DISERTAȚIE

13
1.13 Actualizarile de sistem

Ca și în cazul tuturor dispozitivelor Alexa, funcționalitatea difuzoarelor Echo inteligente
evoluează periodic odată cu lansarea de noi produse software de către Amazon. Cele mai multe
versiuni noi remediază erorile în plus față de includerea funcțiilor îm bunătățite. Noile actualizari
sunt incarcate pe dispozitive gradual, astfel încât poate dura câteva zile până la o săptămână
sau mai mult pentru ca un anumit dispozitiv să fie actualizat. Deoarece o mare parte din
inteligența Echo se află în cloud , pot fi făcute îmbunătățiri funcționale semnificative pentru Echo
fără actualizarea versiunii software pe care o rulează. De exemplu, în aprilie 2015, Echo -ul a
adăugat capacitatea de a da scoruri sportive live fără actualizarea versiunii de software care
rulează pe dispozitiv .

1.14 Casa inteligenta

Amazonul Echo este capabil să se conecteze la multe dispozitive inteligente de acasă.
Termostatele, umidificatoarele, becurile, prizele , alimentatoarele pentru caini si pisici, usile,
camerele, sistemele de securitate, difuzoarele, WiFi, televizoarele, imprimantele si alte
dispozitive inteligente pot fi controlate prin Alexa. Alexa poate fi utilizat pentru a activa și a
dezactiva toate aceste aparate inteligente de uz casnic, precum și pentru a schimba setările în
funcție de dispozitiv.
De exemplu, Alexa po ate fi folosit pentru a schimba temperatura într -o casă prin
intermediul unui termostat, a opri luminile cu lumini inteligente, a lăsat hrana pentru câini sau
pisici prin intermediul unui alimentator inteligent de animale de companie și a activa sistemele de
securitate printr -un sistem inteligent de securitate. Utilizatorul poate organiza aceste dispozitive
inteligente de acasă, punându -le în grupuri. De exemplu, un utilizator poate crea un "grup de
muzică" în Amazon Echo. Amazon Echo va putea reda muzică ș i alte materiale media în mai
multe camere dintr -o casă prin alte ecouri și difuzoare care se află în "grupul de muzică". Pe
lângă mai multe grupuri, un Amazon Echo poate deține mai multe profiluri. Schimbarea între
profiluri permite utilizatorilor să -și redea muzica, să acceseze calendarele și să folosească
conturile pentru cumpărături, în loc să folosească doar o singură persoană [4].

1.15 Apeluri cu Amazon Echo

Dispozitivele Amazon Echo pot efectua apeluri și trimite mesaje. Utilizatorii pot efectua
apeluri către un alt Amazon Echo sau difuzor care se află în casă apelând numele dispozitivului.
Utilizatorii pot de asemenea să efectueze apeluri și să trimită mesaje către alte persoane care au
un Amazon Echo. Acest lucru se face prin conectarea persoanelor de contact ale utilizatorilor la
Amazon Echo. Utilizatorul Amazon Echo va suna la Amazon Echo si astfel v or fi capabili să aibă
o conversație. Mesajele vor merge la telefonul persoanei de contact, în aplicația Alexa. Mesajul
poate fi, de asemen ea, redat pe Amazon Echo.

PROIECT DE DISERTAȚIE

14
1.16 Confidențialitatea Amazon Echo

Există îngrijorări cu privire la accesul pe care Echo îl are la conversațiile private în casă
sau la alte indicații non -verbale care pot identifica cine este prezent în casă sau nu. Amazon
răspunde acestor preocupări prin faptul că declară că dispozitivul Echo înregistrează numai
înregistrări din casa utilizatorului atunci când cuvântul " Alexa " activează dispozitivul, deși
dispozitivul este capabil din punct de vedere tehnic să înregistreze înregistrări vocale în orice
moment și de fapt el intotdeauna ascultat a pentru a detecta dacă un utilizator a rostit cuvântul.
Dispozitivul Echo folosește înregistrările vocale din trecut pe care utilizatorul le -a
trimis serviciului cloud p entru a îmbunătăți răspunsul la întrebările viitoare pe care le poate
pune utilizatorul. Pentru a aborda preocupările legate de confidențialitate, utilizatorul poate
șterge înregistrările vocale care sunt asociate în prezent cu contul utilizatorului, dar a cest
lucru poate degrada experiența utilizatorului folosind căutarea vocală. Pentru a șterge aceste
înregistrări, utilizatorul poate vizita pagina Gestionați dispozitivul meu pe Amazon.com sau
contactați serviciul pentru clienți Amazon . Echo folosește o ad resă stabilită în aplicația
însoțitoare Alexa când are nevoie de o locație. Amazon și aplicațiile și site -urile terță
utilizează informații despre locație pentru a furniza servicii bazate pe locație și pentru a stoca
aceste informații pentru a furniza serv icii de voce, aplicația Hărți Google, găsirea
dispozitivului dvs. și pentru a monitoriza performanța și exactitatea serviciilor de localizare.
De exemplu, serviciile de voce Echo utilizează locația utilizatorului pentru a răspunde
solicitărilor utilizatoru lui pentru restaurante sau magazine din apropiere. În mod similar, Echo
utilizează locația utilizatorului pentru a procesa cererile legate de cartografiere ale
utilizatorului și pentru a îmbunătăți experiența Maps. Toate informațiile colectate fac obiectul
notificării de confidențialitate Amazon.com . Amazon păstrează înregistrările digitale ale
conversatiilor utilizatorilor după ce cuvantul "Alexa " a fost rostit , iar în timp ce înregistrările
audio sunt supuse cerințelor de aplicare a legii, agenților guvernamentali și altor entități prin
citație .

PROIECT DE DISERTAȚIE

15

CAPITOLUL 2

LIMBAJUL DE PROGRAMARE PYTHON

2.1 Implementare

Python este un limbaj de programare dinamic, de nivel înalt, ce pune accent pe
expresivitatea și înțelegerea ușoară a codului. Sintaxa sa permite implementări echivalente
cu alte limbaje în mai puține linii de cod. Datorită acestui fapt, Python este foarte răspândit
atât în programarea de aplicații, cât și în zona de scripting. Limbajul facilitează ma i multe
paradigme de programare, în special paradigma imperativa (C) și pe cea orientată pe obiecte
(Java). Spre deosebire de C, Python nu este un limbaj compilat, ci interpretat. Acest fapt are
atât avantaje, cât și dezavantaje. Pe de -o parte, Python este mai lent decât C. Pe de altă
parte, aplicațiile Python sunt foarte ușor de depanat, codul putând fi ușor inspectat în timpul
rulării. De asemenea, este foarte ușor de experimentat cu mici fragmente de cod folosind
interpretorul Python.
Sintaxa este gândit ă în așa fel încât programele Python să fie ușor de citit. Acest lucru
este obținut prin folosirea de cuvinte în locul semnelor (de exemplu, and în loc de &&) și prin
includerea indentării în limbaj. Astfel, în Python nu se folosesc acolade (ca în C/C++, J ava),
ci blocurile de cod se delimitează prin indentare. Programele Python sunt, de multe ori, foarte
aproape de o “implementare” echivalentă în pseudocod [7].

Figura 2.1 .Logo Python
Python este un limbaj interpretat, care va poate accelera munca în timpul procesului
de dezvoltare, ne mai fiind nevoit sa compilati codul de fiecare data. Interpretorul poate fi
folosit interactiv, ceea ce va permite sa testati foarte usor anumite facilitati ale limbajului, sa
scrieti imediat programe dispensabile, sau sa testati anumite functii înainte de a le folosi în
programul dumneavoastra. Este foarte folositor si drept, calculator de birou. Python permite
scrierea unor programe foarte compacte si usor de citit. Programele scrise în Python sunt
mult mai mici decat echivalentele în C sau C++ pentru ca:
• tipurile de date de nivel înalt va permit sa realizati operatii complexe într -o
singura instructiune;
• gruparea instructiunilor este data de paragrafare în loc de blocuri begin/end sau
de acolade;
• nu este necesara declararea variabilelor.
Pe de alta parte dispune de o mult mai buna verificare a erorilor decât C -ul, si fiind un
limbaj de nivel foarte înalt, dispune de tipuri de date de nivel înalt cum ar fi tablouri sau
dictionare foarte flexibile, a caror implementare în C ar lua programatorului zile. Datorita
caracterului general al tipurilor de date Python poate fi aplicat într -o arie mult mai larga de

PROIECT DE DISERTAȚIE

16
probleme decât AWK sau PERL. Cu toate astea, multe lucru ri se realizeaza la fel de usor în
Python ca si în aceste limbaje.

2.2 Lucrul cu interpretorul

Limbajul Python este interpretat, nu compilat. Asta înseamnă că programele Python
sunt transformate într -un limbaj intermediar. Acest lucru permite codului să fie ușor de portat
pe diverse sisteme de operare și arhitecturi hardware.
Codul este executat linie cu linie. Astfel, dacă – de exemplu – apelăm o funcție care nu
există, vom primi un mesaj de eroare abia când se încearcă executarea liniei respe ctive.
Erorile de sintaxă sunt raportate însă înainte de rularea programului. Interpretorul seamănă
foarte mult cu o linie de comanda (cmd.exe, bash). Prompt -ul (>>>) apare când se așteaptă
input din partea utilizatorului. După ce este introdusă o instrucț iune, aceasta este evaluată
și dacă există output, este afișat în continuare, începând cu o linie nouă. Expresiile sunt
evaluate și afișate.

>>> # Comentariile incep cu '#'si tot ce se afla la dreapta va fi ignorat
>>> 3 # 3 este o expresie – este evaluat a si se afiseaza rezultatul
3
>>> 2 + 4 # alta expresie
6
>>> a = 3 # aceasta instructiune declara variabila a in sesiunea curenta si
ii atribuie valoarea 3
>>> a # introducand o expresie, i se va afisa valoarea
3
>>> a + 4
7
>>> a = 'hi' # a poate lua ori ce valoare
>>> a
'hi'
>>>

Interpretorul Python este de obicei instalat în ‘/usr/local/bin/python’ pe mașinile unde
există această cale. În lista cu directoarele de sistem a UNIX introduceți calea ‘/usr/local/bin’
pentru a putea porni interpretorul cu coma ndă: python.

2.3 Tratarea erorilor

Când are loc o eroare, interpretorul afisează un mesaj de eroare și starea stivei în
momentul respectiv. În modul interactiv revine la prompt -ul principal. Atunci când întrările
provin dintr -un fisier, interpretorul se oprește cu un cod de eroare diferit de zero după ce a
afisat starea stivei.(Excepțiile tratate nu sunt erori în acest context). Unele erori sunt inevitabil
fatale și cauzează terminarea anormală cu cod de ieșire diferit de zero (Ex: lipsa d e
memorie). Toate mesajele de eroare sunt scrise la ieșirea pentru erori (standard error
stream). Ieșirile provenite din execuția comenzilor sunt scrise la ieșirea standard.

PROIECT DE DISERTAȚIE

17
Dacă se apasă caracterul de întrerupere (Control -C, DEL) în primul prompt sau în cel
secundar, comandă scrisă este pierdută revenindu -se la promptul principal. Întreruperea
unei comenzi în timpul execuției creează o excepție de tip Keyboard Interrupt, care poate fi
tratată într -o instrucțiune try.

2.4 Fișiere sursă

Fișierele sursă Python au extensia .py. Pentru a executa un fișier Python putem folosi
comanda :

$ python hello.py user 2

Se executa hello.py cu argumentul user. Nu sunt necesari pași suplimentari pentru
compilare.

#!/usr/bin/python

# prima data importam modulele necesare
# modului sys este util pentru accesarea variabilelor
import sys

print 'Hello, ', sys.argv[1]
# Argumentele primite se gasesc in sys.argv[index]
# sys.argv[0] este numele scriptului si poate fi ignorat in acest caz
# sys.argv[1] este următorul argument primit

Exemplu de apel:

$ python hello.py 'Iulia'
Hello, Iulia

$ ./hello.py 'Iulia' # functioneaza doar pentru fisiere executabile (Unix)
Hello, Iulia

2.5 Structuri de date

Python oferă tipuri tradiționale de date, cum ar fi numărul întreg (integer, int) sau cel
rațional (float), dar introduce totodată și concepte noi. De exemplu, un grad mare de
flexibilitate îl oferă listele (tablourile) în Python. Acestea nu sunt statice, ci pot conține orice
tipuri de date (în cadrul aceleiași liste) și pot fi modificate pe loc adăugând și eliminând
elemente fără a declara sau utiliza funcții de manipulare a memoriei.
Alte structuri de date sunt tuplurile/perechile (tuples) și dicționarele (dictionaries,
mappings). Tuplurile sunt liste care au un număr prestabilit de elemente, și nu pot fi
modificate parțial. Tuplurile pot fi utilizate în cazuri în care este nevoie de o anumită structură
de date specializată, de exemplu coordonate în spațiul cartezian. Dicționarele sunt liste
neordonate în care fiecare element are asociat o cheie, care poate fi număr sau șir de

PROIECT DE DISERTAȚIE

18
caractere. Dicționarele au foarte multe aplicații, inclusiv crearea structurilor de tip hash –
tables.

2.6 Sintaxa

In Python nu este necesară folosirea de ; la sfârșitul unei instrucțiuni. Folosim o linie
pentru fiecare instrucțiune. În cazul în care dorim să scriem mai multe instrucțiuni pe aceeași
linie, putem folosi ; ca în exemplu:
>>> a = 2; b = 3; c = 4
O caracteristică a limbajului Python este faptul că indentarea cu spații poate influența
rezultatul unei secvențe de cod. Acest lucru poate părea neobișnuit pentru începători, dar
este foarte logic. Recomandarea oficială PEP8 pentru indentare este de 4 spații. Python este
un limbaj dinamic și nu se lucreaza direct cu tipuri. Ele există 2 , este în continuare int, dar
programatorul nu trebuie să specifice acest lucru.
a = 3 # declaram variabila a, cu valoarea 3
b = 4 # declaram variabila b, cu valoarea 4
suma = a + b # declaram variabila suma, cu valoarea sume i dintre a si b
Din acest motiv este foarte util să dăm nume relevante variabilelor pentru a ne aminti
rolul lor. De multe ori putem avea erori dacă uităm tipul fiecărei variabile [8].

2.7 Tipuri de date

Cele mai comune tipuri numerice în Python sunt int și float.

2 # int
2.0 # float – similar cu double in C

Tipul int nu are valori minime și maxime, poate fi reprezentată orice valoare întreagă.
Tipurile de date boolean s e numesc True și False, și putem executa operații logice cu ele:

>>> 1 < 2
True
>>> 1 > 2
False
>>> True and 1 < 2
True
>>> True and 1 > 2
False
>>> False or True
True

Spre deosebire de C, Python oferă suport built -in pentru string -uri. Șirurile date ca
intrare pentru o operație sunt immutable, deci nu pot fi modificate și orice operațiune
returnează string -uri noi. Pot fi scrise cu ghilimele simple sau duble la alegere.
Pentru a extinde un string pe mai multe linii putem folosi fie backslash, fie ghilimelele
triple.

PROIECT DE DISERTAȚIE

19
my_str = 'prima linie \
a doua linie'

sau

my_str = """prima linie
a doua linie"""

Listele sunt echivalentul vectorilor dinamici din STL (din C++). Ele sunt similare cu
string -urile. Dicționarele sunt asocieri cheie – valoare, asemănător hashmap -ului din STL.
Cheile pot fi string -uri, numere, sau alte obiecte nemodificabile (de exemplu nu putem folosi
o listă drept cheie). Valorile pot fi orice.

>>> alex = {"nume": "Alex", "rol": "student", "an": 3}
>>> alex["nume"]
'Alex'
>>> alex["an"]
3
>>> alex["an"] = 4
>>> alex["an"]
4
>>> alex
{'nume': 'Alex', 'rol': 'student', 'an': 4}
>>> alex["medie"] = 10
>>> alex
{'nume': 'Alex', 'rol': 'student', 'medie': 10, 'an': 4}

2.8 Stil

Python este un limbaj multi -paradigmă, concentrându -se asupra programării
imperative, orientate pe obiecte și funcționale, ceea ce permite o flexibilitate mai mare în
scrierea aplicațiilor. Din punctul de vedere al sintaxei, Python are un număr de contrucții și
cuvinte cheie cunoscute oricărui programator, dar prezintă și un con cept unic: nivelul de
indentare are semnificație sintactică. Blocurile de cod sunt delimitate prin simplă indentare.
În C un astfel de blocuri sunt deseori desemnte prin acolade, {<cod>}, dar în Python nu
este nevoie de astfel de construcții. Nivelele de i ndentare îndeplinesc această funcție.
Această importanță a indentării este foarte suprinzătoare pentru mulți utilizatori noi
ai limbajului Python, chiar dacă sunt programatori cu experiență. Dar o astfel de utilizare a
indentării permite codului să fie mai ușor de citit și mai compact. Programatorii cu
experiență vor indenta implicit codul sursă, oricare ar fi limbajul, fiindcă astfel se permite
structurarea codului sursă și evidențierea funcționalității. Python face din această
deprindere folositoare în ac est sens o cerință strictă.
O impunere similară există și în limbajul de programare Java, care forțează
programatorii să delimiteze clasele în fișiere aparte, din motive de organizare și sporire a
eficienței de scriere a softului în echipe.

PROIECT DE DISERTAȚIE

20

2.9 Operatori

Operatorii sunt structurile care pot manipula valoarea op eranzilor . Ca exemplu, luati
în considerare expresia 4 + 5 = 9. Aici, 4 și 5 sunt numiți operanzi și + se numește operator.
Limba jul Python acceptă următoarele tipuri de operatori :
• Opera tori aritmetici ;
• Operatori de comparare (relațional) ;
• Operatori de alocare ;
• Operatori logici ;
• Operatori de biți ;
• Operatori de membru ;
• Operatori de identitate .

Operatori aritmetici:
• + adunare
• – scădere
• * înmulțire
• / împărțire
• % modulo
• ** exponent
• // împărțire în care rezultatul se trunchiază

Operatori de comparare: similar cu alte limbaje, aceștia sunt: ==, !=, <>, <, >, <=, >=.
Operatori de atribuire: -=, *=, \=, **=, //= . Cel mai des folosit este operatorul simplu
de atribuire =, care atribuie variabilei din stânga lui valoarea expresiei din dreapta lui. Pe
lângă acesta, s -au definit o serie de operatori compuși astfel: operator aritmetic + operatorul
simplu de atribuire. Exemplu:
• += – realizează o adunare și o atribuire, astfel: a += b este echivalent cu a =
a + b
• %= – asignează operandului din stânga restul împărțirii acestuia la operandul
din dreapta, astfel: a %= b este echivalent cu a = a % b

Operatori logici:
• and – operatorul ȘI
• or – operatorul SAU
• not – operatorul negație

PROIECT DE DISERTAȚIE

21
De remarcat că acești operatori sunt foarte aproape de limbajul natural, ceea ce face
codul ușor de citit și înțeles .
Operatori de apartenență – Verifică dacă un element aparține, respectiv nu aparține,
unei secvențe: in, respectiv not in. Exemplu:

>>> 'ab' in 'abecedar'
True
>>> 1 not in [1, 2, 3]
False

2.10 Biblioteci și Extindere

Includerea tuturor acestor structuri, precum și a funcțiilor ce permit manipularea și
prelucrarea lor, precum și multe alte biblioteci de funcții sunt prezente datorită conceptului
“Batteries Included”, ce poate fi explicat prin faptul că Guido van Rossum și comunitatea
ce s-a format în jurul limbajului cred că un limbaj de programare nu prezintă utilitate practică
dacă nu are un set de biblioteci importante pentru majori tatea dezvoltatorilor.
Din acest motiv Python include bibioteci pentru lucrul cu fișiere, arhive, fișiere XML
și un set de biblioteci pentru lucrul cu rețeaua și principalele protocoale de comunicare pe
internet (HTTP, Telnet, FTP). Un număr mare de platfo rme Web sunt construite cu Python.
Abilitățile limbajului ca limbaj pentru programarea CGI sunt în afara oricăror dubii. De
exemplu YouTube, unul din site -urile cu cea mai amplă cantitate de trafic din lume, este
construit pe baza limbajului Python.
Totuși , Python permite extinderea funcționalității prin pachete adiționale programate
de terți care sunt axate pe o anumită funcționalitate. De pildă, pachetul wxPython conține
metodele și structurile necesare creării unei interfețe grafice.
Popularitatea limbaj ului este în creștere începând cu anul 2000, datorită faptului că
Python permite crearea mai rapidă a aplicațiilor care nu cer viteze înalte de procesare a
datelor. De asemenea este util ca limbaj de scriptare, utilizat în cadrul aplicațiilor scrise în
alte limbaje. Modulele (bibliotecile) Python pot fi de asemenea scrise în C, compilate și
importate în Python pentru a mări viteza de procesare [9].

PROIECT DE DISERTAȚIE

22

CAPITOLUL 3

MINICOMPUTERUL RASPBERRY PI

3.1 Principii generale

Raspberry Pi este o serie de SBC (Single -board computer) de dimensiunile unui card
de credit. Este inspirat de BBC Micro și produs în UK de către Raspberry Pi Foundation.
Scopul a fost acela de a crea un dispozitiv cu costuri reduse care să îmbunătățească
abilitățile de programare și înțe legerea hardware la nivel preuniversitar.
Raspberry Pi este mai lent decât un laptop sau PC, dar care poate oferi majoritatea
aplicațiilor acestora precum conectare la internet, procesare de text, redare de conținut
video/audio, jocuri video, la un nivel d e consum redus de energie.
În plus, Raspberry Pi are o caracteristică specială pe care computerele nu o folosesc:
port generic de intrare/ieșire (General -Purpose Input/Output)(GPIO). Acesta oferă
posibilitatea de a conecta diverse componente electronice sp ecifice sistemelor înglobate:
senzori, butoane, ecran LCD, relee, și crearea de noi proiecte electronice.
Denumirea Raspberry Pi este formată din cuvintele raspberry (zmeură) și Python
interpreter, limbajul de programare inițial al proiectului. Zmeura are legătură cu tradiția
numirii computerelor cu nume de fructe, cum ar fi Apple, Acorn, Tangerine Computer
Systems, Apricot Computers. Logo -ul a fost selectat într -o competiție publică și reprezintă o
zmeură stilizată .

Figura 3.1. Logo Raspberry Pi
În 2006, conceptele incipiente ale Raspberry Pi erau bazate pe un microcontroler
Atmel ATmega644. Dispunerea PCB -ului și schema electronică sunt disponibile pentru
descărcare. Reprezentantul fundației Raspberry Pi, Eben Upton, a strâns un grup de
profesori, a cademicieni și pasionați de computere cu scopul de a concepe un computer
pentru a inspira copiii. Computerul a fost inspirat de BBC Micro lansat de Acorn în 1981.
Primul prototip de computer bazat pe un procesor ARM a fost ambalat într -o carcasă de
dimensi unea unui stick USB de memorie. Avea la un capăt un port USB și la capătul celălalt
un port HDMI.
Cele mai frecvente aplicații ale Raspberry Pi sunt educative, server local de stocare,
server de posta electronica, consola de jocuri prin emulatori, compute r personal(redactarea
documentelor, navigare pe internet etc), automatizari industriale(industrializare 4.0),
domotica [4].

PROIECT DE DISERTAȚIE

23

3.2 Sistemul de operare

Sistemul de operare special optimizat pentru Raspberry Pi este Raspbian, preinstalat
pe dispozitive. Există trei versiuni ale Raspbian: Wheezy, Jessie și Stretch. Derivat din
Debian, acesta oferă pe lângă funcțiile de bază ale nucleului, aplicații cum ar fi browserul
Chromium, Python, Scratch, Sonic Pi, RealVNC, NodeRED, Geany, Wolfram, Java și peste
35000 de alte pachete, software precompilat, toate aranjate într -o manieră ușor de instalat
și utilizat.

Figura 3.2. Sistemul de operare Raspbian

Raspbian este un sistem de operare bazat pe Debian pentru Raspberry Pi. Există mai
multe variante de Raspbian, inclusiv Raspbian Stretch și Raspbian Jessie. Din anul 2015,
acesta a fost oficial oferit de Fundația Raspberry Pi ca sistem principal de operare pentru
familia computerelor single -board Raspberry Pi. Raspbian a fost creat de Mike Tho mpson și
Peter Green ca un proiect independent. Construcția inițială a fost finalizată în iunie 2012.
Sistemul de operare este încă în curs de dezvoltare activă. Raspbian este foarte optimizat
pentru CPU -urile ARM cu performanță slabă ale liniei Raspberry Pi.
Raspbian foloseste PIXEL, Pi Improved X -Window Environment, Lightweight ca
mediul de lucru principal al desktop -ului ca cea mai recenta actualizare. Acesta este alcătuit
dintr-un mediu desktop LXDE modificat și managerul de ferestre de stivuire Openbox cu o
temă nouă și câteva alte modificări. Distribuția este livrată cu o copie a programului de calcul
algebră Mathematica și o versiune a Minecraft numită Minecraft Pi , precum și o versiune
ușoară a lui Chromium, ca cea mai recentă versiune [6].
Mai multe versiuni PC pentru Linux au fost portate pentru Raspberry Pi cum ar fi:
Raspbian (sistemul de operare oficial), Armbian, Angstrom Linux, Pidora, Fedora ARM,

PROIECT DE DISERTAȚIE

24
FedBerry, Gentoo Linux, Slackware ARM, Kali Linux, Linutop, LibreElec, RuneAudio,
OpenMedia Vault (multimedia), RecalBox (jocuri video) .
Exemple de UNIX disponibile pentru Raspberry Pi sunt Plan9, NetBSD, OpenBSD,
RaspBSD, RISC OS Pi.
Versiunea noului sistem de operare Windows 10, Windows 10 IoT Core este
compatibilă cu Raspberry Pi.

3.3 Raspbe rry Pi 3B +

Modelul Raspberry Pi 3 Model B + este cel mai nou produs din gama Raspberry Pi 3,
cu un procesor quad core pe 64 de biți care rulează la 1,4 GHz, LAN fără fir cu 2,4 GHz și 5
GHz, Bluetooth 4.2 / BLE, Ethernet mai rapid și PoE prin intermediul unui PoE separat HAT .
LAN-ul wireless dual -band vine cu certificare modulară de conformitate, permițând ca placa
să fie proiectată în produse finale cu teste de conformitate LAN fără limite reduse,
îmbunătățind atât costul cât și timpul pe piață. Raspberry Pi 3 Model B + mențin e aceeași
amprenta mecanică Raspberry Pi 2 Model B și Raspberry Pi 3 Model B.

Figura 3.3. Raspberry Pi 3B+

Raspberry Pi este o placă de dezvoltare de tip SBC (Single Board Computer) – un
sistem de calcul nemodular implementat pe un singur cablaj electr onic. Chiar dacă are
dimensiuni reduse (85mm x 56mm), Raspberry Pi este un calculator complet permițând
funcționalități obișnuite precum rularea unui sistem de operare (Linux sau Windows) și
rularea de aplicații utilizator (jocuri, editoare de text, medii de programare, redarea de muzică
și filme, aplicații de teleconferință, aplicații Internet). Diferențele între o placă Raspberry Pi
și un calculator personal (PC) sau laptop constau atât în dimensiunea redusă a plăcii cât și
în puterea mai mică de calcul a acesteia – nu are aceleași performanțe de calcul precum un
PC desktop care are un cost și o dimensiune de câteva ori mai mari. Putem compara placa

PROIECT DE DISERTAȚIE

25
Raspberry Pi cu o tabletă sau cu un sistem de tip NetBook dar fără a dispune de ecran și
tastatură. În plus, placa Raspberry Pi oferă posibilitatea de a conecta diverse componente
electronice specifice sistemelor embedded: senzori, butoane, ecrane LCD sau pe 7
segmente, drivere de motoare, relee etc. Posibilitatea de a personaliza sistemele de
programe (sistemul de operare, aplicațiile) și posibilitatea de interconectare cu alte
componente electronice fac din placa Raspberry Pi un sistem de calcul ce poate sta la baza
unor proiecte personale extrem de interesante și de puternice – un calculator ce poate fi
integr at în sisteme electronice și mecanice proiectate și realizate de utilizator .
În ciuda dimensiunii reduse placa Raspberry Pi 3 dispune de periferice integrate
numeroase acoperind complet funcționalitatea unui sistem de calcul (audio, video, porturi
USB, con ectivitate de rețea):
• Procesor SoC pe 64 de biți din familia ARMv8 -A, Broadcom BCM2837, ce lucrează
la o frecvență de 1.2GHz și dispune de 4 nuclee de tip ARM Cortex -A53;
• 1GB de memorie RAM (folosită și ca memorie video, partajată cu procesorul grafic );
• Procesor grafic Broadcoam VideoCore IV 3D integrat pe aceeași pastilă de siliciu ca
și procesorul principal;
• Ieșire digitală video / audio HDMI;
• Ieșire analogică video (composite video) / audio mixtă prin intermediul unei mufe
jack 3.5mm;
• Mufă de rețea RJ45 Ethernet 10/100 Mbit/s;
• Conectivitate WiFi 802.11n;
• Conectivitate Bluetooth 4.1 / BLE;
• 4 porturi USB 2.0;
• 40 de pini de intrare / ieșire (GPIO);
• Slot card de memorie microSD (utilizat pentru instalarea sistemului de operare);
• Conectori dedicați pentru cameră video (CSI) și afișaj (DSI) [5].

Pentru a pune în funcțiune placa Raspberry Pi 3 B+ avem nevoie de următoarele
componente suplimentare:

• Cablu HDMI și un monitor / televizor cu intrare HDMI. În cazul în care nu
dispunem de un monitor / televizor cu intrare HDMI putem utiliza un adaptor
HDMI -DVI sau un adaptor HDMI -VGA, depinde de intrarea monitorului pe care
îl utilizăm.
• Alimentator de rețea cu ieșire de 5V, minim 2.5A și mufă microUSB. Este
recomandată ut ilizarea alimentatorului oficial sau a unui alimentator de calitate
care asigură o tensiune corectă și un curent suficient pentru alimentarea plăcii
Raspberry Pi 3. În cazul în care utilizăm un alimentator ieftin putem distruge
placa din cauza fluctuațiilo r de tensiune sau putem întâmpina probleme în
utilizare din cauza curentului insuficient debitat de sursa de tensiune.
• Tastatură și mouse USB. Sunt necesare pentru instalarea și configurarea
inițială a sistemului. Dacă, ulterior, se utilizează sistemul de la distanță,
tastatura, mouse -ul și monitorul nu mai sunt necesare. O variantă mai simplă,
și mai comodă, este utilizarea unui dispozitiv mixt tastatură / touchpad fără fir.
• Card de memorie microSD, capacitate minimă 8GB (16GB recomandat), clasă
de viteză 10. Cardul de memorie va stoca sistemul de operare la fel ca și hard –

PROIECT DE DISERTAȚIE

26
disk-ul în cazul unui sistem de calcul de tip PC sau laptop. Este foarte
importantă utilizarea unui card microSD de calitate și de viteză adecvată
din cauză că utilizarea unu i card de calitate îndoielnică poate conduce la
probleme de funcționare extrem de neplăcute: blocări în funcționare,
resetarea aleatorie a sistemului, pierderi de date etc. Dacă este posibil, se
recomandă utilizarea cardului microSD ofici al.
• Dacă sistemul va fi utilizat într -o rețea locală pe cablu este necesar și un cablu
de rețea UTP –patch -cord. Dacă se utilizează placa într -o rețea locală WiFi nu
este necesar. Conectivitatea de rețea (conectivitatea Internet) nu este
obligatorie pentru funcționarea plăcii, dar este recomandată deoarece altfel nu
se pot realiza actualizările de securitate ale sistemului de operare, nu se pot
menține corect setările de dată și oră și, bineînțeles, se pierde o funcționalitate
importantă a sistemului .
• Opțional, dar recomandat, este utilizarea și a unei carcase pentru placa
Raspberry Pi. Manipularea plăcii fără nici un fel de protecție poate conduce la
deteriorarea acesteia datorită descărcărilor electrostatice (descărcarea sarcinii
electrice statice a corpului uman în circuitul electronic prin atingerea
componentelor conductoare a acestuia), a șocurilor mecanice și a murdăriei
(praf, lichide, grăsimi).

3.4 Instalarea sistemului de operare

Următorul pas, necesar înainte de punerea în funcțiune a plăcii Raspberry Pi 3,
este pregătirea cardului microSD pentru instalarea sistemului de operare. Placa
Raspberry Pi 3 poate rula diverse distribuții ale sistemului de operare Linux și o versiune
minimală a sistemului de operare Microsoft Windows 10 (prin versiune minimală înțelegem
o variantă ce nu poate fi folosită ca platformă desktop ci doar ca platformă
pentru aplicații –Windows 10 IoT Core). În continuare este exemplifica ta instalarea
distri buției Linux Raspbian, sistemul de operare oficial al plăcii Raspberry Pi .

Figura 3.4. Sistemul de operare Raspbian

PROIECT DE DISERTAȚIE

27
În cazul în care se utilizează cardul microSD oficial al plăcii Raspberry Pi, instalarea
sistemului de operare este foarte simplă, deoarece cardul de memorie conține utilitarul
NOOBS (New Out Of Box Software), ce facilitează instalarea diverselor sisteme de operare
specifice plăcii Raspberry Pi. Pentru pornirea instalării sistemului de operare se inserează
cardul în slotul microSD al plăcii și se pornește sistemul(toate echipamentele trebuie să fie
conectate corect: tastatură, mouse, cablu HDMI). După inițializare, utilitarul NOOBS ne
permite alegerea sistemului de operare pe care dorim să -l instalăm .
În cazul în care placa nu este con ectată la Internet (prin cablu sau prin WiFi), singura
opțiune de instalare va fi sistemul de operare Raspbian, al cărui kit de instalare se află deja
pe cardul de memorie. Toate celelalte sisteme de operare necesită conectivitate Internet
pentru instalare . Conexiunea la Internet s e poate realiza prin conectarea cu un cablu la o
rețea ce oferă setări automate (DHCP) sau configurând accesul WiFi (opțiunea Wifi networks
din partea de sus a ferestrei anterioare). După confirmarea sistemului de operat dorit,
utilitarul NOOBS va instala automat sistemul de operare -acest proces poate dura câteva
zeci de minute.
Dacă nu se dispune de un card microSD cu NOOBS preinstalat, putem utiliza un card
microSD de calitate pe care să copiem utilitarul NOOBS –se downloadează și se
dezarhivează pe cardul microSD. După această operație instalarea decurge ca în cazul
precedent.
O alternativă la utilizarea programului NOOBS este copierea directă a sistemului de
operare pe cardul microSD. Copierea nu se poate face direct, ca în ca zul NOOBS, ci se
realizează prin transferul unui fișier imagine cu ajutorului unui utilitar specializat, de exemplu:
Etcher sau Win32DiskImager. Se downloadează imaginea de sistem de operare dorit
(varianta LITE nu include interfața grafică) și se copiaz ă pe cardul de memorie. După
această operație cardul de memorie va conține sistemul de operare deja instalat, gata de
utilizare. Cardul de memorie se poate introduce în slotul plăcii și se poarte porni sistemul.
După finalizarea procesului de instalare sis temul va reporni și se poate deja incepe
lucrul cu placa Raspberry Pi.

3.5 Utilizarea plăcii Raspberry Pi de la distanță

De multe ori este mai comod sau pur și simplu natura proiectului, cum se prezintă și
cazul de față, impune accesul la distanță pentru utilizarea plăcii Raspberry Pi. Prin acces la
distanță nu se înțelege neapărat faptul că placa se află la mare distanță, ci că nu este
accesată de la o tastatură și un monitor direct conectate. În acest fel putem utiliza placa, fără
a bloca un set de periferice dedicate.
Pentru a putea să ne conectăm la placa Raspberry Pi prin intermediul rețelei este
necesar să cunoaștem adresa IP a acesteia. Dacă alocarea adreselor IP în rețeaua locală
în care se utilizează placa se realizează în mod stat ic, este suficient să ne notăm adresa
alocată după instalarea sistemului de operare, utilizând comanda ifconfig în aplicația
Terminal.
Dacă placa se conectează într -o rețea locală ce alocă dinamic adresele IP, asta
înseamnă că la fiecare repornire este p osibil ca adresa IP să se modifice și nu avem altă
posibilitate decât să ”scanăm” rețeaua, pentru a descoperi ce adresă a fost alocată pentru
placa Raspberry Pi. Scanarea se face cu aplicații specifice, de exemplu: Angry IP Scanner ,
Advanced IP Scanner sau nmap.

PROIECT DE DISERTAȚIE

28
După instalare, aplicația Advanced IP Scanner permite verificarea întregii plaje de
adrese dintr -o rețea locală și raportează ce adrese IP sunt active (sunt alocate) și ce servicii
rulează sistemele de calcul respective .

Figura 3.5. Interfaț a Advanced IP Scanner
Pentru accesul la distanță în linie de comandă se utilizează programul SSH, ce
permite deschiderea unei sesiuni de tip terminal de pe un alt sistem de calcul. Este necesară
instalarea unui client SSH pe sistemul de pe care se va realiza accesul. Cel mai cunoscut
client SSH pentru Windows este Putty, sistemele Linux au clientul SSH instalat implicit .

Figura 3.6 Putty

PROIECT DE DISERTAȚIE

29
Pentru accesul la distanță, beneficiind de interfața grafică pusă la dispoziție de
sistemul de operare, vom utiliza programul VNC. La fel ca și în cazul SSH, este necesară
instalarea pe sistemul de pe care se face acces ul a unui client specific. Unul dintre cei mai
cunoscuți clienți VNC este RealVNC .

Figura 3.7 VNC Viewer

PROIECT DE DISERTAȚIE

30

CAPITOLUL 4

PROIECTAREA SI REALIZAREA SISTEMULUI ALEXA CU
CONTROL VOCAL

Așa după cum a fost precizat în capitolul 1, Alexa suportă dispozitive inteligente doar
de la anumiți producători. Dar ce facem în momentul în care nu se dorește achiziționarea
unor astfel de dispozitive? O soluție ar fi “transformarea” dispozitivele clasice în dispozitive
inteligente cu ajutorul plăcii de dezvoltare Raspberry Pi 3 B+.
Librăria Fauxmo prezentată în ANEXĂ 2 “transformă” pinii GPIO a plăcii de
dezvoltare în dispozitive inteligente Belkin Wemo.
Pentru că acest sistem să funcționeze, avem nevoie de un router cu acces la int ernet,
iar la acest router să fie conectat Amazon Echo împreună cu placă raspberry pi. Conectarea
boxei Amazon Echo la o nouă rețea de internet wireless necesită accesul la aplicația Alexa,
iar cu ajutorul acestei aplicații se va realiza nouă conexiune. Ec ho se conectează la rețelele
dual-band Wi -Fi (2,4 GHz / 5 GHz) care utilizează standardul 802.11a / b / g / n. Echo nu
se conectează la rețele ad -hoc (sau peer -to-peer).
În aplicația Alexa, deschideți panoul de navigare din stânga și apoi selecta ți Setări.

Figura 4.1. Aplicația Alexa – Meniul Setari

PROIECT DE DISERTAȚIE

31
• Selectați dispozitivul și apoi selectați Actualizare Wi -Fi. Dacă adăugați un
dispozitiv nou în contul dvs., selectați În loc să configurați un dispozitiv nou.

Figura 4.2. Aplicația Alexa – Editare setări dispozitiv
• Pe dispozitivul Echo, apăsați și țineți apăsat butonul Acțiune până când inelul de
lumină se schimbă în portocaliu. Dispozitivul dvs. mobil se va conecta apoi la
dispozitivul Echo. În aplicație apare o listă cu rețelele W i-Fi disponibile.

Figura 4.3. Inel portocaliu

PROIECT DE DISERTAȚIE

32
• Selectați rețeaua Wi -Fi și introduceți parola de rețea (dacă este necesar). Dacă
nu vedeți rețeaua Wi -Fi, derulați în jos și selectați Adăugați o rețea (pentru rețele
ascunse) sau Rescanare.
• Selectați Conecta re. După conectarea dispozitivului la rețeaua Wi -Fi, în aplicație
apare un mesaj de confirmare. Acum sunteți gata să utilizați Alexa.

Cu ajutorul aplicației Alexa se pot efectua modificări asupra setărilor boxei Amazon
Echo. În aplicație se poat e introduce adresa (util atunci când ceri informații despre vreme),
cuvântul de “trezire”: se poate modifică din Alexa în Amazon, Echo sau Computer și multe
alte setări.
Următorul pas este conectarea la rețeaua wireless a minicomputerului raspberry pi.
Pentru a realiza acest lucru, așa după cum a fost precizat și în capitolul 3, avem nevoie de
un cablu HDMI, o tastatură, un mouse și un monitor. După ce s -a realizat conexiunea la
internet, conectarea pe minicomputer se poate face și de la di stanță, deci elementele
periferice enumerate mai sus nu mai sunt necesare.

Figura 4.4. Raspberry Pi
Pentru a putea controla diverse dispozitive electrice “neinteligente” cu ajutorul
minicomputerului raspberry pi 3b+, am folosit șase relee alimentate de la o sursă de tensiune
separată de a minicomputerului raspberry pi, de 5v -2000mA. Sursă de tensiune a
minicomputerului este originală, pentru a evita fluctuațiile de tensiune de la o sursă mai puțîn
performanță. Caracteristicile sursei folosi te pentru alimentarea minicomputerului raspberry
pi se regăsesc in capitolul 3, și anume: 5v -2500mA.

PROIECT DE DISERTAȚIE

33

Figura 4.5. Alimentare stand experimental
Odată ce avem acces la o sursă de tensiune de 230V curent alternativ și pornim
siguranțele, standul primește tensiune, iar minicomputerul raspberry pi 3b+ pornește. După
aproximativ două minute, sistemul poate fi folosit fără probleme.

Figura 4.6. Siguranțe stand experimental

PROIECT DE DISERTAȚIE

34
Pentru ca asistentul virtual prin boxa Amazon Echo să poată recunoaște cele șase
relee, pe minicomputerul raspberry pi este necesar ca în permanentă să ruleze programul
scris cu ajutorul limbajului de programare python prezentat în anex a 1.

Figura 4.7. Program ul rulând pe minicomputer
Acum, în cazul în care întâmpinăm o cădere de tensiune, la revenirea tensiunii nu mai
este nevoie de pornirea manuală a programului pe minicomputerul raspberry pi, deoarece
programul pornește odată cu bootarea sistemului. Setarea a fost făcută cu următoarele
comenzi din terminal :

sudo nano /etc/rc.local
sudo python /home/pi/sample.py &
sudo reboot

Setările boxei Amazon Echo în cazul unei căderi de tensiune nu au de suferit, ele fiind
reținute și putând fi modificate în aplicația mobilă Alexa.

PROIECT DE DISERTAȚIE

35

Figura 4.8. Standul experimental
În Figura 4.8 poate fi observat standul experimental, el putând fi controlat vocal cu
ajutorul boxei Amazon Echo în raz a conexiunii wireless.

Figura 4.9. Standul experimental

Așa după cum am precizat în capitolul 1, Amazon Alexa recunoaște și controlează
dispozitivele “smart” doar de la anumiți producători. În cazul nostru, cu ajutorul
minicomputerului raspberry pi, cele șase dispozitive ce pot fi observate în figura 5.6 sunt
recunoscute că fiind prize in teligente Belkin Wemo. C a modalitate de control, aceste
dispozitive pot fi pornite sau oprite. Statusul de pornit/oprit se poate vizualiza și cu ajutorul
aplicației Alexa.

PROIECT DE DISERTAȚIE

36
Pentru ca un dispozitiv inteligent nou să poată fi controlat vo cal cu ajutorul boxei
Amazon Echo și a asistentului virtual Amazon Alexa, trebuie “descoperit” prima dată de
asistentul virtual. Pentru al putea descoperi, se va efectua o scanare a noilor dispozitive cu
ajutorul comenzii vocale: “Alexa, discover my device s, please!”. Procesul de scanare va
începe imediat, și durează maxim două minute. În acest timp, pe inelul boxei Amazon Echo
apare culoarea albastră, mișcându -se circular de la dreapta la stânga .

Figura 4.10. Amazon Echo, procesul de scanare
În cazul în care se găsește un nou dispozitiv, el automat va fi adăugat în aplicație
pentru a putea fi controlat .

Figura 4.11. Aplicația Alexa, după scanare

PROIECT DE DISERTAȚIE

37

Figura 4.12. Aplicația Alexa, dispozitive cunoscute

Se poate observ a în figura 4.12 dispozitivele cunoscute deja, dispozitive ce pot fi
controlate și prin aplicație, prin schimbarea stării lor din on în off sau din off în on. De
asemenea, starea lor este vizibilă și în aplicație.

PROIECT DE DISERTAȚIE

38

Figura 4.13. Aplicația Alexa, off

Figura 4.14. Aplica ția Alexa, on

PROIECT DE DISERTAȚIE

39
După cum se poate observ a și în figurile 4.13 și 4.14, aplicația permite crearea unei
rutine. Un exemplu de rutină poate fi observat în figura 4.15, rutină care se va activ a când
se rostește: “Alexa, turn on disco mode”.

Figura 4.15. Aplica ția Alexa, editare rutină

PROIECT DE DISERTAȚIE

40

Pentru a defini un întrerupător virtual, s -a folosit :

SETUP_XML ="""<?xml version=1.0?>
<root>
<device>
<deviceType>urn:Belkin:device:controllee:1</deviceType>
<friendlyName>%(device_name)s</friendlyName>
<manufacturer>Belkin International Inc.</manufacturer>
<modelName>Socket</modelName>
<modelNumber>3.1415</modelNumber>
<modelDescription>Belkin Plugin Socket
1.0</modelDescription> \r\n
<UDN>uuid:Socket -1_0-%(device_serial)s</UDN>
<serialNumber>221517K0101769</serialNumber>
<binaryState>0</binaryState>
<serviceList>
<service>

<serviceType>urn:Belkin:service:basicevent:1</serviceType>
<serviceId>urn:Belkin:serviceId:basicevent1</serviceId>
<controlURL>/upnp/control/basicevent1</controlURL>
<eventSubURL>/upnp/event/basicevent1</eventSubURL>
<SCPDURL>/eventservice.xml</SCPDURL>
</service>
</serviceLi st>
</device>
</root>"""

PROIECT DE DISERTAȚIE

41

CAPITOLUL 5

CONCLUZII

Folosirea un ui minicomputer Raspberry Pi ȋmpreună cu boxa Alexa Echo 2nd
generation pentru controlul vocal al dispozitivelor electrice din interiorul unei locuințe,
constituie o alegere eficientă și ieftină luând ȋn considerare avantajele utilizării acestui
sistem, având multiple posibilități de monitorizare și control.
Montajul se poate utiliza atât în locuințele personale, cât și pe scara industrială în
interiorul întreprinderilor, pe linii de asamblare. Acestui sistem ȋi pot fi adăugate ṣi alte
dispozitive electrice pentru a putea fi controlate, chiar dacă aceste d ispozitive nu sunt de
tip “smart device”.
Marele avantaj pe care îl prezintă acest sistem este costul redus la înlocuirea unui
dispozitiv(bec, spre exemplu) atunci când acesta s -a ars. Înlocuirea unui dispozitiv
inteligent este mult mai costisit oare decât înlocuirea unui dispozitiv electric “clasic”.

PROIECT DE DISERTAȚIE

42

ANEXE

ANEXA 1. Programul principal

import fauxmo
import logging
import time
import sys
import RPi.GPIO as GPIO ## Import GPIO library

from debounce_handler import debounce_handler

logging.basicConfig(level=logging.DEBUG)

class device_handler(debounce_handler):
"""Publishes the on/off state requested,
and the IP address of the Echo making the request.
"""
TRIGGERS = {"light two":57111,"red led": 52000,"living room":51000, "my
devices":53000, "disco light":54000, "yellow led":55000, "light one":56000}

def act(self, client_address, state, name):
print("State", state, "from client @", client_address)
# GPIO.setmode(GPIO.BOARD) ## Use board pin numbering
# GPIO.setup(int(7), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
# GPIO.output(int(7), state) ## State is true/false
if name=="red led":
GPIO.setmode(GPIO.BOARD) ## Use board pin numbering
GPIO.setup(int(7), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(7), state) ## State is true/false
if name=="yellow led":
GPIO.setmode(GPIO.BOARD) ## Use board pin numbering
GPIO.setup(int(15), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(15), state) ## State is true/false

elif name =="living room":
GPIO.setmode(GPIO.BOARD) ## Use board pin numbering
GPIO.setup(int(11), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(11), state) ## State is true/false
elif name =="light one":
GPIO.setmod e(GPIO.BOARD) ## Use board pin numbering
GPIO.setup(int(29), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(29), state)
elif name =="light two":
GPIO.setmode(GPIO.BOARD) ## Use board pin numbering
GPIO.setup(int(33), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(33), state)
elif name =="disco light":

PROIECT DE DISERTAȚIE

43
GPIO.setmode(GPIO.BOARD) ## Use board pin numbering
GPIO.setup(int(13), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(13), state) ## State is true/false
elif name =="my devices":
GPIO.setmod e(GPIO.BOARD) ## Use board pin numbering
GPIO.setup(int(11), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(11), state) ## State is true/false
GPIO.setup(int(7), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(7), state) ## State is true/false
GPIO.setup(int(13), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(13), state) ## State is true/false
GPIO.setup(int(15), GPIO.OUT) ## Setup GPIO Pin to OUT PUT
GPIO.output(int(15), state) ## State is true/false
GPIO.setup(int(29), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(29), state)
GPIO.setup(int(33), GPIO.OUT) ## Setup GPIO Pin to OUTPUT
GPIO.output(int(33), state)
else:
print("Device not found!")

return True

if __name__ == "__main__":
# Startup the fauxmo server
fauxmo.DEBUG = True
p = fauxmo.poller()
u = fauxmo.upnp_broadcast_responder()
u.init_socket()
p.add(u)

# Register the device callback as a fauxmo handler
d = device_handler()
for trig, port in d.TRIGGERS.items():
fauxmo.fauxmo(trig, u, p, None, port, d)

# Loop and poll for incoming Echo requests
logging.debug("Entering fauxmo polling loop")
while True:
try:
# Allow time for a ctrl -c to stop the process
p.poll(100)
time.sleep(0.1)
except Exception a s e:
logging.critical("Critical exception: "+ e.args )
break

ANEXA 2. Fauxmo

import email.utils
import requests
import select
import socket
import struct

PROIECT DE DISERTAȚIE

44
import sys
import time
import urllib
import uuid
import logging

# This XML is the minimum needed to define one of our virtual switches
# to the Amazon Echo

SETUP_XML ="""<?xml version=1.0?>
<root>
<device>
<deviceType>urn:Belkin:device:controllee:1</deviceType>
<friendlyName>%(device_name)s</friendlyName>
<manufacturer>Belkin International Inc.</manufacturer>
<modelName>Socket</modelName>
<modelNumber>3.1415</modelNumber>
<modelDescription>Belkin Plugin Soc ket
1.0</modelDescription> \r\n
<UDN>uuid:Socket -1_0-%(device_serial)s</UDN>
<serialNumber>221517K0101769</serialNumber>
<binaryState>0</binaryState>
<serviceList>
<service>

<serviceType>urn:Belkin:service:basicevent:1</serviceType>
<serviceId>urn:Belkin:serviceId:basicevent1</serviceId>
<controlURL>/upnp/control/basicevent1</controlU RL>
<eventSubURL>/upnp/event/basicevent1</eventSubURL>
<SCPDURL>/eventservice.xml</SCPDURL>
</service>
</serviceList>
</device>
</root>"""

def dbg(msg):
logging.debug(msg)

# A simple utility class to wait for incoming data to be
# ready on a socket.

class poller:
def __init__(self):
self.poller = select.poll()
self.targets = {}

def add(self, target, fileno = None):
if not fileno:
fileno = target.fileno()
self.poller.register(fileno, select.POLLIN)
self.targets[fileno] = target

def remove(self, target, fileno = None):
if not fileno:

PROIECT DE DISERTAȚIE

45
fileno = target.fileno()
self.poller.unregister(fileno)
del(self.targets[fileno])

def poll(self, timeout = 0):
ready = self.poller.poll(timeout)
num = len(ready)
for one_ready in ready:
target = self.targets.get(one_ready[0], None)
if target:
target.do_read(one_ready[0])
return num

# Base class for a generic UPnP device. This is far from complete
# but it supports either specified or automatic IP addre ss and port
# selection.

class upnp_device(object):
this_host_ip = None

@staticmethod
def local_ip_address():
if not upnp_device.this_host_ip:
temp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
temp_socket.connect(('8.8.8.8', 53))
upnp_device.this_host_ip = temp_socket.getsockname()[0]
except:
upnp_device.this_host_ip = '127.0.0.1'
del(temp_socket)
dbg("got local address of %s" % upnp_device.this_host_ip)
return upnp_device.this_host_ip

def __init__(self, listener, poller, port, root_url, server_version,
persistent_uuid, other_headers = None, ip_address = None):
self.listener = listener
self.poller = poller
self.port = port
self.root_url = root_url
self.server_version = server_version
self.persistent_uuid = persistent_uuid
self.uuid = uuid.uuid4()
self.other_headers = other_headers

if ip_address:
self.ip_address = ip_address
else:
self.ip_address = upnp_device.local_ip_address()

self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind((self.ip_address, self.port))
self.socket.listen(5)
if self.port == 0:

PROIECT DE DISERTAȚIE

46
self.port = self.socket.getsockname()[1]
self.poll er.add(self)
self.client_sockets = {}
self.listener.add_device(self)

def fileno(self):
return self.socket.fileno()

def do_read(self, fileno):
if fileno == self.socket.fileno():
(client_socket, client_ad dress) = self.socket.accept()
self.poller.add(self, client_socket.fileno())
self.client_sockets[client_socket.fileno()] = (client_socket,
client_address)
else:
data, sender = self.client_sockets[fileno][0].recvfr om(4096)
if not data:
self.poller.remove(self, fileno)
del(self.client_sockets[fileno])
else:
self.handle_request(data, sender,
self.client_sockets[fileno][0], self.client_sockets[file no][1])

def handle_request(self, data, sender, socket, client_address):
pass

def get_name(self):
return "unknown"

def respond_to_search(self, destination, search_target):
dbg("Responding to search for %s" % self.get_name())
date_str = email.utils.formatdate(timeval=None, localtime=False,
usegmt=True)
location_url = self.root_url % {'ip_address' : self.ip_address, 'port' :
self.port}
message = ("HTTP/1.1 200 OK \r\n"
"CACHE-CONTROL: max -age=86400 \r\n"
"DATE: %s \r\n"
"EXT:\r\n"
"LOCATION: %s \r\n"
"OPT: \"http://schemas.upnp.org/upnp/1/0/ \"; ns=01 \r\n"
"01-NLS: %s\r\n"
"SERVER: %s \r\n"
"ST: %s\r\n"
"USN: uuid:%s::%s \r\n" % (date_str , location_url, self.uuid,
self.server_version, search_target, self.persistent_uuid, search_target))
if self.other_headers:
for header in self.other_headers:
message += "%s \r\n" % header
message += " \r\n"
temp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
temp_socket.sendto(bytes(message, 'UTF -8'), destination)
#print("Responding to search –>" + message )

# This subclass does the bulk of the work to mimic a WeMo switch on the network.

PROIECT DE DISERTAȚIE

47
class fauxmo(upnp_device):
@staticmethod
def make_uuid(name):
return ''.join(["%x" % sum([ord(c) for c in name])] + ["%x" % ord(c) for
c in "%sfauxmo!" % name])[:14]

def __init__(self, name, listener, poller, ip _address, port, action_handler
= None):
self.serial = self.make_uuid(name)
self.name = name
self.switchStatus=0
self.ip_address = ip_address
persistent_uuid = "Socket -1_0-" + self.serial
other_headers = ['X -User-Agent: redsonic']
upnp_device.__init__(self, listener, poller, port,
"http://%(ip_address)s:%(port)s/setup.xml", "Unspecified, UPnP/1.0,
Unspecified", persistent_uuid, other_headers=other_headers,
ip_address=ip_address)
if action_handle r:
self.action_handler = action_handler
else:
self.action_handler = self
dbg("FauxMo device '%s' ready on %s:%s" % (self.name, self.ip_address,
self.port))

def get_name(self):
return self.name

def handle_request(self, data, sender, socket, client_address):
print("################################## handle_reques
#######################")
print(data)
print("################################## handle_reques
#######################")
data = data.decode('utf -8')
success = False

if data.find('GET /setup.xml HTTP/1.1') == 0:
dbg("Responding to setup.xml for %s" % self.name)
xml = SETUP_XML % {'device_name' : self.name, 'device_serial' :
self.serial}
date_str = email.utils.formatdate(timev al=None, localtime=False,
usegmt=True)
message = ("HTTP/1.1 200 OK \r\n"
"CONTENT -LENGTH: %d \r\n"
"CONTENT -TYPE: text/xml \r\n"
"DATE: %s \r\n"
"LAST-MODIFIED: Sat, 01 Jan 2000 00:01:15 GMT \r\n"
"SERVER: Unspecified, UPnP/1.0, Unspecified \r\n"
"X-User-Agent: redsonic \r\n"
"CONNECTION: close \r\n"
"\r\n"
"%s" % (len(xml), date_str, xml))
socket.send(bytes(message, 'UTF -8'))
#print("responsed to setup –>" + message)

PROIECT DE DISERTAȚIE

48
elif data.find('SOAPACTION:
"urn:Belkin:service:basicevent:1#SetBinaryState"') != -1:
#elif data.find('urn:Belkin:service:basicevent:1') != -1:
#elif data.find("SetBinaryState") != -1:

if data.find('SetBinaryState') != -1:
if data.find('<BinaryState>1</BinaryState>') != -1:
# on
dbg("Responding to ON for %s" % self.name)
success = self.action_handler.on(client_address[0],
self.name)
self.switchStatus=1
elif data.find('<BinaryState>0</BinaryState>') != -1:
# off
dbg("Responding to OFF for %s" % self.name)
success = self.action_handler.off(client_address[0],
self.name)
self.switchStatus=0
else:
dbg("Unknown Binary State request:")
dbg(data)

if success:
# The echo is happy wit h the 200 status code and doesn't
# appear to care about the SOAP response body
#dbg("Unknown Binary State request:")
soap = ""
date_str = email.utils.formatdate(timeval=None, localtime=False,
usegmt=True)
message = ("HTTP/1.1 200 OK \r\n"
"CONTENT -LENGTH: %d \r\n"
"CONTENT -TYPE: text/xml charset= \"utf-8\"\r\n"
"DATE: %s \r\n"
"EXT:\r\n"
"SERVER: Unspecified, UPnP/1.0, Unspecified \r\n"
"X-User-Agent: redsonic \r\n"
"CONNECTION: close \r\n"
"\r\n"
"%s" % (len(soap), date_str, soap))
socket.send(bytes(message, 'UTF -8'))

elif data.find('GetBinaryState '):
#if data.find('<BinaryState>1</BinaryState>') != -1:
# switch_sate="1"
#else:
# switch_sate="0"
soap = """<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetBinaryStateResponse
xmlns:u="urn:Belkin:service:basicevent:1">
<BinaryState>"""+ str(self.switchStatus) +"""</BinaryStat e>
</u:GetBinaryStateResponse>
</s:Body></s:Envelope>"""

PROIECT DE DISERTAȚIE

49

date_str = email.utils.formatdate(timeval=None, localtime=False,
usegmt=True)
message = ("HTTP/1.1 200 OK \r\n"
"CONTENT -LENGTH: %d \r\n"
"CONTENT -TYPE: text/xml charset= \"utf-8\"\r\n"
"DATE: %s \r\n"
"EXT:\r\n"
"SERVER: Unspecified, UPnP/1.0, Unspecified \r\n"
"X-User-Agent: redsonic \r\n"
"CONNECTION: close \r\n"
"\r\n"
"%s" % (len(soap), date_str, soap))
socket.send(bytes(message, 'UTF -8'))
print("################################## response
#######################")
print(data)

else:
dbg(data)

def on(self):
return False

def off(self):
return True

# Since we have a single process managing several virtual UPnP devices,
# we only need a single listener for UPnP broadcasts. When a matching
# search is received, it causes each device instanc e to respond.
#
# Note that this is currently hard -coded to recognize only the search
# from the Amazon Echo for WeMo devices. In particular, it does not
# support the more common root device general search. The Echo
# doesn't search for root devices.

class upnp_broadcast_responder(object):
TIMEOUT = 0

def __init__(self):
self.devices = []

def init_socket(self):
ok = True
self.ip = '239.255.255.250'
self.port = 1900
try:
#This is needed to join a multicast group
self.mreq =
struct.pack("4sl",socket.inet_aton(self.ip),socket.INADDR_ANY)

#Set up server socket
self.ssock =
socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.I PPROTO_UDP)
self.ssock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

PROIECT DE DISERTAȚIE

50

try:
self.ssock.bind(('',self.port))
except Exception:
dbg("WARNING: Failed to bind %s:%d: %s" , (self.ip,self.p ort))
ok = False

try:

self.ssock.setsockopt(socket.IPPROTO_IP,socket.IP_ADD_MEMBERSHIP,self.mreq)
except Exception:
dbg('WARNING: Failed to join multicast group:')
ok = False

except Exception:
dbg("Failed to initialize UPnP sockets:")
return False
if ok:
dbg("Listening for UPnP broadcasts")

def fileno(self):
return self.ssock.fileno()

def do_read(self, fileno):
data, sender = self.recvfrom(1024)
data = data.decode('utf -8')
if data:
#if data.find('M -SEARCH') == 0 and data.find('urn:Belkin:device:**')
!= -1:
if data.find('M -SEARCH') >= 0 and data.find('urn:Belkin:device:**')
>0 or data.find('n:Belkin:device:**') >0 or data.find('upnp:rootdevice') >0:
for device in self.devices:
time.sleep(0.5)
device.respond_to_search(sender, 'urn:Belkin:device:**')
else:
pass

#Receive network data
def recvfrom(self,size):
if self.TIMEOUT:
self.ssock.setblocking(0)
ready = select.select([self.ssock], [], [], self.TIMEOUT)[0]
else:
self.ssock.setblocking(1)
ready = True

try:
if ready:
return self.ssock.recvfrom(size)
else:
return False, False
except Exception:
print('error')
return False, False

def add_device(self, device):

PROIECT DE DISERTAȚIE

51
self.devices.append(device)
dbg("UPnP broadcast listener: new device registered")

class dummy_handler(object):
def __init__(self, name):
self.name = name

def on(self):
print(self.name, "ON")
return True

def off(self):
print(self.name, "OFF")
return True

class rest_api_handler(object):
def __init__(self, on_cmd, off_cmd):
self.on_cmd = on_cmd
self.off_cmd = off_cmd

def on(self):
r = requests.get(self.on_cmd)
return r.status_code == 200

def off(self):
r = requests.get(self.off_cmd)
return r.status_code == 200

if __name__ == "__main__":
FAUXMOS = [
['office lights', dummy_handler("officelight")],
['kitchen lights', dummy_handler("kitchenlight")],
]

if len(sys.argv) > 1 and sys.argv[1] == ' -d':
DEBUG = True

# Set up our singleton for polling the sockets for data ready
p = poller()

# Set up our singleton listener for UPnP broadcasts
u = upnp_broadcast_responder()
u.init_socket()

# Add the UPnP broadcast listener to the poller so we can respond
# when a broadcast is received.
p.add(u)

# Create our FauxMo virtual switch devices
for one_faux in FAUXMOS:
switch = fauxmo(one_faux[0], u, p, None, 0, action_handler = one_faux[1])

dbg("Entering main loop \n")

PROIECT DE DISERTAȚIE

52

while True:
try:
# Allow time for a ctrl -c to stop the process
p.poll(100)
time.sleep(0.1)
except Exception:
print('error1')
break

HD-4 9-S T U D , „ 4 9 d e a n i d e î n v ă ț ă m â n t s u p e r i o r h u n e d o r e a n ”

SISTEM DE CONTROL VO CAL AL DISPOZITIVELO R
ELECTRICE

AUTOR : ING. ZAHARIA SERGIU – DANIEL
COORDONATOR : CONF.DR.ING. GABRIEL NICOLAE POPA, SENIOR MEMBER IEEE

AFILIERE AUTOR : UNIVERSITATEA POLITEHNICA TIMIȘOAR A,
FACULTATEA DE INGINERIE HUNEDOARA
AFILIER E COORDONATOR : UNIVERSITATEA POLITE HNICA TIMIȘOARA,
FACULTATEA DE INGINE RIE HUNEDOARA

REZUMAT
Articolul prezint ӑ experimentarea unui sistem de comand ӑ ṣi control al dispozitivelor electrice din
interiorul unei locuin ṭe. Controlul se realizeaz ӑ vocal, c u ajutorul boxei Alexa Amazon Echo – asistent personal.
Dispozitivele pe care le vom controla cu ajutorul acestui sistem nu sunt de tip “SMART DEVICE” care s ӑ ofere
aceast ӑ funcṭie, aṣadar se va folosi ṣi o plac ӑ de dezvoltare Raspberry PI 3B+.

CUVINTE CH EIE: control vocal , raspberry pi, alexa .

1. INTRODUCERE

O casă inteligentă (smart home) este locuin ța în care se automatizează și se
controlează de la distan ță aspecte ce țin de confortul ambiental și nu numai. Unele
echipamente pot lua decizii în func ție de anumi ți parametri, pentru a crește confortul
locatarilor sau pentru a economisi energie. Pot, de exemplu, să schimbe lumina ambientală în
funcție de momentul zilei, pot să pregătească ceașca de cafea la o oră presetată, pot să descuie
și să încuie ușile când plecăm și când ajungem acasă, să aprindă lumina, să pornească sistemul
de încălzire sau de răcire, dar și să tragă draperiile. Astfel de acțiuni sunt gestionate de un
controller ce poate fi programat și controlat de la distanță.
În viitor, se estimea ză că sistemele inteligente care coordonează o casă inteligentă vor
comunica cu proprietarii, le vor anticipa și satisface nevoile. Un exemplu care deja este folosit
este comandarea de alimente sau adăugarea lor pe lista de cumpărături când frigiderul
inteligent comunică faptul c ă nu mai este un anumit aliment [2].
Internet of Things (IoT) este conceptul de la baza caselor smart. El presupune folosirea
Internetului pentru a conecta mai multe dispozitive și sisteme care vor forma o rețea de
obiecte, lucru ca re deja se întâmplă. Discutăm, a șadar, de o realitate palpabilă și nu despre
sisteme pe care le -am putea vedea doar în filmele Science Fiction, și, dincolo de comoditate
sau economie de timp, aceste sisteme sunt și mai prietenoase cu mediul înconjurător .
Primul aspect ce ține de confortul nostru și pe care am reușit să -l controlăm de la
distan ță este iluminarea casei. Stingerea și aprinderea luminii la o simplă bătaie din palme este
posibilă încă din 1985, odată cu apari ția sistemului Clapper și cu toții a m văzut în diverse
filme sau serii animate un personaj stingând lumina în acest fel. Astăzi pare un sistem
53

HD-4 9-S T U D , „ 4 9 d e a n i d e î n v ă ț ă m â n t s u p e r i o r h u n e d o r e a n ” rudimentar, însă el poate fi privit ca un prim mod de a ne conecta iluminarea la propriile
gesturi, un adevărat precursor al sistemelor ce nu ne obli gă să ne mai dăm jos din pat când
vrem să stingem lumina. Sistemele de iluminat inteligente fac în prezent mult mai mult de
atât. Un asemenea sistem este Philips HUE, care conectează, prin bluetooth sau wireless, toate
corpurile de iluminat și becurile din casă la o aplica ție pe telefon. Prin această aplicație se
poate porni sau opri lumina în casă, mic șora sau crește intensitatea luminii și poate chiar
schimba culorile și nuanțele de lumina din casă, de la distanță. Becurile HUE se instalează la
corpurile de iluminat (lustrele, lămpile, lampadarele) existente în casă. Aplica ția HUE este
centrul de comandă al luminilor din casă și permite controlul luminii din fiecare cameră
[1,10].

2. ELEMENTE COMPONENTE

a) Boxa AMAZON ALEXA Echo 2nd generation

Asisten ții vo cali integra ți în boxe inteligente precum Echo Dot sau Home Mini au fost
vedetele cumpărăturilor de sărbători, arată date preliminare pe 2018. Tehnologia vocală a
decolat în for ță și a devenit o afacere de miliarde, la nivel global, în special pentru și ma rii
rivali din tehnologie, Amazon și Google [3].
Un asistent vocal (AV) poate fi descris ca un personaj generat de calculator, care
simulează o conversa ție pentru a furniza unui utilizator informații – vocal sau sub formă de
text – printr -o interfa ță acces abilă de pe un dispozitiv. Un asistent vocal presupune abilita ți de
procesare în limbaj natural, controlul dialogului, cunoa șterea domeniului și un aspect vizual
(cum ar fi fotografii sau anima ție) care se modifică în funcție de conținutul și contextul
dialogului. Asistentul vocal executa o comanda/rutina atunci c ând ”aude” o comandă standard
și, de pildă, poate căuta și sintetiza de pe internet tot felul de informații: despre vreme, trafic,
artiști sau personaje din lumea politică. Poate accesa și rula lib rării muzicale și video, poate
căuta rezultate sportive, re țete sau chiar informații economice disponibile pe web.
Pentru consumatori, prima întâlnire cu un asistent vocal integrat într -un dispozitiv –
sau gadget – a fost cu SIRI, pe Iphone, în 2011. Alexa , dezvoltat de Amazon, a fost lansat
public la finalul lui 2014. Au urmat Google Assistant, Cortana, replicile marilor rivali din
tehnologie, Google, respectiv Microsoft și, mai recent, Bixby de la Samsung.

54

HD-4 9-S T U D , „ 4 9 d e a n i d e î n v ă ț ă m â n t s u p e r i o r h u n e d o r e a n ”

Fig. 1. Boxa Alexa 2nd generation

Boxa Alexa este un dispozitiv pe care ȋl controlezi cu vocea ta. Acest dispozitiv se
conecteaz ӑ la serviciile de voce ALEXA pentru a reda muzi cӑ, a efectua apeluri, a primi ṣi
trimite mesaje, a oferi informa ṭii, ṣtiri, starea vremii ṣi multe altele instant. Tot ceea ce trebuie
sӑ facӑ utilizatorul, este s ӑ ȋntrebe. Are 7 microfoane incorporate pentru a putea auzi
utilizatorul din orice loc al ȋncӑperii, ch iar ṣi atunci c ând red ӑ muzic ӑ. Atunci c ând se dore ṣte
a se utiliza boxa, cuv ântul de „trezire” este „Alexa”, iar boxa va r ӑspunde instant. Difuzoarele
sunt puternice, sunetul fiind redat la 360 °, cu vocale clare ṣi un r ӑspuns dinamic al
basului [11].

b) Raspberry PI 3B+

Raspberry Pi este o placă de dezvoltare de tip SBC (Single Board Computer) – un
sistem de calcul nemodular implementat pe un singur cablaj electronic. Chiar dacă are
dimensiuni reduse (85mm x 56mm), Raspberry Pi este un calculator complet p ermițând
funcționalități obișnuite precum rularea unui sistem de operare (Linux sau Windows) și
rularea de aplica ții utilizator (jocuri, editoare de text, medii de programare, redarea de muzică
și filme, aplicații de teleconferință, aplicații Internet). Di feren țele între o placă Raspberry Pi și
un calculator personal (PC) sau laptop constau atât în dimensiunea redusă a plăcii cât și în
puterea mai mică de calcul a acesteia – nu are acelea și performanțe de calcul precum un PC
desktop care are un cost și o di mensiune de câteva ori mai mari. Putem compara placa
Raspberry Pi cu o tabletă sau cu un sistem de tip NetBook dar fără a dispune de ecran și
tastatură. În plus, placa Raspberry Pi oferă posibilitatea de a conecta diverse componente
electronice specifice sistemelor embedded: senzori, butoane, ecrane LCD sau pe 7 segmente,
drivere de motoare, relee etc. Posibilitatea de a personaliza sistemele de programe (sistemul
de operare, aplica țiile) și posibilitatea de interconectare cu alte componente electronice fac din
placa Raspberry Pi un sistem de calcul ce poate sta la baza unor proiecte personale extrem de
55

HD-4 9-S T U D , „ 4 9 d e a n i d e î n v ă ț ă m â n t s u p e r i o r h u n e d o r e a n ” interesante și de puternice – un calculator ce poate fi integrat în sisteme electronice și
mecanice proiec tate și realizate de utilizator [4,5].

Fig. 2. Raspberry PI 3B+

În ciuda dimensiunii reduse placa Raspbe rry Pi 3 dispune de periferice integrate
numeroase acoperind complet func ționalitatea unui sistem de calcul (audio, video, porturi
USB, conectivitate de re țea):
 Procesor SoC pe 64 de bi ți din familia ARMv8 -A, Broadcom BCM2837, ce
lucrează la o frecven ță de 1.2GHz și dispune de 4 nuclee de tip ARM Cortex -A53;
 1GB de memorie RAM (folosită și ca memorie video, partajată cu procesorul
grafic);
 Procesor grafic Broadcoam VideoCore IV 3D integrat pe aceea și pastilă de siliciu
ca și procesorul principal;
 Ieșire di gitală video / audio HDMI;
 Ieșire analogică video (composite video) / audio mixtă prin intermediul unei mufe
jack 3.5mm;
 Mufă de re țea RJ45 Ethernet 10/100 Mbit/s;
 Conectivitate WiFi 802.11n;
 Conectivitate Bluetooth 4.1 / BLE;
 4 porturi USB 2.0;
 40 de pini de intrare / ie șire (GPIO);
 Slot card de memorie microSD (utilizat pentru instalarea sistemului de operare);
 Conectori dedica ți pentru cam eră video (CSI) și afișaj (DSI) [6].

c) Limbajul Python

Python este un limbaj de programare dinamic multi -paradigmă, c reat în 1989 de
programatorul olandez Guido van Rossum. Van Rossum este și în ziua de astăzi un lider al
comunită ții de dezvoltatori de software care lucrează la perfecționarea limbajul Python și
implementarea de bază a acestuia, CPython, scrisă în C. Pyth on este un limbaj multifunc țional
56

HD-4 9-S T U D , „ 4 9 d e a n i d e î n v ă ț ă m â n t s u p e r i o r h u n e d o r e a n ” folosit de exemplu de către companii ca Google sau Yahoo! pentru programarea aplica țiilor
web, însă există și o serie de aplicații științifice sau de divertisment programate parțial sau în
întregime în Python. Popularitate a în cre ștere, dar și puterea limbajului de programare Python
au dus la adoptarea sa ca limbaj principal de dezvoltare de către programatori specializa ți și
chiar și la predarea limbajului în unele medii universitare. Din aceleași motive, multe sisteme
bazate pe Unix, inclusiv Linux, BSD și Mac OS X includ di n start interpretatorul CPython
[9].
Python pune accentul pe cură țenia și simplitatea codului, iar sintaxa sa le permite
dezvoltatorilor să exprime unele idei programatice într -o manieră mai clară și ma i concisă
decât în alte limbaje de programare ca C. În ceea ce prive ște paradigma de programare,
Python poate servi ca limbaj pentru software de tipul object -oriented, dar permite și
programarea imperativă, func țională sau procedurală. Sistemul de tipizare este dinamic iar
administrarea memoriei decurge automat prin intermediul unui serviciu „gunoier” (garbage
collector). Alt avantaj al limbajului este existen ța unei ampl e biblioteci standard de metode
[7,8] .

Fig. 3. Logo Python

Implementarea de referi nță a Python este scrisă în C și poartă deci numele de
CPython. Această implementare este software liber și este administrată de fundația Python
Software Foundation.

3. EXPERIMENTARI

La experimentări s -a utilizat placa de dezvoltare Raspberry PI 3B+ fiind c onectată la o
sursă de alimentare extern ă de 5 V, 2500 mA. Placa de dezvoltare a fost conectat ă wireless la
o reṭea local ă ȋmpreun ă cu boxa Alexa.

57

HD-4 9-S T U D , „ 4 9 d e a n i d e î n v ă ț ă m â n t s u p e r i o r h u n e d o r e a n ”

Fig. 4. Aspect de la realizarea experimentărilor

Pe placa de dezvoltare ruleaz ă ȋn permanen ṭă un progra m scris cu ajutorul limbajului
de programare Python, program care ajut ă RPi-ul să fie recunoscut ca un dispozitiv Belkin
WeMo ṣi astfel s ă se realizeze controlul pinilor GPIO. Odat ă configurat programul pentru c âṭi
pini GPIO s ă se realizeze controlul ṣi pornită rularea lui, cu ajutorul comenzii vocale „Alexa,
discover my devices, please!” , asistentul virtual va ȋncepe recunoa ṣterea noilor dispozitive.
Acest proces de recunoa ṣtere a dispozitivelor dureaz ă până la 3 minute. Odat ă ȋncheiat
procesul de i dentifi care a noilor dispozitive, Alexa va ȋncepe enumerarea dispozitivelor g ăsite.
Din acest punct, se poate efectua controlul pinilor GPIO a pl ăcii de dezvoltare RPi 3B+ cu
ajutorul comenzii vocale „Alexa, turn on the light in my kitchen” (un exemplu).
Ȋn cadru l experiment ărilor au fost controlate concomitent p ână la 16 dispozitive
electrice conectate la re ṭeaua de energie electric ă cu tensiunea de 230V folosind relee
comandate de optocuplo are.

4. CONCLUZII

Folosirea unei placu țe de dezvoltare Raspberry Pi ȋmpreună cu boxa Alexa Echo 2nd
generation pentru controlul vocal al dispozitivelor electrice din interiorul unei locuin țe,
constituie o alegere eficientă și ieftină luând ȋn considerare avantajele utiliz ării acestui sistem ,
având multiple posibilită ți de mon itorizare și contro l.
58

HD-4 9-S T U D , „ 4 9 d e a n i d e î n v ă ț ă m â n t s u p e r i o r h u n e d o r e a n ” Montajul se poate utiliza atât în locuin țele personale , cât și pe scara industrială în
interiorul întreprinderilor, pe linii de asamblar e. Acestui sistem ȋi pot fi ad ăugate ṣi alte
dispozitive electrice pentru a putea fi controlate, c hiar dac ă aceste dispozitive nu sunt de tip
“smart device ”.

5. BIBLIOGRAFIE

[1] [1] CJ Andersen -Amazon Alexa: The Complete User Manual – Tips, Tricks & Skills for Every Amazon
Alexa Device, 2019, pag. 20 -25
[2] [2] James Ryan – Alexa: 1200 Best Things To Ask Alexa – The Top Alexa Questions You Wish You Knew,
2017, pag. 44 -48
[3] [3] Echomeister – The BIG Book of Alexa Commands: An Independent Guide for Alexa and Amazon Echo
Dot. 2000 Fun and Useful Commands to mak e Amazon Alexa do what YOU want, November 27, 2016 , pag .
59-73
[4] [4] Dr. Steven Lawrence Fernandes – Raspberry Pi 3 Cookbook for Python Programmers: Unleash the
potential of Raspberry Pi 3 with over 100 recipes, 3rd Edition , 2018, pag. 124 -130.
[5] [5] Derek Molloy – Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux , 2016, pag.
21-44
[6] [6] Sean McManus – Raspberry Pi For Dummies , 2017, pag. 107 -144.
[7] [7] Warren Gay – Advanced Raspberry Pi: Raspbian Linux and GPIO Integration , pag. 153 -157.
[8] [8] Eric Matthes – Python Crash Course: A Hands -On, Pro ject-Based Introduction to Programming , 2015,
pag. 90 -94
[9] [9] Al Sweigart – Automate the Boring Stuff with Python: Practical Programming for Total Beginners , 2015,
pag. 183 -184.
[10] [10]http://www.lighting.philips.ro/educatie/viitorul -iluminatului/hue/casa -inteligenta -sistemele -de-
automatizare -a-locuintei
[11] [11]https://www.amazon.com/Echo -2nd-Generation -Unlimited -auto-
renew/dp/B07RG7FVNY/ref=sr_1_3?crid=SB2C5HUZNRY0&keywords=alexa+2nd+generation&qid=1559
636242&s=amazon -devices&sprefix=alexa+2nd+gene%2Cdigital -text%2C244&sr=1 -3

59

PROIECT DE DISERTAȚIE

60

BIBLIOGRAFIE

[1] CJ Andersen -Amazon Alexa: The Complete User Manual – Tips, Tricks & Skills for Every Amazon
Alexa Device, 2019
[2] James Ryan – Alexa: 1200 Best Thing s To Ask Alexa – The Top Alexa Questions You Wish You
Knew, 2017
[3] Echomeister – The BIG Book of Alexa Commands: An Independent Guide for Alexa and Amazon
Echo Dot. 2000 Fun and Useful Commands to make Amazon Alexa do what YOU want, November
27, 2016
[4] Dr. Steven Lawrence Fernandes – Raspberry Pi 3 Cookbook for Pyth on Programmers: Unleash
the potential of Raspberry Pi 3 with over 100 recipes, 3rd Edition, 2018
[5] Derek Molloy – Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux, 2016
[6] Sean McManus – Raspberry Pi For Dummies, 2017
[7] Warren Gay – Advanced Raspberry Pi: Raspbian Linux and GPIO Integration, 2015
[8] Eric Matthes – Python Crash Course: A Hands -On, Project -Based Introduction to Programming,
2015
[9] Al Sweigart – Automate the Boring Stuff with Python: Pr actical Programming for Total Beginners,
2015

Similar Posts