This is an old revision of the document!
Desk Buddy "Leon"
Introducere
Proiectul consta in dezvoltarea unui asistent de birou multifunctional, bazat pe microcontrollerul ATmega328P. Acesta are 3 functii principale:
Music Player: User-ul poate reda melodii dintr-un playlist stocat intr-un card SD.
Ceas Digital: Cat timp buddy-ul se afla in stand-by, pe display se afiseaza data si ora curenta.
Alarma Programabila: User-ul poate seta alerte la ore specifice, moment in care se declanseaza automat redarea unui sunet de alarma.
Pentru mine acest proiect reprezinta o experienta de invatare, o introducere in modul in care hardware-ul si software-ul se leaga si cum interactioneaza. Prin prisma acestui proiect, am oportunitatea sa creez ceva palpabil, imbinand atat scrisul de cod cu experienta hands-on asupra componentelor fizice.
Intial, idea a pornit ca un simplu Music Player, deoarece muzica reprezinta o mare parte din viata mea de zi cu zi. Am incercat totusi sa gandesc inafara cutiei si sa transform planul initial in ceva util 24/7. Astfel, am integrat functiile de ceas digital si alarma programabila pentru a extinde utilitatea proiectului dincolo de zona muzicala.
Acest proiect este util atat pentru mine cat si pentru altii deoarece ofera o solutie practica pentru doua nevoi fundamentale intr-un mediu de lucru:
Relaxare: Functia de Music Player permite User-ului sa se relaxeze ascultand melodiile preferate.
Organizarea Timpului: Functiile de Ceas Digital si Alarma Programabila ajuta utilizatorul sa nu piarda notiunea timpului (ex: o sesiune lunga de lucru la o tema), avand permanent ora vizibila si permitandu-i sa seteze alarme personalizate.
Descriere generală
Control (Input): Utilizatorul interactioneaza cu dispozitivul prin intermediul a 5 butoane tactile. Acestea permit navigarea intre modurile de lucru (Ceas, Muzica, Alarma), controlul redarii audio (Play/Pause, Next/Prev) si ajustarea volumului sau a setarea alarmei.
Procesare (Logica): Placa ATmega328P coordoneaza intregul sistem. Ea gestioneaza protocoalele de comunicare SPI (pentru citirea datelor de pe cardul SD) si I2C (pentru sincronizarea cu ceasul de timp real si afisaj), procesand in acelasi timp semnalul PWM pentru iesirea audio.
Afisare (Output): Informatiile esentiale, precum ora curenta, data, sau numele melodiei redate, sunt afisate clar pe un ecran LCD 16×2. Acesta ofera feedback vizual imediat pentru fiecare comanda primita de la input.
Sunet (Feedback): Sistemul audio, format dintr-un tranzistor de amplificare si un difuzor, reda fisierele de pe cardul SD. Acesta ofera atat functia de relaxare prin muzica, cat si avertizarea sonora pentru alarma programata.
Stocare (Data): Fisierele audio si setarile sistemului sunt gestionate folosind un card MicroSD si memoria interna EEPROM a microcontroller-ului, asigurand pastrarea alarmei chiar si dupa oprirea dispozitivului.
Laboratoare folosite:
Laborator 0 GPIO: Configurarea pinilor de intrare si iesire
Laborator 2 Intreruperi: Asigurarea unui raspuns instantaneu la apasarea butoanelor
Laborator 3 Timere. PWM: Generarea semnalului audio
Laborator 5 SPI: Comunicarea cu modulul MicroSD
Laborator 6 I2C: Conectarea ecranului LCD si a modulului RTC
1. Hardware Design
In cadrul acestui capitol este descris design-ul hardware al sistemului, tabelele detaliate de mapare a pinilor intre microcontrolerul ATmega328P si periferice, precum si lista de componente utilizate.
Sistemul este construit in jurul microcontrolerului ATmega328P. Acesta interactioneaza cu modulele periferice prin protocoale de comunicatie dedicate (I2C, SPI) si semnale PWM / GPIO digitale.
ATmega328P - Unitatea centrala de procesare care controleaza citirea timpului, interogarea butoanelor, afisarea pe ecran si generarea semnalului audio.
Modul RTC DS1307 (I2C) - Mentine timpul real (ore, minute, secunde, data) si comunica cu MC-ul prin magistrala TWI/I2C (pinii A4 - SDA, A5 - SCL).
Ecran LCD 16×2 cu adaptor I2C (PCF8574) - Afiseaza interfata grafica, timpul curent si meniurile de configurare. Partajeaza aceeasi magistrala I2C.
Modul Card SD (SPI) - Stocheaza fisierele audio in format RAW/WAV (pinii 10 - CS, 11 - MOSI, 12 - MISO, 13 - SCK).
Modul Amplificator Audio SC8002B cu Difuzor Integrat - Amplifica semnalul audio PWM de inalta frecventa generat de Pinul 9 (PB1) si reda sunetul. Are potentiometru integrat pentru controlul volumului.
Bloc de butoane (GPIO) - 5 butoane conectate pe Portul D (PD2 - PD6) cu rezistente interne de pull-up activate.
Maparea Pinilor si Conexiuni
Pentru o organizare clara si stabila pe breadboard, conexiunile electrice si distributia semnalelor de la microcontrolerul ATmega328P catre modulele periferice au fost mapate conform tabelelor de mai jos.
### 1. Magistrala I2C (Ecran LCD si Modul RTC DS1307)
Modulul RTC si adaptorul PCF8574 al ecranului LCD sunt conectate in paralel pe aceeasi magistrala I2C (TWI), avand adrese hexazecimale diferite.
| Pin ATmega328P | Semnal | Pin Periferic (RTC & LCD) | Tip Semnal | Descriere |
| PC4 / Analog 4 | SDA | SDA | Digital I/O | Linie de Date I2C (Serial Data) |
| PC5 / Analog 5 | SCL | SCL | Digital Input | Linie de Ceas I2C (Serial Clock) |
| +5V | VCC | VCC | Power | Alimentare logica 5V |
| GND | GND | GND | Power | Masa comuna |
### 2. Interfata SPI (Modul Card SD)
Comunicarea rapida cu cardul SD pentru streaming-ul esantioanelor audio brute se realizeaza prin perifericul SPI hardware.
| Pin ATmega328P | Semnal | Pin Modul SD | Tip Semnal | Descriere |
| PB2 / Digital 10 | SS / CS | CS | Digital Output | Chip Select (Activ pe 0 logic) |
| PB3 / Digital 11 | MOSI | MOSI | Digital Output | Master Out Slave In (Date catre SD) |
| PB4 / Digital 12 | MISO | MISO | Digital Input | Master In Slave Out (Date de la SD) |
| PB5 / Digital 13 | SCK | CLK / SCK | Digital Output | Serial Clock (Ceas SPI) |
| +5V | VCC | VCC / 5V | Power | Alimentare modul SD (cu regulator pe placuta) |
| GND | GND | GND | Power | Masa comuna |
### 3. Conexiune Modul Audio / Difuzor (SC8002B)
Semnalul audio generat prin Fast PWM pe 8 biti este trimis direct catre amplificator pentru a fi redat in difuzor.
| Pin ATmega328P | Semnal | Pin Modul Audio | Tip Semnal | Descriere |
| PB1 / Digital 9 | PWM (OC1A) | IN / AUDIO_IN | Analog/PWM | Semnal audio brut (iesire DAC prin PWM) |
| +5V | VCC | VCC / 5V | Power | Alimentare amplificator (filtrata cu condensator) |
| GND | GND | GND | Power | Masa comuna |
### 4. Blocul de Butoane (Interfata Utilizator)
Butoanele utilizeaza rezistentele interne de pull-up ale portului D, eliminand necesitatea unor rezistente externe pe breadboard. Apasarea unui buton aduce pinul in stare '0' logic.
| Pin ATmega328P | Registru | Nume Buton | Functie in Aplicatie |
| PD2 / Digital 2 | PIND2 | BUTON_SELECT | Intrare in meniuri / Confirmare selectie |
| PD3 / Digital 3 | PIND3 | BUTON_PLUS | Incrementare valori / Piesa urmatoare |
| PD4 / Digital 4 | PIND4 | BUTON_MINUS | Decrementare valori / Piesa precedenta |
| PD5 / Digital 5 | PIND5 | BUTON_BACK | Inapoi la ecranul principal / Reset |
| PD6 / Digital 6 | PIND6 | BUTON_MODE | Schimbare mod (Ceas ↔ Music Player) / Stop Alarma |
Lista de Componente
| Componenta | Descriere | Rol in proiect |
| ATmega328P | Microcontroler AVR pe placuta de dezvoltare Arduino Uno | Coordoneaza toate perifericele si ruleaza algoritmul principal |
| DS1307 RTC | Real-Time Clock Module (I2C) | Pastreaza ora si data exacta chiar si cand sistemul este oprit |
| LCD 16×2 + I2C | Afisaj alfanumeric cu interfata PCF8574 | Afisarea timpului si navigarea in meniurile aplicatiei |
| Modul SD Card | Adaptor de card MicroSD cu schimbator de nivel (SPI) | Citirea fisierelor audio brute ale melodiilor si alarmei |
| SC8002B Audio | Modul amplificator audio de 2W cu difuzor integrat | Redarea melodiilor si semnalului de alarma la volum reglabil |
| Condensator | Condensator electrolitic de filtrare (100uF - 470uF) | Stabilizeaza liniile de alimentare de 5V si GND impotriva socurilor audio |
| Butoane | 5x Butoane Push-Button | Navigarea si controlul aplicatiei (interfata GPIO) |
| Breadboard & Fire | Fire de conexiune Dupont | Realizarea legaturilor electrice dintre module |
Software Design
Descrierea codului aplicaţiei (firmware):
mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
librării şi surse 3rd-party (e.g. Procyon AVRlib)
algoritmi şi structuri pe care plănuiţi să le implementaţi
(etapa 3) surse şi funcţii implementate
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF