This shows you the differences between two versions of the page.
|
pm:prj2026:vlad.radulescu2901:tudor_andrei.matei [2026/05/06 00:21] tudor_andrei.matei [Introducere] |
pm:prj2026:vlad.radulescu2901:tudor_andrei.matei [2026/05/13 02:19] (current) tudor_andrei.matei |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| 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. | 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. | ||
| - | } | + | **Scopul lui**: replicarea funcționalității de bază a unui telefon mobil clasic. |
| - | }===== Descriere generală ===== | + | |
| - | ===== Hardware Design ===== | + | **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. | ||
| - | Listă componente | + | ===== Descriere generală ===== |
| - | Microcontroler ATmega328P | + | 1. Schema bloc |
| + | |||
| + | {{:pm:prj2026:vlad.radulescu2901:schema_bloc_matei_tudor-andrei_334ca_final.png|}} | ||
| + | |||
| + | 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 ===== | ||
| - | Modul GSM SIM800L (cu antenă) | + | ** Componente și rolul lor ** |
| - | Ecran LCD Nokia 5110 (PCD8544) | + | ^ 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 | | ||
| - | Acumulator Li-Ion 18650 | ||
| - | Modul încărcare baterie TP4056 | + | ** Pini ATmega328P ** |
| - | Convertor Step-Up MT3608 | + | ^ 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) | | ||
| - | Buzzer Pasiv | + | {{ :pm:prj2026:vlad.radulescu2901:schema_electrica_f_matei-tudor.png |}} |
| - | Modul RTC DS3231 | ||
| - | Tranzistor NPN (BC547 / 2N2222) | + | ** Blocuri funcționale ** |
| - | Fotorezistență (LDR) | + | 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. | ||
| - | Butoane Tactile (Push Buttons) | + | 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. | ||
| - | Condensator Electrolitic 1000µF | + | 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. | ||
| - | Condensatori Ceramici 100nF | + | 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. | ||
| - | Set Rezistențe (1kΩ, 10kΩ, 220Ω, etc.) | + | 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. | ||
| - | Oscilator Cuarț 16MHz (dacă folosești chip-ul stand-alone) | + | 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 ===== | ===== Software Design ===== | ||