Table of Contents

Bianca-Ioana NENCIU (67211) - Word Clock

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Word Clock este un ceas cu un design modern, care se diferentiaza de celelalte ceasuri analogice sau digitale prin modul inedit de afisare.

Descriere generală

In diagrama de mai sus sunt prezentate principalele surse pentru informatii: modulul RTC si senzorul de temperatura. In realitate, senzorul de temperatura este inclus in modulul RTC.

In momentul de fata, ceasul are 4 moduri:

Hardware Design

Componenta Cantitate Distribuitor
Placuta 1 Echipa PM
ATmega324 1
LED-uri 121 Optimus Digital
Buzzer 1 Optimus Digital
RTC DS3231 (include senzor de temperatura) 1 Optimus Digital

Din punct de vedere hardware, proiectul meu are 3 mari componente:

Cea mai mare provocare a reprezentat-o matricea de LED-uri. Pe langa faptul ca a fost destul de dificil sa gasesc un material potrivit pentru a sustine LED-urile, a fost si mai dificil sa lipesc cele 121 de LED-uri, facand in total aproximativ 300 de lipituri cu letcon-ul. Desi 300 nu pare o cifra destul de mare, in realitate a fost mult mai complicat. Nici atunci cand am terminat cele 300 de lipituri nu terminasem cu adevarat deoarece am avut un mic scurt circuit si nu a fost deloc placut sa verific lipiturile.

Electrical Scheme

Microcontroller-ul scoate pe pinii GPIO un curent de maxim 40mA. LED-urile sunt conectate in serie pe coloana, ceea ce inseamnca ca pentru aprinderea unei coloane e destul un curent de 10mA. E important sa nu fie aprinse mai mult de 4 coloane la un moment dat, deoarece altfel sunt sanse mari ca microcontroller-ul sa se arda. De asemenea, pentru a nu arde LED-urile, fiecare coloana are nevoie de o rezistenta in plus, cu o valoare intre 0.1-1k Ohmi.

Software Design

Dezvoltarea programului a decurs relativ usor. Am avut o mica problema crezand ca pot folosi bibliotecile de pe internet care sa comunice cu modulul RTC DS3231, dar nu functionau, iar cele care pareau functionale, din pacate erau pentru Arduino. In cele din urma, am decis sa-mi creez propriile functii care sa comunice cu DS3231.

Initial, pentru a ma asigura ca toate led-urile sunt stinse pun 0 logic pe fiecare coloana si 1 logic pe fiecare rand. Astfel, toate diodele (LED-urile) sunt invers polarizate. Daca doresc sa aprind un anume LED, tot ce fac este sa pun 1 logic pe coloana pe care se afla LED-ul si 0 logic pe randul respectiv. Astfel, dioda este polarizata corect si se aprinde.

Pentru a aprinde mai multe LED-uri, activez mai multe coloane si randuri, cu precizarea ca nu prea multe coloane, intrucat microcontroller-ul nu poate scoate un curent mai mare de 40mA. Pentru a fi sigura, aprind cel mult o coloana la un moment de timp. Astfel, pentru a afisa toate LED-urile, ciclez foarte repede prin toate coloanele, le activez, activez si randurile necesare, dupa care resetez toata tabla si continui cu urmatoarea coloana.

Tot codul il puteti gasi pe pagina mea de GitHub.

Rezultate Obţinute

In urma acestui proiect, am obtinut un minunat ceas de care sunt foarte mandra. Anumite imbunatatiri ar putea fi facute (de exemplu lumina LED-urilor ar putea fi difuza pentru un afisaj mai frumos).

Ceasul poate fi vazut in actiune in acest clip video.

Concluzii

Acest proiect a fost de departe cel mai interesant proiect din cei 3 ani de facultate. Am invatat multe despre electronica, cate ceva despre programarea pe sisteme embedded si am realizat ca uneori e mult efort investit in lucruri care la prima vedere par simple.

Download

Tot codul il puteti gasi pe pagina mea de GitHub. Il puteti descarca direct de aici.

Jurnal

21 Aprilie 2017: Alegerea temei proiectului.

23 Aprilie 2017: Specificarea componentelor necesare, precum si schema bloc.

25-28 Aprilie 2017: Realizarea placutei de baza.

7 Mai 2017: Realizarea schemei bloc a proiectului.

12-14 Mai 2017: Realizarea matricei de leduri.

15 Mai 2017: Implementare software.

16-17 Mai 2017: Finalizare si verificare proiect.

19 Mai 2017: Prezentare proiect.

Bibliografie/Resurse