Sisteme de Comunicare Intre Componentele Dispozitivului Oled

Cuprins

Cap 1 Istoric si descrierea tehnologiilor utilizate:

1.1 OLED x

1.2 RTC x

1.3 MCU x

1.4 CRYSTAL OSCILATOR x

1.5 Programming device (usb – ftdi serial converter)

1.6 BATTERY LI PO x

1.7 Programming Language x

Cap 2 Termeni folosiți

Cap 3 Funcționarea dispozitivului x

Cap 4 Scopul realizării proiectului x

4.1 Concept (de ce am dezvoltat acest device) întrebuințări x

Cap 5 Sisteme de comunicare intre componente dispozitivului x

5.1 Serial x

5.2 I2C x

5.3 Ideea de one wire bus x

Cap 6 Bill of materials and running costs x (trebuie completata cu piese pentru carcasa)

Cap 7 Diagrama block ( fiecare componenta in relație cu celelalte) x

Explicații

Cap 8 Schema electrica x

Explicații pentru folosirea unor componente

//Cap 9 PCB

//9.1 Program design PCB (scop, utilizare, funcționare, printscreenuri, pași, poze pcb)

//9.2 Prototipul realizat

Cap 10 Componente ansamblu : descriere , funcționare , pini, conexiuni

10. 1Carcasa (package)

10. 1 .1 Conceptul de printare 3D (ar putea fi descris in primul capitol)

10.1.2 Soft utilizat pentru realizarea machetei (carcasa) , poze, pașii, funcționare, printscreen uri, model final

10.1.3 Dispunerea componentelor in carcasă

10.2 Curea , descriere, printata 3d, interschimbabilă, plasarea unor componente pe curea

Cap 11 Programarea MCU (placa de dezvoltare si MC) x , mediul de dezvoltare Arduino (descriere si funcționare ) printscreenuri

Cap 12 Codul sursa final /

Cap 13 Descrierea aplicațiilor x

13.1 Ceas x

13.1.1 Analogic x

13.1.2 Digital x

13.1.3 Binar x

13.2 Aplicație pentru afișare temperatura x

13.3 Aplicație pentru afișare distanta (senzor proximitate prin ultrasunete) x

13.4 Aplicație pentru ocuparea timpului liber (joc) x

13.5 Aplicație desen x

Cap 14 Produsul finit

14.1 Instrucțiuni de folosire

Cap 15 Testarea componentelor

15.1 funcționare TrackBall

15.2 senzor temperatura

15.3 senzor proximitate

15.4 display x, ceas

15.5 Real Time clock (precizie in menținerea timpului)

Cap 16 Loc de îmbunătățiri, upgrade uri la senzori la aplicații scrise

Concluzii

Bibliografie

Introducere

xxxxxxxx

Capitolul 1

Noțiuni teoretice

OLED

Scurt istoric OLED

Termenul de OLED provine de la organic light-emitting diode adică dioda electro luminiscentă organica ceea ce înseamnă ca un dispozitiv OLED este de fapt o dioda electro iluminiscenta LED in care stratul de emisie electroluminiscent este de natura organica care emite un flux de lumina la aplicarea unui curent electric acestuia. Acest strat de semiconductor organic este situat intre doi electrozi, anodul si catodul. (trebuie sa reformulez)

În general, cel puțin unul din electrozii componenți este transparent pentru a permite transmiterea luminii prin acesta. Dispozitivele de tip OLED sunt de obicei folosite pentru realizarea display-urilor digitale ce se folosesc in telefoane mobile, televizoare, console de joc, monitoare, etc.

Aceste dispozitive, spre deosebire de cele LCD, nu necesita un sistem de iluminare a fundalului, backlight ceea ce reprezintă un avantaj in procesul de fabricație deoarece se pot obține astfel dispozitive de dimensiuni reduse ca si adâncime.

Afișajele de tip OLED se pot clasifica in 2 mari tipuri :

-Passive Matrix OLED ( PMOLED )

-Active Matrix OLED (AMOLED)

Display-urile active necesita un strat suplimentar format dintr-un film de tranzistoare care au rolul de a activa/dezactiva fiecare pixel în mod individual.

Fig. 1 Ecran PMOLED 128×128 pixeli 1.5 inch diametru

Tehnologia de Real Time Clock RTC

Un dispozitiv RTC este o unitate de calcul ce are rolul de a păstra noțiunea de timp, ca perioada de timp, actual, cu un anumit nivel de precizie si este obicei realizat intr-un format de circuit integrat ca apoi sa se folosească in sisteme complexe ce necesita detalii despre momentul curent de timp.

A nu se face confuzia intre aceste dispozitive si cele care sunt folosite pentru realizarea unei perioade de clock ce se folosește in circuitele integrate cum sunt controlerele si procesoarele pentru a putea sincroniza semnalele digitale ale acestora.

Deși nu este absolut necesara folosirea unui astfel de dispozitiv pentru menținerea noțiunii de timp si se poate realiza si de procesor obișnuit, dar folosirea unui RTC este recomandata deoarece are următoarele avantaje :

– Folosirea unui sistem separat eliberează procesorul principal de astfel de activități care pot deveni problematice in situații de încărcare ridicata.

– Consum mic de curent al RTC fata de un procesor sau controller.

– Acuratețe mai mare in comparație cu celelalte procedee de păstrare a timpului real.

– Sistem de backup cu baterie in cazul in care sursa principala de tensiune cedează, astfel, după revenirea energiei electrice, noțiunea de timp va rămâne curenta fără sa mai fie nevoie resetarea acesteia.

Fig. 1 Circuit integrat de RTC Dallas Semiconductor DS3234

MCU

Un microcontroler (abreviat uC, µC sau MCU) este un mic sistem de calcul pe un singur circuit integrat care conține un procesor, memorie, si periferice de intrare ieșire programabile. Microcontrolerele sunt realizate pentru aplicații de tip embedded, care spre deosebire de calculatoarele personale unde se folosesc microprocesoarele.

Aceste dispozitive sunt folosite in sisteme automatizate cum ar fi calculatoare pentru automobile, dispozitive de comanda si control, periferice pentru sistemele de calcul personale, electronice si electrocasnice si multe altele. Practic aproape orice dispozitiv pe care îl folosim in viața cotidiana se rezuma la aceasta inovație numita microcontrolerul pentru ca el sa funcționeze. Prin reducerea dimensiunii si a costului de fabricație a acestor circuite integrate s-a făcut posibila integrarea lor in tot mai multe dispozitive electronice.

Unele microprocesoare pot folosi cuvinte cu dimensiunea de doar 4 biți si au o frecventa a ceasului de doar 4KHz pentru a consuma cat mai putina energie cu putința (de ordinul miliwaților). Aceste controllere au capabilitatea de a păstra activa funcționalitatea lor in timpul așteptării execuției unei comenzi (cum ar fi apăsarea unei taste), astfel având un consum de energie foarte mic pe perioada așteptării (nanowati), desemnându-le potrivite pentru aplicații in care folosirea unor baterii ca sursa de energie pe termen lung este potrivita.

De asemenea, exista si controllere care au rolul de a executa operații cat mai rapid pentru a putea oferi rezultate aproape in timp real. Acestea pot fi procesoarele digitale de semnal (DSP) in care consumul de energie este mare datorita clock-ului de frecvente înalte pe care îl folosește si a perifericelor care necesita un nivel ridicat de energie pentru a fi alimentate.

Primul microcontroler realizat pe un singur chip a fost Intel 4004, un microcontroler pe 4 biți, prezentat in anul 1971. De-a lungul anilor costul a scăzut, devenind tot mai accesibil in zilele noastre, fiind folosite de pasionații de electronica având disponibile comunități tot mai mari de suport pentru diverse tipuri de microcontrolere.

In viitorul apropiat, memoria de tip MRAM ar putea deveni standard ca si tip de memorie folosita deoarece are o durata de viată ridicata si implementarea ei in procesul de fabricație pentru realizarea plachetelor este relativ scăzută.

Aproximativ 55% din microcontrolerele si microprocesoarele vândute la nivel global sunt cele pe 8 biți. Se poate menționa faptul ca într-o locuință obișnuită a unei tari cu nivel de dezvoltare obișnuit se regăsesc in medie 4 microprocesoare de uz general si aproximativ 12 microcontrolere. Un automobil cotat la un preț modest are in medie aproximativ 30 de microcontrolere instalate.

Un microcontroler poate fi considerat ca si un sistem de sine stătător care conține un procesor, memorie si unități periferice ce poate fi folosit in sisteme înglobate (embedded systems). Majoritatea microcontrolerelor pe care le folosim sunt înglobate in dispozitive pe care le folosim in mod obișnuit cum ar fi automobilele, electrocasnicele, telefoanele mobile, tablete, periferice pentru calculatoare.

De obicei programele obișnuite realizate pentru microcontrolere trebuie sa nu depășească memoria interna disponibila pe acesta deoarece ar fi costisitor sa se furnizeze un sistem extern, upgradabil de memorie. Astfel, compilatoarele si asamblori sunt folosite pentru a converti un limbaj de programare care este mai ușor de folosit de programator intr-un limbaj de programare care sa ocupe putina memorie si sa fie ușor de interpretat de controler. Acest tip de cod se numește cod mașină si este nivelul cel mai scăzut pe care un controler poate sa îl interpreteze.

In funcție de microcontroler, memoria poate sa fie volatila sau non volatilă. Cea volatila se mai numește Random Acces Memory (RAM ) si poate fi modificata de programator, pe când cea non volatilă care se mai numește Read Only Memory (ROM) este scrisa de obicei de compania producătoare si nu mai poate fi modificata de utilizator.

Multe microcontrolere pun la dispoziție pini de intrare/ieșire de uz general (GPIO). Acești pini sunt configurabili de către programator pentru a putea îndeplini diverse funcții. Ei pot fi setați ca pini de input sau de output. Când pinii sunt setați ca si pini de intrare, se folosesc pentru a prelua informații din mediul exterior cum ar fi informații de la senzori, iar când sunt setați ca pini de ieșire aceștia permit controlul diverselor periferice ce sunt atașați la aceștia cum ar fi afișaje, difuzoare, motoare, LED-uri. Multe sisteme înglobate se folosesc de senzori ce oferă semnale in format analogic pentru a putea funcționa. Astfel, a fost necesara introducerea convertoarelor analog-digitale (ADC). Din moment ce procesoarele sunt realizate sa interpreteze doar semnale digitale, ele nu pot funcționa folosind semnale analogice primite de la alte dispozitive. Din acest motiv se folosesc convertoarele digital-analogice care permit procesorului sa trimită semnalele de ieșire intr-un format analogic sau nivele de tensiune. Pe lângă convertoare, multe sisteme înglobate folosesc o varietate de contoare de timp. Unul dintre cele mai cunoscute versiuni de astfel de cronometre este contorul de interval de timp programabil (Programable Interval Timer – PIT). Un astfel de contor poate sa numere de la o anumita valoare spre zero sau sa crească de la o anumita valoare, depășind capacitatea unui registru pe care îl încarcă, întorcându-se la zero. In momentul in care acest contor a atins valoarea de zero trimite un semnal procesorului care îl va informa ca numărătoarea a fost încheiată. Acest mecanism este foarte folositor pentru aplicații in care timpul reprezintă un aspect important in funcționarea sistemului. Un exemplu ar fi folosirea unui astfel de contor pentru prelevarea programata la un anumit interval de timp a diferitelor valori oferite de senzori externi. Un alt circuit care este folositor pentru un microcontroler este cel de Modulație a lățimii pulsației (Pulse Width-Modulation – PWM) care facilitează controlul procesorului asupra motoarelor electrice, convertoarelor de putere, sintetizatoare audio si altele fără a consuma resurse suplimentare. De asemenea, exista si modulul de Transmitere/Recepție Asincron Universal (Universal Asynchronous Receiver/Transmiter – UART) care face posibila recepția si transmisia informației prin intermediul unei conexiuni seriale fără a necesita foarte multe resurse suplimentare procesorului. Aceasta tehnologie permite capabilitatea de a comunica folosindu-se protocoale de tip I2C sau SPI

Fig. 1 Microcontrolere ATMEL ATmega328 în două forme de prezentare

Oscilatorul cu cristal

Oscilatorul bazat pe cristal este un oscilator electronic ce se folosește de efectul piezoelectric al unui cristal ce vibrează pentru a genera un impuls electric la o frecventa foarte precisa.

Frecventa semnalului pe care acesta îl generează este folositoare pentru a păstra noțiunea timpului (ceasuri de mana cu cuarț), pentru a produce un semnal de clock stabil folosit in circuite integrate digitale si mai sunt folosite si pentru a stabiliza frecventele transmițătoarelor si receptoarelor radio.

Cel mai des întâlnit tip de cristal folosit in acest tip de oscilatoare este cuarțul de unde a provenit si numele lor de oscilatoare cu cristal însă se pot folosi si alte materiale piezoelectrice in acest scop cum ar fi ceramici policristaline.

Aceste oscilatoare cu cuarț au o gama de lucru intre câțiva zeci de kilohertzi la câteva sute de megahertzi. Anual sunt fabricate peste 2 miliarde de astfel de oscilatoare si sunt folosite cel mai des in ceasuri de mana, radiouri, telefoane mobile, calculatoare, dispozitive electrocasnice.

De asemenea, aceste oscilatoare se regăsesc si in echipamente de măsura si testare , generatoarele de semnal , numărătoare, si osciloscoape.

Un cristal este un solid ale cărui atomi, molecule sau ioni sunt poziționați într-o forma ordonata, in modele repetitive care se aplica pe toate cele 3 axe spațiale.

Avantajul cuarțului este ca variantele constantelor sale elastice si a dimensiunilor acestuia implica o dependenta foarte scăzută a frecventei de rezonanta a acestuia in raport cu temperatura.

Caracteristicile specifice ale acestuia depind de modul in care acesta vibrează si unghiul de taiere al cristalului (relativ la axele cristalografice ale acestuia). Acest lucru duce la un un oscilator sau filtru (in funcție de necesitate) de calitate deoarece frecventa sa de rezonanta este foarte stabila.

Modelarea electrica a unui cristal de cuarț se poate realiza ca o rețea de elemente ce au o impedanță mica serie si o impedanță ridicata in paralel.

Matematic, impedanța acestei rețele se poate scrie folosindu-ne de transformata Laplace in felul următor :

sau

Unde s este frecventa in forma complexa, si este frecventa unghiulara a rezonantei serie, iar este cea in paralel.

Frecvența caracteristică a unui cristal depinde modul și forma în care acesta a fost tăiat. Un astfel de cristal este tăiat astfel încât frecvența sa să fie definită standard la o temperatura de 25 °C. Acest fapt înseamnă ca deviațiile de frecvență se vor putea observa la supunerea cristalului la temperaturi ce vor fi diferite de această temperatură nominală.

Interiorul unui oscilator cu cristal pe baza de curat

Bateriile LI-PO

Bateriile Litiu Polimer sunt acumulatori reîncărcabili ce sunt compuși din multiple celule conectate in paralel. Aceasta grupare de celule este realizata pentru a furniza un curent ridicat de descărcare si câteodată se pot conecta in serie mai multe astfel de grupuri de celule pentru a putea obține o tensiune mai mare de alimentare.

Tensiunea unei baterii Li-Po variază intre 2.7V (descărcată) si 4.23V (incarnata). Un nivel ridicat de atenție trebuie acordat încărcării bateriilor Li-Po deoarece acestea se deteriorează daca tensiunea acestora depășește pragul critic de 4.235V.

Aceste baterii sunt capabile de un număr mediu de 350 de cicluri de încărcare – descărcare ca apoi sa le scadă capacitatea de încărcare pana la 80%, dar există astfel de baterii care rezistă si pana la 500 de cicluri.

Un avantaj foarte mare al acestor baterii este ca fabrica producătoare poate sa le confecționeze in aproape orice forma este nevoie, ce poate fi un aspect foarte important in cazul dispozitivelor ce au spațiul destinat bateriilor cu o forma speciala in care o baterie obișnuită nu ar putea fi folosita pentru a obține accesași capacitate de stocare.

De asemenea, un alt avantaj al acestor baterii este faptul ca sunt relativ ușoare in comparație cu alte baterii realizate prin tehnologii asemănătoare, cum ar fi bateriile Li-Ion, fiind astfel preferate in aplicații unde greutatea produsului final trebuie sa fie minima.

Fig. 1 Baterie Litiu-Polimer de mici dimensiuni

Exista câteva precauții ce trebuie sa fie îndeplinite pentru a putea folosi in siguranță astfel de baterii si anume:

Supraîncărcarea acestor baterii poate duce la explozii si incendii

Nu trebuie ca tensiunea bateriei sa scadă sub nivelul de 3V daca aceasta furnizează energie electrica unui consumator.

Doar încărcătoarele dedicate acestor baterii ar trebui folosite deoarece alte tipuri ar putea sa supraîncarce bateriile.

Daca bateria este scurtcircuitata exista riscul ca aceasta sa facă explozie.

Deteriorarea sau găurirea bateriilor poate provoca incendii sau chiar explozia acestora.

Limbajul de programare

Un limbaj de programare este un limbaj artificial creat pentru a facilita comunicarea instrucțiunilor de la programator către sistemul de calcul. Prin intermediul limbajului de programare putem crea programe ce vor fi folosite pentru a controla unitatea de procesare sau pentru a putea parcurge algoritmi.

Limbajul de programare este compus de obicei din 2 componente: sintaxa si semantica.

Sintaxa limbajului de programare este un set de reguli care definesc o combinație de simboluri ce sunt considerate a fi corect structurate intr-un program.

Sintaxa limbajului de programare este separata pe 3 nivele:

Cuvinte – nivelul lexical ce stabilește cum formează caracterele simboluri;

Fraze – nivelul gramatical ce stabilește cum simbolurile formează fraze;

Context – nivelul in care se stabilește la ce se refera obiectele sau variabilele, si daca tipul acestora este valid.

Semantica intr-un limbaj de programare este importanta deoarece definește limbajul in care este scris programul.

Au fost create mai multe moduri de descriere a semanticii limbajelor de programare, bazate pe logica matematica, si anume:

Semantica operaționala – sensul instrucțiunilor este specificat de procesarea ce este indusa când acestea se executa pe un sistem de calcul. In acest caz ne interesează cum este produs efectul acestei procesări.

Semantica denotativa – înțelesul efectul execuției instrucțiunilor este modelat prin obiecte matematice. Astfel, doar efectul este de interes si nu modalitatea de obținere al acestuia.

Semantica axiomatica – specifica proprietățile efectului execuției unor instrucțiuni exprimate ca afirmații.

Scopul acestui limbaj este de a se scrie programe de către un programator pentru ca un sistem de calcul sa realizeze calcule, sa parcurgă algoritmi sau sa controleze dispozitive externe acestuia cum ar fi scanere, roboti, imprimante, memorii externe. Limbajele de programare diferă de cele naturale prin faptul ca cele din urma sunt folosite doar pentru interacțiunea dintre oameni, in timp ce primele sunt folosite de oameni pentru a interacționa cu mașinile de calcul, dându-le instrucțiuni ce trebuie executate.

Limbajele de programare împrumută caracteristici de la limbajele naturale prin faptul ca ambele au atât o forma sintactica cat si una semantica si diferitele tipuri de limbaje artificiale se ramifica in diferite familii din forma sa generala. Exista si diferențe majore intre acestea cum ar fi faptul ca limbajul de programare are o forma precisa pe când cel natural care poate avea mai multe înțelesuri pentru acelasi cuvânt.

Aceste limbaje artificiale au fost dezvoltate de la zero, derivand din forma generala, fiecare tip in parte fiind modificat in functie de necesitatea folosirii acestuia. Desi au fost incercari de a realiza un limbaj de programare universal, acest lucru a fost imposibil pana in momentul de fata deoarece diversitatea domeniilor de aplicare este foarte vast si nu ar fi putut sa le cuprinda pe toate.

Necesitatea realizarii unei game vairate de limbaje de programare a dus la realizarea mai multor clase de limbaje pentru:

Programe care sa poată realiza managementul vitezei, simplitatea si dimensiunea sistemelor pe care ruleaza plecand de la microcontrolere pana la supercalculatoare.

Programe care cer cunostiinte de programare pronind de la nivelul incepatorilor pana la programatori experti.

Programe care au o dimensiune mica se pot scrie de programatori amatori pana la programe foarte vaste ce necesita implicarea unor echipe intregi de dezvoltare.

Programe care pot fi scrise doar odata, care nu sunt destinate modificarilor pana la programe ce trebuie sa fie in continua posibilitate de updatare.

Programe ce necesita un anumit tip de limbaj de programare, care poate sa fie preferential unui anumit grup de programatori.

Cap. 4 Funcționarea dispozitivului

Ceasul multisenzorial are, pe lângă funcțiile obișnuite ale unui orologiu, opțiunea folosirii unor aplicații cum ar fi un joc, un program de desenat de tip "paint", și posibilitatea citirii temperaturii și a distanței de la ceas la un obiect din planul îndepărtat. POZA CEAS

De asemenea, ora și data, sunt afișate în mai multe moduri și anume: ceas în format digital, în format analogic și în format binar folosind un set de buline colorate pentru reprezentarea valorilor pe ecranul OLED.

În următoarele rânduri sunt prezentate modurile de reprezentare a orei și datei a ceasului.

Formatul digital este primul ecran pe care dispozitivul îl afișează. S-a folosit un font de dimensiuni reduse, de culoare albastră, iar informațiile folosite sunt reprezentate pe două linii, prima reprezentând ora în formatul HH:MM:SS, iar cea de-a doua linie reprezentând data în formatul MM DD, YYYY (DD MM YYYY !). Această reprezentare a fost folosită deoarece producătorul integratului pentru menținerea orei exacte este formatat pentru piață americană. POZA ECRAN

Formatul binar este cel de-al doilea ecran pe care îl putem observa prin apăsarea butonului integrat în trackball. Acesta este reprezentat prin apariția unor buline de diferite culori pe 6 coloane, bulinele fiind atât pline cât și goale, fiecare coloană reprezentând pe rând anul, luna, ziua, ora, minutul și în cele din urmă secunda curentă. Anul este reprezentat prin afișarea diferenței dintre anul curent și anul de referință fixat la valoarea 2000. Prima coloană de la dreapta la stânga reprezintă secundele si este formata din 6 buline ce reprezintă puterile lui 2 de la 0 la 5. A doua coloană reprezintă minutele și este formată din același număr de buline. A treia coloană este formată doar din 5 buline și reprezintă orele. Următorul set de 3 coloane reprezintă ziua, luna și anul curent. Citirea acestei reprezentări se face prin adunarea bulinelor pline, poziția bulinei în coloană precizând astfel puterea lui 2 care se va aduna pentru a forma suma finală. Puterile lui 2 cresc în coloană de jos în sus. POZA ECRAN

Cel de-al treilea ecran ce apare prin apăsarea trackbalului este reprezentat de afișarea orei exacte prin intermediul unui ceas in format analogic. Această metodă de afișaj cuprinde toate cele 3 tipuri de reprezentare și anume: ora, minutul și secunda. POZA ECRAN

După vizualizarea acestor variante de reprezentare a orei exacte, prin apăsarea butonului de trackball vom accesa meniul ceasului ce dispune de 6 opțiuni suplimentare. Aceste meniuri sunt aranjate sub forma a 2 coloane cu 3 rânduri.

Mai departe vom prezenta denumirea și rolul acestor meniuri începând cu primul din partea stângă sus, meniul de joc. POZA ECRAN

Jocul pe care acest dispozitiv îl are disponibil este de tipul unei platforme care lansează o bilă către un perete de cărămizi numite blocuri. Utilizatorul trebuie să strângă cât mai multe puncte prin lovirea cărămizilor și să nu piardă bila dincolo de platformă. Sunt disponibile un număr de 3 vieți începând cu prima rundă, acestea scăzând la fiecare pierdere a bilei. Există blocuri ce necesită lovirea multiplă a acestora pentru a le putea sparge. POZA ECRAN

Cel de-al doilea meniu de la stânga la dreapta este cel de Paint. Acest program poate fi folosit pentru a crea și salva desenele create de utilizator. Programul dispune un set de culori pe 16 biți. In partea de jos a programului se pot observa de la stânga la dreapta următoarele opțiuni: încărcarea salvării, salvarea ecranului, alegerea culorii de desen, golirea ecranului si ieșirea din aplicație. POZA ECRAN

Pe al doilea rând de meniuri avem cel de-al treilea meniu, Temperatura. Cu ajutorul acestei aplicații putem citi informații despre temperatura ambientală furnizată de senzorul de temperatură atașat ceasului. Programul este scris astfel încât poate citi valorile furnizate de un număr de până la 3 senzori. În cazul în care temperatura citită de senzor scade sub 10 grade Celsius, pe ecran va apărea un dreptunghi albastru, iar în cazul în care temperatura crește peste 60 grade Celsius va apare pe ecran un dreptunghi de culoare rosie. POZA ECRAN

Următorul meniu este cel de Sonar, prin intermediul căruia se poate măsura distanța de la ceas la un obiect sau perete aflat în fața senzorului de proximitate. Afișarea valorilor se face atât in centimetri cât și în inchi. Acestui modul îi poate fi adaptat un buzzer care să genereze un semnal sonor ce își modifică frecvența semnalului generat odată cu modificarea distanței citită de acesta. POZA ECRAN

Penultimul meniu pe care îl avem în dreapta celui de-al doilea rând din tabelul de meniuri este cel care ajută utilizatorul sa seteze ora și data ceasului. Setarea secundelor a fost dezactivată in această formă de prezentare, dar poate fi activată prin modificarea codului sursă a programului. În rest, toți ceilalți parametri se pot modifica prin poziționarea cursorului sub aceștia (stânga-dreapta), ca apoi aceștia să se modifice prin mișcări de tip sus-jos ale joystickului. POZA ECRAN

În cele din urmă, s-a introdus în ultimul meniu, o funcție ce permite economisirea energiei prin stingerea ecranului, acesta fiind ușor de pornit în forma inițială prin apăsarea butonului de pe trackball.

Această funcție permite utilizarea unui nivel redus de energie, păstrând în fundal, ora și data. Pentru a nu exista probleme cu păstrarea unei ore exacte, dispozitivul se folosește de un circuit integrat ce are ca scop menținerea unei ore exacte chiar și în cazul în care este deschis circuitul de alimentare a microcontrolerului, integratul beneficiind de o baterie de backup, destinată doar funcționării acestui integrat. Acest modul este cel de Real Time Clock (RTC) și va fi dezbătut în detaliu în capitolele următoare.

Scopul realizării acestui proiect a fost crearea unui dispozitiv handheld care să fie de ajutor persoanelor ce au deficiente senzoriale, dar și persoanelor care lucrează în medii ostile, în care un astfel de dispozitiv ar fi de ajutor pentru detectarea în avans a unor parametrii fără a pune în pericol viața celui pus într-un astfel de impediment. Câteva exemple de aplicații pentru un astfel de dispozitiv ar fi detectarea distanței de la utilizator la un perete, în condițiile în care acesta are deficiențe vizuale sau ar putea fi folositor pompierilor care urmează să acceseze un imobil, în care s-a declanșat un incendiu, aceștia reușind să măsoare în avans temperatura incintei, ca apoi sa poată lua o decizie față de accesarea sau nu în condiții de siguranță a acestuia.

Acest ceas deține posibilitatea conectării unor astfel de senzori, urmând ca informațiile furnizate de aceștia să poată fi afișate pe ecranul dispozitivului. Pe lângă aceste particularități, ceasul a fost proiectat să poată fi folosit și ca un sistem de recreere, având disponibile aplicația de desenare și jocul. Mulțumită faptului că a fost folosit un mediu de dezvoltare relativ ușor de folosit, există întotdeauna posibilitatea adăugării de aplicații și senzori interschimbabili, reușind astfel să se modeleze dispozitivul după nevoia utilizatorului.

Sistemele de comunicare

În interiorul sistemelor de calcul, BUS-ul de comunicare asigură transferul de informație între componentele acestuia. Acest lucru se realizeaza în general, atât în interiorul unui sistem de calcul, cât și între mai multe sisteme de calcul.

Astfel, există două tipuri de BUS-uri de comunicare: BUS intern, folosit pentru comunicarea între componentele unui sistem de calcul cum ar fi procesorul și memoria și BUS extern, implementat pentru a facilita comunicarea între sistemul de calcul și componentele periferice ale acestuia, precum tastatura, mouse-ul, imprimanta.

Din punct de vedere al metodei de implementare a BUS-ului de comunicare poate fi de două tipuri: comunicare paralelă și comunicare serială.

Comunicarea paralelă realizează, după cum sugerează numele, transferul simultan de informație pe linii paralele de comunicație. Diferența față de comunicarea serială este aceea că sunt folosite mai multe conexiuni fizice între interfețele de comunicare și că în stadiul inițial de implementare al acestor două tehnologii, comunicarea paralelă era de n ori mai rapidă decât cea serială, unde n este numărul de canale folosite de interfața paralelă, daca viteza clock-ului folosit pe ambele interfețe de comunicare era aceeași.

Odată cu trecerea anilor s-a pus accent pe dezvoltarea unui sistem de mare viteză și astfel au apărut numeroase tehnologii ce au la bază comunicarea serială. Mai departe vom dezbate câteva dintre aceste tehnologii, folosite de altfel, în realizarea acestui proiect.

Printre sistemele de comunicare utilizate între componentele dispozitivului se enumeră: SPI, I2C, OneWireBus și TTL.

Serial Peripheral Interface (SPI), este un sistem sincron de comunicare serială, dezvoltat de compania Motorola, ce operează în mod full duplex. Acesta este folosit pe distanțe scurte și se implementează în sisteme integrate. Dispozitivele ce comunică folosind acest protocol funcționează în regim de master/slave, master-ul inițializând data frame-ul pentru transferul de informație. Sistemul este funcțional dacă există în componența ansamblului un singur master si unul sau mai multe salve-uri. Configurația SPI mai este numită și interfață serială cu 4 fire și din acest motiv se mai numește si Interfață Serială Sincronă (SSI). Această interfață este caracterizată prin intermediul a patru semnale de comunicare și anume: SCLK (Serial Clock), semnalul de clock care este furnizat de interfața setată ca master, MOSI (Master Output Slave Input), ce reprezintă semnalul ce realizează transferul de informație de la master spre slave, MISO (Master Input Slave Output), care reprezintă semnalul trimis de slave către master. În cele din urmă, semnalul SS (Slave Select) este acela care este trimis de master pentru a face distincția intre diferitele interfețe slave disponibile la comunicarea cu acesta.

Schemă bloc de funcționare a sistemului SPI

Sistemul de comunicare I2C este dezvoltat pe baza protocolului de comunicare serială și a fost pus în aplicare de compania Philips în anii 1980. Acest sistem a fost creat pentru a facilita comunicația la viteze scăzute între unitatea centrală de procesare și dispozitivele periferice ale unui sistemului de calcul. Acest sistem de comunicare folosește două canale de date, Serial Data Line (SDA) și Serial Clock Line (SCL), acestea necesită utilizarea unor rezistoare de tip Pull-Up.

Schema bloc a sistemului I2C. Principiul de funcționare

Acest sistem utilizează, de obicei, un spațiu de adrese între 7 și 10 biți (în funcție de dispozitivul utilizat se poate ajunge până la 16 biți) și viteza tipică de transfer este de 100 kbiți/s. Viteza minimă este de 10 kbiți/s, iar cea maximă este de 3,4 Mbiți/s.

I2C este foarte răspândit, ca și implementare, în sisteme embedded de experimentare cum sunt sistemele Arduino si Raspberry Pi, deoarece nu necesită conector standard între componenta periferică și restul sistemului.

În cele din urmă vom dezbate unul dintre cele mai ingenioase metode de comunicare pe interfață serială folosind tehnologia de OneWire BUS, în care transferul de date se realizează pe o singură linie de comunicație. Această tehnologie este asemănătoare cu cea I2C, cu precizarea că vitezele de transfer sunt mai mici la OneWire BUS, dar cu o distanță de comunicare mai mare față de I2C. Aceasta tehnologie a fost dezvoltată de compania Dallas Semiconductor și folosește în mod normal trei puncte de conexiune, dar se pot folosi și două puncte: DATA și GND.

Dispozitivele realizate cu scopul de a comunica prin intermediul acestui sistem au fost realizate folosind în general un package de tip TO92 dar și alte tipuri de carcase pentru circuite integrate.

Package de tip TO92 folosit in majoritatea senzorilor si perifericelor

ce folosesc tehnologia OneWire BUS

Majoritatea produselor ce funcțonează pe baza acestui principiu de comunicare sunt senzori de temperatură, umiditate, actuatori, memorii dar și altele.

În acest capitol se va prezenta lista de materiale ce au realizat dispozitivul, prețurile de achiziție și descrierea acestora.

Listă piese electronice pentru ceasul multisenzorial

Fig. 3 Schema experimentală breadboard

Fig. 4 Schema electrică a ceasului multisenzorial

Produsul finit a fost realizat folosind următoarele componente electronice:

Placă de dezvoltare Arduino Pro Mini 328 3.3V/8MHz

Display OLED 4D Systems 128-G2 128×128 Pixeli

Modul RTC DS1307 împreună cu rezonatorul cu cuarț având frecvența de 32.768 KHz

Baterie Litiu-Polimer 3.7 V 110 mAh

Trackball Blackberry

Senzor temperatură digital Maxim Integrated DS18B20

Senzor proximitate ultrasonic Maxbotix LV-EZ2

Încărcător baterie Li-Po MCP73831

Conectorul USB este atașat de modulul de încărcare

LED-ul de status este atașat de modulul de încărcare

Programator Arduino USB FTDI Serial 3.3V

Placa de dezvoltare Arduino Pro Mini

În continuare vom prezenta fiecare componentă și vom motiva folosirea acestora.

Cea mai importantă piesa a acestei realizări este unitatea de control, obținută prin intermediul utilizării unei plăci de dezvoltare Arduino Pro Mini 3.3V 8MHz.

Această placă de dezvoltare conține următoarele componente:

Microcontrolerul Atmel ATmega 328, versiunea ce funcționează la o tensiune de alimentare de 3.3V și are o viteză de clock de 8MHz.

Rezonatorul cu cuarț având frecvența de rezonanță de 8MHz.

Stabilizator de tensiune, cu tensiunea de ieșire de 3.3V.

LED de status roșu (este aprins constant în momentul alimentării plăcii de dezvoltare)

LED programabil verde (se poate programa să se aprindă în funcție de comenzile scrise de dezvoltator)

Buton de Reset

Rezistoare și condensatoare necesare funcționării și programării microcontrolerului.

Scopul alegerii acestei plăci de dezvoltare au fost următoarele:

Dimensiunile acesteia sunt reduse (33x18x0.8mm).

Suportă funcția de Auto-Reset, folositoare în momentul programării acesteia.

Funcționează la o tensiune de alimentare de 3.3V, acest lucru fiind absolut necesar pentru a putea utiliza o baterie Litiu-Polimer ce are o tensiune nominală de 3.7V. De asemeanea, utilizarea unei tensiuni de 3.3V are rolul de a consuma mai puțina energie într-un moment de timp dat, permițând astfel să se obțină o autonomie mai bună a dispozitivului.

Suportă alimentarea prin intermediul acesteia a mai multor dispozitive periferice cu un curent total de alimentare de maxim 150mA.

Datorită stabilizatorului de tensiune integrat utilizat, placa de dezvoltare beneficiază de protecție împotriva unor curenți de consum mai mari de 150mA.

Tensiunea de alimentare a plăcii de dezvoltare este cuprinsă într-un interval generos de la 3.3VDC până la 12VDC.

Există un număr impresionant de 14 pini digitali I/O și 8 pini analogici, ținând cont de dimensiunile efective ale plăcii.

Din cei 14 pini digitali, 6 pot fi folosiți ca ieșiri PWM (Pulse Width Modulation)

Programarea acesteia este facilă prin folosirea unui programator dedicat acesteia, folosindu-se de 6 pini de conexiune.

În cele din urmă, greutatea acestei plăci este doar de 2 grame, facilitând la realizarea unor dispozitive cât mai ușoare cu putință.

Fig. 5 Placa de dezvoltare Arduino Pro Mini. Pini de conexiune

Această placă de dezvoltare a fost realizată în jurul microcontrolerului, prezentând, în mare parte, suport de montare pentru acesta. Astfel, se oferă posibilitatea de experimentare în realizarea unui produs fără a mai fi nevoie de realizarea unui PCB cu acest scop.

Prin urmare, în alegerea plăcii de dezvoltare s-a ținut cont de fapt de puterea de procesare a microcontrolerului atașat acesteia, dar și de numărul pinilor de comunicare cu echipamentele periferice. Astfel, s-a ales un microcontroler care să aibă o putere minimă de procesare cu scopul obținerii unui produs cu durată de viață a bateriei de alimentare cât mai mare. Puterea de procesare a fost stabilită ca fiind suficientă în alegerea acestui microprocesor deoarece informațiile afișate pe ecranul dispozitivului nu necesită operații complexe de calcul a acestora, iar timpul de interogare a senzorilor atașați acestuia se dorește a fi mare deoarece un refresh rate ridicat ar duce la variații mari în informațiile afișate utilizatorului, introducând astfel erori de citire a senzorilor, nefolositoare utilizatorului final.

Vom prezenta în continuare microcontrolerul ATMEL ATmega 328 precizând caracteristicile și avantajele folosirii acestui microcontroler.

Tabel 1. Caracteristici microcontroler ATMEL ATmega328

Microcontrolerul ATmega 328 face parte din categoria microcontrolerelor RISC, având un consum redus de energie, cu un set de 131 de instrucțiuni – majoritatea lor executabile într-o singură perioadă de clock.

Fig. 6 Microcontrolerul ATmega328

cu packaging TQFP32

Acest microcontroler dispune de un număr de 32 registre pe 8 biți conectați direct la UAL (Unitatea Aritmetico-Logică), permițând astfel accesul simultan la 2 registre într-o singură instrucțiune. De asemenea, acesta dispune de o interfață serială TTL prin intermediul căreia se poate programa microcontrolerul. Alte interfețe de comunicare pe care acesta le dispune sunt următoarele:

O interfață de comunicare serială asincronă.

O interfață de comunicare serială SPI.

8 canale de comunicare analogice pe 10 biți.

14 canale comunicare digitale I/O.

2 canale analogice din cele 8 enumerate mai sus formează interfața de comunicare I2C

Consumul de curent al acestui microcontroler este descris de următorul tabel:

Tabel 2 Consumul de curent al microcontrolerului ATmega328

Avantajele folosirii acestui model de microcontroler sunt următoarele:

Consum redus de curent.

Număr suficient de registre disponibile.

Număr suficient de canale de comunicare digitale și analogice.

Plajă largă de temperaturi de lucru.

Curent de alimentare al perifericelor atașate ridicat.

Disponibilitatea multiplelor tehnologii de comunicare pe interfață serială.

Dimensiuni reduse ale packagingului.

Număr ridicat de instrucțiuni.

Un dezavantaj al acestui microcontroler ar putea fi spațiul relativ redus de memorie pentru încărcarea codului sursă, totuși fiind suficient pentru această aplicație.

Fig. 7 Schema electrică a plăcii de dezvoltare. Conexiunile microcontrolerului cu pinii de comunicare ale plăcii de dezvoltare

2)Ecranul OLED

În continuare se va prezenta ecranul folosit în realizarea produsului finit. Acest ecran este de tip PMOLED (Passive Matrix Oraganic Light Emitting Diode), cu o rezoluție de 128×128 pixeli și o diagonală a ecranului de 1.5 inchi fabricat de compania 4D Systems.

Caracteristicile ecranului sunt următoarele:

Tabel 3 Caracteristicile ecranului 4D Systems μOLED-128-G2-GFX

Acest ansamblu conține ecranul propriu-zis montat pe un PCB care facilitează de un procesor grafic, un slot pentru card microSD, o interfață de conectare cu 10 pini și două stabilizatoare de tensiune: una pentru ecranul OLED și una pentru procesorul grafic.

Pentru conexiunea ecranului la microcontroler vom folosi doar 5 din cei 10 PINI disponibili. În figura de mai jos putem observa această interfață și rolul fiecărui PIN din compunerea ei.

PIN-ul 1 (+5V) este folosit pentru alimentarea ecranului. Comunicarea serială dintre ecran si microcontroler se realizează cu ajutorul PINI-lor 3 (TX) și 5 (RX). Pentru masă se folosește PIN-ul 7 (GND), iar pentru resetarea ecranului utilizăm PIN-ul 9 (RES).

Fig.8 Interfața de comunicare cu microcontrolerul.

Fig. 8 Componentele ecranului OLED

1. Ecran cu diagonala de 1.5 inchi 2. Rezoluție ecran 128×128 pixeli

3. Procesor grafic Goldelox 4. Interfață conectare 5×2 PINI

5. Canale comunicare GPIO x 2 6. Slot card microSD

7. Ramă cu găuri de montare 8. Stabilizatoare tensiune x 2

Acest ansamblu poate funcționa în două moduri: modul serial slave și modul master.

Inițial, la achiziționarea ecranului, acesta este programat de către producător ca și master, ansamblul având procesorul grafic și fiind capabil sa afișeze imagini salvate pe un card microSD.

Pentru a putea utiliza ecranul în acest proiect a fost necesară programarea acestuia ca serial slave, pentru a putea comunica cu microcontrolerul și a primi informațiile ce trebuie afișate pe acesta.

Programarea ecranului a fost realizată cu ajutorul aceluiași programator USB FTDI Serial, utilizat la programarea microcontrolerului. Acțiunea efectivă de programare s-a realizat in mediul de dezvoltare a producătorului numit 4D Workshop 4 IDE.

Fig. 9 Schema electrică pentru programarea ecranului

Fig. 10 Montajul componentelor pe breadboard

În continuare va fi prezentată procedura de programare a ecranului, folosind mediul de dezvoltare 4D Workshop 4 IDE, urmând pașii de mai jos.

Fig. 9 Etapele programării ecranului drept slave serial device

3) Real Time Clock

Modulul de Real Time Clock (RTC) este una din componentele esențiale realizării acestui dispozitiv, fără de care nu s-ar putea menține ora exactă cu un consum redus de energie. Microcontrolerul poate fi programat să mențină ora exactă, dar nu este un lucru pe care dorim să îl realizăm deoarece ar mări consumul de energie și ar putea pierde ora exactă în momentul resetării acestuia sau opririi alimentării acestuia.

Pe de cealaltă parte, modulul de RTC nu depinde de microcontroler pentru a menține ora exactă și nu necesită alimentarea acestuia cu aceeași sursă de curent folosită la alimentarea microcontrolerului. Modulul RTC facilitează de o baterie externă de backup, de mici dimensiuni, folosită doar pentru alimentarea integratului în momentul decuplării sursei principale de energie. O baterie cu capacitatea de stocare de 48mAh este capabilă să alimenteze continuu circuitul RTC pentru o perioadă de aproximativ 10 ani, dacă acesta este păstrat la o temperatură ambientală de 25°C, integratul având un consum de curent mediu de 300nA.

Acest integrat este realizat de compania Dallas Semiconductor și este modelul DS1307. Integratul măsoară secundele, minutele, orele, zilele, ziua săptămânii, luna și anul, ținând cont de anii bisecți până în anul 2100.

Circuitul este realizat astfel încât să țină cont de lunile care au mai puțin de 31 zile calendaristice, iar ora poate fi prezentată atât în formatul 24h cât și în formatul 12h cu indicator AM/PM.

Memoria RAM are dimensiunea de 56 biți, este nonvolatilă, și este asitată de bateria de backup.

Fig. 10 Asignația pinilor pentru integratul DS1307

Comunicarea dintre modul RTC și microcontroler se realizează prin intermediul unei conexiuni de tip I2C, iar pinii de conectare către microcontroler sunt pinul 5 (SDA) și pinul 6 (SCL). Pinii 1 (X1) și 2 (X2) sunt destinați conectării la rezonatorul cu cuarț, ce trebuie să aibă frecvența de rezonanță de 32.768 KHz. Alimentarea circuitul se realizează prin pinul 8 (VCC) la o tensiune de 3.3V, fiind alimentat de microcontroler. În momentul în care este întreruptă alimentarea de la microcontroler circuitul este comutat automat astfel încât acesta să se alimenteze de la bateria de backup, conectată la integrat prin intermediul pinul 3 (VBAT). Circuitul de alimentare al integratului este închis prin pinul de masă 4 (GND). În realizarea dispozitivului prezentat nu a fost utilizat pinul 7 (SQW/OUT), nefiind necesar semnalul periodic dreptunghiular generat de RTC.

În lanțul de comunicare serială I2C, modulul DS1307 funcționează ca un dispozitiv de tip slave, master-ul fiind microcontrolerul. Când tensiunea Vcc scade sub valoarea de 1.25 x VBAT circuitul RTC închide conexiunea cu microcontrolerul pentru a evita transmisiunea unor informații eronate acestuia. În momentul în care VCC scade sub valoarea lui VBAT modulul RTC intră într-o stare de funcționare economică funcționând pe baza energiei furnizate de bateria de backup. Dacă sursa de alimentare principală redevine activă și tensiunea acesteia este cel puțin egală cu VBAT+0.2V atunci se va realiza comutarea alimentării înapoi la tensiunea VCC.

Caracteristicile integratului RTC DS1307 sunt prezentate în tabelul de mai jos:

Tabel 4 Caracteristicile modulul RTC Dallas DS1307

În concluzie, alegerea utilizării acestui circuit integrat pentru RTC a fost motivată de dimensiunile reduse ale modulului, consumul redus de energie al acestuia, existența unui sistem de backup pentru a nu trebui setată ora și data la fiecare resetarea a dispozitivului și precizia menținerii orei exacte.

4) Bateria Litiu-Polimer

Similar Posts