Programarea unei matrici de led-uri folosind Raspberry Pi Conducător științific: Ș.l. dr. ing. Marian Bucos Absolvent: Mihaela-Florentina Mihai… [308226]

[anonimizat]:

Ș.l. dr. ing. Marian Bucos

Absolvent: [anonimizat]-Florentina Mihai

Timișoara

2017

[anonimizat] 8x8x8. Procesul implica: cercetare stiintifica aprofundata pentru intelegerea functionarii complete a [anonimizat], testarea cubului dar si atingerea obiectivelor propuse.

Capitolul 1 explica functia vizuala a [anonimizat] a perceptiei vizuale in procesul de invatare.

Capitolul 2 face o scurta prezentare a sistemelor de tip Raspberry Pi prezentand o [anonimizat], explicand necesitatea evolutiei tehnologiei moderne.

Capitolul 3 [anonimizat] a unui circuit de dimensiuni mari.

Capitolul 4 este impartit in 2 [anonimizat]-o cea mai buna pentru realizarea acestui proiect. Partea de hardware explica in detaliu componentele necesare pentru realizarea integrala a unui cub format din 512 led-uri cat si fiecare pas necesar pentru ca circuitul sa fie functional si perfect comandabil. Partea de software controleaza modalitatea de aprindere a led-urilor si realizeaza efecte vizuale perceptibile de ochiul uman.

Capitolul 5 face o prezentarea in realizarea unui framework care permite comandarea vizuala de catre orice utilizator fara a avea cunostinte tehnice referitoare la procesul hardware sau software integrat in aceast proiect.

Ultimul capitol explica dorinta de a realiza acest proiect si utilitatea lui practica din punctul meu de vedere precum si o bibliografie care a fost suportul intregului proces de cercetare stiintifica si realizare a proiectului.

Capitolul 1: Introducere

Sistemul senzorial insumeaza toate organele de simt din organismul uman prin care omul percepe mediul inconjurator. Cea mai importanta componenta a sistemului senzorial o [anonimizat], nerv optic si creier.

Ochiul este unul din cele mai importante organe ale corpului uman din punct de vedere al complexitatii lui. Cu ajutorul lui primim cele mai importante informatii de la mediul exterior. Dupa calculele unui cercetator 80% din amintirile pe care le pastram sunt inregistrate prin vedere.

Privind un obiect luminos imaginea lui se formeaza pe retina ochiului ca apoi prin nervul optic sa fie transmisa senzatia perceperii vizuale a obiectului la creier. Acest fenomen de stergere progresiva se numeste memorie retiniana Ochiul observa in jurul lui o [anonimizat] o faza la alta si ajuta vechea imagine sa persiste in creier pana cand se impune noua imagine.

Acest proiect exploateaza persistenta retiniana. Fenomenul este o caracteristica a ochiului uman responsabil pentru iluzia ca un film nu este compus din imagini statice individuale. Toate animatiile se bazeaza pe disfunctionalitatea biologica a ochiului uman. [anonimizat] aprinse si stinse suficient de repede, este creata impresia de continuitate.

„În experiențele de predare-învățare, strategiile comunicării vizuale trebuie să se adapteze logicii situației de învățare în care sunt aplicate, iar aspectele de ordin psihopedagogic primează. Transmiterea și asimilarea pe cât posibil simultană a conținuturilor prin îmbinarea limbajelor verbale cu cele nonverbale, a structurilor imaginative cu cele verbale, este mai eficientă decât acțiunea lor separată” susține unul din proiectele utilizate în România pentru programul de lcuru cu adulții prin utilizarea învățării vizuale.

In mod normal, orice proces educațional care implică imagini, indifirent de modul în care sunt prezentate, se consideră a folosi tehnici de învățare vizuală. Aceasta ar putea fi înțeleasă ca un aspect al respectării principiului intuiției; adică “un copil, mai ales mic, dar si un adult, invață mai bine dacă vede obiectul real ori în imagini, diapozitive, filme” (Simona Ghițu în Raportul pentru învățarea vizuală în România). Se înțelege de aici și faptul că limitele aplicării consecvente ale tehnicilor de învățare vizuală sunt de cele mai multe ori materiale dar și temporale.

Utilitatea practica a cubului este factorul vizual pe care il ofera. Este un element esential pentru a invata si stimula generarea de idei, îi ghidează în dezvoltarea gândirii în manieră vizuală. Invățarea vizuală ajută elevul să-și clarifice gândirea, să organizeze și să analizeze informațiile, să integreze noile conținuturi și să gândescă critic.

Capitolul 2: Studiu sisteme de tip Raspberry Pi

Raspberry Pi este mini calculatorul secolului XXI produs in UK de catre Raspberry Pi Foundation. Totul a inceput cu un grup de ingineri de la Universitatea de Cambridge care au vrut sa faca un computer atat atractiv pentru copii, cat si accesibil pentru parinti, pentru a stimua creativitatea. Ulterior a fost infiintata Fundatia Caritabila Raspberry Pi unde un grup de voluntari a construit mai multe prototipuri, iar in 2012, cand RS Components a sprijinit productia de Rapberry Pi, a fost lansat pe piata. Este un PC de dimensiunea unui card de credit cu procesor AMR care poate fi conectat la monitor, tasatura si mouse si indeplineste majoritatea functiilor unul calculator. Are propriul sistem de operare, Raspbian.

Raspbian este sistem de operare bazat pe principiul calculatoarelor linux. A fost creat ca un proiect independent de Mike Thompson si Peter Green si este in continua dezvoltare si optimizare pentru Raspberry Pi.

La momentul actual sunt mai multe modele de Raspberry Pi disponibile cu specificatii diferite. Diferenta dintre fiecare model este prezentata in tabelul urmator:

Sursa: http://www.meccanismocomplesso.org

Figura 1: Evolutia Raspberry Pi

Tabel 1: Compararea modelelor Raspberry Pi

Raspberry Pi 3 Model B a fost lansat in Februarie 2016 fiind versiunea cea mai recomandata datorita performantelor si flexibilitatii. Are un procesor Broadcom BCM2837 64bit Quad Core tactat la 1.1 GHz, memorie de 1GB RAM si procesor grafic VideoCore 4, tactat la 300 MHz ce ofera suport Full HD 1080p. Pe Raspberry Pi 3 se rergasesc: 1 port HDMI, 1 conector 4-poli pentru AV analog, 4 porturi USB 2.0, 1 port RJ-45 pentru LAN, 40 pini GPIO pentru atasare senzori si module, slot Micro SD pentru card, conector USB pentru alimentare, conector CSI pentru conectarea comerelor Raspberry Pi, conector DSI pentru display/touch-screen, onboard Bluetooth Low Energy(BLE) si onboard Wi-Fi. Programarea se realizeaza in limbaje de programare.

Sursa: www.raspberrypi.org

Figura 2: Raspberry Pi 3

Capitolul 3: Utilizare Raspberry Pi pentru programarea unei matrici de led-uri

3.1 Cercetare

Primul pas in realizarea acestui proiect a fost cercetarea a ceea ce deja exista pentru a putea intelege exact functionarea si a putea crea propriul prototip. Am constatat ca este un proiect destul de populat cu multe variante de implementare si le-am analizat in detaliu pe cele mai populare.

3.1.1 Jameco Electronics Led Cube Kit

Acesta ofera un kit pentru construirea intregului proiect, kit care include atat componentele circuitului, microcontrolerul, Arduino, pasi detaliati care ajuta la construirea corecta a intregului proiect cat si un cod simplu care iti permite sa intelegi mai usor modalitatea de functionare a circuitului. Dezavantajul acestui kit este faptul ca este pentru un cub 4x4x4 si este controlat de Arduino.

3.1.2 All Spark Cube

Este considerat cel mai mare cub realizat de persoane care s-au ocupat de el ca un hobby. Este un cub care contine 4096 led-uri RGB si poate produce peste 256 de culori la 60Hz. Este un cub 16x16x16 controlat de o aplicatie client/server scrisa in Python care ruleaza pe un calculator linux ce este conectat la un fpga prin USB pentru a controla toate led-urile. Cea mai interesanta parte a constructiei harware este faptul ca sunt folosite 16 microcontrolere individuale pentru fiecare rand, iar microconstrolerele sunt controlate printr-un Arduino Mega 250.

3.1. 3 Instructables 8x8x8 Blue Led Cube

Acesta este cel mai bine explicat ghid pentru contruierea proiectului propus deoarece explica fiecare pas in detaliu. Explica functionalitatea completa a cubului si ofera si o parte de suport software cu posibilitatea de a fi modificata destul de usor. Este controlat de Arduino, iar suportul software este in C cu multe explicatii in pseudocod pentru o intelegere mai usoara.

3.2 Implementare

Dupa analiza a tot ceea ce am cercetat, am ajuns la concluzia ca cea mai optima solutie este contruirea unui cub de led-uri 8x8x8 deoarece are dimensiunea potrivita pentru ochiul uman.

3.2.1 Hardware

Cea mai dificila parte in realizarea unui proiect este alegerea componentelor hardware pentru ca ele influenteaza complet modul de controlare si creare al partii software.

Cuburile de led-uri se bazeaza pe fenomenul optic numit persistenta imaginilor ceea ce usureaza munca pentru ca nu este necesara conectarea unui port IO la fiecare led in parte fiind astfel nevoie de 72 de porturi IO (64 pentru anoduri si 8 pentru fiecare layer).

Led-urile au cea mai mare importanta deoarece ele influenteaza alegerea tuturor celorlate componente. Ele sunt partea vizuala tututor si prin urmare trebuie sa aiba cea mai buna utilizare practica. Piata ne pune la dispozitie o varietate de modele, culori si structuri. Ne dorim la ele sa fie vizibile in acelasi fel din oricare unghi am privi ceea ce ne face sa alegem led-uri rosii.

Majoritatea proiectelor gasite erau realizate pe un microcontroler care limita ceea ce voiam sa fac cu aceast proiect si anume nu doar controlarea printr-un cod scris deja ci si posibilitatea realizarii unei interfete grafice pentru a permite oricarui utilizator, indiferent de experienta sa, sa poata controla cub-ul cum doreste. Atfel, am ajuns la folosirea unei placute Raspberry Pi 3.

3.2.2 Software

Ultima decizie pentru finalizarea proiectului a fost alegerea limbajului de programare pentru partea de software. Alegerea limbajului de programare este partea fundamendala a software-ului deoarece el limiteaza sau extinde barierele de creatie ale dezvoltatorului.

Am decis folosiea JavaFx pentru partea de interfata cu utilizatorul pentru ca este un limbaj de programare popular care ofera posibilitatea unei interfete prietenoase, dar mai ales ofera posibilitatea de a crea elemente 3D cu o grafica interactiva.

Pentru partea care transmite informatiile la placuta cubului, partea embedded am ales Python pentru ca este un limbaj care permite dezvoltatorului sa isi exprime ideile clar si consis, mult mai usor fata de alte limbaje.

Capitolul 4: Proiectare hardware si software

4.1 Proiectare hardware

Scopul acestui proiect este construirea unui cub de led-uri 8x8x8 comandat cu Raspberry Pi.

4.1.1 Componentele necesare

Pentru a putea incepe constructia avem nevoie de lista componentelelor necesare ce se regaseste in tablelul urmator:

Tabel 2: Tabel componente necesare

SN74LS138 este un decodor/demultiplexor TTL de mare viteza construit pentru circuitele performante datorita timpului foarte mic de propagare. Decodorul poate decoda una din cele 8 iesiri, Y0 – Y7, selectia fiind facuta de 3 biti de intrare, A0, A1, A2 dupa cum arata tabelul urmator:

Tabel 3: Mod functionare SN74LS138

Sursa: www.ti.com

Figura 3: Asearea pinilor SN74LS138

Pinii Y0 – Y7 reprezinta iesirile, in cazul cubului, reprezinta selectia randurilor, iar pinii A, B, C sunt pinii de selectie. Pentru ca circuitul sa functioneze corect pentru comandarea cubului, pinii sunt conectati la masa, iar pinul G1 este conectat la +5V.

SN74HC574D este un cicuit octal de tip D flip-flop, cu 3 stari de iesire care are un mod de lucru sincron. Integratul este controlat de un pin de intrare, CLK si de un pic de intrare de tip memorie intermediara care activeaza iesirea, . Circuitul functioneaza astfel:

Tabelul 4: Modul de functionare SN74HC574D

Sursa: www.ti.com

Figura 4: Asezarea pinilor SN74HC574D

Acest integrat trimite date la tranzitia de la 0 -> 1 a intrarii CLK.

poate fi folosit pentru a pune cele 8 iesiri intr-o stare normala de functionare sau in stare ridicata de impedanta, stare in care iesirile nici nu se incarca, nici nu conduc datele, in functie de necesitate. nu afecteaza starea interna a integratului.

Acest integrat are rolul de a aprinde exact led-ul pe de randul pe care dorim.

4.1.2 Schema electrica

Sursa: http://www.pyroelectro.com

Figura 5: Schema electrica a circuitului

Layer-ele sunt selectate direct din pinii de la Raspberry Pi, iar Row-urile sunt selectate din decodor care primeste intrarile de selectie tot de la Raspberry Pi.

Power Circuit este un circuit pentru a testa daca circutiul este alimentat la curent.

Condesatoarele conectate langa fiecare integrat SN74LS138 si SN74HC574D au rolul de a le proteja de o suprasolicitare sau de o intensitate prea mare a curentului.

4.1.3 Conectarea la Raspberry Pi

Pentru conectatea circuitului electric la Raspberry Pi se folosesc pinii GPIO de pe aceasta. Fiecare model de Raspberry Pi are o alta aranjare a pinilor. Pentru aceasta lucrare a fost folosit un Raspberry Pi 3 care are organizarea pinilor asa cum este aratata in imaginea de mai jos.

Sursa: http://www.raspberry-pi-geek.com

Figura 6: Asezarea GPIO la Raspberry Pi 3

In tabelul de mai jos este descrisa conectarea fiecarui pin din circuit cu fiecare pin de la Raspberry Pi 3.

Tabelul 5: Conectarea pinilor din circuit la GPIO

In principiu, pot fi conectati la orice pini cu numele GPIO de la Raspberry Pi, asta a fost o alegere proprie. Pentru comandarea cubului este foarte important de retinut unde a fost conectat fiecare cablu.

4.1.4 Lipirea cubului

Cubul este contruit din 8 straturi orizontale constuite individual si apoi unite. Voi prezenta fiecare pas pentru realizarea acestuia.

Pentru inceput trebuie contruit un sablon pentru stratul orizontal astfel incat led-urile sa fie pozitionate echidistant pentru a obtine forma de cub. Trebuie luat in calcul faptul ca firul de catod al cubului va conecta orizontal cubul, iar firul de anod va conecta vertical cubul. In functie de aceste masuratori trebuie decis care sunt dimensiunile necesare pentru a avea spatiu suficient intre led-uri, dar si pentru a da forma de cub. Pentru a putea plasa led-urile trebuie facute gauri de dimensiunea led-ului.

Figura 7: Creare sablon

Se plaseaza cate un led, unul langa altul, in sablonul realizat , se indoaie pinii de catod pana sunt la acelasi nivel si apoi se lipesc impreuna.

Figura 8: Lipire led-uri

Dupa ce sunt lipiti, led-urile formeaza impreuna o rezistenta si pot fi folosite ca straturi individuale.

Figura 9: Un layer

Astfel se lipesc cele 8 straturi orizontale.

Figura 10: Cele 8 layere

Ideal ar fi sa testam fiecare led pentru a vedea ca sunt toate functionale. Cea mai simpla modalitate de a testa este cu ajutorul unei baterii, un fir conectat la masa, iar cu firul de tensiune testat fiecare led in parte.

Dupa ce sunt construite toate cele 8 straturi orizontale se incepe unirea lor verticala, proces realizat prin conectarea firelor de anod impreuna.

Figura 11: Doua layere lipite

Atfel se unesc toate cele 8 straturi orizontale deja construite

Figura 12: Cubul de led-uri

Pentru a putea fi conectat la circuitul electric este necesara conectarea unor fire care sa faca conexiunea cu componentele de pe placuta.

Se face o conexiune la fiecare din cele 8 straturi orizontale care va realiza controlul fiecarui layer in parte.

Figura 13: Conectarea cotodului de la fiecare layer

Fiecare rand este format din 8 randuri de led-uri si ii corespunde fiecarui integrat SN74HC574D.

Figura 14: Legarea firelor

4.1.5 Realizarea circuitului electric

Circuitul electric este impartit pe in doua parti pe placa de test pentru a putea pune in mijloc Raspberry Pi. Circuitul se realizeaza astfel:

Se incepe prin plasarea celor 8 socluri pentru integratele SN74HC574D, a rezistentelor dintre ele si a celor 8 pini mama la fiecare individual. Trebuie stabilit pozitia fiecaruia astfel incat sa incapa toti pe placuta.

Sursa: http://www.pyroelectro.com

Figura 15: Asezarea soclurilor pe placuta

Prima data se lipesc pe placuta soclurile, resistentele si pinii mama apoi se adauga circuitul de curent.

Sursa: http://www.pyroelectro.com

Figura 16: Lipirea soclurilor

Sursa: http://www.pyroelectro.com

Figura 17: Soclurile, rezistentele si pinii mama pe placuta de test

Se adauga si lipeste circuitul de alimentare

Sursa: http://www.pyroelectro.com

Figura 18: Circuitul de alimentare

Dupa ce toate aceste componente sunt legate se incepe conectarea firelor pentru conexiunea dintre pini.

Ideal ar fi ca placuta de test sa aiba conexiuni la +5V si la ground pe laturile externe pentru a facilita alimentarea tuturor componentelor

Se unesc pinii de alimentare si de masa de la fiecare integrat pana la alimentarea propriu zisa a placutei de test.

Sursa: http://www.pyroelectro.com

Figura 19: Legarea la masa si alimentare a componentelor

Se conecteaza impreuna fiecare intrare de date de la SN74HC574D, D0-D7.

Sursa: http://www.pyroelectro.com

Figura 20: Legarea datelor impreuna

Sursa: http://www.pyroelectro.com

Figura 21: Toate datele legate impreuna

Toti pinii de iesire de control se unesc impreuna si se leaga la SN74LS138

Sursa: http://www.pyroelectro.com

Figura 22: Legarea datelor la SN74LS138

Prin firul galben se leaga pini de clock de la SN74HC574D la iesirile SN74LS138 si pinii A, B, C de la decodor sunt pentru a putea fi controlati de Raspberry Pi

Sursa: http://www.pyroelectro.com

Figura 23: Conectarea la pinii tata

Se adauga capacitoare de cuplare la fiecare integrat pentru a imbunatati performanta de functionare

Sursa: http://www.pyroelectro.com

Figura 24: Prima parte a circuitului

Se construieste circuitul de control a layer-elor prin Raspberri Pi

Se lipesc cele 16 tranzistoare impreuna cu rezistentele, pe de o parte si alta a placutei, iar porturile de conexiune sunt adaugate intre aceste componente. Se mai lipesc si 8 rezistente langa pinii mama pentru a preveni licarirea led-urilor

Sursa: http://www.pyroelectro.com

Figura 25: A doua parte a circuitului

8 fire verzi sunt folosite pentru a lega cathodul la pinii mama si 8 fire galbene sunt conectate de la catodul rezistentelor de control la pinii pentru interfata Raspberry

Pi.

Sursa: http://www.pyroelectro.com

Figura 26: Cablarea circuitului

Acesta este circuitul complet

Sursa: http://www.pyroelectro.com

Figura 27: Tot circuitul

In spatiul ramas liber trebuie pus Raspberry pi si conectat conform tabelului la pinii GPIO

4.2 Proiectare software

Pyhton este un limbaj de programare publicat in 1991 care are fost contruit pe filosofia de lizibilitate si pune accentul de curatenia si simplitatea codului. Permite utilizatorului sa isi exprime ideile intr-un mod succind si in mai putine linii de cod fata de alte limbaje ce programare.

Python poate servi ca limbaj pentru software de tipul „object-oriented”, dar permite si programarea imperativa, functionala sau procedurala. Sistemul de tipizare este dinamic, iar administrarea memoriei decurge automat prin intermediul unui serviciu „gunoier”. Alt avantaj al limbajului este existenta unei ample biblioteci standard de metode.

Pentru crearea conexiunii dintre utilizator si cub este folosit limbajul python. Este creat un program foarte scurt, cu putine functii care are scopul de a afisa ceea ce primeste de la utilizator. Programul are ca intrare o matrice de date pe care o primeste de la utilizator si pe care o transpune in functiile create pentru a afisa ceea ce utilizatorul doreste.

Programul foloseste libraria RPi.GPIO pentru setarea si utilizarea pinilor de la Raspberry Pi.

Functia GPIO.setup(pinSelect, GPIO.OUT) seteaza pinul pinSelect ca si pin de iesire.

Functia row() are rolul de a seta fiecare pin de selectie pe 1 sau 0 pentru a selecta locul unde dorim sa aprindem led-ul.

Functia printCube() face o parcurgere a cubului in intregime si in functie de valorile date la intrare aprinde pe cub ceea ce dorim sa afisam.

Functia clean() are rolul de a reseta cubul pentru ca la o rulare anterioara, datorita circuitelor de flip-flop exista posiblitatea sa fie memorata starea anterioara si sa nu se afiseze ceea ce dorim.

Capitolul 5: Propunerea unui framework pentru programarea unei matrici de led-uri

5.1. JavaFx

JavaFX a fost lansat ca parte dintr-un proiect in 2007, dar nu a avut parte de prea multa atentie chiar si dupa ce Oracle a achizitionat Java. In 2010 situatia s-a schimbat, cand Oracle a transformat JavaFX nucleul tehnologiei pentru construirea aplicatiilor.

JavaFX a fost creat pentru interfete uimitoare care pot rula pe o varietate de dispozitive, de la traditionalele calculatoare si laptop-uri pana la smartphone-uri si console de joc.

JavaFX poate rula pe Windows Vista, Windows 7, Windows 8, Windows 10, macOS si Linux, iar incepand cu JavaFX 1.2 au fost lansate versiuni beta pentru OpenSolaris. Pe telefoanele mobile JavaFX 1.x poate rula pe multiple sisteme de operare incluzand Symbian Os si Windows Mobile.

JavaFX este un set de pachete grafice si media care ii dau voie utilizatorului sa creeze, testeze si corecteze aplicatii complexe care ruleaza pe o varietate de platfome si sa le poata optimiza astfel incat sa ruleze cat mai aproape de perfectiune posibil.

Cea mai buna asemanare a modelul de programare JavaFX este compararea cu o scena de teatru, decor si actori. Primul pas este crearea scenei, fereastra principala pe care utilizatorul o vede si unde se adauga toate elementele de decor. Al doilea pas este adaugarea decorului, ferestrele, butoanele, meniul, iar utimul pas implica crearea de legaturi atat intre decor cat si intre decor si actor (interactivitatea cu utilizatorul).

Una din caracteristicile de baza este posibilitatea creerii unei interfete grafice complexe dar usor lizibile pentru orice utilizator, cu posibilitatea de a crea o multitudine de tipuri de butoane, validari pentru formulare si interactiuni cu un utilizator care nu are legatura cu domeniul de programare.

Cea mai importanta caracteristica a JavaFX, cea care a fost determinanta pentru alegerea acestui limbaj in crearea acestui proiect, a fost faptul ca are clase special definite pentru crearea de obiecte 3D. Prin grafica 3D implementata in acest limbaj este permisa nu doar vizualizarea in 3D a obiectelor create, vizualizarea din toate unghiurile, dar si interactionarea directa cu ele.

O alta caracteristica importanta a limbajului este FXML. Acesta ofera o interfata a aplicatiei, care nu necesita cunoastere de cod si care totusi permite crearea interfetei dorite de utilizator prin elementele grafice din librarie. El foloseste o aplicatiei separata, SceneBuilder.

5.2 JavaFX Scene Builder

JavaFx Scene Builder este o aplicatie vizuala caree permite utilizatorilor sa construiasca reprede o interfeta grafica. Permite crearea prin metoda „drag & drop” a componentelor disponbile in librarie, modificarea lor si la salvare se genereaza un fisier FXML care contine codul a tot ceea ce a fost creat vizual si care poate fi stilizt de cunoscatori.

Avantajul aplicatiei Scene Builder este faptul ca poate fi integrata in platforma de de dezvoltare NetBeans si ulterior codul poate fi combinat cu cod de Java pentru a face legatura intre interfata si logica aplicatiei.

5.3.Netbeans

NetBeans IDE este un mediu de dezvoltare – un instrument pentru programatori, pentru scrierea, compilarea, testarea, depanarea, proiectarea și instalarea programelor. Este scris în Java – dar poate accepta orice limbaj de programare. De asemenea, există un număr imens de module pentru extinderea NetBeans IDE. NetBeans IDE este un produs gratuit, fără restricții legate de modul de utilizare.

De asemenea, este disponibilă Platforma NetBeans; o bază modulară și extensibilă, utilizată drept conector software pentru crearea aplicațiilor desktop puternice. Partenerii ISV oferă Plugin-uri cu valoare adăugată, care se integrează ușor în platformă și care pot fi utilizate, de asemenea, la dezvoltarea propriilor instrumente și soluții.

Are 2 avantaje principale care au inclinat balanta pentru a-l folosi in acest proiect:

Permite integrarea Scene Builder ceea ce mi-a permis crearea vizual a unei parti din interfata grafica si mi-a salvat timp in care ar fi trebui sa scriu linii de cod pentru fiecare element in parte.

Permite rularea pe o platforma externa, Raspberry Pi, ceea ce a usurat mult munca pentru ca tot ceea ce faceam puteam vedea in timp real daca functioneaza corect, fara a fi necesar sa transfer separat fisiere si sa le rulez separat pe placuta.

5.4 Framework-ul

Framework-ul a fost creat din dorinta de a extinde utilitatea cubului pentru orice utilizator, chiar daca nu este specializat in programare, dar doreste sa studieze fie partea de hardware. fie intreg proiectul si modalitatea lui vizuala de functionare.

Framework-ul are o interfata simpla si are cateva functii care permit interactiunea directa. Este creat cubul din 512 sfere tridimensionale care sa sugereze ideea de led si sunt pozitionate in functiile de cele 3 axe, x, y si z pentru a acea o structura de cub 3D.

Functia ledCube( ) face o parcurgele a celor 3 axe in functie de dimensiunea data a cubului si plaseaza la o distanta stabilita pe axele x, y si z cate o sfera tridimensionala, iar la finalul constructiei ajungem la a afisa o simpla matrice 8×8 formata din cercuri.

Figura 28:Vizualizare din fata

Aceasta afisare se datoreaza faptului ca scena este setata spre a fi vizualizata din fata si nu permite afisarea dintr-un alt unghi. Daca setam camera pe o vizualizare de perspectiva, „perspectiveCamera” obtinem o vizualizare tridimensionala a ceea ce am creat.

Figura 29: Vizualizare din perspectiva

Nu se poate crea o afisare a cubului care sa permita accesul la fiecare led in parte si din aceasta cauza a fost necesara implementarea unei functii care sa permita ca prin miscarea mouse-ului sa putem schimba pozitia cubului astfel incat sa se ajunga la toate led-urile. Functia mouseHandling() are acest rol. Ea functioneaza pe principiul unui pivot face este stabil, punctul [0,0,0] si invarte intreg cubul in jurul lui.

Figura 30: Miscare cub

Pentru ca aceasta interfata sa fie interactiva este nevoie ca daca apasam pe un led aceasta sa isi schimbe culoare adica sa aibe loc un eveniment care sa modifice starea curenta a led-ului. Acest lucru se realizeaza prin adaugarea unui listener pe fiecare led astfel incat cand se realizeaza un click pe el sa fie activat un event pe el de schimbare de stare. Led-ul are 2 stari: ON si OFF.

Figura 31: Led-uri aprinse

Daca utilizatorul doreste sa aprinda tot cubul este creat un buton „AllOn” care permite aprinderea intregului cub fara a fi nevoie de apasarea individuala a fiecarui led.

Figura 32: Cub aprins

Deasemenea se poate crea un pattern prin apasarea led-urilor si acesta poate fi salvat intr-un fisier extern pentru a putea fi ulterior incarcat fara a fi nevoie de a reselectare a led-urilor.

Tot ce modificam pe interfata grafica apare in acelasi timp si pe cubul contruit din componente reale.

Capitolul 6: Concluzii

Eu consider ca educatia din zilele de astazi pierde mult teritoriu datorita modului invechit de predare. Traim intr-o lume a tehnologiei, o lume in care copii de 2-3 ani sunt mai abili la utilizarea unei tablete sau a unui telefon mobil decat sunt parintii lor. Cand acesti copii ajung la scoala, tot ce se preda se face in stilul antic „cu creta pe tabla” fara animatii sau interactivitate. Fiind o obisnuiti de mici cu ecrane colorate, cu interactivitate si multa miscare vizuala, cand ajuns in scoala si totul este „lipsit de viata” este normal sa nu le starneasca dorinta de a invata si de a fi atenti pentru ca totul se desfasoara prea monoton si nu prezinta niciun interes.

Oamenii sunt fiinte sociabile, mult mai atente la stimuli vizuali ceea ce ii si determina sa invete mai usor cand totul este explicat si vizualizat. Din punctul meu de vedere solutia cea mai buna pentru a imbunatatii sistemul eduational actual este prin mai multa interactivitate, probleme explicate din punct de vedere practic al utilizarii in viata de zi cu zi, dar mai ales lectii cu mai multe interese vizuale. Aproape intotdeauna poate fi gasita o modalitate de a explica ceva prin anumiti stimuli.

Prin aceasta lucrare am incercat sa realizez o modalitate practica, atat vizuala cat si interactiva pentru stimularea atentiei si a dorintei de a invata. Invatam de mici sa utilizam tehnologia, sa interactionam cu diferitele dispozitive „smart”, iar aceasta lucrare exemplifica aceasta idee.

Pentru a realiza aceasta lucrare a fost necesara intelegerea conceptelor hardware si software din spatele creerii efectelor vizuale. A fost necesara o documentare ampla pentru realizarea partii hardware astfel incat cubul sa ofere vizual tot ceea ce se doreste a fi afisat fara a intampina dificultati si cu o posibilitate redusa de a se defecta. Nici partea software nu a fost usoara deoarece a fost o provocare si o analiza atenta a tuturor limbajelor existente pentru a obtine cel mai optim rezultat.

In concluzie, sunt de parere ca pasiunea te poate face foarte creativ oferind astfel oportunitatea de a gasi o modalitate de a-i molipsi si pe ceilalti cu o minima cantitate de atentie pentru a invata cele mai de baza concepte si a putea decide daca reprezinta un interes pentru specializare sau ramane doar la nivelul de cultura generala.

Bibliografie

1. Mamassian, Pascal; Landy, Michael; Maloney, Laurence T. (2002). "Bayesian Modelling of Visual Perception". In Rao, Rajesh P. N.; Olshausen, Bruno A.; Lewicki, Michael S. Probabilistic Models of the Brain: Perception and Neural Function. Neural Information Processing. MIT Press. pp. 13-36.

2. McManus, Sean; Cook, Mike. "Raspberry Pi For Dummies". (2013). John Wiley & Sons, Inc., Hoboken, New Jersey.

3. Gay, Warren. "Raspberry Pi System Software Reference". (2010). Technology in action.

4. Alexander, Charles; Sadiku, Matthew. (2004). "Fundamentals of Electric Circuits". McGraw-Hill.

5. Lowe, Doug. "JavaFX For Dummies". (2015) ). John Wiley & Sons, Inc., Hoboken, New Jersey.

6. Ochiul uman, http://www.despreochi.ro/ochiul-uman/, accesat aprilie 2017

7. Sistemul senzorial, https://ro.wikipedia.org/wiki/Sistem_senzorial, accesat aprilie 2017

8. Ochiul uman si vederea, http://www.portalroman.com/articole/Ochiul_uman_si_vederea-46.html, accesat aprilie 2017

9.Tehnica proiectiei cinematografice, https://ro.wikipedia.org/wiki/Tehnica_proiec%C8%9Biei_cinematografice, accesat aprilie 2017

10.Raspberry Pi: De la ce a pornit totul, http://www.compec.ro/istoric-raspberry-pi.html, accesat decembrie 2016

11. Raspbian, https://en.wikipedia.org/wiki/Raspbian, accesat decembrie 2016

12. What are the differences between models?, https://www.raspberrypi.org/help/faqs/#introWhatIs, accesat decembrie 2016

13. Raspberry Pi 3 Model B 1 Gb RAM, http://www.emag.ro/raspberry-pi-3-model-b-1-gb-ram-2525225/pd/DZ98M2BBM/?gclid=CjwKEAjwsLTJBRCvibaW9bGLtUESJAC4wKw1A1priRC_ZmSDjzbkJgJyD4RBFB9Zjn3no_4GevpUmBoCUQ_w_wcB&ref_cmp=ps&emagi_click_id=e4b26322444adb34227434c238f2047f, accesat decembrie 2016

14. Raspberry Pi 3 Model B, https://www.raspberrypi.org/products/raspberry-pi-3-model-b/, accesat decembrie 2016

15. What is JavaFX?, http://www.javafxtutorials.com/whatisjavafx/, accesat martie 2017

16. JavaFx, https://en.wikipedia.org/wiki/JavaFX, accesat martie 2017

17.Texas Instruments Incorporated (2017), SN54LS138, http://www.ti.com/lit/ds/symlink/sn54s138.pdf [Online], accesat ianuarie 2017

18. Texas Instruments Incorporated (2017), SN54HC574, https://www.ti.com/lit/ds/symlink/sn74hc574.pdf?HQS=TI-null-null-alldatasheets-df-pf-SEP-wwe [Online], accesat ianuarie 2017

19. 4x4x4 Blue Led Cube Kit, http://www.jameco.com/z/KIT-4X4-4x4x4-Blue-LED-Cube-Kit_2146329.html, accesat ianuarie 2017

20. Led Cube 8x8x8, http://www.instructables.com/id/Led-Cube-8x8x8/, accesat ianuarie 2017

21. All Spark Cube, http://www.allsparkcube.com/, accesat ianuarie 2017

22. 4096 Leds means the biggest led cube ever, http://hackaday.com/2012/10/21/4096-leds-means-the-biggest-led-cube-ever/, accesat iunie 2017

23. Python, https://ro.wikipedia.org/wiki/Python, accesat martie 2017

24. Rpi.GPIO 0.6.3, https://pypi.python.org/pypi/RPi.GPIO, accesat martie 2017

25. JavaFX Scene Builder, http://www.oracle.com/technetwork/java/javase/downloads/javafxscenebuilder-info-2157684.html, accesat aprilie 2017

26. JavaFx, https://en.wikipedia.org/wiki/JavaFX#Design_highlights, accesat aprilie 2017

27.JavaFX Overview, http://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-overview.htm#JFXST784, accesat aprilie 2017

28. Ce este Netbeans?, https://netbeans.org/index_ro.html, accesat martie 2017

29. Ausley, Luke; Moyerman, Joshua; Smith, Andrew; (2013), University of Central Florida. http://www.eecs.ucf.edu/seniordesign/fa2013sp2014/g15/docs/sd1.pdf [Online], accesat mai 2017

Similar Posts