RetroCell

Introducere

Proiectul constă în realizarea unui terminal de comunicații mobil și independent, cu o estetică retro, pe care rulează un sistem de operare dezvoltat de la zero.

Scopul lui: replicarea funcționalității de bază a unui telefon mobil clasic.

Ideea de la care am pornit: Mi-am dorit să recreez experiența telefoanelor fiabile de la începutul anilor 2000, explorând în același timp la nivel bare-metal, pe un microcontroller cu memorie foarte limitata.

Utilitate: demonstrează capacitatea de a construi o arhitectură software avansată (multitasking, gestiune PROGMEM) și de a integra senzori, protocoale și un management de putere eficient într-un singur sistem portabil. Pentru alții, ar putea fi un dispozitiv de comunicație de urgență / rezervă destul de interesant.

Descriere generală

1. Schema bloc

2. Descrierea Modulelor Hardware

Microcontroller (ATmega328P): Unitatea centrală de procesare a sistemului — gestionează intrările de la tastatură, comunicația cu rețeaua mobilă, afișarea interfeței și generarea semnalelor audio.

Modul GSM (SIM800L): Asigură conectivitatea la rețeaua celulară pentru apeluri vocale și SMS-uri. Comunică cu microcontrolerul prin UART.

Display (Nokia 5110 PCD8544): Ecran LCD monocrom pentru afișarea meniurilor, mesajelor și stării sistemului. Controlat prin SPI pentru un refresh fluid.

Modul RTC (DS3231): Menține data și ora exactă independent de microcontroler, inclusiv în modul repaus. Comunică prin I²C.

Tastatură multiplexată analogic: Mai multe butoane conectate printr-un divizor de tensiune la un singur pin ADC. Butonul apăsat este identificat prin nivelul de tensiune măsurat.

Senzor de lumină ambiantă (LDR): Fotorezistență pe un pin ADC. Valoarea citită ajustează automat luminozitatea ecranului prin PWM.

Buzzer pasiv: Redă tonuri de apel și sunete de sistem. Controlat de Timer 2 (mod CTC/PWM) pentru frecvențe precise fără a solicita procesorul.

Modul de alimentare: Acumulator Li-Ion (3.7V) cu circuit de încărcare și protecție, urmat de un convertor Boost ce stabilizează tensiunea la 5V.

3. Descrierea Modulelor Software

Scheduler cooperativ: Planifică execuția task-urilor (audio, display, senzori) pe baza unui tick generat de Timer 1 la fiecare milisecundă, eliminând funcțiile blocante de tip delay().

Driver grafic (GUI): Translatează text și date de stare într-un frame buffer de pixeli. Fonturile compacte (4×6, 3×5) sunt stocate în Flash (PROGMEM) pentru a conserva RAM-ul.

Motor audio: Redă structuri muzicale (frecvențe și durate din MIDI) stocate în PROGMEM, cu suport pentru legato/staccato și control al frecvenței prin Timer 2.

Controller de evenimente (Input & Power Management): Procesează intrările de la LDR și tastatură, gestionează intrarea în repaus la inactivitate și trezirea prin întreruperi (PCINT).

Parser AT: Formatează comenzile pentru SIM800L și interpretează răspunsurile rețelei (ex: RING, +CMTI).

Hardware Design

Componente și rolul lor

Componentă Referință Rol principal
ATmega328P U5 Microcontroler central — execută codul, controlează toate perifericele
SIM800L U1 Modul GSM — apeluri, SMS, comunicație celulară
Nokia 5110 LCD1 Afișaj grafic 84×48px — interfața utilizator
Li-Ion 18650 U6 Sursă de energie principală 3.7V
TP4056 Încărcator baterie Li-Ion (integrat în modulul Power Bank U7)
MT3608 U7 Step-up 5V (integrat în modulul Power Bank U7)
Buzzer pasiv BF1 Audio GSM (SPKP/SPKN) și tonuri generate de MCU (OC2B)
DS3231 U2 RTC — păstrează ora exactă cu compensare termică
Tranzistor NPN Q1 Driver backlight LCD — comutare PWM pe pinul BL
Fotorezistență LDR RP1 Senzor lumină ambientală — reglaj automat backlight
Butoane tactile S1–S5 Tastatura analogică citită pe un singur pin ADC
Condensator 1000µF C1 Decuplare alimentare SIM800L — absoarbe vârfurile de curent GSM
Condensatori 100nF C2, C3 Decuplare VCC și AREF pe ATmega
Rezistențe R2–R14 Divizoare tensiune, limitare curent, pull-down, pull-up
Cuarț 16MHz Y1 Referință de timp precisă pentru ATmega

Pini ATmega328P

Pin fizic Semnal Periferic Motivul alegerii
PD0 (30) GSM_RX SIM800L TX Pin hardware UART RX — nu poate fi schimbat
PD1 (31) GSM_TX SIM800L RX Pin hardware UART TX — nu poate fi schimbat
PD2 (32) WAKE_INT0 Buton wake-up Suportă întrerupere externă INT0 — trezire din sleep
PD3 (1) OC2B Buzzer pasiv Ieșire PWM hardware Timer2 — generare frecvențe audio
PD5 (9) OC0B Backlight LCD Ieșire PWM hardware Timer0 — control luminozitate
PD6 (10) DC Nokia 5110 Linie Data/Command SPI
PD7 (11) RST Nokia 5110 Reset display
PB2 (14) CS/CE Nokia 5110 Chip Select SPI
PB3 (15) MOSI Nokia 5110 Date SPI hardware — pin fix
PB5 (17) SCK Nokia 5110 Clock SPI hardware — pin fix
PC4 (27) I2C_SDA DS3231 Linie date I2C hardware — pin fix
PC5 (28) I2C_SCL DS3231 Linie clock I2C hardware — pin fix
PC0 (23) ADC0 Tastatura S1–S5 Canal ADC — citire tensiuni diferite per buton
PC1 (24) ADC1 LDR Canal ADC — citire divizor fotorezistență
PC6 (29) RESET# Circuit reset Pin dedicat reset hardware
PB6 (7) XTAL1 Cuarț 16MHz Pin dedicat oscilator extern
PB7 (8) XTAL2 Cuarț 16MHz Pin dedicat oscilator extern
3, 5 GND Mase separate digital și analog
4, 6 VCC Alimentare 5V digital
18 AVCC Alimentare 5V referință ADC
20 AREF Referință tensiune ADC (100nF la GND)

Blocuri funcționale

1. Alimentare Bateria Samsung Li-Ion 18500 alimentează întregul sistem. Modulul Power Bank U7 are trei roluri simultane: încarcă bateria când e conectat la USB, protejează bateria la supradescărcare, și generează 5V stabili prin step-up intern pentru logică. SIM800L este alimentat direct din baterie la 3.7–4.2V, separat de restul circuitului, deoarece are nevoie de curenți mari la transmisie GSM care ar destabiliza linia de 5V.

2. Microcontroler ATmega328P Este creierul sistemului. Rulează la 16MHz datorită cuarțului extern, ceea ce îi permite timinguri precise pentru SPI, UART și PWM simultan. Coordonează toate celelalte module: citește butoanele și senzorul de lumină prin ADC, afișează informații pe LCD prin SPI, comunică cu modulul GSM prin UART, sincronizează ora cu RTC-ul prin I2C, și generează sunete prin PWM.

3. Comunicație GSM — SIM800L Modulul primește comenzi AT de la MCU prin UART și execută operații GSM: înregistrare în rețea, apeluri, SMS. Linia de transmisie de la MCU spre SIM trece printr-un divizor de tensiune din R2 și R3 (10kΩ/10kΩ) care coboară nivelul logic de la 5V la 2.5V, compatibil cu intrarea SIM800L. În sens invers, semnalul de 2.8V al SIM800L este suficient pentru a fi recunoscut ca nivel logic 1 de ATmega, deci nu necesită adaptare. Ieșirea audio diferențială SPKP/SPKN merge direct la buzzerul BF1 pentru redarea vocii în timpul apelurilor.

4. Afișaj Nokia 5110 Ecranul grafic de 84×48 pixeli afișează interfața utilizator — ore, meniuri, stare rețea. Comunicația se face prin SPI folosind 5 linii: clock, date, chip select, data/command și reset. Luminozitatea backlight-ului este controlată prin PWM de pe pinul PD5, care comandă tranzistorul NPN Q1. Acesta funcționează ca un întrerupător electronic — MCU-ul modulează rapid curentul prin LED-ul de backlight fără să disipe putere inutil.

5. Ceas RTC — DS3231 Modulul păstrează ora exactă independent de MCU. Are un oscilator intern cu compensare termică, extrem de precis, și o baterie proprie pe modul care îi permite să funcționeze chiar și când alimentarea principală e deconectată. MCU-ul îl citește și îl setează prin I2C pe pinii PC4 și PC5. DS3231 este ales în locul unui RTC simplu tocmai pentru precizia sa — deriva temporală este sub 2 minute pe an.

6. Interfață utilizator — tastatura și senzorul de lumină Cele 5 butoane tactile sunt conectate pe un singur pin ADC0 printr-o rețea de rezistențe în serie. Fiecare buton apăsat conectează nodul de măsură la GND printr-un număr diferit de rezistențe, producând o tensiune distinctă pe care MCU-ul o identifică. Rezistența de pull-down R12 (10kΩ) asigură o tensiune definită când niciun buton nu e apăsat, împiedicând flotarea pinului ADC. Fotorezistența LDR formează un divizor de tensiune cu R14 (10kΩ) pe pinul ADC1. Pe lumină puternică rezistența LDR scade, tensiunea pe ADC crește, și MCU-ul reduce luminozitatea backlight-ului. La întuneric procesul se inversează. Astfel dispozitivul se adaptează automat la condițiile de iluminare.

7. Audio Sistemul are două surse de sunet distincte. Buzzerul BF1 este conectat direct la ieșirea diferențială audio a SIM800L și redă vocea interlocutorului în timpul apelurilor. Al doilea canal audio, pe pinul PD3 prin Timer2 hardware, generează tonuri și melodii de apel fără să încarce procesorul — timerele hardware produc semnalul PWM autonom.

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

pm/prj2026/vlad.radulescu2901/tudor_andrei.matei.txt · Last modified: 2026/05/13 02:19 by tudor_andrei.matei
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0