This shows you the differences between two versions of the page.
|
pm:prj2026:atoader:stefan.covaliu [2026/05/16 22:51] stefan.covaliu [Descriere generala] |
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 42: | Line 42: | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| + | ==== Lista componente ==== | ||
| + | |||
| + | ^ Componenta ^ Model / Specificatii ^ Cantitate ^ | ||
| + | | Placa microcontroller | ATmega328P-XMINI | 1 | | ||
| + | | Modul Bluetooth | HC-06 UART | 1 | | ||
| + | | Display OLED | SH1106 1.3" SPI | 1 | | ||
| + | | Modul RTC | DS3231 I2C | 1 | | ||
| + | | MOSFET | IRLZ44N N-Channel Logic Level | 3 | | ||
| + | | LED rosu | LED 5mm rosu | 1 | | ||
| + | | LED verde | LED 5mm verde | 1 | | ||
| + | | LED albastru | LED 5mm albastru | 1 | | ||
| + | | Fotorezistor | GL5528 LDR | 1 | | ||
| + | | Buton | Push tactil | 1 | | ||
| + | | Regulator tensiune | L7805CV | 1 | | ||
| + | | Rezistor | 220Ω | 3 | | ||
| + | | Rezistor | 10kΩ | 2 | | ||
| + | | Rezistor | 1kΩ | 1 | | ||
| + | | Rezistor | 2kΩ | 1 | | ||
| + | | Breadboard | 830 puncte | 1 | | ||
| + | | Fire jumper | Male-to-male | ~30 | | ||
| + | | Cablu USB | Micro-USB | 1 | | ||
| + | | Sursa alimentare | 24V externa | 1 | | ||
| + | |||
| + | ==== Conexiuni pini ==== | ||
| + | |||
| + | ^ Pin MCU ^ Conectat la ^ Functie ^ | ||
| + | | D0 (RX) | HC-06 TX | UART receptie Bluetooth | | ||
| + | | D1 (TX) | HC-06 RX via 1kΩ+2kΩ | UART transmisie (protejat 3.3V) | | ||
| + | | D2 | Buton + pull-up 10kΩ | Intrerupere externa INT0 | | ||
| + | | D3 (PWM) | Gate MOSFET Rosu | PWM canal R | | ||
| + | | D4 | OLED RST | SPI Reset | | ||
| + | | D5 (PWM) | Gate MOSFET Verde | PWM canal G | | ||
| + | | D6 (PWM) | Gate MOSFET Albastru | PWM canal B | | ||
| + | | D7 | OLED DC | SPI Data/Command | | ||
| + | | D10 | OLED CS | SPI Chip Select | | ||
| + | | D11 (MOSI) | OLED SDA | SPI Date | | ||
| + | | D13 (SCK) | OLED SCK | SPI Clock | | ||
| + | | A0 | Nod LDR + 10kΩ | ADC citire luminozitate | | ||
| + | | A4 (SDA) | DS3231 SDA | I2C date RTC | | ||
| + | | A5 (SCL) | DS3231 SCL | I2C clock RTC | | ||
| + | |||
| + | ==== Schema electrica ==== | ||
| {{:pm:prj2026:atoader:schemaElectricaPNG.png?800|}} | {{:pm:prj2026:atoader:schemaElectricaPNG.png?800|}} | ||
| Line 49: | 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 | | ||