Documente Academic
Documente Profesional
Documente Cultură
Student
Horațiu-Luchian NEMEȘ
Conducător științific:
Timișoara
2017
Lucrare de licență Horațiu-Luchian NEMEȘ
Cuprins
FIGURI ...................................................................................................................................... 5
TABELE .................................................................................................................................... 7
CAPITOLUL 1. INTRODUCERE.......................................................................................... 8
1.1. Analiza stadiului actual în domeniul problemei ............................................................. 8
1.2. Tema lucrării de licență ................................................................................................ 10
1.3. Structura lucrării ........................................................................................................... 11
2
Lucrare de licență Horațiu-Luchian NEMEȘ
3
Lucrare de licență Horațiu-Luchian NEMEȘ
4
Lucrare de licență Horațiu-Luchian NEMEȘ
Figuri
5
Lucrare de licență Horațiu-Luchian NEMEȘ
Figura 36: Exemplu cod: modulul de recepționare instrucțiuni de pe placa Arduino sferă .. 73
Figura 37: Exemplu cod acționare servomotoare .................................................................. 75
Figura 38: Scenariul de testare a sferei .................................................................................. 77
Figura 39: Testarea scenariului capului ................................................................................. 78
Figura 40: Stadiul final al proiectului .................................................................................... 79
6
Lucrare de licență Horațiu-Luchian NEMEȘ
Tabele
7
Lucrare de licență Horațiu-Luchian NEMEȘ
Capitolul 1. Introducere
Primii roboți creați, capabili de acțiuni complexe, au fost creați între anii 1948-1949,
de William Grey Walter al Institutului Neorologic din Bristol. Aceștia au fost denumiți drept
Elmer și Elsie. Viteza celor doi roboți nu era punctul lor forte, fiind și denumiți drept “țestoase”
din cauza formei designului exterior și a ritmului de deplasare, însă erau capabili de o acțiune
complexă, și anume găsirea stației de încărcare în momentul în care se apropiau de a rămâne
fără baterie. Acest lucru era realizat cu ajutorul unei lumini, plasate în vecinătatea stației de
încărcare, a cărui intensitate era urmărită de un senzor al roboților. [2] [3]
8
Lucrare de licență Horațiu-Luchian NEMEȘ
filme ale unor oameni care nu au neapărat ca fundal o pregătire tehnică necesară pentru
implementarea lor sau vreo legătură cu robotica înșine.
Lucrarea de licență se va axa pe introducerea unui concept prezentat în cadrul unui film
apărut recent, față de momentul realizării proiectului, și anume ,,STAR WARS Episodul VII –
Trezirea fortei”. În cadrul acestui film ne este prezentată noțiunea unui robot, reprezentat în
figura 1, pe nume BB8, sferic, capabil să se rostogolească de unul singur, care are atașat
constant pe plan vertical, pe post de cap, o semisferă. Ideea de proiectare, a venit din partea a 3
regizori, Lawrence Kasdan , J. J. Abrams și Michael Arndt, care nu au nicio formare
educațională necesară pentru a crea fizic un astfel de robot.
Conform tabelului 1, putem observa o parte din cele mai importante caracteristici ale
roboților. Luând prima caracteristică în vedere, se poate explica de ce Disney a preferat să dea
altor firme dreptul de a crea jucării BB8. Aceștia nu au reușit, în modelul lor, să obțină
caracteristica de bază a robotului, și anume, învârtirea sferei. Soluția lor a fost de a pune o roată
la baza sferei care să îl deplaseze strict față-spate fără a învârti sfera propriu zisă în vreo direcție.
9
Lucrare de licență Horațiu-Luchian NEMEȘ
Mergând mai departe, se poate vedea o limitare în mișcarea capului din partea roboțeilor
comercializati, putând să își miște capul doar stânga, respectiv dreapta. Bateriile reîncărcabile
n-au fost o prioritate decât pentru cei de la Sphero. Ca tehnologie de încărcare, ei au decis să
folosească una wireless pentru a putea beneficia de o sferă închisă ermetic, care este astfel și
rezistentă la apă. Dimensiunea extrem de redusă a modelului a ajutat mult că această tehnologie
să poată fi folosită. O dimensiune redusă înseamnă o putere mai mică necesară pentru
functionarem, și astfel baterii mai mici, care pot fi încărcate într-un timp acceptabil la curentul
redus oferit de tehnologia încărcării wireless disponibilă astăzi.
Recunoașterea vocală, în cazul lor, este realizată cu ajutorul telefonului cu IOS sau
Android, prin intermediul aplicației cu care îl controlează. Controlul robotului Hasbro se face
prin intermediul unui controller care vine împreună cu robotul care are la bază tehnologia
infraroșu, Sphero, după cum am menționat anterior, folosește o aplicație prin intermediul căreia
se realizează controlul, iar lucrarea de licență are la bază tehnologia Bluetooth, folosind un
controller DualShock 4. Această poate fi adaptată ulterior să fie controlat de orice dispozitiv
capabil de comunicare Bluetooth.
10
Lucrare de licență Horațiu-Luchian NEMEȘ
video din mediu. Deplasarea robotului se realizează precum este prezentat în figură 1, adică o
sferă acționată hardware din interior, care se va roti păstrând semisferă, capul, deasupra acesteia
pe tot parcursul mișcării robotului. Orientarea ulterioară a proiectului este de a putea procesa
datele primite din mediu astfel încât sistemul să poată funcționa autonom și să ajungă astfel să
interacționeze cu el.
11
Lucrare de licență Horațiu-Luchian NEMEȘ
Capitolul 6 descrie concluziile avute în urmă realizării lucrării de licență și prezintă idei
de direcții pentru continuarea dezvoltării.
12
Lucrare de licență Horațiu-Luchian NEMEȘ
Pentru elaborarea lucrării de diplomă, din punct de vedere mecanic, s-au proiectat piese
și printat mai apoi cu ajutorul unei imprimante de tip 3D. Aceste piese au dus la îmbinarea
componentelor hardware și la formarea celor două entități ale robotului. Pentru îmbinarea și
susținerea celor două entități menționate, s-au folosit magneți, cu o forță de atracție ridicată,
denumiți magneți neodim.
Deși imprimantele 3D au început sa devină populare in anul 2009, cand patentul FDM 1
a devenit valabil domeniului public, tehnologia apare în istorie pentru prima data în urmă cu
mai bine de 30 de ani. În data de 9 Mai 1983, co-fondatorul firmei 3D System, Chuck Hull, a
realizat primul printaj 3D cu succes folosind un procedeu puțin diferit față de cel menționat
anterior. Platformă de printare a acestuia era scufundată într-un material vâscos care avea
capabilitatea de a fi întărit în momentul în care era acționat de laser. Astfel acesta începea cu
platforma aproape de suprafața lichidului și coborâ platformă puțin câte puțin în funcție de
grosimea stratului. La fiecare strat un laser era teleghidat pentru a întări formele necesare. Acest
procedeu a primit denumirea de stereolitografie. [4] [5]
1
Fused deposition modeling: una dintre tehnicile folosite pentru imprimarea 3D a obiectelor, care consta in
adaugarea strat cu strat a materialului cu scopul de a forma forma finala
13
Lucrare de licență Horațiu-Luchian NEMEȘ
Procesul FDM se aseamănă cu soluția propusă de Chuck Hull prin faptul că procedeul
de construcție este același, strat cu strat, prezentat în figură 3. Un avantaj al procesului mai
actual este o economie uriașa a materialului de construcție. În loc de a fi nevoie de îndeajuns
material cât să fie umplut un acvariu, acesta are nevoie exact de cât se va consuma pentru
prototipul final. Acest lucru este posibil deoarece acesta nu mai folosește laser pentru a întări
un material ci are un capăt încălzit prin care trece material îndeajuns de fierbinte cât să fie
maleabil și este trasat în aceași manieră, strat cu strat. Folosind această tehnică se deschide și o
varietate de materiale disponibile. Nu mai este nevoie de un material cu proprietatea specială
de a putea fi întărit prin acționarea laserului ci de un material care poate fi topit la temperatură
la care poate ajunge vârful imprimantei.
Pentru realizarea lucrării de licență am folosit trei variații de plastic cunoscute drept
PLĂ (PolyLactic Acid), ABS(Acrylonitrile Butadiene Styrene) și PET-G(PolyEthylene
Terephthalate Glycol-modified). Toate cele trei materiale se găsesc că și filament pentru
printare și sunt categorizate că fiind perfecte de folosit pentru începătorii din industria
printajului 3D. Caracteristica de bază al PLĂ este rigiditatea materialului iar ABS-ul este
considerat ușor flexibil, fiind mai rezistent la șocuri. Dezavantajul ABS-ului este că nu poate fi
folosit cu ușurință când vine vorba de printat obiecte mari deoarece are un factor mare de
micșorare la răcire și astfel rezultatele ies deformate. Materialul PET-G este clasat undeva la
mijlocul celor două fiind aproape la fel de rigid că PLĂ-ul cât și la fel de rezistent la șocuri că
ABS-ul fără un factor prea mare de micșorare.
14
Lucrare de licență Horațiu-Luchian NEMEȘ
Un magnet este un material sau un obiect capabil de a produce un câmp magnetic. Acest
câmp este invizibil cu ochiul liber și are proprietatea de a atrage alte materiale feromagnetice.
Neodimul este un metal gri spre argintiu, descoperit în 1895 de un chimist austriac pe
numele Carl Auer von Welsbach. Acest metal, de șine stator, este maleabil la temperatură
camerei și se oxidează extrem de ușor în contact cu aerul.
În 1982, două corporații din industria de mașini, General Motors și Sumitomo Special
Metals, au descoperit în aceeași perioadă, în mod independent, un aliaj format din neodim, fier
și bor care a pus bazele descoperirii magneților neodim. Magneții neodim au devenit în scurt
timp cei mai comuni și cei mai puternici magneți disponibil pe piață. Aceștia au ajuns să fie
folosiți în unități de stocare, motoare electrice și difuzoare.
Scopul folosirii acestui tip de magnet în lucrarea de licență este de a susține atât din
interiorul sferei cât și din interiorul semisferei legătură celor două entități ale robotului. Au fost
folosiți în total șase magneți de acest tip, câte trei pentru fiecare parte.
15
Lucrare de licență Horațiu-Luchian NEMEȘ
Având primul model lansat în februarie 2012, gamă Raspberry Pi a prins rapid
popularitate pe piață, datorită dimensiunii compacte, a prețului redus(poate ajunge până la 35
de dolari ) și a flexibilității oferite de diferitele modele apărute. Până în prezent, au fost lansate
3 generații, cu 3 configurații diferite de PCB 2: prima la data deja menționată, februarie 2012,
a două generație 3 ani mai târziu în februarie 2015, iar a treia generație în februarie 2016. În
aceeași perioadă cu lansarea celei de-a două generații, fundația Raspberry Pi a atins numărul de
5 milioane de plăcute vândute, ajungând astfel cel mai vândut computer personal al Mării
Britanie. În noiembrie 2016 a fost întrecut numărul de 11 milioane de unități vândute. [6]
În noiembrie 2015, un model special a fost lansat pentru aplicațiile care necesitau o
dimensiune și mai redusă decât al generațiilor de bază. Acest model a fost denumit Raspberry
Pi Zero și poate fi asemănat cu ușurință cu prima generație apărută din punctul de vedere al
specificațiilor. Dimensiunea acestuia este de 65 x 30 mm, dimensiune cu mult redusă față de
cea a ultimei generații care este de 86 x 56 mm. Acesta este singurul model care nu dispune de
mufe USB 2.0, jack audio și pini GPIO 3 preinstalati. Prin această decizie de a nu mai face pinii
GPIO preinstalati, au redus astfel foarte mult și grosimea plăcuței. De la o grosime de 20 mm
s-a ajuns la o grosime de 5 mm, care poate însemna extrem de mult în proiectele de dimensiuni
reduse.
2
Printed Circuit Board: placa cu cablaj imprimat, format dintr-un ansamblu de componente electrice si
electronice, conectate din punct de vedere electric si sustinute din punct de vedere mecanic, cu rolul de a realiza
un produs final functional
3
General-purpose input/output: pin care se gaseste pe un circuit integrat sau circuit imprimat, al carui scop si
stare poate fi modificat de catre utilizator la run time
4
System on a chip: o solutie de chip des intalnita in aria sistemelor embedded, si pe piata dispozitivelor mobile,
datorita consumului redus de curent, si a dimensiunii reduse in care este plasata majoritatea componentelor
necesare pentru functionarea unui sistem de calcul
5
File Allocation Table pe 32 biti: arhitectura de organizare a fisierelor pe un mediu de stocare in clustere de
dimensiune de pana la 32KB in functie de dimensiunea partitiei in cauza
6
New Out Of Box Software: solutie care nu necesita nicio instalare, ci poate fi realizata prin dezarhivarea
datelor necesare pe mediul de stocare pentru a boot-a direct in sistemul de operare dorit
16
Lucrare de licență Horațiu-Luchian NEMEȘ
prin conector HDMI, mouse, tastatura și un cablu de alimentare de tip micro USB,
achiziționarea unei plăcuțe si a acestui card de memorie permite sistemului sa devina gata de
folosire direct din cutie. Pentru cazurile in care monitorul, mouse-ul si tastatura nu sunt
disponibile utilizatorului, acesta poate folosi laptop-ul/calculatorul personal pentru a se conecta
prin SSH 7. Această conexiune poate fi realizată cu ajutorul unui client precum Putty, după ce
utilizatorul a legat placa prin ethernet la același router la care este legat și calculatorul personal
de pe care se va face conexiunea. Această conexiune permite logarea pe plăcuță și trimiterea de
comenzi precum cele din consolă. După ce accesul este permis, se poate instala pe plăcuță
pachete de date precum VNC Server pentru a permite utilizatorului să se conecteze de la distanță
la plăcuță. Folosind adresa IP a plăcuței în aplicația Remote Desktop din Windows, sau orice
aplicație similară, permite utilizatorului să obțină acces la interfață grafică a sistemului de
operare ales.
7
Secure Shell: protocol de retea ce permite ca datele sa fie transferate folosind un canal securizat intre
dispozitivele retelei prin criptarea datelor
17
Lucrare de licență Horațiu-Luchian NEMEȘ
folosirea a multor periferice care consumă o cantitate mai mare e curent precum un display
sau modul driver pentru motoare. Atunci când scopul proiectului nu permite că plăcută să fie
alimentată de la priză, sau mai bine zis, să fie o componența stabilită într-o locație fixă,
folosirea unui powerbank, capabil de aceleași specificații menționate anterior, este o soluție
destul de fiabilă.
Una dintre limitările acestor plăci este inabilitatea de a operă cu date analogice.
Singurii pini folosibili ai acestor plăcute sunt pinii GPIO care sunt doar digitali. O soluție
pentru acest impediment, este folosirea unei plăcute arduino care să comunice pe Serial prin
USB sau pinii RX/TX ale celor două plăcute, această oferind posibilitatea de a lucra cu date
analogice.
8
Low Power Double Data Rate 2: versiune a memoriei Random Acces Memory cu un consum scazut de curent
datorita trecerii de la 1.8V la 1.2V si a unor imbunatatiri pentru reimprospatarea multimii de date transferate
18
Lucrare de licență Horațiu-Luchian NEMEȘ
modelele disponibile, a fost un factor important de decizie. Această determină viteză cu care se
execută instrucțiunile și libertatea de paralelizare a proceselor. Memoria RAM a fost și ea bine
venită deoarece orice aplicație care implică folosirea camerei, indiferent dacă pe portul de CSI
sau USB, chiar și doar pentru o simplă supraveghere video, fără vreo procesare de imagine va
consumă multe resurse în acest sens. Numărul de comunicări UART 9 posibile este de patru însă
acest număr poate fi ridicat cu ajutorul unui hub usb. Este primul model cu procesor pe 64 de
biți și cu toate că are componentele cele mai puternice din familia Raspberry, consumul de
curent rămâne destul de redus, fiind doar 4W/h în cazul de load 100% a tuturor nucleelor. Un
alt aspect de apreciat este faptul că această generație este singură cu modul Wifi și Bluetooth
incluse, nemaifiind nevoie de achiziționarea altor adaptoare compatibile cu placă. Sistemul de
operare ales este Raspbian Jessie, o distribuție Debian dezvoltată special pentru plăcuțele
Raspberry.
În Aprilie 2016, modulul de cameră Raspberry Pi v2, prezentat în figură 5, a fost lansat
cu un senzor de 8 megapixeli de la Sony sub numele IMX219. Acesta a fost o îmbunătățire
drastică față de versiunea originală de 5 megapixeli cu senzor de la OmniVision denumită
OV5647. [11] O comparare mai clară intre cele două generații poate fi observată in tabelul 3.
9
Universal asynchronous receiver/transmitter: dispozitiv hardware folosit pentru comunicare seriala
asincrona in care formatul datelor si viteza de transfer sunt configurabile
10
Procedeu a carui scop este de a obtine performante mai mari a unei componente prin fortarea acesteia de a
functiona la o frecventa mai mare decat cea specificata de catre producator
19
Lucrare de licență Horațiu-Luchian NEMEȘ
Acest modul este unul recomandat pentru începători, fiind capabil să surprindă poze și
să filmeze în rezoluție Full HD cu ușurință. Utilizatorii avansați nu pot fi nici ei dezamăgiți de
acest modul, având la dispoziție posibilitatea de a încerca proiecte precum filmări time-lapse
sau slow-motion [13], crearea unui telescop [14] și opțiuni nelimitate de procesare de imagine
[15]. Sunt puse la dispoziție și diferite librării care produc efecte [16] în timp real asupra
filmărilor realizate.
Cameră v2.1 este compatibilă cu toate generațiile de Raspberry Pi, datorită conexiunii
seriale standard CSI. Unul dintre îmbunătățirile vizibile la această cameră este tehnologia
introdusă de cei de la Sony de AWB 11. Scopul acesteia este de a reda culorile reale ale
obiectivului filmat indeferent de temperatură luminii din încăpere. Filmarea unui obiect alb va
rezultă în redarea a unor pixeli albi chiar dacă sursă de lumina este un LED, un bec
incandescent, soarele sau de tip fluorecenta. [12]
11
Auto White Balance: balanta de culori la camere foto si video
20
Lucrare de licență Horațiu-Luchian NEMEȘ
Numele a fost inspirat după un bar din comună Ivrea, Italia, unde studentul care a
construit prototipul împreună cu ceilalți fondatori ai companiei obișnuiau să se întâlnească.
Barul a fost numit după un rege al Italiei, Arduin din Ivrea.
Pe lângă partea Hardware, aceștia au dezvoltat și propriul lor IDE 13, Arduino Software.
Programarea se face prin intermediul unui limbaj asemănător cu C++, având la dispoziție clase
și librării specifice Arduino. AVR Studio și Atmel Studio sunt două exemple de alternative
fiabile pentru compilarea pe Arduino. Diferență este suportul IDE-urilor pentru sistemele de
12
Microcontroller dezvoltat de firma Parallax care se poate programa cu o distributie a limbajului de programare
Basic, denumit pBasic.Numele Stamp este inspirat de dimensiunea acestuia, fiind cat un timbru postal.
13
Integrated Development Environment: un set de programe, menit sa ajute programatorul in creearea altor
programe, folosindu-se de o interfata grafica prietenoasa, care ofera posibilitatea de editarea a codului sursa,
depanare erori sintaxa, testare si compilare, totul intr-un singur soft
21
Lucrare de licență Horațiu-Luchian NEMEȘ
operare. Arduino Software are suport pentru Windows, Linux, Linux ARM și OS X, ceea ce îl
face cel mai recomandat din punct de vedere al compatibilității. [20]
14
Future Technology Devices International: companie din industria semiconductoarelor specializata in
tehnologia Universal Serial Bus
22
Lucrare de licență Horațiu-Luchian NEMEȘ
Microcontroller ATmega328
Arhitectura AVR
Tensiune iesire 3,3V sau 5 V
Memorie Flash 32 KB din care 2 KB sunt folosiți de bootloader
Memorie SRAM 15 2 KB
Frecvență procesare 16 MHz
Pini Analog I/O 8
Memorie 1 KB
Curent per pin I/O 40 mA (I/O Pins)
Tensiune intrare 5V sau 7-12 V
Pini Digitali I/O 22 din care 6 PWM 17
Curent consumat 19 mA
Mărime PCB 18 x 45 mm
Greutate 7g
Pentru realizarea acestui proiect, raportul mărime specificații este unul excelent.
Există alte modele mai voluminoase care au putere de procesare mai bună, însă și consumul
de curent era pe măsură. De asemenea există modele mai compacte, însă nu veneau echipate
cu un port de programare. Alte specificații precum memoriile și numărul de pini au rămas
constante printre ceilalți candidați posibili pentru folosirea la acest proiect.
În anul 1952, trei cercetători de la un laborator numit Bell Labs au construit un sistem
capabil să recunoască cuvintele pronunțate de oameni. Tehnologia acelei perioade a limitat
sistemul la un vocabular de aproximativ 10 cuvinte însă această lucrare a pus bazele
recunoașterii vocale de astăzi. Până pe la finalul anilor ’60, orice sistem creat obligă utilizatorii
să facă o pauză după fiecare cuvânt pronunțat. Atunci un absolvent al Universității Stanford,
15
Static Random Access Memory: memorie semiconductoare care foloseste circuite logice combinationale
pentru a memora fiecare bit, astfel nu mai are nevoie de un ciclu periodic de reimprospatare precum Dynamic
Random Access Memory [21]
16
Electrically Erasable Programable Read Only Memory: memorie nevolatila folosita in echipamente
electronice pentru stocarea datelor care trebuie sa persiste si dupa intreruperea alimentarii circuitului; aceasta
memorie poate fi stearsa si reprogramata in timp ce sunt in circuit aplicand o tensiune mai mare decat cea
generata de circuit [22]
17
Pulse Width Modulation: tehnica de codificare a unei informatii intr-un semnal care pulseaza si modalitate
de control al fluxului de curent pentru echipamente precum led-uri si motoare
23
Lucrare de licență Horațiu-Luchian NEMEȘ
Raj Reddy, a îmbunătățit proiectul proiectând un sistem care a făcut posibil că un joc de șah să
poată fi controlat doar din comenzi vocale. [24]
Un mare dezavantaj al acestei plăcute este memoria limitată pe care se pot programă
doar 15 instrucțiuni vocale. Aceste 15 instrucțiuni sunt grupate câte 5, având astfel 3 grupuri
individuale. Înainte de a da comenzi plăcuței, trebuie încărcat grupul de comenzi dorit. Cu alte
cuvinte, plăcută nu va recunoaște o comandă dintr-un alt grup decât cel selectat chiar dacă
această face parte din lista celor înregistrate.De menționat faptul că instrucțiunile și setările nu
se vor pierde după scoaterea de sub tensiune a plăcii. [26]
24
Lucrare de licență Horațiu-Luchian NEMEȘ
Unul din lucrurile de menționat când vine vorba de utilizare, este faptul că legarea unui
microfon de calitate și folosirea modulului într-o încăpere liniștită este recomandată pentru a
reduce riscul de erori din partea plăcuței. De asemenea este recomandat să se aleagă comenzi
cu pronunție diferită, structură cât mai diferită și cuvinte cât mai diferite. De exemplu cuvintele
,,lei” și ,,tei” au o probabilitate mare să fie încurcate de către plăcută dacă pronunția
utilizatorului nu este una excelentă.
Scopul includerii acestui modul în lucrarea de diplomă este viteză cu care recunoaște
comenzile. Deși acuratețea și calitatea este cu mult mai bună, folosirea unui API 19 de
recunoaștere vocală pe Raspberry Pi, sau orice altă variantă mobilă găsită, impune așteptarea
de câteva secunde după ce o comandă a fost data. În schimb această plăcută reacționează
aproape instant. Această așteptare poate fi justificată pentru comenzi care presupun căutarea
unor date pe internet însă este inadmisibilă pentru cazul în care doar ne adresăm proiectului sau
dăm comenzi simple care nu necesită nicio căutare sau alte procesări de date.
18
Transistor-transistor logic: clasa de circuite digitale construita din tranzistori bipolari si rezistori unde
tranzistorul se ocupa atat de partea logica a operatiei cat si de partea de amplificare cu scopul de a lega
functionalitatea a doua blocuri logice [23]
19
Application Programming Interface: set de protocoale, subprograme si unelte pentru programarea de
aplicatii si software, care se ocupa de interfatarea dintre doua entitati
25
Lucrare de licență Horațiu-Luchian NEMEȘ
Scopul folosirii acestui modul este accesul la internet de pe plăcută Raspberry Pi, având
suport din partea comunității linux pentru această conexiune. Posibiliatile și oportunitățile unui
robot capabil de conexiune la internet, fără vreo constrângere din punct de vedere a prezenței
în apropiere a unui router Wifi , sunt imense. Cel mai evident și folositor caz este controlul la
distanță, lucru discutat în ultimul capitol.
20
Original equipment manufacturer: companie care produce echipamente si produse care pot fi
comercializate sub numele altui producator
26
Lucrare de licență Horațiu-Luchian NEMEȘ
Pentru elaborarea lucrării de diplomă, din punct de vedere software, s-au folosit
următoarele tehnologii:
Lansat în 1989, Bash este un limbaj de programare realizat pentru Unix cu scopul de a
înlocui shell-ul Bourne. Acesta a fost scris de un programator american, pe nume Brian Fox,
făcând parte din proiectul de compilator GNU. Numele ales este un acronim pentru Bourne-
again shell. Această a fost modalitatea autorului de a aduce un omagiu și râde în același timp
27
Lucrare de licență Horațiu-Luchian NEMEȘ
de limbajul care urmă a fi înlocuit și de sintagmă „Born again” prin care se semnalează ideea
spirituală de renaștere.
28
Lucrare de licență Horațiu-Luchian NEMEȘ
Arhitectură mecanică a lucrării de diplomă presupune mai multe seturi de piese printate
cu ajutorul imprimantei 3D. Proiectul înșine este format din două entități de șine stătătoare.
Avem semisferă, capul robotului, și sferă, corpul robotului. Acestea sunt formate din 3 straturi
principale:
o Carcasa
o Schelet
o Mecanism intern
În figură 9 se poate vedea așezarea celor două entități, cap și corp. Un lucru de
menționat, absent în figură prezentată, este distingerea între schelet și carcasă. Scheletul este
prezent doar în corp iar carcasă este prezența în ambele entități. Am considerat irelevantă
grosimea pereților celor două entități în prezentarea așezării modulelor. Acestea sunt mai multe
componente proiectate în Autodesk Fusion 360 și mai apoi printate. Fiecare componența este
complet modulară și a fost proiectată astfel cu scopul de a putea înlocui cu ușurință dacă una
dintre regiuni cauzează probleme, are nevoie de reparații sau chiar are nevoie de o reproiectare.
Astfel am redus costul de printare atât din punct de vedere financiar cât și din punct de vedere
al timpului, nemaifiind nevoie să se reprinteze tot asamblul pentru modificarea sau înlocuirea
unei anumite zone. O bară de metal cu diametrul de 8 mm, M8, a fost folosită pentru a legă
modulele între ele.
29
Lucrare de licență Horațiu-Luchian NEMEȘ
Legendă
█ perete cap
█ perete corp
█ perete modul
█ bara de legatura
din metal
În subcapitolul 3.1.3 se va detalia formă, poziția și rolul fiecărui suport din figură 9
atât din interiorul sferei cât și din interiorul semisferei.
3.1.1. Carcasa
30
Lucrare de licență Horațiu-Luchian NEMEȘ
de 2 mm. Pentru a putea folosi măcar șuruburi M2, a fost nevoie de corecție manuală la fiecare
eroare în mod individual. Corectarea nu a fost tocmai ușoară din pricină faptului că fișierele
sunt în format *.stl. Fișierul în acest format este defapt un mesh al unui obiect 3D, format doar
din puncte care alcătuiesc triunghiuri. Modificările se fac ori prin aducerea unui alt obiect,
intersectat cu obiectul cu care se dorește a face modificări și se optează pentru tool-ul de
diferientere pentru a creă găuri într-o anumită formă și locație, sau prin selectarea individuală
a fiecărui triunghi și mutarea acestora în spațiu.
În figura 10 se pot vedea câteva din piesele necesare pentru asamblarea carcasei
robotului. Pentru realizarea sferei este nevoie de 8 triunghiuri, 6 cercuri ( un exemplu este cel
ținut în mână ) și 6 cercuri interioare( precum cel de sub echerul din figură precizată).
Triunghiurile au fost printate folosind PLĂ și ABS în funcție de disponibilitatea imprimantelor
iar cercurile transparente folosind PETG. Acestea au fost menținute transparente cu scopul de
a se vedea iluminarea din interiorul sferei.
31
Lucrare de licență Horațiu-Luchian NEMEȘ
În figura 11 putem observa cele 4 piese necesare pentru realizarea semisferei robotului.
Am decis să printez tot ansamblul folosind filament PETG transparent din același motiv de a
putea ilumina anumite zone. Am considerat mai simplă variantă în care am acoperit zonele care
am dorit să rămână libere și să vopsesc restul cu vopsea neagră decât cea în care aș fi printat
separat acele zone din motivul prezentat mai sus al fișierelor *.stl . Rezultatele vor fi vizibile în
poze ulterioare.
3.1.2. Schelet
Modelul scheletului a fost ales din nou pe principiul economiei de material și a timpului
de printare. Doar două din cele trei variante populare și testate puse la dispoziție erau
compatibile cu design-ul proiectului de diplomă de deplasare. Cel mai popular sistem numit
T&M, este destinat sistemului “hamsterbal”. Acest design se bazează pe principiul unui hamster
care se deplasează din interiorul unei bile. Cu alte cuvinte, un roboțel convențional, cu o
greutate mai mare la bază, care este pus într-o bilă, perfect sferică, atât pe interior, cât și pe
exterior.
32
Lucrare de licență Horațiu-Luchian NEMEȘ
Modelul ales a fost proiectat de un alt membru al aceluiași forum, pe nume Micke
Askernäs. Deși nu este la fel de solid precum cealaltă variantă fiabilă, acest design a fost ușor
de modificat, scalat și printat. În figură 12 se poate observă scheletul asamblat cu unul dintre
triunghiuri deja atașat. Autorul nu recomanda printarea brațelor din plastic deoarece la
dimensiunea originală ar fi fost îndeajuns de rezistent pentru a susține toată greutatea. Cum a
fost scalat și acesta la aproape jumătate, contragreutatea a fost în mare parte și ea înjumătățită,
astfel structural este rezistent și plasticul.
A fost nevoie de 8 hub-uri ( cercurile cu 12 brațe), din care 2 au fost dedicate pentru suportul
ax-ului principal al mecanismului intern, 24 de brațe lungi, 24 de brațe scurte și 48 de cleme (
distantierele negre dintre brațe zărite din loc în loc ). Brațele lungi formau câte 4 un x. Acestea
oferă suport de prindere pentru cercurile transparente iar hub-urile oferă suport de prindere
pentru triunghiuri. A fost nevoie de aproximativ 130 de șuruburi M2 doar pentru asamblarea
scheletului.
33
Lucrare de licență Horațiu-Luchian NEMEȘ
Acest suport a fost proiectat cu scopul de de a oferi o poziție fixă pentru motor în sferă
pe axă principală. După cum se poate observă în figură 13, într-un capăt avem gaură de 8 mm
pentru bară de metal conectoare iar în partea opusă avem sistemul de prindere.
Sistemul de prindere se bazează pe cele două locații amenajate din partea motorului
pentru două șuruburi M3 și un sistem de strângere din margini. Axul motorului iese prin gaură
de mijloc iar celelalte două găuri de lângă sunt cele menționate anterior. Găurile de pe marginea
construcției reprezintă sistemul de strângere. Două șuruburi tot de dimensiune de 3 mm se
34
Lucrare de licență Horațiu-Luchian NEMEȘ
strâng de pereții motorului pentru a-l ține în loc. Bară principală de metal poate susține și ea din
spate dacă este necesar.
Acest suport are rolul de a oferi un loc stabil pentru circuitul robotului. Locul acestuia
este prins de suportul pentru motorul cu reducție. Se pot observă în figură 14 cele două
prelungiri care se alineaza cu sistemul de prindere al suportului menționat anterior.
Pe marginea acestui suport se pot observa niște cleme care au o gaură pentru un șurub
de 2mm deasupra. Acestea sunt 6 la număr dintre care primul se repetă de 5 ori iar cel de-al
doilea mai mic doar odată. Cel mic vine amplasat în zonă din spate iar celalalte în celelalte cinci
locații de formă dreptunghiulara cu aceeași gaură prezentată. Pe mijlocul acestor cleme există
un șanț lăsat intenționat cu scopul de a alunecă circuitul pe acestea. În principiu se instalează
toate înafară de unul dintre cele din capăt, și anuma față sau spatele motorului. Apoi se înserează
circuitul. Și în final se pune ultima clemă și se strânge și această în loc.
35
Lucrare de licență Horațiu-Luchian NEMEȘ
Acest suport, din figură 15, a fost proiectat cu scopul de a avea o platformă pe care să
se așeze contragreutatea robotului. Această are menirea de a asigură poziția capului pe plan
vertical și de a asigură că motorul cu reducție va învârti sferă în locul învârtirii lui împreună cu
întreg ansamblul interior în jurul propriului ax.
36
Lucrare de licență Horațiu-Luchian NEMEȘ
Acest suport are rolul de a mentine greutatea pendulului si sa ofere locatie pentru
servomotorul FUTABA 3003 care va actiona deplasarea pendului. Se poate observa in figura
16 zona amenajata pentru motor in partea din spate si cele 4 gauri alineate cu cele oferite de
motor. Folosind aceasta locatie, centrul axului motorului se va alinia cu cele doua gauri de
dimensiune M4 pozitionate la gaura pentru bara de metal de legatura de dimensiune de 8 mm.
În dreaptă figurii 16 avem conexiunea care vine poziționată între capetele celor două
găuri de 4mm. În interioriul conexiunii se introduce un rulment cu dimensiune interioară de 4
mm pentru a se asigură o mișcare cât mai lînă. Folosind una dintre capetele primite împreună
cu motorul, se va face legătură cu conexiunea. Ideea de bază este că toată greutatea pendulului
să fie susținută de această parte mecanică iar motorul doar să îl împingă în direcția corectă.
Alternativă de legare a greutății direct de axul motorului ar fi rezultat în distrugerea în timp a
zimților motorului.
37
Lucrare de licență Horațiu-Luchian NEMEȘ
Locația acestui suport este la mijlocul axului principal. Suportul din subcapitolul
anterior este poziționat de asemenea la mijlocul ansamblului, astfel rezultă că acesta se va află
între pereții suportului din subcapitolul curent. Se poate observă în figură 17 poziția găurilor
pentru bară metalică de legătură și sutinere de dimensiune de 8 mm. Comparând cele două
componente, se poate vedea cum vin acestea îmbinate.
În partea frontala există un loc amenajat special pentru un micromotor servo SG90 care
va stă cu axul motorului îndreptat în partea dreaptă. Rotația motorului va asigură acționarea
poziție capului pe axă x, adică mișcare față/jos – spate/sus a capului. În aceeași parte se pot
observă cele două găuri micuțe de 2 mm care corespund cu cele oferite de motor pentru a-i
asigură poziția în loc. În spatele motorului se află o scobitură în formă de pătrat pentru o piuliță
de dimensiune M4. Se va discută în următorul subcapitol scopul acesteia.
Scopul acestui suport, din figură 18, este de a asigură locație tot pentru micro
servomotor SG90 care va învârti capul pe axă Z, cu alte cuvinte stânga-dreaptă. Locația
servomotorului se poate observă în partea superioară a platformei. Tot acolo găsim cele două
găuri pentru șuruburi M2 care să îl țină în loc.
38
Lucrare de licență Horațiu-Luchian NEMEȘ
Acest suport are rolul de a oferi magneților din interiorul sferei o locație solidă și o
înclinație corespunzătoare. În figură 19 se poate observă suportul cu față care va fi lipită de
peretele interior al sferei vizibilă. În mijlocul suportului avem triunghiul cu gaură de 8 mm
pentru suportul metalic folosit, iar pe marginea acestuia avem cele 3 locații pentru cei 3 magneți
folosiți. După introducerea unui magnet în una dintre locații, se folosește unul din capace și se
poziționează cu față vizibilă în sus. Apoi se securizează în loc magnetul cu mare grijă prin
înșurubarea a două surubururi de dimensiune M2. Acest proces se repetă pentru fiecare magnet
în parte. Pentru a fi sigur că magneții nu vor fi smulși din loc cu tot cu capac și șuruburi în
momentul în care se va face contact cu ceilalți magneți din semisferă, se pot folosi niște piulițe
pe partă opusă al suportului de magneți.
39
Lucrare de licență Horațiu-Luchian NEMEȘ
Designul presupune pereți groși, capabili de a rezistă la șocuri din pricină mișcării
magneților și o înclinație a suprafeței de 10 grade. Luând în calcul dimensiunea sferei interioare,
această a fost înclinația aproximativă necesară pentru a ține magneții cât mai aproape de pereții
interiori.
40
Lucrare de licență Horațiu-Luchian NEMEȘ
Figura 20 Design suport magneti din semisfera, capac magnet si mecanism roata
Pe lângă suporții de magneți mai avem acum și 3 brațe solide cu menirea de a oferi
prindere a sistemului de roți. Și acestea au aceeași înclinație de 10 grade însă la o distanță mai
îndepărtată pentru a avea cât mai mult spațiu pentru mecanismul de roți.
Mecanismul de roată are la bază conceptul folosit la scaunele de birou: o roată prinsă
de un suport capabil să se învârte în jurul propriei axe. Acest lucru a fost realizat cu ajutorul a
doi rulment pentru fiecare mecanism. Unul din rulmenți a fost prins în interiorul roții iar unul
în suportul acesteia. Prin interiorul rulmentului trece un șurub de dimensiune M2 care va face
legătură dintre cele trei componente.
În interiorul sferei, după cum s-a prezentat, în una din capete se află motorul cu reducție
care face posibilă deplasarea sferei iar în cealaltă parte există un rulment care reduce frecarea
dintre bară de metal de legătură și plasticul carcasei.
41
Lucrare de licență Horațiu-Luchian NEMEȘ
În figură 21, se poate observă pe mijloc adâncitură menită pentru rulment și gaură prin
care să poată trece bară de metal. Locația pentru rulment a fost proiectată cu intenție cu o mică
zonă de eroare pentru o înlocuire mai rapidă și mai simplă a acestuia în cazul necesar. Pentru
menținerea în loc se folosește același principiu că la suportul de motor și anume un șurub care
îl va apăsa dintr-o direcție, ținându-l astfel lipit de pereții respectivi.
Cele 8 găuri sunt menite pentru prinderea suportului de peretele interior al scheletului
sferei. În acest capăt se găsește un hub prezentat în 3.2.1 a cărui găuri pentru șuruburi se alineaza
cu găurile acestui suport.
Structură arhitecturii hardware poate fi găsită în figură 22. În această figură putem găsi
compnentele hardware și comunicarea lor între ele din fiecare dintre entități, și anume sferă și
cap. Liniile verzi reprezintă legătură prin fire a componentelor, săgeată reprezintă sensul
informației iar linia albastră reprezintă comunicația Bluetooth, care se poate vedea în schema
că este configurată pentru a fi unidirecțională.
Marcată cu linie și două puncte roșii este delimitarea capului de restul proiectului de
licență. Aici găsim că punct principal de control plăcută Raspberry Pi, având cea mai mare
putere de procesare dintre componente și procesând toate datele și instrucțiunile ce apăr în
sistem. Această comunică prin portul CSI cu cameră și prin USB cu modulul 3G și plăcută
Arduino. Plăcută Arduino se ocupă de o parte din procesarea de date și anume a celor venite de
la microfoanele și a rezultatelor primite de la modulul de recunoaștere vocală Geetech.
42
Lucrare de licență Horațiu-Luchian NEMEȘ
Procesarea acestor date duc la crearea de instrucțiuni care sunt păsate plăcuței Raspberry. În
final, plăcută Raspberry trimite instrucțiunile primite și generate mai departe la corp pentru a fi
executate.
Delimitarea oranj cu linii și două puncte reprezintă zonă corpului. Aici avem o singură
plăcută responsabilă pentru controlul fluxului de date și instrucțiuni și anume o a două plăcută
Arduino. Această are atașat un modul Bluetooth prin care primește instrucțiunile de la
Raspberry. Mai departe folosind instrucțiunile primite acesta acționează pe pinii analogici sau
digitali în funcție de comandă. Pinii digitali sunt legați la driverul motorului cu reducție. Prin
aceștia se ordonă direcția și viteză de învârtire a motorului, respectiv a sferei înșine. Folosind
pinii analogici se creează un semnal PWM de tip software prin care se setează la câte grade ar
trebui să treacă motoarele servo menționate în instrucțiunea primită prin Bluetooth.
43
Lucrare de licență
44
Legendă
█ Componenta HW
█ Semisfera(capul)
█ Sfera(corpul)
În figura 23 putem observa structura arhitecturii software sub formă de schema bloc.
Aici putem sesiza interacțiunea modulelor sistemului cu toate componentele hardware.
45
Lucrare de licență Horațiu-Luchian NEMEȘ
Sistemul conceput este format din două entități de șine stătătoare:capul și sferă. Aceste
entități sunt menite a lucra împreună pentru a realiză un robot funcțional. Legarea celor două
se face prin intermediul câmpului magnetic generat de seturile de magneți din interiorul sferei
și a capului. Având că și contragreutate bateriile situate la bază sferei, acesta își poate menține
capul pe poziție verticală. Folosind greutatea pe post de pendul, robotul își poate schimbă
centrul de greutate de pe o parte pe altă, putând astfel când se deplasează înainte să se încline
în stânga sau dreaptă pentru a luă curbă precum un automobil.
În interiorul capului, găsim plăcută responsabilă pentru cele mai multe module din
sistem și anume plăcută Raspberry Pi. Această se ocupă în prima fază de conexiunea Bluetooth
cu controller-ul Sony Dualshock 4. Datele primite trebuie procesate, mapate și trimise mai
46
Lucrare de licență Horațiu-Luchian NEMEȘ
Pe lângă extragerea datelor audio din mediu, robotul se ocupă și de procurarea celor
foto și video prin intermediul camerei Raspberry Pi.Un singur modul este responsabil de acest
lucru și anume Modulul de procesare date cameră.
Cel mai mare grup de module de pe placă Raspberry îl reprezintă grupul de comunicații.
Înafară de comunicația Bluetooth cu controller-ul wireless, mai există și acces la rețeaua 3G,
47
Lucrare de licență Horațiu-Luchian NEMEȘ
crearea unui semnal de tip hotspot, conexiune la distanță de la un alt dispozitiv la plăcută
Raspberry Pi și în final, cel mai important modul, de transmitere a datelor către plăcută Arduino
prezența în sferă robotului. Modulul de rețea 3G este cel care încărca driver-ul necesar
funcționării a modem-ului, se asigură de conexiune a semnalului și de activare a setărilor de
rețea. Modulul de asigurare a unui semnal de tip hotspot a fost integrat în fișierul rc.local, care
rulează la pornirea plăcuței. Modulul de 3G și modulul de hotspot lucrează împreună pentru a
oferi utilizatorului atât acces direct la plăcută cât și acces la internet în același timp. Astfel în
momentul în care ne apare în lista de rețele disponibile numele dat plăcuței raspberry pi, știm
cu siguranță că această a bootat și că ne putem conecta la ea pentru acces la internet. Pe lângă
conexiunea la internet, modulul de hotspot mai are rolul de a veni în ajutorul modului de
conexiune la distanță. Acest modul asigură acces la interfață de utilizator al plăcuței de pe un
alt dispozitiv. Pentru a fi posibil acest lucru, dispozitivul și Raspberry Pi-ul trebuie să fie
conectate la aceeași rețea. Conexiunea fizică prin ethernet nu mai este necesară în timp ce
modulul hotspot este în folosință.
48
Lucrare de licență Horațiu-Luchian NEMEȘ
În general scopul roboților este de a avea o dimensiune cât mai redusă și de a avea cât
mai multe caracteristici. Scopul personal, în această privință, a fost de a mă apropia cât mai
mult de dimensiunea originalului, având astfel o libertate mai mare la proiectarea suporților
interiori și a alegerii componentelor hardware. Luând în considerare specificațiile imprimantei
precizate în paragraful anterior, am ajuns să realizez o versiune a robotului care e jumătate din
dimensiunea originalului prezentat în film.
Prima componența luată în considerare a fost motoarele folosite pentru deplasare. Tipul
de motor pentru această sarcină a ajuns să fie un motor cu reducție. Că variantă de rezervă era
folosirea unui servomotor, cu rotație continuă care avea aceeași putere de rotire. Dezavantajul
acestor motoare este viteză redusă. Motorul cu reducție este alegerea perfectă pentru acest
proiect având atât putere de rotire foarte mare ( de la 3 kilograme/cm3 în sus) cât și o viteză
ridicată (de la 150 de rotații per minut în sus).
49
Lucrare de licență Horațiu-Luchian NEMEȘ
Am ales să merg pe o proiectare care constă în folosirea a unui singur motor cu cuplu
pentru rostogolirea efectivă a sferei în locul unei abordări convenționale care presupunea
folosirea a două motoare. Această decizie a inclus mai multe motive. Unul dintre ele a fost
reducerea costului de producție. Aceste motoare au un preț de start destul de ridicat iar după o
analiză mai atentă am observat că diferență de preț și de specificații nu era în niciun caz direct
proporțională. Un alt motiv a fost reducerea consumului de putere. Astfel bateriile robotului ar
trebui să reziste mai mult. Un ultim motiv, dintre cele mai importante, a fost nevoia folosirii
unui driver cu acest tip de motoare. Fiind motoare cu reducție și putere de rotire mare, este
nevoie și de un consum de curent pe măsură. Folosirea a două drivere era din nou ineficiența
din punct de vedere financiar și al consumului. Pentru un design mai restrâns ar fi fost o piedică
lipsă de spațiu. Un driver cu canal dublu care să suporte cantitatea de curent necesară pentru
fiecare motor este din nou costisitor.
După ce tipul de motor, tipul de abordare și motorul principal au fost alese, am început
să caut un driver capabil pentru a-l controla. Conform specificațiilor, motorul are un consum de
curent de 6A la 5V când axul motorului este oprit în timp ce el este funcțional. Acesta este un
consum imens pentru un motor de 5V. Driverele de motor capabile pe un singur canal de atât
de mult curent sunt aproape la fel de scumpe cât motorul înșine. Soluția găsită a fost folosirea
unui driver dual capabil de consum de 2A per canal. Chiar din specificațiile driverului se vine
cu soluția de legare a celor canale în serie, creînd astfel un singur canal capabil de 4A. Știind
că motorul nu va ajunge niciodată blocat și din experiență cu motoarele folosite anterior, am
considerat valoarea de 4A că fiind un prag sigur de folosire pentru acest motor.
Având motorul principal și driverul necesar pentru a-l controla, următorul pas a fost
achiziționarea unui microcontroller capabil de semnal digital și PWM. Am ales pentru acest
lucru un Arduino Nano fiind o versiune compactă a lui Arduino Uno, mai ieftin și cu
specificațiile necesare amintite anterior. Pentru un proiect de dimensiuni mai reduse se
recomanda folosirea unui Arduino Pro Mini. Acesta are din nou specificațiile necesare
momentan cât și majoritatea specificațiilor în general doar că este de dimensiuni și mai reduse
decât Arduino Nano. Singurul dezavantaj este că va fi nevoie achiziționarea unei soluții de
comunicare între plăcută și calculatorul de pe care se va programă, neavând un port USB direct
atașat.
50
Lucrare de licență Horațiu-Luchian NEMEȘ
Având primul ansamblu de componente disponibil, s-a putut testa prima dezvoltare
hardware. Am scris astfel un cod scurt de Arduino în care am dat valoare celor doi pini legați
la driver. Unul are scopul de control al direcției iar celălalt de control al vitezei. Fiind doar două
direcții proibile, un semnal digital este suficient pentru această sarcină. Viteza având mai multe
trepte s-a folosit un pin digital capabil de semnal PWM. Scopul testului este de a confirma
compatibilitatea celor 3 componente: motor, driver și Arduino. Motorul și Arduino nu aveau
atât de multă nevoie de test cât înțelegerea driverului cu motorul.
Ultima piesă de dimensiuni mai ample, necesară pentru un robot care se poate deplasa
fără restrângeri de distanță este bateria. Având în vedere că proiectarea robotului presupune
51
Lucrare de licență Horațiu-Luchian NEMEȘ
utilizarea unei greutăți pentru funcționarea să, putem folosi baterii mai mari, care vor da și ele
greutate. Pentru un proiect de dimensiuni mai reduse este recomandată folosirea unor baterii de
dimensiuni mai reduse și folosirea că și greutate a unor obiecte cu densitate mai mare pentru a
obține o greutate cât mai mare într-o dimensiune cât mai mică. Personal, știind că spațiul nu va
fi o problemă, am ales folosirea unor celule 18650. Aceste pot fi des întâlnite în bateriile de
laptop și powerbank-uri. Sunt celule reîncărcabile de dimensiuni mai ample decât bateriile
clasice de tip AA. Au de asemenea și o cantitate considerabilă de mah, dându-i mai mult timp
de funcționare robotului.
Având toate piesele care se presupun că ar ocupă cel mai mult spațiu în interiorul sferei,
se trece la aranjarea și eventuală poziționare a acestora. În această fază, totul rămâne încă pe
hârtie până când vom veni cu soluția ideală. Abordarea mea a fost să fac o măsurătoare
aproximativă a diametrului sferei, și a pieselor ce urmau a fi introduse. Din moment ce m-am
decis despre așezarea lor efectivă și m-am convins că vor încăpea în această formație, am trecut
la printarea componentelor pentru carcasă și schelet. Între timp am început să proiectez modular
pentru fiecare piesă hardware câte un suport pentru a le poziționa apoi în sferă. Ideea
măsurătorii doar aproximative a fost o anumită marjă de eroare luată între versiunea 3D pe
calculator și versiunea printată. Pentru atașarea modulelor proiectate am decis să folosesc o bară
de metal care să fie tăiată pe dimensiunea necesară pentru îmbinarea componentelor. În capătul
opus motorului s-a folosit un rulment care să asigure funcționarea sistemului. Și acesta se
enumera printre componentele care au necesitat un suport.
Până la începerea proiectării suporților pentru mecanismul intern, trebuie luată decizia
unei metode wireless de controlare sferei. Momentan, singurele variante fiabile Wifi
Bluetooth. Personal am bluetooth pentru aveam minte folosirea unei Raspberry care fie setat
pe post de hotspot pentru o conexiune . Astfel o conexiune cele fi mers pe Wifi.
Proiectarea presupus crearea tuturor pieselor din capitolul de . Fiecare dintre ele au
fost proiectate modular special pentru piesele alese. La secțiune, proiectarea este funcție de
autorul unui astfel de proiect. Multe modele au avut nevoie de o reproiectare din diverse motive.
fost nevoie de câteva eșuări pentru găsi dimensiunea de pentru o de eroare . Fără acest
detaliu, multe piese nu se îmbinau cum erau gândite.
52
Lucrare de licență Horațiu-Luchian NEMEȘ
fiabil din punct de vedere hardware. Nu orice calculator sau laptop vine echipat cu Bluetooth.
Astfel această variantă a picat. O a două variantă era dezvoltarea unei aplicații mobile.
Majoritatea dacă nu toate telefoanele de pe piață din ziua de astăzi are tehnologia necesară.
Impedimentul a fost estimarea unui timp prea îndelungat de investire în crearea unei astfel de
aplicații. Că ultima variantă, și cea alesa, am găsit folosirea unui controller cu conexiune
Bluetooth. Personal, consider această variantă mult mai bună decât cea a aplicației mobile
deoarece nu e nevoie că utilizatorul să privească ecranul în timp ce controlează robotul.
Controller-ul ales, Sony Dualshock 4 v2, are butoane fizice a căror locație poate fi găsită ușor,
prin simțul tactil, fără a pierde contactul vizual cu robotul.
Folosind metodă de comandă aleasă, a fost nevoie de utilizarea unui driver dedicat
pentru a asigură conexiunea dintre controller și plăcută și pentru a înregistra datele primite. Mai
departe s-au mapat datele primite astfel încât să se distingă fiecare buton printr-un ID unic și
printr-o valoare echivalentă cu starea butonului. Pentru butoanele digitale s-au primit stările de
tip ON și OFF iar pentru butoanele analogice datele primite erau valori cuprinse între -1 și 1.
După maparea corespunzătoare, codul se ocupă de transmiterea instrucțiunilor către plăcută
arduino din corp.
Cea mai grea de proiectat și cea mai importantă piesă din robot este suportul pentru
magneți. După achiziționarea unor magneți neodim, măsurarea acestora, s-a trecut la proiectare.
Pentru proiectul de licență am folosit 6 magneți de aceeași dimensiune cu o forță de atracție de
10 kg. Partea complicată în această proiectare a fost poziționarea lor cât mai apropiată de
peretele interior al sferei astfel încât să nu se piardă din puterea acestora de atracție. Suportul
pentru sferă și pentru cap au fost proiectate în același timp pentru a asigură o testare cât mai
ușoară a interacțiunii dintre cele două. Proiectarea suportului din interiorul capului a presupus
și proiectarea unui sistem de roți capabil de omnidirectie și alunecare cât mai lînă pe suprafața
sferei.
53
Lucrare de licență Horațiu-Luchian NEMEȘ
Fiind totul interconectat este ușor de adăugat noi module. Pentru a putea avea acces la
informații de pe Internet în timpul programării plăcutelor din cap, s-a adăugat modulul 3G care
permite accesul la internet atât plăcuței cât și tuturor dispozitivelor conectate la ea.
Conectarea camerei s-a făcut prin interfață CSI, prezentată în capitolul de fundamentare
teoretică, folosind o panglică specifică acestei conexiuni. Această panglică s-a ocupat atât de
partea de transfer a datelor cât și de alimentare a camerei așadar dezvoltarea hardware a acestei
componente a fost directă și simplă.
Între plăcuța Arduino și plăcuța de recunoaștere vocală s-a realizat din nou o
comunicare de tip serială însă nu una hardware. Folosirea pinilor RX/TX de pe plăcută Arduino
a fost evitată datorită faptului că sistemul lucrări de licență a fost proiectat astfel încât plăcută
Arduino să poată fi reprogramată fără a fi nevoie de deconectarea acestor pini. Este un lucru
știut faptul că nu pot există acești pini legați în momentul programării deoarece comunicarea
54
Lucrare de licență Horațiu-Luchian NEMEȘ
va intră într-un conflict de date. Astfel a fost folosită o soluție software pentru comunicarea
serială. Acest lucru nu a afectat în vreun fel performanță ba chiar a susținut proiectarea
sistemului.
Cele două microfoane prezintă mai mulți pini. Cel mai important pin este cel analogic
, numit sugestiv OUȚ, prin care se primesc datele necesare. Acesta vine în mod evident conectat
la unul din pinii analogici ai plăcuței Arduino. Amplificarea acestui modul se face prin
intermediul pinului AGC, care se conectează la 5V. Această este o altă componența perfectă
pentru folosirea împreună cu plăcută Arduino fără a fi nevoie de o sursă de putere externă.
Înafară de acești doi definitorii, pentru elaborarea lucrării de licență, nu am mai folosit decât
cei de alimentare. După cum am menționat anterior, aceștia au fost conectați direct la pinul de
5V și GND ai plăcuței Arduino.
Pentru alimentarea entității de semisferă s-a folosit 4 celule 18650 legate în serie cu un
circuit urcător de tensiune. Bateriile și circuitul au venit la pachet dintr-un powerbank
desasamblat complet. Această sursă a asigurat cei doi amperi necesari pentru funcționarea
plăcuței Raspberry Pi cât și a perifericelor acestora.
Dezvoltarea hardware a sferei a presupus existența a unei plăci Arduino Nano, al unui
modul Bluetooth, al unui driver de motor, un motor cu reducție și a trei servomotoare. Fiind
singură plăcută existența în această entitate și singură componența capabilă de a fi
reprogramată, plăcută Arduino a reprezentat creierul central aici.
Modulul Bluetooth folosit pentru realizarea lucrării de fost un modul HC-05. Acesta
este capabil de conexiuni de de cele Slave, funcție de cum este programat acționeze.
Comunicarea acestui modul fost de cu Arduino folosind pinii RX/TX la ambele ale firului.
55
Lucrare de licență Horațiu-Luchian NEMEȘ
de acești pini generici -au folosit din nou pinii de alimentare. De pinii de alimentare au mers
către o de curent anume cea care oferă 5V.
S-au folosit două modele de servomotoare. Unul din ele este Futaba s3003. Acesta a
avut rolul de mișcă pendulul, schimbând astfel centrul de greutate al sferei. După cum s-a
prezentat în capitolul de arhitectură mecanică, această schimbare de centru al greutate are
scopul de a obligă sferă să meargă în locul unei linii drepte, într-o linie curbă precum un
automobil. Al doilea model de servomotoare este SG90. Acesta este un servomotor micuț dar
cu mult potențial. Două servomotoare au fost folosite din acest model pentru cele două axe de
rotație ale capului proiectate. Pinii de legătură sunt aceeași la toate cele trei servomotoare. Pe
lângă cei de alimentare este un pin ÎN care așteaptă un semnal PWM prin intermediul căruia
să se transmită unghiul de poziționare al axului motorului. Pentru elaborarea lucrării de
licență am folosit un PWM generat din software în locul celui hardware datorită librăriei
folosite. Librăria folosită ocupă unul din timer-îi plăcuței Arduino, astfel neavând indeajunsi
pini de tip PWM. Fiind ocupat, doi pini digitali capabili de semnal PWM au devenit pini
digitali standard. Avantajul acestei librării l-a reprezentat faptul că se pot folosi pini Analogici
pentru atingerea țelului. Astfel cele trei servomotoare au fost legate la 3 pini anlogici ai
plăcuței Arduino. Sursă alimentării a fost pachetul de baterii regularizat la 5V.
56
Lucrare de licență Horațiu-Luchian NEMEȘ
o Raspberry Pi
o Arduino cap
o Arduino corp
57
Lucrare de licență Horațiu-Luchian NEMEȘ
Driverul conroller-ului poate fi instalat folosind comandă din figură 25. Este nevoie și
de instalarea compilatorului Python și a librăriei pip a acestuia. După instalare, conexiunea se
face prin ținerea apăsată a tastei Share și Home concomitent pe controller-ul care se dorește a
fi conectat la plăcută Raspberry. Controller-ul va intră astfel în modul de conectare și așteaptă
ivirea unui server la care să se conecteze. Un led alb se va aprinde la un interval rapid în acest
timp. În momentul unei conectări cu succes, led-ul va rămâne aprins continuu. În mod implicit,
această culoare va fi albastră însă se poate reconfigura acest lucru din fișierul de configurații al
driverului sau prin apelarea comenzii împreună cu parametru –led și o culoare în Hex dorită.
Acest proces a fost integrat în sistemul de operare pentru a rulă la pornirea plăcuței.
Astfel robotul este pregătit încă de la început pregătit pentru conectivitate. Pentru a realiză acest
lucru s-a adăugat comenzile necesare în fișierul rc.local al sistemului.
58
Lucrare de licență Horațiu-Luchian NEMEȘ
Variabilele pressed și released sunt variabilele care vor ține evidența a căror butoane,
digitale sau analogice, sunt în momentul de față apăsate sau nu. Librăria pygames ne oferă
posibilitatea de a lucra pe bază de event-uri astfel, apăsarea pe buton și ridicarea degetului de
pe buton sunt două dintre ele. Abordarea aleasă fost verificarea constanța dacă orice event a
fost întâlnit iar mai apoi verificarea fiecărui caz pentru fiecărui grup de butoane. Astfel am
minimizat consumul de resurse pentru că nu va verifică constant fiecare tip de event dacă a fost
activat și am scăpat de problemă de latență prea mare între apăsarea de buton și procesarea
datelor.
59
Lucrare de licență Horațiu-Luchian NEMEȘ
În figura 28 putem observă un exemplu de cod care se ocupă de tratarea apariției unui
event. Pentru fiecare grupă de butoane, și implicit fiecare event în parte, a fost creață o funcție
specializată care să se ocupe de procesarea datelor specifice. În figura menționată avem funcția
pentru cazul în care un buton a fost apăsat. În prima fază verificăm dacă într-adevăr event-ul
specific pentru această comandă a butoanelor a fost realizată. Apoi folosind o blucă de tip for,
parcurgem toate butoanele reținute că nefiind apăsate pentru a verifică starea acestuia. În cazul
în care se găsește un buton cu valoarea 1, echivalentă cu apăsarea acestui buton, atunci ID-ul
acestui buton cât și valoarea acestuia sunt trimise către modulul de trimitere instrucțiuni prin
Bluetooth către Arduino-ul din corp.
În cazul datelor analogice, librăria folosită oferă valori cuprinse între 1 și -1. Rezoluția
acestor date este excelentă însă din păcate este mult prea mare pentru a putea fi trimise toate în
trimp util către Arduino din corp folosind tehnologia Bluetooth. Acest lucru este cu atât mai
mult amplificat având în vedere că este nevoie de trimiterea unui strîng pentru aceste valori care
durează mult mai mult din cauza translatării necesare pe partea de Arduino. Astfel soluția găsită
este reprezentată în figura 29. Am creat astfel o funcție echivalentă cu funcția map data de
librăria Arduino pentru a creă valori fixe în intervalul 0-250. Prin intermediul acestui procedeu
am putut trimite fără probleme valorile prin folosirea unui singur byte care nu mai are nevoie
de nicio procesare din partea plăcuței Arduino cât și valori direct valabile pentru folosire.
Motivul pentru care intervalul este 0-250 în locul intervalului maxim de 0-255 este pentru că
am decis că să scad din rezoluția datelor pentru reducerea latenței. Astfel marea majoritate de
60
Lucrare de licență Horațiu-Luchian NEMEȘ
procesare a datelor este realizată de plăcută Raspberry Pi, diminuând astfel cantitatea de latență
din partea plăcuței Arduino care are o putere de procesare limitată.
Modulul de procesare date cameră este un alt modul bazat pe limbajul Python care are
la bază să o librărie corespunzătoare. Pentru preluarea acestor date s-a folosit librăria opencv
care oferă o multitudine de posibilități de procesare a imaginii. În scopul lucrării de licență,
scriptul este nevoit să detecteze o față și să îi urmărească poziția acesteia pe ecran. Mai apoi
pentru funcționarea corectă a robotului, folosind aceste coordonate este nevoie de o mișcare a
servomotoarelor, din interiorul sferei, responsabile pentru mișcarea capului, cu scopul de a
păstra față în mijlocul imaginii procesate.
În prima fază a fost nevoie desigur de instalarea acestei librării cât și a serviciilor
necesare pentru funcționarea corectă a camerei. Cameră nu este activată din oficiu în setări, așa
că și acest lucru a făcut parte din prima parte a implementării. După conectarea hardware a
camerei cu plăcută Raspberry Pi, activarea acesteia se realizează folosind comandă raspi-
config. Aici sunt majoritatea setărilor de bază al placutie Raspberry Pi însă ceea ce ne
61
Lucrare de licență Horațiu-Luchian NEMEȘ
interesează pe noi este opțiunea de cameră care e nevoie să să treacă din dezactivată în starea
de activată.
Pentru a putea prelua imagini de la cameră, a fost nevoie de folosirea librăriei picameră
din Python, după cum este arătat în figură 31. Această ne oferă posibilitatea capturării a unei
imagini din cadrul acestui script. Pentru a nu pierde timp de procesare cu stocarea pozei pe
memory cârd, s-a folosit un stream de memorie care ne oferă posibilitatea de stocare a acestora
în memorie RAM. Acest lucru este posibil datorită librăriei io, afișat în figură menționată
anterior. Pentru a putea fi procesate datele de către funcțiile librăriei cv2 se folosește convertirea
oferită de librăria numpy care transformă imaginea într-o mulțime de valori care reprezintă
culorile fiecărui pixel din imagine.
Librăria picameră oferă posibilitatea setării rezoluției cât și a formatului capturii din
codul python. Astfel este ușor de adaptat codul pentru optimizări a vitezei de procesare cât și a
calității imaginii procesate în funcție de scopul programului scris. Pentru lucrarea de licență am
ales o dimensiune de 320x240 pixeli fiind mărimea cea mai potrivită pentru o procesare într-un
timp util. Pentru rezoluții mai mari este nevoie de un timp mai îndelungat de așteptare din partea
utilizatorului până când sistemul detectează nouă locatiei a feței sale.
62
Lucrare de licență Horațiu-Luchian NEMEȘ
Țelul de a menține imaginea feței în centrul imaginii este realizată prin reținerea
constanța a poziției actuale a servomotoarelor. Știind poziția curentă, intervalul în care se poate
mișcă și coordonatele feței, putem calculă de câte grade este nevoie că servomotoarele să se
miște pentru a ajunge cu față în centrul imaginii. Având în vedere că servomotoarele nu ajung
mereu exact la unghiul dorit iar procesarea de imagine nu este realizată perfect, se ia o marjă
de eroare a câte 5-10 pixeli. În caz contrar se poate că servomotoarele să acționeze chiar dacă
n-a fost vreo mișcare din partea utilizatorului din cauza că imaginile procesate vor avea
coordonate cu puțin modificate.
În cazul în care instrucțiunile primite se referă la o acțiune provenită din partea sferei,
atunci acestea sunt trimise mai departe modulului de trimitere instrucțiuni Bluetooth.
Instrucțiunile sunt procesate de către plăcută Arduino înainte de a ajunge la plăcută Raspberry
Pi, astfel nu este nevoie decât a fi trimise mai departe către Arduino-ul din corp.
Pentru situația în care instrucțiunea în cauza nu este menită a fi trimisă sferei, ci pentru
o anumită comandă din partea plăcuței Raspberry Pi, atunci este nevoie de o mică procesare a
acestora. Acestea sunt în general proiectate cu scopul de a deschide un anumit script. Pentru
realizarea acestui lucru trebuie testate instrucțiunile primite pentru a vedea dacă nu se
încadrează în lista de instrucțiuni speciale.
63
Lucrare de licență Horațiu-Luchian NEMEȘ
Pentru început a fost nevoie de identificarea numelui asignat plăcuței de rețea. În mod
implicit denumirea acestuia este wlan0 însă pentru cazul în care se folosește o altă plăcută de
rețea decât cea integrată în sistem, este posibil că această denumire să difere. Pentru a
identificarea numelui s-a folosit comandă ipconfig. După identificarea acesteia, a fost nevoie
că să fie dezactivată pentru a putea fi folosită de alte aplicații. Mai departe a fost nevoie de o
reconfigurare a fișierului interfaces din folderul etc/network. Aici a fost nevoie de o stabilire a
unui IP static pentru a putea accesă plăcută oricând în mod direct fără a mai fi nevoie de alte
modificări.
Pentru realizarea lucrării de licență, comandă amintită anterior a fost trecută în fișierul
rc.local al sistemului. Astfel plăcută va porni direct în modul de hotspot. Pentru a se asigură
64
Lucrare de licență Horațiu-Luchian NEMEȘ
faptul că această va rămâne mereu deschisă, am introdus comandă într-un proces de șine stătător
care este verificat la un anumit interval de timp dacă este încă activ .
Pentru realizarea conexiunii, a fost nevoie mai întâi de identificarea id-ului unic alocat
pentru modemul USB conectat. Prin intermediul terminalului, comandă lsusb a oferit o lista a
tuturor dispozitivelor conectate în acest sens. Acest id a fost folosit pentru a configura sistemul
astfel încât să găsească driver-ul necesar pentru funcționară corectă a modem-ului. Pentru acest
lucru a fost nevoie să se modifice fișierul usb_modeswitch/configPack.țar.gz cu numele și id-
ul găsit anterior. După configurarea corectă a fișierului și o reintroducere a modem-ului în
plăcută Raspberry Pi, s-a putut observă, folsind tot comandă lsusb, că id-ul s-a schimbat. Acest
lucru ne-a indicat că driver-ul s-a instalat cu succes și că putem trece mai departe.
Folsind id-ul găsit anterior, a fost nevoie să se modifice fișierul de configurare cu care
a venit pachetul, și anume wvdial.conf. În acest fișier a fost nevoie de modificarea numelui
device-ului, al ID-ului cât și al unui cod de țara.
Pentru activarea modem-ului s-a creat un fișier de tip batch care reprezintă fișierul de
start al acestui modul în care este apelată comandă sudo wvdial după un anumit interval de
timp. Acest interval de timp are rolul de a aștepta că modem-ul să fie pregătit pentru conexiune
deoarece durează mult mai mult decât îi ia plăcuței Raspberry Pi să o verifice. Pentru o bună
funcționare a sistemului prezentat în lucrarea de licență, acest modul a fost de asemenea integrat
în fișierul rc.local. Asemenea modulelor de dinainte a fost creat un proces separat cu acest script
care este verificat constant la un anumit interval de timp pentru a menține disponibilitatea
acesteia.
65
Lucrare de licență Horațiu-Luchian NEMEȘ
fi nevoie de vreo legătură fizică între dispozitivul de pe care se dorește a lucra și placă. Acest
lucru a fost realizat cu ajutorul pachetelor de date xrdp.
Procesul de instalare al acestui pachet a fost îndelungată dar în mare parte automatizată
în sensul că nu a fost nevoie de modificarea unor fișiere de configurare. A fost doar nevoie de
setarea soluției oferită de sistemul de operare pe dezactivată deoarece acestea două intrau în
conflict una cu cealaltă în momentul în care se încerca conectarea la plăcută.
Modulul de trimitere instrucțiuni Bluetooth este un alt modul realizat în Python care
are la bază librăria serial. După ce conexiunea dintre plăcută Raspberry Pi și Arduino este
realizată cu succes folosind un script bash, tot ce rămâne de făcut este de transmis datele pe
serial.
66
Lucrare de licență Horațiu-Luchian NEMEȘ
La baza metodei de transfer al datelor alese este transmiterea unui singur byte pe serial.
Acest lucru se realizează prin trimiterea unui caracter de tip char. Funcția sendBT ,prezența în
figură 34, se ocupă cu succes de acest lucru. Având parametru data, acesta este verificat dacă
este sau nu de tip char. În cazul în care tipul de date este deja corect, atunci acesta este trimis
mai departe plăcuței Arduino din interiorul sferei. În cazul în care parametrul transmis este de
orice alt tip decât de tipul char atunci se încearcă convertirea acestuia. Este destul de evident că
nu orice tip de data poate fi transformată într-un byte, tocmai de aceea întreg ansamblul a fost
introdus într-o secvența de tip try-catch care va asigură bună funcționare a modulului în cazul
introducerii unui parametru invalid. Utilizatorul va fi atenționat în consolă de eroarea apărută.
67
Lucrare de licență Horațiu-Luchian NEMEȘ
un eșantion îndeajuns de mare pentru a eradica fluctuațiile de date. Pentru această vom folosi
aceste valori și vom face o medie. Acest lucru este realizat pentru fiecare microfon în parte. La
final se face diferență dintre cele două valori și se scade pragul. Diferență dintre valoarea
obitnuta și prag va stabili volumul sonorului iar diferență dintre cele două canale, stânga și
dreaptă, va stabili o poziție aproximativă a sunetului. Dacă valoarea obținută este negativă, vom
ști că poziția capului va trebui îndreptată în partea stânga, iar în caz că valoarea obținută este
pozitivă atunci logică inversă devine valabilă. Folosind valoarea obținută în modul, adică luând-
o că și valoare pozitivă mereu, o vom mapa la un unghi corespunzător pentru a putea fi folosit
de servomotor.
Acest modul este responsabil de mai multe aspecte. În primul rând este responsabil
pentru asigurarea conexiunii seriale dintre placă Arduino și placă de recunoaștere vocală
Geetech. Pentru realizarea acestui lucru am ales să folosesc o conexiune de tip software,
exemplificată în figură 35, în locul folosirii celei hardware. După cum s-a prezentat în
implementarea hardware, placă Arduino și placă Raspberry Pi sunt conectate folosind cablu
USB iar pentru a putea fi reprogramată nu poate avea alte echipamente legate la pinii RX/TX.
În figură 35 se poate vedea inițializarea atât a conexiunii dintre plăcută de recunoaștere vocală
și Arduino cât și cea dintre plăcută Raspberry Pi și Arduino.
După ce se recepționează datele în mod corect, tot ce rămâne de făcut, pentru această
parte a modulului, este de creat cazuri specifice pentru fiecare comandă. Aceste cazuri sunt
integrate în cadrul unui bloc de tip switch unde fiecare caz va transformă datele în instrucțiuni
finale care pot fi trimise mai departe până la sferă. În cazul comenzilor speciale, se transmit
68
Lucrare de licență Horațiu-Luchian NEMEȘ
Figura 36 Exemplu cod din modulul de receptionare instructiuni de pe placa Arduino sfera
Știind că se transfera prin Bluetooth perechi a câte doi bytes, modulul de recepționare
instrucțiuni trebuie să gestioneze aceste date în mod corect. În figură 36 se poate observă
69
Lucrare de licență Horațiu-Luchian NEMEȘ
metodă de abordare al acestui proces. În prima linie vedem că se verifică dacă se află sau nu
date pe serial care așteaptă a fi recepționate. În a două fază se verifică cantitatea acestor date.
În cazul în care nu sunt cel puțin doi bytes, modulul nu va face nimic și va aștepta până când
vor fi. Ideea din spate a așteptării a cel puțin doi bytes în locul a exact doi bytes este faptul că
modulul de acționare motoare crează o anumită latență între citirile de pe serial, făcând astfel
loc pentru cazul incare se vor adună mai mult de 2 bytes la rând. Acest caz ar fi oprit execuția
întregului cod din cadrul acestei plăcute dacă am fi așteptat exact doi bytes.
După ce se verifică cele două condiții, urmează două citiri consecutive de pe serial.
Pierderea de date de pe această conexiune este foarte improbabilă, astfel este îndeajuns de sigur
să se aștepte datele într-o anumită ordine deja stabilită de plăcută Raspberry. Așadar, s-a stabilit
că primul byte primit denotă instrucțiunea, sau în cazul de față butonul apăsat, iar al doilea byte
e valoarea acesteia.
În cadrul lucrării de licență există trei tipuri de acționare motoare. Unul dintre ele este
dedicat motorului cu reducție care este acționat printr-un semnal PWM care dictează viteză
motorului. Acest tip de acționare are rolul simplu de scriere analogică pe pin cu valoarea data.
Celelalte două tipuri de acționari ale motoarelor sunt dedicate servomotoarelor. Acestea
așteaptă de asemenea un semnal PWM prin care să li se spună poziția, sau mai bine zis unghiul,
la care să fie îndreptate. Pentru lucrarea de licență am ales să folosesc librăria Servo.h pentru
acționarea acestor motoare. După cum a fost prezentat la implementarea mecanică, acesta
folosește Timer0 al plăcuței Arduino care era responsabil de crearea semnalului PWM pentru
pinii 9 și 10. Aceștia sunt doi dintre pinii capabili, din perspectivă hardware, de semnal PWM.
Acesta este un dezavantaj mare pentru cazurile în care este nevoie de folosirea a acelor pini cu
scop PWM și nu digital simplu. Avantajul folosirii librăriei este că servomotoarele pot fi
acționate de orice pin. Folosind acel timer se pot folosi pinii analogici fără nicio problemă de
funcționare. Acesta reprezintă semnalul PWM de tip software.
70
Lucrare de licență Horațiu-Luchian NEMEȘ
71
Lucrare de licență Horațiu-Luchian NEMEȘ
Capitolul 5. Rezultate
o Scenariul sferei
o Scenariul capului
Acest scenariu presupune deplasarea sferei, acționat de motorul cu reducție care este
controlat de către instrucțiuni provenite prin bluetooth. Aceste instrucțiuni provin de la
controller-ul folosit care este legat la plăcută Raspberry Pi. În urmă procesării datelor primite,
instrucțiunile sunt transmise sferei pentru a fi executate.
72
Lucrare de licență Horațiu-Luchian NEMEȘ
În figura 38 se pot observă trei imagini succesive preluate din cadrul unui clip video în
care s-a realizat testarea rostogolirii sferei. Pentru o testare mai rapidă și evitarea uzurii pieselor,
s-a folosit bandă adeziva în locul șuruburilor pentru susținerea carcasei.
Prin acest scenariu se urmărește testarea rotirii capului acționat de motoare. Principiul
din spate este folosirea atracției magnetice dintre sferă și cap care permite mutarea capului pe
orice plan. Motoarele din interiorul sferei deplasează ansamblul de magneți din sferă care atrage
după șine ansamblul de magneți din semisferă, astfel odată cu el și semisferă.
În figură 39 se pot observă 3 imagini succesive extrase dintr-un material video din cadrul
testării scenariului capului. Se pot observă cele 3 poziții ale capului care au fost atinse.
73
Lucrare de licență Horațiu-Luchian NEMEȘ
În figura 40 se poate observă stadiul final al proiectului. În partea stânga găsim întreg
robotul asamblat iar în partea dreaptă se poate observă mecanismul intern al sferei folosit pentru
rostogolirea și controlarea acestuia.
74
Lucrare de licență Horațiu-Luchian NEMEȘ
6.1. Concluzii
Conform arhitecturii proiectului prezentat, s-a proiectat din punct de vedere mecanic,
software și hardware un robot sferic care se deplasează acționat printr-un semnal de tip
Bluetooth. Că punct central din punct de vedere hardware s-a ales folosirea unei plăcute
Raspberry Pi datorită puterii de procesare, consumului redus de curent și dimensiunii scăzute.
Pentru realizarea acestui întreg sistem s-au realizat următoarele structuri:
o Adăugarea unui control de tip PID folosind unul sau mai multe accelerometre
cu scopul stabilizării constante a robotului și reducerii inerției create de
mișcarea acestuia
o Dezvoltarea unui sistem software prin care acesta să devină autonom
o Implementarea hardware a unui sistem de redare audio
o Implementarea unui API de recunoaștere vocală pe Raspberry care să se
folosească de accesul la Internet prin intermediul modulului de 3G
75
Lucrare de licență Horațiu-Luchian NEMEȘ
76
Lucrare de licență Horațiu-Luchian NEMEȘ
Capitolul 7. Bibliografie
77
Lucrare de licență Horațiu-Luchian NEMEȘ
78
Lucrare de licență Horațiu-Luchian NEMEȘ
79