FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN SLAVICI TIMIȘOARA [301970]

FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLAVICI” TIMIȘOARA

UNIVERSITATEA “IOAN SLAVICI” [anonimizat]. Molnar Florin Matei

ABSOLVENT: [anonimizat] 2017, in Romania s-au înregistrat peste 27.000 de accidente rutiere. In speranța reducerii numărului m-[anonimizat] a participanților in trafic.

Telefoanele mobile au o mare importanta in viața de zi cu zi. Deși in trecut a [anonimizat], azi tind sa fie in centrul tuturor activităților noastre.

[anonimizat]-[anonimizat]. [anonimizat]3 player la mixer pentru DJ. Un smartphone poate face toate acestea cu ușurință si multe extra.

[anonimizat] a fost deja inventat va puteți pune in practică imaginația datorita noilor platforme de dezvoltare online..

[anonimizat] a [anonimizat], o configurație de laborator și pasiunea pentru electronică. Însă imaginea sa schimbat de-a [anonimizat] a [anonimizat]: pasiunea pentru electronică.

[anonimizat] o [anonimizat] a internetului.

Un produs care a făcut uz de cele menționate mai sus și din multe alte motive și a [anonimizat] "Arduino". De la introducerea sa în 2005, termenul "Arduino" a devenit foarte popular în domeniul electronicii.

Arduino este o [anonimizat]. [anonimizat] o [anonimizat], lumină pe un senzor etc. și transformându-l în

Fig. 1.0 Placa de dezvoltare Arduino Uno R3

ieșire, [anonimizat], [anonimizat]. (Fig. 1.1)

Placa Arduino poate fi programată să facă orice prin programarea pur și simplu a [anonimizat] a comunica cu calculatorul dvs. și o [anonimizat]-uri etc.

Scopul lui Arduino este de a introduce lumea electronicii pentru oamenii care au putina sau nici o [anonimizat], artiștii etc. [anonimizat], schemele, software-ul sunt disponibile în mod deschis tuturor utilizatorilor.

Prin urmare, plăcile Arduino pot fi cumpărate de la furnizori cat timp sunt disponibile în configurația dorită sau puteți să vă creați propria placa dacă doriți, de exemplu, puteți descărca schema de pe site-ul oficial Arduino, cumpărați toate componentele conform specificaților de proiectare, asamblați toate componentele.

Pentru a programa placa Arduino, trebuie să folosim IDE furnizat de Arduino. ID-ul Arduino se bazează pe prelucrarea limbajului de programare și suportă C și C ++.

Împreunând cele doua tehnologii ușor accesibile au apărut diverse proiecte care au fost menite in scop publicitar, utilitar sau hobby. (Fig. 1.2)

Fig. 1.1 Afișaj LED programabil

Ideea proiectului merge mai departe decât exemplele găsite momentan pe piață implementând unelte care fac utilizarea unui astfel de dispozitiv sigur pentru șoferi, menținând baza pe care a fost construit. Aplicarea de tehnologii noi reînvie această aplicație si sporește siguranța în trafic.

Capitolul II.

Afișaje LED programabile

2.0. Evoluția afișajelor LED

Pornind de la firmele luminoase create pe baza de neoane, acestea erau create pentru un anumit client, la comanda, nefiind schimbate pe durata vieții lor. Fie ca e vorba de un bar, o sala de jocuri sau un supermarket cu toții cunoaștem aceste reclame luminoase (Fig. 2.0)

Fig. 2.0 Reclama luminoasa pe baza de neon

Odată cu apariția LED-urilor, reclamele luminoase puteau transmite diferite mesaje, fiind limitate doar de caracteristicele fizice. Textul reprezentat pe aceste panouri putea fi schimbat de pe un calculator, acest lucru prelungind viața firmelor luminoase chiar si după schimbarea domeniului firmei.

Următorul pas in evoluția afișajelor LED o constituie ușurința cu care informația poate fi transmisa. Prin ajutorul unei telecomenzi sau a unui telefon se poate trimite direct informația pe afișaj. De asemenea minimalizarea tehnologica dă viață posibilității de redare a imaginilor cat si a textului multicolor. Dimensiunile afișajelor au devenit minimaliste, in unele cazuri fiind chiar incorporate cu alte sisteme.

Afișajele digitale ce folosesc LED-uri au acum o importantă majoră pe piața reclamelor, fie ca sunt simple litere, mesaje in derulare sau de dimensiuni mai ce permit afișarea unui format video mare.

Reclamele digitale sunt pe piață de 30 de ani, ceea ce nu reprezintă prea mult timp, fata de reclamele clasice electrice (becuri, neon) care sunt in jurul nostru de mai bine de un secol. Cu toate ca apărut recent, afișajele LED , sunt una dintre sursele principale pentru reclame, datorita necesitații de mentenanță scăzută si ușurinței de programare. [1][20][18][19]

2.1. Piata reclamelor si evolutia

O renumita revista, Signs of the Times, scria in anul 2004 despre popularitatea in creștere a diverselor forme de reclama luminoase din anul 2000 pana in 2003. Conform studiului realizat de către revista interesul pieței in reclamele electrice clasice a scăzut in timp ce necesitatea pieței pentru reclame LED a crescut. Afișajele led, fie ele reclame sau simple semne, pe decursul anilor de studiu, au câștigat interes într-o piață relativ stagnanta. Studiul a arătat ca, in 2003, afișajele LED au fost folosite in raport de 7,2% pe când cele fluorescente 46,3% si 41,7% cele cu neoane.

Piața pentru afișaje LED a crescut cu peste 50% in următori ani, si producătorii s-au bucurat de o creștere imensă in cerere. Valoarea estimate a vânzărilor a crescut de la 625 de milioane de dolari la peste un bilion. In continuare odată cu apariția ecranelor LED ce permit afișarea de conținut la rezoluție mare este așteptată o creștere tot mai mare, aplicabilitatea acestora fiind enorma.[1]

Prin evoluția tehnologiei afișajele LED, programabilitatea lor, capabilitatea de redare a conținutului de rezoluție ridicată ajunge sa fie elementul perfect pentru publicitatea țintuită, memorabila si foarte ușor de observat.

In mare parte afișajele LED folosite in scopuri publicitare care au câștigat cea mai mare parte din piață sunt cele simple, pe care lumea le pornește si oprește. In cazul majorității producătorilor de reclame, aceștia folosesc in totalitate afișaje LED.

Piața afișajelor Led continua sa aibă un potențial ridicat din punct de vedere a produselor vândute cat si valoarea lor pe piață, zona cu cea mai mare fiind in aria de înlocuire a semnelor convenționale (Hotel, Pensiune, Orare, Titluri). Cea mai mare piață de desfacere fiind situate in Statele Unite ale Americi.[20][18][19]

În timp ce afișajele LED sunt frecvent utilizate în aplicații de la distanta, mai des întâlnite sunt afișajele publicitare de mesaje mari, adesea combinate cu lumini statice cu incandescență. Afișajele LED comandate de la distanta permit proprietarilor să modifice publicitatea la orice ora, cu datele demografice ale clienților, vânzările, evenimentele sau promoții. Afișajul poate genera și venituri suplimentare prin vânzarea de spațiu publicitar prin segmentarea acestuia (Fig 2.1).

Fig. 2.1 Afișaj LED cu publicitate segmentata

Afișajele LED sunt superioare decât versiunile electronice statice, fie ca acestea sunt cu tuburi cu incandescenta sau neon. Programabilitatea lor deschide o piață orientata și o interactivitate, in același timp se poate retine sau actualiza de la distanta un conținut nou, de actualitate. Aceste caracteristici ale afișajelor LED pot sa fie de nelipsit pentru majoritatea utilizatorilor finali comerciali, asta se întâmpla deoarece calculatoarele sunt de nelipsit pentru întreprinderi de aproape orice dimensiune și tip. Piața este deschisă și produsele sunt disponibile; aplicarea pe scară largă a afișajelor cu LED-uri transforma natura semnelor comerciale în aer liber.[1][19][20]

2.2. Formatele afisajelor LED

Deși sunt o noutate în industria de semnalizare cu LED-uri, afișajele LED sunt împărțite în trei categorii generale: Ecrane Video (Afișaje LED la scala mare), Placi pentru redare a mesajelor (Afișaje LED la scala mijlocie) si sisteme incorporate. Afișajele LED câștiga teritoriu pe fiecare dintre aceste fronturi. Afișajele, in special cele de dimensiuni mari, fata de ecranele video mari, alimentate cu tehnologia tuburilor cu tub catodic (CRT), au câștigat foarte multa întâietate în decurs de zece ani – o schimbare foarte evidentă în înlocuirea aproape ecologică a ecranelor CRT pe stadioane sportive prin ecrane LED.

Afișajele publicitare a mesajelor cu incandescență au suferit o soartă similară. În timp ce neonul care este în continuare alegerea pentru cei ce își doresc o atmosfera retro, tehnologia de iluminare preferată pentru literele de canal. Afișajele de scala mijlocie ce afișează simple texte si grafici rudimentare, din ce în ce mai populare alternative. Succesul afișajelor LED din aceasta categorie de publicitate depinde de prețurile și capacitățile de performanță ale LED-urilor care nu sunt roșii și care se află în paralel cu competiția clasica si mult cunoscuta, neoanele roșii.

In continuare sunt prezentate exemplele cele mai des întâlnite si mai sus menționate cu mici detalii despre fiecare dintre ele.[1][18][19][20]

2.2.0. Afișaje LED la scala mare

Afișajele LED multicolore la scala mare pot varia in funcție de destinația lor, de la televizoare pe tehnologie LED la afișajele zborurilor din aeroporturi. (Fig. 2.2)

Fig. 2.2 Afișaj LED conținut mixt scala mare

Nu putem vorbi de calitate a imaginii la afișajele Led mari, ele nefiind concepute in acest scop. Sunt de obicei folosite in reclame publicitare/informative. Energia electrica consumata de aceste panouri este redusa comparabil cu predecesoarele lor dar si redusa fata de noile tehnologii folosite in televizoarele qled si oled. [1][19][20]

Aceste afișaje reprezintă apogeul in materie de conținut afișat, atât pentru volum cat si pentru programabilitatea ușoară.

Partea negativa a acestor afișaje e prețul ridicat, cu cat panoul este mai mare cu atât crește prețul de producție, componentele necesare fiind mai costisitoare.

Avantajele acestor tipuri de afișaje sunt :

Capacitatea de a afișa conținut variat la o scala mare

Luminozitate ridicata

Durata lungă de viată

Dezavantajele majore :

Întreținere scumpa

Software pentru operare personalizat

Consum de energie ridicat

2.2.1. Afișaje LED la scala mijlocie

Majoritatea afișajelor LED de pe piață se încadrează in aceasta categorie, ele având un raport calitate preț foarte bun. Deși limitate in funcții si calitate afișajului au câștigat foarte mult teren pe piață datorită producerii lor in masă de cate un număr mare de firme. (Fig 2.3)

Fig. 2.3 Afișaj LED la scala mijlocie

Acesta afișaje sunt folosit de obicei in vitrinele sau in exteriorul unităților comerciale pentru a afișa un conținut divers. Culorile disponibile sunt limitate, informația prezentata deseori rămâne aceeași, controlul informațiilor afișate se face prin intermediul calculatorului. [1][19][20]

Aceste afișaje nu pot reda imagini, in cel mai bun caz se afișează icoane care sunt create in același mod ca literele afișate sau semnele de punctuație.

Avantaje :

Preț atractiv

Consum scăzut de energie

Rezistente la montare exterioara

Dezavantaje :

Conținut limitat de informații si format

Rezoluție redusa

Schimbarea conținutului poate fi imposibila

2.2.2. Afișaje LED la scala mica

Afișajele LED la scara mica sunt des folosite in proiecte personale sau subsisteme. Acestea au avut cel mai mult de câștigat din punct de vedere al multitudini de domenii in care pot fi aplicate.

Ușurința programării si adaptabilității către scopul final cat si un preț redus aloca un loc ridicat in topul folosirii de către dezvoltatori. (Fig 2.4)

Fig. 2.4 Afișaj LED la scala mica

De la proiecte personale până la proiecte de crowdfund aceste afișaje sunt folosite cel mai mult datorita aplicabilității lor in proiecte unice sau de zi cu zi. In combinație cu o plăcută electronica de dezvoltare aceste afișaje pot sa fie folosite de la crearea unu simplu ceas, la afișarea unui joc sau a unei informații specifice. [1][19][20]

Avantaje:

Preț scăzut

Integrabilitate ușoara

Portabilitate

Dezavantaje:

Culorile si rezoluția afișajului limitate

Limitare in aplicații

Necesita cunoștințe de programare pentru integrare

2.3. Comentarii asupra afișajelor studiate

Datorita naturii proiectului orientarea a fost către afișajele dimensiuni reduse. Aplicabilitatea lor, cat si libertatea de manipulare a informațiilor afișate pe acest tip de afișaje le adjudeca pentru alegerea ideala.

Multitudinea de unelte puse la dispoziție pe internet pentru modelarea lor in rezultatul final cat mai aproape de ideea de baza a proiectului ușurează timpul si efortul depus.

Nu in ultimul rând prețul accesibil face ca proiectul sa fie fezabil pentru un viitor crowdfunding.

Capitolul III.

Proiectarea modelului afișajului

Proiectarea modelului afișajului urmărește direcțiile cel mai des întâlnite la produsele similare care se găsesc pe piață, dar in același timp încearcă sa aducă un nou sistem de interacționare cu afișajul. Proiectul face prin utilizarea sa, un sistem de folosit pentru siguranța rutieră. El este alcătuit din doua părți: partea de afișaj, care recepționează informațiile, si partea de interfață, un aplicație dezvoltata inițial pentru telefoane cu sistem de operare Android.

In fazele de proiectare si realizare a afișajului au fost urmați pași de mai jos :

Proiectarea si realizarea afișajului

Proiectarea si realizarea componentei software

Testarea sistemelor

In subcapitolele următoare am prezentat in detaliu pași de mai sus.[14]

3.0. Proiectarea și realizarea afișajului

Afișajul LED a pornit de la sistemele găsite pe piață actuala si este alcătuit din trei parți principale, modulul bluetooth HC-05 fiind responsabil cu primirea datelor de la componenta software, plăcuta de dezvoltare Arduino Uno R3 programata pentru a primi si transmite instrucțiuni, matricea de led-uri MAX 7219 afișează informațiile primite.[2][5]

Din Fig 3.0 observam pârțile componente si structura sistemului din punct de vedere electronic si operațional:

Modulul bluetooth HC-05

Plăcuta de dezvoltare Arduino Uno R3

Matricea LED Max 7219

Pe lângă acestea am folosit conectori si un breadboard pentru a realiza conexiunile dintre.

Părțile componente ale sistemului vor fi prezentate mai jos in detaliu.

Fig. 3.0 Schema afișajului LED

După cum se poate observa din Fig. 3.1 modulele de matrice LED au fost legate cascadat după cum urmează :

VCC – alimentarea modulelor cu +5V care continua cascadat

GND – legătura la nul care continua cascadat

CS, CLK, DIN/DOUT – transmiterea de date tip serial, DOUT comunicând cu DIN de la următorul modul

Fig. 3.1 Legăturile electrice ale afișajului LED [21]

Pentru legătura primului modul matrice s-au folosit următoarele conexiuni :

VCC la +5V – alimentarea modulelor cu +5v

GND la GND – nulul pentru alimentarea modulelor

CLK la Pin 12 – Pulsurile transmise de către Arduino pentru a sincroniza datele

DIN la Pin 11 – linia principală pentru trimis data către modulele matrice

CS la Pin 10 – folosit de către plăcuța arduino pentru a activa/dezactiva modulele matrice

Modulul Bluetooth a fost conectat la plăcuța Arduino prin înserierea unor rezistente de 1kΩ

respectiv 2kΩ după cum urmează :

TX – RX – comunicarea serial între modulul bluetooth si plăcuța Arduino

RX – rezistor 1kΩ – TX – comunicarea serial intre modulul bluetooth si plăcuța Arduino

RX – rezistor 2kΩ – GND scăderea voltajului din circuit

GND – GND – nulul de alimentare a modulului bluetooth

+5V – +5V – alimentarea cu 5V a modului bluetooth

De reținut că sa folosit un circuit simplu de schimbare a tensiunii (rezistor de 2kΩ și 1kΩ) între pinul Arduino Tx și pinul HC-05 Rx, deoarece Arduino rulează la 5V și pinul nostru HC-05 Rx se presupune că va funcționa la 3.3V.

Alimentarea plăcuței Arduino Uno R3 se va face de la orice sursa USB sau alimentator de perete.[2][5][11][14][16]

3.0.0. Unitatea centrala a afisajului LED

Unitatea centrală este formată dintr-o plăcută de dezvoltare de tip Arduino Uno R3 bazată pe microcontrolerul ATmega328P (Fig. 3.2).

Fig. 3.2 Plăcuța de dezvoltare Arduino Uno R3

Ea dispune de 20 de intrări / ieșiri digitale (dintre care 6 pot fi utilizate ca ieșiri PWM și 6 pot fi utilizate ca intrări analogice), un rezonator de 16 MHz, o conexiune USB, o mufă de alimentare, o programare în circuit (ICSP) antet și un buton de resetare. Aceasta plăcută este configurata cu tot ce este nevoie pentru a susține microcontrolerul. Pentru a alimenta plăcuța se poate folosi un cablu USB sau un alimentator de perete compatibil.

Plăcuța de dezvoltare Adruino Uno diferă de toate plăcutele apărute anterior prin faptul că nu dispune de un chip FTDI USB-to-serial. Fata de predecesoarele ei, acesta dispune de un ATmega16U2 programat ca un convertor USB-serial. Datorita acestui microcontroler auxiliar plăcuța are propriul bootloader USB, care oferă posibilitatea unu programator sa scrie un alt program pentru acesta.[10]

Plăcuțele de dezvoltare Arduino Uno, se bucura de o comunitate mare de utilizatori si un set extins de biblioteci pentru diversele extensii care sunt disponibile pe piață. Printre cele mai faimoase extensii pentru Arduino se numără cele de wireless, afișaje si butoane. De asemenea sunt disponibile kit-uri pentru dezvoltatori începători ce conțin breadbord-uri, fire, conectori, le-uri.

R3 din numele plăcuței de dezvoltare este dat de faptul ca plăcuța a ajuns la a treia revizie, ce conține fata de predecesoarele acesteia o mulțime de modificări :

-Microcipul controllerului USB a trecut de la ATmega8U2, care avea un flash de 8k, la ATmega16U2, care are un flash de 16k.

-A fost suplimentat numărul de pini, toți aceștia fiind duplicați ai pinilor anteriori. Pinii I2C (A4, A5) au fost de asemenea scoși pe marginea plăcutei lângă AREF. Există un pin IOREF lângă pinul de resetare, care este un duplicat al pinului 5V.[10]

-Butonul de reset este poziționat acum lângă conectorul USB, făcând-o mai ușor de acționat in momentul in care se adaugă o extensie la plăcuța de dezvoltare.

Plăcuța de dezvoltare are în componența sa :

LED-ul: 13. Există un LED încorporat conectat la pinul digital 13. Când pinul este HIGH, LED-ul este pornit, când pinul este LOW, este oprit.

VIN. Tensiunea de intrare a plăcii Arduino atunci când utilizează o sursă externă de alimentare (spre deosebire de 5 volți de la conexiunea USB sau de la altă sursă de alimentare reglată). Se poate furniza tensiune prin acest pin sau, dacă se furnizează tensiune prin mufa de alimentare, aceasta poate fi accesată prin acest pin.

5V. Sursa de alimentare regulată folosită pentru alimentarea microcontrolerului și a altor componente de pe placă. Aceasta poate veni fie de la VIN printr-un regulator de pe placă, fie poate fi furnizată de USB sau de o altă sursă de alimentare cu 5V regulată.

3V3. O sursă de 3.3 volți generată de regulatorul de la bord.

GND – Pini de nul

IOREF. Pin destinat furnizării de tensiune la care funcționează microcontrolerul. O extensie adecvata poate sa citească tensiunea de la pinul IOREF si poate sa acceseze sursa de alimentare corespunzătoare. De asemenea poate sa activeze traductorii de tensiune necesari pentru ca ieșirile sa funcționeze cu 5 V sau 3,3 V.

RESET. Aducerea acestei linii la LOW resetează microcontrolerul. În mod obișnuit, pinul este utilizat pentru a adăuga un buton de resetare la extensiile care blochează accesarea butonului de pe placa.

RX/TX. Pini seriali folosiți pentru a primi (RX) și a transmite (TX) date seriale TTL. Pinii 0 și 1.

Pini 2, 3. Pinii pentru întreruperi externe care pot sa fie configurați pentru a declanșa o întrerupere la o valoare mică, o margine în creștere sau în scădere sau o schimbare a valorii.

Pini 3, 5, 6, 9, 10 și 11. Asigura ieșirea PWM pe 8 biți cu funcția analogWrite ().

SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Acești pini acceptă comunicarea SPI utilizând biblioteca SPI.

TWI: pinul A4 sau SDA și pinul A5 sau SCL. Suporta comunicarea TWI folosind biblioteca Wire.

Pinii A0-A5. Fiecare dintre acești pini oferă 10 biți de rezoluție (adică 1024 valori diferite). În mod prestabilit, se măsoară de la 0 la 5 volți, deși este posibil să se schimbe capătul superior al domeniului lor folosind funcția AREF pin și funcția analogReference ().

ATmega328 are 32 KB (cu 0,5 KB ocupat de bootloader). De asemenea, are 2 KB de SRAM și 1 KB de EEPROM (care poate fi citit și scris cu biblioteca EEPROM).

Arduino Uno are o serie de facilități pentru comunicarea cu un computer, o altă placă Arduino sau alte microcontrolere. ATmega328 oferă comunicație serială UART TTL (5V), disponibilă pe pinii digitali 0 (RX) și 1 (TX). Un ATmega16U2 de pe placa de canale această comunicare serială prin USB și apare ca un com port virtual la programul de pe computer. Firmware-ul 16U2 utilizează drivere USB standard standard și nu este nevoie de driver extern. Cu toate acestea, în Windows, este necesar un fișier .inf. Software-ul Arduino (IDE) include un monitor serial care permite trimiterea de date textuale simple la și de la bord. LED-urile RX și TX de pe placă vor clipi când datele sunt transmise prin cip USB-to-serial și conexiune USB la computer (dar nu și pentru comunicarea serială pe pinii 0 și 1).

O bibliotecă SoftwareSerial permite comunicarea serială pe oricare dintre pini digitali ai plăcuței Uno. ATmega328 suportă, de asemenea, comunicarea I2C (TWI) și SPI. Software-ul Arduino (IDE) include o bibliotecă Wire pentru simplificarea utilizării magistralei I2C; consultați documentația pentru detalii. Pentru comunicarea SPI, utilizați biblioteca SPI.

În locul solicitării unei acționări fizice a butonului de resetare înainte de încărcare, placa Arduino Uno este proiectată astfel încât să poată fi resetată prin software care rulează pe un computer conectat. Una dintre liniile de control al fluxului hardware (DTR) ale ATmega8U2 / 16U2 este conectată la linia de resetare a ATmega328 printr-un condensator de 100 nanofarazi. Când această linie este afirmată (scăzută), linia de resetare scade suficient de mult pentru a reseta cipul. Software-ul Arduino (IDE) utilizează această capacitate pentru a vă permite să încărcați cod prin simpla apăsare a butonului de încărcare din bara de instrumente a interfeței. Aceasta înseamnă că bootloader-ul poate avea un interval de timp mai scurt, deoarece scăderea DTR poate fi bine coordonată cu începutul încărcării. Această configurație are alte implicații.

Când Uno este conectata la un computer care rulează Mac OS X sau Linux, acesta se resetează de fiecare dată când se face o conexiune cu software-ul (prin USB). Pentru următoarea jumătate de secundă, bootloaderul rulează pe Uno. Deși este programat să ignore datele defectuoase (adică orice altceva decât încărcarea unui nou cod), va intercepta primele câteva octeți de date trimise plăcii după deschiderea unei conexiuni. Dacă o schiță care rulează pe placă primește o configurație unică sau alte date la prima pornire, asigurați-vă că software-ul cu care comunică așteaptă o secundă după deschiderea conexiunii și înainte de a trimite aceste date. Placa Uno conține o urmă care poate fi tăiată pentru a dezactiva resetarea automată. Plăcuțele de pe ambele părți ale traseului pot fi lipite împreună pentru a le reactiva. Este numită "RESET-EN". De asemenea, este posibil să dezactivați resetarea automată conectând un rezistor de 110 ohmi de la 5V la linia de resetare.

Arduino Uno poate fi programat cu (Arduino Software (IDE)). Selectați "Arduino / Genuino Uno din meniul Tools> Board (în funcție de microcontrolerul de pe placa dvs.) Pentru detalii, consultați referințele și tutorialele ATmega328 pe Arduino Uno vine preprogramat cu un bootloader care vă permite să încărcați un nou cod fără a utiliza un programator hardware extern. Acesta comunică utilizând protocolul STK500 original (referință, fișiere de antet C) Puteți, de asemenea, ocoli bootloader-ul și programa microcontrolerul prin intermediul antetului ICSP (In-Circuit Serial Programming) utilizând ISD Arduino sau (AT89S2 / 8U2) este dotat cu un bootloader DFU, care poate fi activat de:

Pe plăcile Rev1: conectați jumperul de lipire pe spatele plăcii (în apropierea hărții din Italia) și apoi reselectați 8U2.[3][10][16]

Pe panourile Rev2 sau mai târziu: există un rezistor care trage linia HWB 8U2 / 16U2 la masă, făcând mai ușor introducerea în modul DFU.

Apoi puteți utiliza software-ul FLIP al lui Atmel (Windows) sau programatorul DFU (Mac OS X și Linux) pentru a încărca un nou firmware. Sau puteți utiliza antetul ISP cu un programator extern (suprascrierea aplicației de bootloader DFU).

3.0.1. Modulul bluetooth HC-05

Fig. 3.3 Modulul bluetooth HC-05

HC-05 (Fig.3.3) este un modul folosit in diferite proiecte de dezvoltare ce se bucura de o utilizare la scala foarte larga. El poate adăuga posibilitatea de a transmite instrucțiuni wireless în ambele sensuri pentru proiectele in care este folosit. Puteți conecta acest modul pentru a stabili comunicația între două plăcute de dezvoltare precum Arduino sau pentru a transmite informații intre o plăcuța Arduino si orice dispozitiv cu funcționalitate Bluetooth, precum un telefon, laptop sau accesorii care dispun de comunicație bluetooth. Există multe aplicații Android care sunt deja disponibile, ceea ce face acest proces mult mai ușor. [4]

Modulul comunică cu ajutorul USART la o rată de transfer de 9600, prin urmare este ușor să interfață cu orice microcontroler care acceptă USART. De asemenea, putem configura valorile implicite ale modulului utilizând modul de comandă. Deci, dacă căutați un modul Wireless care ar putea transfera date de la computer sau telefon mobil la microcontroler sau invers, atunci acest modul ar putea fi alegerea potrivită pentru dvs. Cu toate acestea, nu vă așteptați ca acest modul să transfere materiale multimedia precum fotografii sau melodii. Pentru scopuri mai extinse se pot utiliza modulele destinate transmiteri pachetelor mari de informații precum modulul CSR8645.

Modulul are in componenta sa următoarele:

Activare/Cheie – Pin utilizat pentru a comuta între modurile de Date (stare joasa) și modul de comandă AT (stare înaltă). Din fabrica acest modul este în modul de Date.

Vcc – Alimentarea modulului. Se conectează la o tensiune de alimentare de +5V

Gnd – Pinul de nul al modulului, se conectează la nulul sistemului.

TX – Tot ce va fi primit prin Bluetooth va fi dat de acest pin ca date serial.

RX – Toate datele serial furnizate acestui pin vor fi transmise prin Bluetooth.

State – Pinul de stare este conectat la un Led pe modul, se poate folosi ca si pin pentru verificarea stării de funcționare a modulului bluetooth.

LED – Indică starea modulului, acesta va clipi o data la doua secunde daca modulul a este in mod comanda, clipind repetat însemnând ca așteaptă o conexiune, clipind de doua ori pe secunda însemnând ca conexiunea a fost stabilita.

Buton – Folosit pentru a controla pinul cheie/activare pentru a comuta între modurile date și comanda.

In următoarele rânduri sunt prezentate setările de fabrica ale modulului HC-05 :

Numele implicit Bluetooth: "HC-05"

Parola implicită: 1234 sau 0000

Comunicare implicită: Slave

Modul implicit: Modul de date

Modul de transfer al datelor: 9600, 8, N, 1

Mod de comandă Baud Rate: 38400, 8, N, 1

Firmware-ul implicit: LINVOR

Specificațiile tehnice pentru modulul HC-05:

Modul serial Bluetooth pentru Arduino și alte microcontrolere

Tensiune de operare: 4V până la 6V (de obicei + 5V)

Curent de operare: 30mA

Interval: <100m

Funcționează cu comunicațiile serial (USART) și TTL compatibile

Urmează protocolul standardizat IEEE 802.15.1

Utilizează spectrul de răspândire a frecvenței (FHSS)

Poate funcționa în modul Master, Slave sau Master / Slave

Poate fi ușor interfațat cu telefoane cu laptop sau mobil cu Bluetooth

Rata baudului acceptată: 9600,19200,38400,57600,115200,230400,460800.

Am utilizat acest modul datorita prețului si domeniului de utilizare.[4]

3.0.2. Modulul matrice LED Max 7219

Fig. 3.4 Modul matrice LED Max 7219

Matricea LED MAX7219 (Fig. 3.4) are un driver integrat de afișare a catodului comun de intrare/ieșire, care conectează un microprocesor cu un LED digital cu 7 cifre pe 7 segmente sau un afișaj cu bare grafice sau 64 de LED-uri independente. Ceea ce include un encoder BCD de tip B, un circuit multi-scan, un drive word segment, dar are de asemenea un memorie RAM static 8 * 8 folosit pentru stocarea fiecărei date. Un singur registru extern este utilizat pentru a seta curentul segmentului pentru fiecare LED.

O interfață serială convenabilă cu patru fire poate fi conectată la toate microprocesoarele obișnuite. Fiecare instrucțiune poate fi adresată în momentul actualizării, fără a trebui să rescrieți toate afișajele. MAX7219 permite de asemenea utilizatorului să selecteze sau să nu codifice pentru fiecare dată. Întregul dispozitiv conține un mod de oprire redus de 150μA, control analogic și digital de luminozitate, un registru de limită de scanare permite utilizatorului să afișeze 1-8 biți de date și un mod de testare pentru ca toate LED-urile să emită lumină.

E nevoie doar de trei pini pentru a controla matricea de LED-uri, de reținut faptul ca aceasta se poate folosi in cascada cu alte module LED.

Modulul are in componenta sa :

Vcc – Alimentarea modulului. Se conectează la o tensiune de alimentare de +5V

Gnd – Pinul de nul al modulului, se conectează la nulul sistemului.

DIN, CLK si CS – Pini folosiți pentru a transmite datele de la plăcuța Arduino către matricea de LED-uri.

Modulul matrice LED Max7219 va fi in continuare folosit, transmițându-se instrucțiuni prin serial.[13][

3.1. Proiectarea și realizarea componentei software Arduino

Arhitectura software pentru plăcuța Arduino a fost creata si redata conform structurii din Fig. 3.5. Dintre elementele principale ale acestei arhitecturi face parte blocul numit Inițializare în care diversele variabile și funcții de bibliotecă sunt inițializate si aduse la starea necesară pentru buna funcționare a modelului. [14]

Programul pentru placuta Arduino a fost creat in Arduino IDE. Mediul de dezvoltare integrat Arduino este alcatuit din:

Editorul de text – ce permite scrierea codului,

o zona de mesaje unde se afiseaza mesaje catre utilizator si starea actuala a programului

o consola text unde se afiseaza problemele pe parcursul compilarii sau incarcarii

o bara de instrumente ce contine butoanele de functii des folosite

meniurile de functii gererale

Softul permite incarcarea programelor odata ce au fost compilate pe placutele de dezvoltare

Arduino si Genuino. Programele ce sunt scrise cu ajutorul acestui soft se numesc schite. Programul salveaza fisierele cu extensia .ino. Editorul de text folosit de catre Arduino IDE are aceleasi functii principale ca si oricare alt editor de text. Printe aceastea se numare functia de taiere, lipire, cautare, inlocuire. Zona de mesaje se oferă feedback în timp real concomitent cu salvarea, exportarea programelor, de asemenea afiseaza erorile aparute in timpul acestor operatii. Consola reda textul ce este trimis din software-ul Arduino IDE, incluzand mesajele de eroare alaturi de informatiile indicand pozitia in editorul de text cat și alte informații. In fereastra in partea din dreapta jos se afiseaza placuta ce urmeaza a fi programata cat si portul serial virtual configurat pentru transmisia datelor. Butoanele de pe bara de instrumente acceseaza verificarea și încărcarcarea programelor, cat si creearea lor, permit deschiderea si salvarea schitelor cat si deschiderea monitorului serial.[2][3][5][8][9]

Fig. 3.5 Arhitectura program plăcuța arduino

În continuare vor fi prezentate pe rând schemele logice și funcționarea în detaliu a blocurilor care alcătuiesc Fig. 3.5.

3.1.0. Blocul de initializare

Blocul de inițializare (Fig. 3.6) a fost implementat în cadrul funcției setup (). Această funcție este executată atunci când plăcuța de dezvoltare Arduino Uno R3 este pusă sub tensiune, înaintea funcției main (). Ea este utilizată pentru a inițializa variabile, setări pentru diverși pini și pentru a începe utilizarea bibliotecilor. Funcția de configurare va funcționa o singură dată, după fiecare pornire sau resetare a plăcii Arduino.[16][22]

Fig. 3.6 Inițializare program plăcută Arduino Uno R3

În cadrul funcției setup () se inițializează matricea de leduri, intensitatea luminoasa pentru matrici si bus-ul serial între Arduino și bluetooth cu o rata Baud de 9600.

In continuare voi prezenta modul de mapare a caracterelor si ușurința cu care ele pot fi customizate. Biblioteca folosește un set de 95 de caractere ASCII, in partea de program prin folosire unui editor de text se poate schimba aparenta literelor si semnelor. In continuare in Fig. 3.7 este exemplificat modul de creare a unei mese pentru caracterul ASCII dorit.

Luam spre exemplu litera majuscula P, încercuită, daca copiem linia de cod comentata la final cu „P” intr-un editor de text vom începe sa vedem ușurința cu care se poate crea un simbol.

In editorul de text luam fiecare grup de cifre si îl aranjam sub cel anterior, la final, litera „P” va fi redata de ansamblul cifrelor 1, acest ansamblu fiind starea LED-urilor active pentru masca simbolului, in cazul nostru litera P.

In cadrul bibliotecii MaxMatrix, creata de „ad.imhoff”, există posibilitatea alegeri direcției de translatare si afișare a literelor cat si rotirea lor.[2][3][5][7][12]

Fig. 3.7 Măștile caracterelor utilizate [7]

3.1.1. Corpul Principal

In cadrul corpului principal, se efectuează trei operațiuni(Fig. 3.8). Dintre cele trei, intensitatea luminozității modulelor matrice LED, a fost stabilita in urma testelor cu o pre-asamblare a carcasei finale. Idea primara a fost de a seta luminozitatea automat cu ajutorul a doi foto-rezistori, însă datorita naturii carcasei proiectului aceasta direcție a fost abandonata. Dintre funcționalitate si estetic am ales direcția esteticului. Din aceasta cauza, variabila de intensitate va rămâne neschimbata, In continuare discutam despre pârțile ramase in corpul principal, începerea comunicării serial pe o banda de 9600 si activarea modulelor LED pentru afișare.[2][5][16][22]

Fig. 3.8 Corpul principal al aplicației Arduino

Comunicarea dintre interfața utilizatorului si afișajul LED se executa prin intermediul modulului bluetooth care comunica cu ajutorul bibliotecii SoftwareSerial.h, o bibliotecă standard Arduino. Modulul bluetooth funcționează ca un client serial. Toate comenzile si instrucțiunile ce țin de conectare si securitate sunt tratate de modulul bluetooth HC-05. Modulul bluetooth se conectează prin RX/TX, semnal intrare/ieșire, și acționează ca un port serial, Asemănător cu felul in care o face un computer. Un terminal client bluetooth din cadrul aplicației Android de pe telefon stabilește si comanda conexiunea și permite celui ce utilizează telefonul să trimită și să primească texte. In cazul nostru datele vor merge într-o singura direcție, de la telefonul cu aplicația Text Back Control către afișajul LED.

Matricea led transmite din momentul inițializării un text presetat „Text Back” pe modulele matrici LED, direcția si modul de afișare a textului fiind definit cu ajutorul bibliotecii MaxMatrix. Daca modulul bluetooth nu primește nici o informație din partea aplicației Android, mesajul prestabilit va rămâne pe ecran si va continua sa ruleze pana la următoarea instrucțiune primita prin intermediul modulului bluetooth sau pana când utilizatorul alege sa deconecteze de la sursa de curent întreg sistemul de afișare LED.[2][5][8]

3.1.2. Bucla principala

In cadrul buclei principale, se operează pe baza de indici, de la programul inițial, s-au modificat instrucțiunile in funcție de indici si s-au stres dar si adăugat indici pentru a controla conținutul de pe afișajul LED. Astfel am rămas cu doua ramuri principale după cum este descris in Fig. 3.9.

Fig. 3.9 Schema logica a buclei principale

In cadrul buclei principale, lucrurile sunt simple, sunt două condiții de îndeplinit, fie la primirea indicelui „1” se așteaptă un text de redat pe afișajul LED, fie indicele „0” la care ecranul este golit. Aceasta soluție este data de faptul ca bucla principala nu poate fi părăsită, ea fiind o parte integrata a programului plăcuței Arduino.[2][5][23][16]

3.2. Proiectarea și realizarea componentei software Android

Pentru partea de interacțiune a utilizatorului cu afișajul LED am ales după un model întâlnit, sa dezvoltat aplicația online, simplificând astfel lucrurile. Platforma creata de Massachusetts Institute of Technology, este o platforma educativa unde se pot vedea si crea aplicați mobile.

După cum se poate vedea in Fig. 3.10. platforma permite crearea interfeței pentru aplicație, unde se pot aplicat elemente de control, media, senzori, harți. Proiectul de la care am plecat nu se

Fig. 3.10. Segmentul de design aplicație http://ai2.appinventor.mit.edu

potrivea necesitaților impuse de idea pentru afișajul LED. Am menținut parte de transmitere de date prin bluetooth, alături cu indici de comanda, de unde am dezvoltat aplicația pe doua ecrane de control, diferite doar prin modul de interacțiune cu utilizatorul. [5][15][23]

Mai departe, după cum se poate observa in Fig. 3.11., platforma oferă posibilitatea alcătuirii prin blocuri a acțiunilor posibile in aplicația Android.

Fig. 3.11. Segmentul de blocuri operaționale aplicație

Aplicația de control are la baza câteva funcții simple pentru ca utilizatorul sa comunice cu afișajul LED după cum se poate observa in schița de mai jos (Fig. 3.12.) in prima pagina unde ajunge utilizatorul odată ce a intrat in aplicația de control.

Fig. 3.12. Structura ecran principal

In cadrul primei pagini din aplicatie, avem dupa cum urmeaza :

Butonul pentru lista de conexiuni bluetooth. Acesta face posibila conectarea aplicatiei la afisajul LED. La apasarea butonului va fi afisata lista cu dispozitive bluetooth, dupa selectarea HC-05, utilizatorul va fi intors la pagina principala.

Textul status la conexiuni bluetooth. Aceasta eticheta va permite utilizatorului sa urmareasca starea conexiuni la afisajul LED. In momentul in care o conexiune nu exista la modulul bluetooth va fi afisat textul „Not connected” de culoare rosie. De indata ce o conexiune bluetooth a fost stabilita, textul va fi schimbat automat in „Connected” de culoare albastra.

Butonul pentru comanda vocala activeaza serviciul de la Google prin care se introduce un text prin simpla rostire a cuvintelor.

Butonul pentru dezactivarea afisajului LED, sterge de pe ecrane orice text ar fi afisat.

Spatiul pentru introducere manuala functioneaza impreuna cu butonul de trimitere, acestea fiind intuitive pentru orice utilizator. Textul se introduce dupa care se apasa butonul Send.

Textul status pentru mesajul transmis. Aici va aparea orice text transmis catre ecranul led, fie ca este introdus manual sau prin dictare.

Butonul de schimbare pagina ne duce la a doua pagina a aplicatiei.

Dupa cum se vede in Fig, 3.13 aplicatia a fost construita visual simplu, fara fundal care sa atraga privirile sau sa deranjeze.[6][15][17][23]

Fig. 3.13. Pagina principala aplicatie Android

A doua pagina din aplicatie (Fig. 3.14), permite utilizatorului sa trimita mesaje presetate. Aceasta pagina a fost creata pentru situatii des intalnite, pentru a facilita utilizarea aplicatiei cat si ca si o dovada de concept. In teorie un afisaj ca acesta poate fi folosit in multiple situatii si imprejurari.

Fig. 3.15 Pagina secundara a aplicatiei Android

Pentru viitoare versiuni ale aplicatiei Android, aceste butoane vor fi programabile insa pentru moment mentinand tema proiectului au fost programate ca si simple butoane. Ideea ramane de a transmite mesajele in siguranta din cauza intentiei de folosire a afisajului de la bordul unui autoturism.

In cazul folosiri acestei aplicatii in alte domenii sau situatii textul butoanelor poate fi programat pentru a defini noi informatii cu ajutorul unui program de dezvoltare pentru aplicatii mobile, platforma MIT sau orice limbaj de programare in diferite programe de dezvoltare pentru platforme gen Windows sau Mac OS.[15][17][23]

Dupa cum se vede in figura de mai jos (Fig. 3.16.), au fost retinute unele elemente din prima pagina, pentru a usura folosinta aplicatiei, conexiunea la bluetooth, textele de status.

Fig. 3.17. Structura ecran secundar

Butoanele cu text presetat sunt in aplicatie pentru a transmite simple mesaje care definesc situatii des intalnite. Pe aceasi structura, afisajul poate fi folosit pentru a trimite mesaje informative in alte situati decat in cazuri de siguranta rutiere. Pentru sali de asteptare in cadrul policlinicilor private, pentru cozi de asteptare in cazul birourilor ce deservesc publicul, proiectul are o aplicabilitate mare pentru cazurile unde de exemplu e necesara afisarea unor numere cu incrementare sau mesaje personalizate in scopuri informative sau publicitare.[2][5][15][17][23]

3.3. Testarea afisajului si aplicatiei

Testarea initiala a afisajului led a constat in verificarea functionarii corecte. S-a verificat impreuna cu ajustari in parametri :

afisarea corecta a textului demonstrativ

elementele de control

configurarea meselor de caractere

Alimentarea afisajului conduce la initializarea afisajului, din modelul si software-ul initial

am schimbat textul demonstrativ in „Text Back”

Fig. 3.18. Mesaj de intampinare la initializarea afisajului

După inițializare sistemul intră în bucla principală fără condiții de oprire. De aici sunt apelate funcțiile de afisare text pe ecran sau intrare in stare de repaus a afisajului.

Pentru incarcasarea finala a proiectului s-a ales ca viteza de derulare sa fie fixa, si intensitatea stabilita in functie de conditii de lumina si intuneric astfel incat afisajul sa poata sa fie citit cu usurinta.

Dupa cum se vede in figura 3.19. testele au fost efectuate simuland conditii de zi si noapte, cu folia protectoare ce va fi aplicata la carcasa finala pentru estetica modelului.

Fig. 3.19. Testare intensitate LED, simulare conditii zi/noapte

In pagina principala a aplicatiei, in prima faza se apasa butonul pentru conectare la bluetooth pentru a accesa lista dispozitivelor bluetooth disponibile si favorite(Fig 3.20.). Se alege dispozitivul HC-05 dupa care aplicatia revine la ecranul anterior.

Fig. 3.20. Lista de selectie dispozitiv bluetooth

Odaca cu revenirea la pagina anterioara, textul de status al conexiuni bluetooth se va schimba din „Not connected” in „Connected”. Din figura 3.21. se observa functionarea corespunzatoare a acestei functii informative din cadrul aplicatiei Android.[6]

Fig. 3.21. Testare text status bluetooth

Mai departe s-a testat transmiterea textelor, fie prin voce, introducere manuala cat si prin intermediul butoanelor presetate. Viteza de derulare a fost setata tinand cont de faptul ca textul de pe ecran se schimba dupa terminare unei iterari complete. Sistemul parea in testele initiale sa manifeste o latenta crescuta, insa studiind mai aproape codul arduino de inserare si extragere a caracterelor, s-a observat ca acestea sunt stocate intr-un buffer care nu poate fi intrerupt la jumatate. Mai departe, afisajul a fost testat prin functia de display off, ceea ce trece matricele LED in asteptare. Dupa cum se vede in Fig.3.22. placuta Arduino cat si modulul HC-05 raman active, bucla principala fiind neintrerupta, insa pe afisaj nu se transmite nici un text.[2][5]

Fig. 3.22. Afisajul in mod de asteptare

Dupa testele efectuate, reglajele si modificarile efectuate, afisajul se va incarcasa, avand cablul de alimentare pentru a fi utilizat la orice sursa disponibila utilizatorului cu caracteristicele necesare. Modalitatea de incarcasare poate fi modificata in functie de necesitatea amplasarii afisajului. De asemenea initial a fost folosita o placuta de dezvoltare Arduino Nano, insa dupa diferite teste functionale, am hotarat trecerea la o placuta Arduino Uno R3. Datorita specificatiilor superioare a placutei Uno fata de Nano aceasta a fost aleasa pentru a comanda afisajul.

Capitolul IV.

Concluzii

Aceasta lucrare imlpementeaza un afisaj LED comandat printr-o aplicatie Android, a fost gandita pentru a fi folosita de soferi in comunicarea pericolelor rutiere celorlalti participanti la trafic.

Lucrarea incepe cu prezentarea diferitelor afisaje LED disponibile pe piata si avantajele cat si dezavantajele acestora. Se urmareste prin acest studiu alegerea compatibila cu sistemul final. Dintre modelele de afisaje disponibile pe piata, nicicare nu sunt sigure pentru a fi folosite de catre soferi. Dintre cele gasite cu aceasta caracteristica, au fost respinse majoritatea datorita factorilor lipsa.

Proiectarea hardware a modelului a constat in conectarea elementelor constructive la Arduino Uno R3 si construirea unui program Android pentru a comanda afisajul. Afisajul in sine este alcatuit din o placuta de dezvoltare, un modul bluetooth si opt module matrice LED. Aplicatia a fost conceputa cu ideea de a avea mai multe posibilitati pentru utilizator de a transmite pe afisaj mesaje de importanta poate uneori vitala.

Idea afisajului a pornit de la simpla idee ca, conducand automibilul personal, nu am putut transmite conducatorului auto aflat in spatele automobilului meu cum ca are o defectiune fie ea minora sau cu implicari de siguranta rutiera.

Prin faptul ca des intalnesc asemenea situatii care nu le pot rezolva fara ca situatia sa fie inteleasa gresit, am hotarat sa construiesc acest afisaj.

4.0. Limitarile si posibilele implementari ale mafisajului

Limitarile modelului sunt date doar de situatie si domeniul de utilizare, dupa cum am aratat in aceasta lucrare. Afisajele led cat si placuta ce controleaza afisajele pot fi inlocuite de elemente superioare acestora.

Pentru imbunatatirile la modul de control al afisajului acesta ar putea fi folosit doar prin comanda vocala cu module incluse in circuitul electronic al afisajului.

De asemenea domeniul de utilizare dicteaza felul in care poate fi conceput afisajul si comandat fie de pe o aplicatie compatibila PC, mobil Android sau IOS, pana la utilizarea afisajului prin intermediul internetului.

Bibliografie

https://www.ledsmagazine.com/articles/2004/11/promising-markets-emerge-for-led-signage.html

http://www.instructables.com/id/Arduino-SPI-7-Bi-color-LED-Matrix-Scrolling-Text-D

https://www.arduino.cc/en/guide/Environment

https://components101.com/wireless/hc-05-bluetooth-module

8×8 LED Matrix MAX7219 Tutorial with Scrolling Text & Android Control via Bluetooth

http://ai2.appinventor.mit.edu/

https://www.riyas.org/2013/12/online-led-matrix-font-generator-with.html

https://codebender.cc/libraries#collapseSoftwareSerial

https://www.arduino.cc/en/guide/Environment

Arduino Uno Rev3

http://www.instructables.com/id/LED-Scolling-Dot-Matrix-Font-Graphics-Generator-/

https://github.com/t3chguy/arudino-maxmatrix-library

https://www.maximintegrated.com/en/products/power/display-power-control/MAX7219.html

Molnar-Matei, F., Sisteme încorporate, notițe de curs, 2018

Ciocârlie H., Universul limbajelor de programare, ediția II a rev. – Timișoara: Orizonturi Universitare, 2013

Jeremy Blum,Exploring Arduino: Tools and Techniques for Engineering Wizardry, editia I., ISBN-13: 978-1118549360, Wiley, 2013

Barry Burd, Beggining Programming with Java for Dummies, 3rd edition, Wiley, New Jersey, 2013

Dumitru Mnerie, Lucian Ladar, Gabriela-Victoria Mnerie, Marketing General, Eurostampa, Timisoara, 2012

Andrea Westall, Value-LED, Market-Driven, Institute for Public Policy Research, 2001

https://www.prnewswire.com/news-releases/global-led-lighting-market-2023–key-players-are-phillips-ge-osram-cree-eaton-virtual-extension-dialight-zumtobel-samsung–sharp-300557828.html

Software proiectare electronică Fritzing, http://fritzing.org/home/

Brian W. Evans, Arduino programming notebook, August 2007

H. Ciocârlie; Universul limbajelor de programare. Ed. A 2-a rev. – Timișoara: Orizonturi Universitare, 2013,

Anexa 1.

Codul sursă aferent sistemului Arduino:

Initializarea bibliotecilor

#include <MaxMatrix.h>

#include <SoftwareSerial.h>

#include <avr/pgmspace.h>

Maparea caracterelor ce vor fi afisate pe ecran

PROGMEM const unsigned char CH[] = {

3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space

1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !

3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // "

5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // #

4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $

5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // %

5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // &

1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // '

3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // (

3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // )

5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // *

5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // +

2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // ,

4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // –

2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // .

4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /

4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0

3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1

4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2

4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3

4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4

4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5

4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6

4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7

4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8

4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9

2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // :

2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ;

3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // <

3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // =

3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // >

4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ?

5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @

4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A

4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B

4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C

4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D

4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E

4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F

4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G

4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H

3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I

4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J

4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K

4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L

5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M

5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N

4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O

4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P

4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q

4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R

4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S

5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T

4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U

5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V

5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W

5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X

5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y

4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z

2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [

4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash

2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ]

3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat

4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _

2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // `

4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a

4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b

4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c

4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d

4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e

3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f

4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g

4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h

3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i

4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j

4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k

3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l

5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m

4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n

4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o

4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p

4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q

4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r

4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s

3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t

4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u

5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v

5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w

5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x

4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y

3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z

3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // {

1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // |

3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // }

4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~

};

Initializarea pinilor , matricilor si variabilelor de control

int dIn = 11; // DIN pin al modulului Max7219

int clk = 12; // CLK pin al modulului Max7219

int cs = 10; // CS pin al modulului Max7219

int maxInUse = 8; // numarul de module folosite

MaxMatrix m(dIn, cs, clk, maxInUse);

byte buffer[10];

char incomebyte;

int scrollSpeed = 100;

char text[50] = "Text Back "; // Mesajul Initial

int brightness = 7;

int count = 0;

char indicator;

Blocul de initializare

void setup() {

m.init(); // Initializarea modulelor Max7219

m.setIntensity(brightness); // intensitatea luminoasa, 0-15

Serial.begin(9600); // Banda de comunicare a modulului HC-05

}

Bucla principala

void loop() {

// Imprimarea de text, initial cel de demonstratie

printStringWithShift(text, scrollSpeed);

if (Serial.available()) { // Se verifica da ca sunt date primite pe serial

indicator = Serial.read(); // Incepe citirea datelor primite pe serial, tinand cont de indicele folosit

// Daca se transmite un text nou, cel vechi va fi sters

if (indicator == '1') {

for (int i = 0; i < 50; i++) {

text[i] = 0;

m.clear();

}

// Se citeste textul transmis de catre aplicatia de pe telefon si se introduce in multime

while (Serial.available()) {

incomebyte = Serial.read();

text[count] = incomebyte;

count++;

}

count = 0;

}

if (indicator == '0') {

for (int i = 0; i < 50; i++) {

text[i] = 0;

m.clear();

}

// Se citeste textul transmis de catre aplicatie si in caz ca indicele este 0 formeaza o multime nula

while (Serial.available()) {

incomebyte = Serial.read();

text[count] = incomebyte;

}

count = 0;

}

}

}

Inserarea caracterelor

// se insereaza caracterele noi pe ecran

void printCharWithShift(char c, int shift_speed){

if (c < 32) return;

c -= 32;

memcpy_P(buffer, CH + 7*c, 7);

m.writeSprite(maxInUse*8, 0, buffer);

m.setColumn(maxInUse*8 + buffer[0], 0);

for (int i=0; i<buffer[0]+1; i++)

{

shift_speed=150; // viteza de derulare a caracterelor

delay(shift_speed);

m.shiftLeft(false, false);

}

}

Extragerea caracterelor

// extragerea caracterelor de pe afisaj

void printStringWithShift(char* s, int shift_speed){

while (*s != 0){

printCharWithShift(*s, shift_speed);

s++;

}

}

Anexa 2.

Codul sursă aferent aplicației Android:

Similar Posts