This shows you the differences between two versions of the page.
|
pm:prj2026:atoader:stefan.covaliu [2026/05/16 22:51] stefan.covaliu [Hardware Design] |
pm:prj2026:atoader:stefan.covaliu [2026/05/16 22:58] (current) stefan.covaliu [Software Design] |
||
|---|---|---|---|
| Line 16: | Line 16: | ||
| ==== Module Hardware ==== | ==== Module Hardware ==== | ||
| - | * **ATmega328P-XMINI** — microcontrolerul central, compatibil Arduino Uno, arhitectura AVR 8-bit la 5V. Coordoneaza toata logica sistemului: citeste senzorii, calculeaza temperatura de culoare, genereaza semnalele PWM si gestioneaza comunicatia cu toate perifericele. | + | * **ATmega328P-XMINI** : microcontrolerul central, compatibil Arduino Uno, arhitectura AVR 8-bit la 5V. Coordoneaza toata logica sistemului: citeste senzorii, calculeaza temperatura de culoare, genereaza semnalele PWM si gestioneaza comunicatia cu toate perifericele. |
| - | * **Modul Bluetooth HC-06** — permite controlul wireless al lampii de pe telefon prin UART. Microcontrolerul primeste comenzi text ("WARM", "COOL", "OFF") si le aplica imediat. TX-ul modulului este conectat direct la D0 (RX), iar RX-ul este protejat printr-un divizor de tensiune 1kΩ+2kΩ deoarece modulul lucreaza la 3.3V logic. | + | * **Modul Bluetooth HC-06** : permite controlul wireless al lampii de pe telefon prin UART. Microcontrolerul primeste comenzi text ("WARM", "COOL", "OFF") si le aplica imediat. TX-ul modulului este conectat direct la D0 (RX), iar RX-ul este protejat printr-un divizor de tensiune 1kΩ+2kΩ deoarece modulul lucreaza la 3.3V logic. |
| - | * **Fotorezistor LDR GL5528** — conectat intr-un divizor de tensiune cu o rezistenta de 10kΩ la GND. Punctul de mijloc este citit pe pinul A0 prin ADC-ul intern pe 10 biti. Valoarea citita determina cat de multa componenta calda se adauga in culoarea finala. | + | * **Fotorezistor LDR GL5528** : conectat intr-un divizor de tensiune cu o rezistenta de 10kΩ la GND. Punctul de mijloc este citit pe pinul A0 prin ADC-ul intern pe 10 biti. Valoarea citita determina cat de multa componenta calda se adauga in culoarea finala. |
| - | * **Modul RTC DS3231** — tine ora exacta inclusiv la oprirea alimentarii, datorita bateriei CR2032. Comunicatia se face prin I2C: SDA pe A4, SCL pe A5. Ora citita determina automat profilul de culoare al momentului din zi. | + | * **Modul RTC DS3231** : tine ora exacta inclusiv la oprirea alimentarii, datorita bateriei CR2032. Comunicatia se face prin I2C: SDA pe A4, SCL pe A5. Ora citita determina automat profilul de culoare al momentului din zi. |
| - | * **Display OLED SH1106 1.3"** — afiseaza modul activ, culoarea curenta si ora. Comunicatia se face prin SPI hardware: SCK pe D13, MOSI pe D11, CS pe D10, DC pe D7, RST pe D4. Actualizat o data pe secunda. | + | * **Display OLED SH1106 1.3"** : afiseaza modul activ, culoarea curenta si ora. Comunicatia se face prin SPI hardware: SCK pe D13, MOSI pe D11, CS pe D10, DC pe D7, RST pe D4. Actualizat o data pe secunda. |
| - | * **3x MOSFET IRLZ44N** — tranzistori N-Channel Logic Level care controleaza independent cele trei canale RGB prin PWM. Gate-urile sunt conectate la D3 (rosu), D5 (verde) si D6 (albastru). Se deschid complet la 5V pe gate. | + | * **3x MOSFET IRLZ44N** : tranzistori N-Channel Logic Level care controleaza independent cele trei canale RGB prin PWM. Gate-urile sunt conectate la D3 (rosu), D5 (verde) si D6 (albastru). Se deschid complet la 5V pe gate. |
| - | * **3x LED discret (Rosu, Verde, Albastru)** — elementele de iluminat. Fiecare LED are un rezistor de 220Ω in serie pe anod conectat la 5V, iar catodul conectat la Drain-ul MOSFET-ului corespunzator. | + | * **3x LED discret (Rosu, Verde, Albastru)** - elementele de iluminat. Fiecare LED are un rezistor de 220Ω in serie pe anod conectat la 5V, iar catodul conectat la Drain-ul MOSFET-ului corespunzator. |
| - | * **Buton tactil** — conectat la D2 cu pull-up de 10kΩ la 5V. Genereaza intrerupere externa pe INT0 la apasare. Cicleza intre modurile de functionare si are prioritate maxima in logica sistemului. | + | * **Buton tactil** : conectat la D2 cu pull-up de 10kΩ la 5V. Genereaza intrerupere externa pe INT0 la apasare. Cicleza intre modurile de functionare si are prioritate maxima in logica sistemului. |
| - | * **Regulator L7805** — converteste tensiunea sursei externe de 24V la 5V stabili pentru microcontroler si toate modulele. | + | * **Regulator L7805** - converteste tensiunea sursei externe de 24V la 5V stabili pentru microcontroler si toate modulele. |
| ==== Module Software ==== | ==== Module Software ==== | ||
| - | * **Handler intrerupere buton (INT0)** — la apasarea butonului pe D2 se genereaza intrerupere pe front descrescator. Cicleza intre modurile: AUTO, WARM, COOL, OFF. Are prioritate maxima. | + | * **Handler intrerupere buton (INT0)** - la apasarea butonului pe D2 se genereaza intrerupere pe front descrescator. Cicleza intre modurile: AUTO, WARM, COOL, OFF. Are prioritate maxima. |
| - | * **Receptor UART Bluetooth** — citeste comenzile primite de la HC-06 si actualizeaza modul activ. Comenzi suportate: "WARM", "COOL", "OFF", "AUTO". | + | * **Receptor UART Bluetooth** : citeste comenzile primite de la HC-06 si actualizeaza modul activ. Comenzi suportate: "WARM", "COOL", "OFF", "AUTO". |
| - | * **Citire ADC (LDR)** — ADC-ul intern citeste tensiunea de pe A0 si returneaza o valoare 0–1023 proportionala cu luminozitatea ambientala. | + | * **Citire ADC (LDR)** : ADC-ul intern citeste tensiunea de pe A0 si returneaza o valoare 0–1023 proportionala cu luminozitatea ambientala. |
| - | * **Citire RTC prin I2C** — microcontrolerul citeste ora curenta de la DS3231 o data pe secunda prin TWI/I2C si selecteaza profilul de culoare corespunzator. | + | * **Citire RTC prin I2C** : microcontrolerul citeste ora curenta de la DS3231 o data pe secunda prin TWI/I2C si selecteaza profilul de culoare corespunzator. |
| - | * **Calcul temperatura culoare** — combina valorile LDR si RTC pentru a calcula tripletul RGB final. Trece lin de la (255, 200, 100) seara la (200, 220, 255) dimineata. | + | * **Calcul temperatura culoare** : combina valorile LDR si RTC pentru a calcula tripletul RGB final. Trece lin de la (255, 200, 100) seara la (200, 220, 255) dimineata. |
| - | * **Control PWM canale RGB** — aplica valorile RGB calculate pe D3, D5, D6, controlând duty cycle-ul pentru fiecare MOSFET. | + | * **Control PWM canale RGB** : aplica valorile RGB calculate pe D3, D5, D6, controlând duty cycle-ul pentru fiecare MOSFET. |
| - | * **Driver OLED SPI** — actualizeaza display-ul SH1106 o data pe secunda cu modul activ, valorile RGB curente si ora. | + | * **Driver OLED SPI** : actualizeaza display-ul SH1106 o data pe secunda cu modul activ, valorile RGB curente si ora. |
| - | * **Logica de prioritizare** — buton fizic > comanda Bluetooth > mod automat (LDR + RTC). | + | * **Logica de prioritizare** : buton fizic > comanda Bluetooth > mod automat (LDR + RTC). |
| Line 91: | Line 91: | ||
| {{:pm:prj2026:atoader:pozalampargb2.jpg?400|}} | {{:pm:prj2026:atoader:pozalampargb2.jpg?400|}} | ||
| {{:pm:prj2026:atoader:pozalampargb1.jpg?400|}} | {{:pm:prj2026:atoader:pozalampargb1.jpg?400|}} | ||
| - | ==== Lista de piese ==== | + | ===== Software Design ===== |
| + | |||
| + | **Mediu de dezvoltare:** VSCode cu PlatformIO, framework Arduino, upload prin avrdude cu protocol custom (flags: ''-P usb -c xplainedmini''). | ||
| + | |||
| + | **Librarii folosite:** | ||
| + | * ''Wire.h'' : comunicatie I2C cu DS3231 | ||
| + | * ''RTClib'' : citire ora de la DS3231 | ||
| + | * ''U8g2lib'' : driver display OLED SH1106 prin SPI | ||
| + | * ''SPI.h'' : comunicatie SPI hardware | ||
| + | |||
| + | **Algoritmi implementati:** | ||
| + | |||
| + | Logica principala ruleaza intr-un loop cu trei straturi de prioritate. La fiecare iteratie se verifica intai daca a fost apasata o intrerupere de la buton (flag setat in ISR), apoi daca au sosit date pe UART de la Bluetooth, si in final se ruleaza modul automat bazat pe LDR si RTC. | ||
| + | |||
| + | Calculul temperaturii de culoare combina liniar doua profile: profilul "rece" (R=200, G=220, B=255) si profilul "cald" (R=255, G=180, B=80). Factorul de interpolatie este calculat din ora curenta si modulat de valoarea ADC a LDR-ului. | ||
| + | |||
| + | Intreruperea pe INT0 seteaza un flag atomic si cicleza un contor de mod. Debouncing-ul este realizat software prin ignorarea intreruperilor successive la interval mai mic de 200ms. | ||
| - | ^ Componenta ^ Model ^ Cantitate ^ | ||
| - | | Microcontroler | ATmega328P-XMINI | 1 | | ||
| - | | Modul Bluetooth | HC-06 RS232 | 1 | | ||
| - | | Modul RTC | DS3231 ZS-042 | 1 | | ||
| - | | Baterie RTC | CR2032 3V | 1 | | ||
| - | | Display OLED | SSD1306 0.96" SPI 7 pini | 1 | | ||
| - | | Fotorezistor | GL5539 5mm | 1 | | ||
| - | | MOSFET | LR7843 (Logic Level N-ch) | 3 | | ||
| - | | Regulator tensiune | L7805CV | 1 | | ||
| - | | Banda LED RGB | 12V anod comun, 5050 | 1m | | ||
| - | | Condensator electrolitic | 10uF 50V | 2 | | ||
| - | | Condensator ceramic | 100nF 50V | 2 | | ||
| - | | Rezistenta | 220 ohm | 3 | | ||
| - | | Rezistenta | 1k ohm | 1 | | ||
| - | | Rezistenta | 2k ohm | 1 | | ||
| - | | Rezistenta | 4.7k ohm | 2 | | ||
| - | | Rezistenta | 10k ohm | 5 | | ||
| - | | Breadboard | 830 puncte | 1 | | ||
| - | | Fire DuPont M-F | 40 bucati 20cm | 1 set | | ||
| - | | Fire DuPont M-M | 40 bucati 20cm | 1 set | | ||
| - | | Conector DC | 5.5x2.1mm cu terminal | 1 | | ||
| - | | Adaptor alimentare | 12V 2A | 1 | | ||