This is an old revision of the document!


Mini Statie Meteo cu afisaj digital

Introducere

Acest proiect constă într-o stație meteorologică inteligentă, capabilă să măsoare și să proceseze în timp real temperatura, umiditatea relativă, presiunea atmosferică și nivelul de iluminare ambientală. Datele sunt afișate pe un ecran LCD prin protocolul I2C. Sistemul este unul interactiv și adaptiv: utilizatorul poate naviga între pagini de monitorizare, poate schimba unitățile de măsură (C/F/K, mmHg/hPa, m/ft) și poate configura pragurile de alertă printr-un meniu dedicat. Experiența este completată de un sistem de feedback vizual bazat pe tranziții de culoare (LED RGB) și un sistem acustic dinamic (Buzzer).

Scopul proiectului: Crearea unui instrument de precizie pentru monitorizarea microclimatului, oferind utilizatorului nu doar date brute, ci și informații procesate (prognoză, punct de rouă, altitudine) și alerte personalizabile.

Ideea de la care am pornit: Proiectul a evoluat de la un simplu experiment cu semnale PWM la un sistem complex de monitorizare a mediului. Am păstrat componenta de feedback reactiv, dar am transformat-o într-o interfață de comunicare non-verbală cu utilizatorul: culorile LED-ului nu sunt doar decorative, ci reprezintă o hartă termică a confortului.

Utilitate: Stația este esențială pentru optimizarea spațiului de lucru, prevenind disconfortul termic sau oboseala oculară (prin monitorizarea luxilor). Pentru dezvoltatori, codul reprezintă un studiu de caz în optimizarea resurselor AVR: utilizarea EEPROM pentru salvarea setărilor, implementarea algoritmului Magnus-Tetens pentru punctul de rouă și filtrarea digitală a semnalelor barometrice.

Laboratoare folosite: ADC (Lumină), I2C (Senzori & LCD), PWM si Timere (RGB & Buzzer), Întreruperi(Butoane).

Descriere generală

Arhitectura software a sistemului este construită în jurul unei bucle de monitorizare non-blocking care gestionează achiziția de date de la senzori digitali de înaltă precizie (AHT20 și BMP280). Sistemul este versatil, operând în două moduri principale: Modul Monitorizare (afișarea datelor pe 3 pagini distincte) și Modul Meniu (configurarea pragurilor de operare).

1. Interfața și Navigarea (Control prin Întreruperi) Utilizatorul interacționează cu stația prin trei butoane gestionate prin întreruperi (INT1 și PCINT2), asigurând un răspuns instantaneu al interfeței:

Navigare Pagini: Comutarea între temperatura/umiditate, presiune/prognoză și altitudine/lux.

Meniu Configurare: Prin apăsarea lungă a butonului principal, se intră într-o interfață ce permite setarea pragurilor T_min, T_max, H_low, H_high și a offset-ului de altitudine. Aceste valori sunt salvate în EEPROM, fiind persistente la oprirea alimentării.

Conversie Unități: Schimbarea în timp real a scărilor de măsură (Celsius, Fahrenheit, Kelvin etc.).

2. Feedback Automatizat și Logică de Decizie

A. Feedback Acustica Dinamic (Buzzer PWM) Sistemul integrează un buzzer pasiv controlat prin Timer 0 în mod Fast PWM. Spre deosebire de o alarmă on/off, intensitatea sunetului este proporțională cu gravitatea abaterii termice.

Gestiune Inteligentă: Alerta sonoră este inhibată automat în condiții de lumină scăzută (Mod Noapte, sub 10 Lux) sau manual prin funcția Mute, prevenind deranjul fonic inutil.

B. Feedback Optic Avansat (Tranziții RGB & Indicatori Umiditate) Sistemul utilizează o logică de semnalizare stratificată pentru a oferi o citire rapidă a confortului ambiental:

Indicator Termic (LED RGB): Implementează o tranziție fluidă de culori folosind funcția map() pe 3 canale PWM.

Albastru: Temperatură sub pragul T_min.

Verde (Optim): Când temperatura tinde spre valoarea T_opt.

Roșu: Temperatură peste pragul T_max.

Culori intermediare: Sistemul generează nuanțe de tranziție (ex. galben/portocaliu) pe măsură ce temperatura urcă spre pragul critic.

Indicator Umiditate (LED-uri Discrete): Trei ieșiri digitale dedicate semnalizează starea aerului:

Albastru (Low): Umiditate sub pragul de confort (aer uscat).

Verde (OK): Intervalul ideal de confort (setat prin meniu).

Roșu (High): Umiditate excesivă.

3. Procesare Digitală și Calcule Complexe Filtrare Barometrică: Presiunea este trecută printr-un filtru de medie mobilă (smooth_pressure) pentru a elimina fluctuațiile cauzate de curenții de aer.

Prognoză și Altitudine: Sistemul calculează prognoza bazată pe tendința barometrică și altitudinea relativă folosind formula barometrică, compensată cu datele de calibrare citite direct din senzorul BMP280.

Punct de Rouă: Calculat matematic pentru a avertiza utilizatorul asupra condițiilor de condens.

Hardware Design

1. Stadiul actual al implementării

Proiectul este funcțional la nivel hardware, toate componentele fiind conectate și testate pe breadboard. Firmware-ul scris în C/C++ (Arduino framework) comunică cu senzorii prin I2C, citește luminozitatea prin ADC, afișează datele pe LCD și oferă feedback vizual (LED RGB) și sonor (buzzer PWM).

Piesa Link Tip Utilizare
ATMEGA328 microcontrolerPlaca dezvoltare Arduino UNO R3 ATMEGA328P Baza dezvoltare
Modul senzor AHT20 si BMP280Modul senzor temperatura, umiditate, presiuneI2C
Modul senzor de lumina ambientala TEMT6000Modul senzor lumina ambientalaADC
LCD cu convertor I2C LCD cu convertor I2CI2C
Buzzer pasiv 3.3V sau 3VBuzzer pasivPWM
Modul cu butonModul cu butonGPIO, Intreruperi
Led RGB cu catod comunLeg RGB cu catod comun GPIO (posibila modificare spre PWM)

Pentru a evita posibilele riscuri de scurt circuit pentru fiecare led legat am folosit in serie cate o rezistenta de 470Ω, iar pentru butoane o rezistenta de pull-up de 10kΩ, iar pentru o conectare facila a diverselor piese componente am folosit un breadboard de 800 de puncte si fire de legatura mama-tata si tata-tata alaturi de pini.

3. Descrierea detaliată a pinilor folosiți

Magistrala I2C — A4 (SDA) și A5 (SCL)

Pinii A4/A5 si SDA/SCL sunt pini hardware I2C ai ATmega328P, ceea ce permit comunicarea simultană cu trei dispozitive pe aceeași magistrală:

Dispozitiv Adresă I2C
LCD 16×2 cu convertor I2C 0x27
Senzor AHT20 (temperatură/umiditate) 0x38
Senzor BMP280 (presiune) 0x77

Adresele distincte permit coexistența fără conflicte și fără consum suplimentar de pini digitali.

Butoane — D2, D3, D4

Pin Funcție Tip întrerupere Rol
D2 Navigare / Meniu (apăsare lungă 2s) GPIO polling Schimbare pagină sau intrare/ieșire meniu setări
D3 Plus / Mute INT1 — front descendent (ISC11=1) Incrementare valori în meniu sau activare/dezactivare sunet
D4 Minus / Schimbare unități PCINT20 — Pin Change Interrupt Decrementare valori în meniu sau comutare unități de măsură

D3 este conectat la INT1 (întrerupere externă dedicată) pentru reacție imediată. D4 folosește PCINT2 deoarece INT0 este rezervat pentru D2. Fiecare buton are rezistență pull-up de 10kΩ în circuit și pull-up intern activat în firmware:

PORTD |= (1 << PORTD2) | (1 << PORTD3) | (1 << PORTD4);

PWM — D5, D6, D9, D10

Pin Registru Periferic Justificare
D5 (PD5) Timer0, OC0B Buzzer pasiv Intensitatea sunetului proporțională cu severitatea temperaturii
D6 (PD6) Timer0, OC0A LED Albastru (canal B al RGB) Timer0 partajat cu buzzerul, economisind un timer
D9 (PB1) Timer1, OC1A LED Verde (canal G al RGB) Timer1 pe 16 biți — rezoluție mai bună pentru tranziții de culoare
D10 (PB2) Timer1, OC1B LED Roșu (canal R al RGB) Timer1 pe 16 biți, canal B

Intensitatea buzzerului se calculează astfel:

float severity = (t >= settings.t_max) ? (t - settings.t_max) : (settings.t_min - t);
if (severity > 10.0f) severity = 10.0f;
OCR0B = (uint8_t)((severity / 10.0f) * 255.0f);

LED-uri discrete umiditate — D11, D12, D13 (PB3, PB4, PB5)

Pini GPIO simpli pe portul B, comutați direct prin registrul PORTB. Nu necesită PWM, doar stări on/off în funcție de pragurile h_low și h_high:

Pin Culoare LED Condiție de activare
D11 (PB3) Albastru h < settings.h_low — umiditate scăzută
D12 (PB4) Verde h_low ≤ h ≤ h_high — umiditate optimă
D13 (PB5) Roșu h > settings.h_high — umiditate ridicată

ADC — A3 Senzorul TEMT6000 produce o tensiune analogică proporțională cu luminozitatea.

ADMUX  = (1 << REFS0) | (1 << MUX1) | (1 << MUX0); // Ref AVcc, canal ADC3
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Prescaler 128

Valoarea citită este convertită în lux:

float lux = (float)ADC * 0.9765f;

Luminozitatea sub 10 lux activează modul nocturn (night_mute), care dezactivează automat buzzerul și afișează indicatorul [N] pe LCD.

4. Schema electrică

Schema a fost realizată în Cirkit Designer și prezintă toate componentele conectate pe breadboard-ul de 800 de puncte.

Magistrala I2C leagă în paralel modulul AHT20+BMP280 și LCD-ul 16×2 prin pinii GND, VCC, SDA, SCL.

Butoanelesunt conectate cu rezistențe pull-up de 10kΩ între VCC și pinul butonului, celălalt capăt la GND.

LED-urile au rezistențe de 470Ω în serie pe fiecare anod, limitând curentul la ~10mA la 5V.

Buzzerul pasiv este conectat direct la D5 cu GND comun.

TEMT6000 are ieșirea analogică conectată la A3.

5. Dovezi de funcționare

Schema din Cirkit Designer confirmă conectarea corectă a tuturor componentelor. Dovada funcționării magistralei I2C este dată de prezența celor trei dispozitive cu adrese distincte (0x27, 0x38, 0x77) pe aceleași linii SDA/SCL, fără conflicte.

La alimentarea circuitului, secvența de boot din firmware afișează mesajul de bun venit pe LCD timp de 1,5 secunde, confirmând funcționarea comunicației I2C:

lcd_print("  Statie Meteo  ");
lcd_send(0xC0, LCD_CMD);
lcd_print("Nicolaescu Alex");
delay(1500);

Software Design

Stadiul actual al implementării software Implementarea firmware-ului pentru ministatia meteo este completa si complet functionala. Toate modulele software descrise sunt integrate intr-o masina de stari stabila, de tip non-blocking. Achizitia de la senzori (AHT20, BMP280, TEMT6000), algoritmul de filtrare a datelor, calculul punctului de roua, controlul PWM proportional pentru LED/Buzzer, interfata de navigare prin pagini si meniul interactiv cu salvare in EEPROM ruleaza asincron, fara blocaje ale buclei principale.

Motivarea alegerii bibliotecilor folosite Pentru a asigura o amprenta minima de memorie si o executie de mare viteza, s-a optat pentru evitarea completa a bibliotecilor comerciale 3rd-party (cum ar fi cele de la Adafruit sau SparkFun) care introduc un overhead masiv de software.

avr/interrupt.h: A fost aleasa pentru a permite gestionarea asincrona a butoanelor, eliminand fenomenele de ratare a apasarii specifice tehnicilor de polling.

avr/eeprom.h: Utilizata pentru macro-urile native extrem de eficiente de citire/scriere la nivel de bloc (eeprom_read_block, eeprom_update_block).

math.h: Indispensabila pentru functiile matematice complexe (log si powf) necesare algoritmilor meteorologici.

Driver I2C/TWI Custom: Dezvoltat direct pe registrele microcontrolerului pentru a elimina latentele bibliotecii standard Wire.

Elementul de noutate al proiectului Spre deosebire de statiile meteo conventionale de nivel hobby care doar afiseaza valori brute, acest proiect aduce ca elemente de noutate:

Feedback-ul acustic si vizual proportional: Intensitatea buzzer-ului si tranzitiile cromatice ale LED-ului RGB nu sunt binare (ON/OFF), ci sunt mapate matematic utilizand gradul de severitate al abaterii termice fata de limitele de confort.

Sistemul Smart Mute adaptiv: Dispozitivul integreaza o functie autonoma de diminuare a deranjului fonic; daca senzorul TEMT6000 indica o valoare sub 10 lx (Mod Noapte), buzzerul se dezactiveaza automat, prioritatea trecand pe indicarea optica.

Meniu de calibrare hardware persistent: Permite calibrarea offset-ului de altitudine direct din butoane, fara reinnoirea firmware-ului.

Justificarea utilizării funcționalităților din laborator

Laborator Functionalitate in Proiect Justificare Tehnica
GPIO Directia pinilor si pull-up Configurația directă a regiștrilor DDRB, DDRD și PORTD pentru controlul LED-urilor discrete de umiditate și activarea pull-up-urilor interne pentru butoane.
Intreruperi INT1 si PCINT2 Folosite pentru detectarea apasarii butoanelor de pe pinii D3 si D4. Asigura comutarea unitatilor si modificarea pragurilor in mod asincron, cu debouncing software de 250ms.
I2C (TWI) Comunicatie master-slave Implementarea masinii de stari pentru controlul magistralei hardware (regisitrii TWCR, TWDR, TWSR) la 100kHz pentru citirea senzorilor si scrierea datelor pe LCD-ul cu expandor PCF8574.
PWM & Timere Fast PWM pe 8 biti Utilizarea Timer0 (canalele A si B pentru Blue LED si Buzzer) si Timer1 (canalele A si B pentru Red si Green LED) in mod Fast PWM pentru controlul intensitatii si al culorilor.
ADC Citire analogica Configurat pe pinul A3 (regisitrii ADMUX, ADCSRA) cu prescaler de 128 pentru conversia semnalului generat de TEMT6000 in unitati de luxi.

Scheletul proiectului și interacțiunea funcționalităților Sistemul este structurat sub forma unei arhitecturi conduse de evenimente combinata cu o masina de stari ciclica. Interactiunea se realizeaza astfel:

Gestiunea intrarilor (Evenimente): Apasarea butoanelor genereaza intreruperi care modifica variabilele globale volatile (temp_unit, display_page, manual_mute) sau incrementeaza/decrementeaza pragurile in mod direct daca in_menu este activ.

Masina de stari din bucla principala (loop):

Daca in_menu == true, sistemul opreste citirea senzorilor si afiseaza pe LCD interfata de editare, preluand valorile din structura settings. La iesire, se apeleaza save_to_eeprom().

Daca in_menu == false, se initiaza secvential citirea prin I2C. Datele brute de presiune sunt trimise catre filtrul smooth_pressure(), iar temperatura si umiditatea sunt folosite ca argumente pentru calculate_dew_point().

Controlul iesirilor: Datele procesate sunt trimise catre functiile update_leds() si dynamic_buzzer() care modifica direct regisitrii de comparare PWM (OCR0A, OCR0B, OCR1A, OCR1B), in timp ce ecranul LCD este actualizat cu noile string-uri formatate prin dtostrf().

Validarea functionarii: Sistemul a fost validat prin monitorizarea datelor trimise in paralel pe un port serial simulat, cat si prin introducerea statiei in medii cu parametri controlati (sursa de caldura pentru testarea tranzitiei RGB in rosu si pornirea buzzerului, respectiv acoperirea senzorului LDR pentru validarea modului de noapte).

Calibrarea elementelor de senzoristică Pentru a asigura acuratetea datelor afisate si a compensa erorile de pozitionare sau tolerantele componentelor hardware, s-au implementat trei niveluri de calibrare:

Calibrare software fixa (Offsets): S-au definit constantele AHT20_T_OFFSET = -0.8f (pentru a corecta caldura radiata de componentele din jur pe breadboard) si BMP280_P_OFFSET = 600.0f (pentru alinierea cu presiunea statiei de referinta).

Compensare dinamica din Datasheet (BMP280): In functia bmp_read_calibration(), la pornirea sistemului sunt cititi din memoria nevolatila a senzorului cei 11 coeficienti unici de calibrare din fabrica (dig_T1-T3, dig_P1-P9). Functiile bmp_compensate_temp() si bmp_compensate_pressure() aplica ecuatiile de compensare pe 32 si 64 de biti conform specificatiilor Bosch.

Calibrare interactiva (Altitudine): Deoarece presiunea de referinta la nivelul marii se modifica zilnic, s-a introdus in meniu parametrul altitude_offset, permitand utilizatorului sa introduca altitudinea exacta a locatiei curente pentru calibrarea punctului zero al algoritmului barometric.

Optimizări realizate: Cum, De ce și Unde Unde: In implementarea driverelor I2C si LCD.

Cum: Inlocuirea functiilor din biblioteca standard Arduino cu functii custom bazate pe manipulare de biti si asteptare pe flag-ul hardware TWINT.

De ce: Reduce dimensiunea codului compilat (Flash) cu aproximativ 4KB si mareste viteza de reimprospatare a ecranului.

Unde: In bucla principala (loop) si functiile de afisare.

Cum: Inlocuirea functiei standard sprinf (care contine un overhead imens pentru parsarea tipurilor float) cu functia de sistem mult mai rapida dtostrf() pentru conversia valorilor float in siruri de caractere (char buffers).

De ce: Microcontrolerul ATmega328P nu are unitate de calcul in virgula flotanta (FPU) hardware; optimizarea reduce timpul de executie al buclei cu peste 60%.

Unde: In scrierea parametrilor in EEPROM.

Cum: Utilizarea functiei eeprom_update_block in loc de eeprom_write_block.

De ce: Functia de update verifica daca noua valoare difera de cea deja salvata si efectueaza scrierea doar daca este necesar, protejand durata de viata a celulelor EEPROM (limitate la 100.000 de cicluri de scriere).

Rezultate Obținute

În urma implementării și testării stației meteo, s-au obținut următoarele rezultate ce confirmă atingerea obiectivelor propuse:

1. Monitorizarea Mediului cu Înaltă Precizie Sistemul a demonstrat o capacitate de achiziție de date stabilă, integrând cu succes senzori cu protocoale diferite (I2C și ADC):

* Acuratețe Termică: Prin senzorul AHT20, sistemul oferă citiri cu o precizie ridicată. Calculul punctului de rouă (Dew Point) este realizat în timp real prin formula Magnus-Tetens, oferind informații despre riscul de condens. * Stabilitate Barometrică: Implementarea filtrului de medie mobilă (Moving Average) în funcția smooth_pressure a eliminat fluctuațiile citirilor BMP280, rezultând o afișare stabilă a presiunii. * Senzitivitate Luminoasă: Fotorezistorul permite maparea nivelului de luxi, facilitând funcția de Mute Automat pe timp de noapte pentru a proteja confortul utilizatorului.

2. Interfață Utilizator Adaptivă Afișajul LCD 16×2 a fost optimizat pentru a prezenta datele într-o formă structurată pe trei pagini dinamice, navigabile prin butoane:

Pagina Parametri Afișați Unități de Măsură
0 Temperatură, Umiditate, Punct Rouă Celsius, Fahrenheit, Kelvin / %
1 Presiune Atmosferică, Prognoză Meteo mmHg, hPa
2 Altitudine Relativă, Luminozitate metri, picioare (ft) / lux

Comutarea unităților de măsură și a paginilor se realizează instantaneu prin utilizarea întreruperilor externe (INT1 și PCINT2).

3. Managementul Setărilor și Persistența Datelor Un rezultat major este implementarea meniului de configurare interactiv:

* Editare în timp real: Utilizatorul poate modifica pragurile de alertă (T min/max, H low/high) direct din interfața hardware. * Stocare Permanentă: Valorile sunt salvate în EEPROM, fiind păstrate chiar și după întreruperea alimentării. * Siguranță: Validarea datelor prin Magic Number previne erorile de sistem la prima inițializare a memoriei.

4. Feedback Senzorial Inteligent

Feedback Vizual (Sistem LED) S-a implementat o logică de semnalizare optică stratificată:

* Indicator Termic (RGB): Tranziție fluidă de culori (Albastru → Verde → Roșu) gestionată prin PWM, oferind o diagnoză vizuală imediată a confortului termic. * Indicator Umiditate (Discrete): Trei LED-uri dedicate semnalizează starea aerului (Uscat, Optim sau Umed) conform pragurilor setate de utilizator.

Feedback Acustic (Buzzer PWM) Modulul audio acționează ca un sistem de alertă inteligent:

* Dinamică Sonoră: Sunetul generat prin Timer 0 își schimbă intensitatea în funcție de severitatea abaterii de temperatură. * Inhibare Automată: Alerta este dezactivată automat în condiții de întuneric (sub 10 lx) sau manual prin funcția Manual Mute (stare indicată pe ecran prin simbolul [M]).

5. Optimizarea Resurselor (Firmware) Codul sursă a fost scris fără a depinde de biblioteci externe masive, utilizând manipularea directă a regiștrilor pentru protocolul I2C și timerele PWM. Rezultatul este un firmware compact, rapid și eficient, adaptat limitărilor de memorie ale microcontrolerului ATmega328P.

Concluzii

Proiectul stației meteo a reprezentat o oportunitate excelentă de a integra concepte fundamentale de electronică și programare embedded într-un dispozitiv util și compact.

În urma realizării acestui sistem, pot fi desprinse următoarele idei principale:

Eficiența Programării Low-Level: Utilizarea regiștrilor și a protocolului I2C implementat manual a demonstrat că se pot obține performanțe ridicate și un consum minim de memorie (Flash/RAM) fără a depinde de biblioteci comerciale complexe.

Interactivitatea și Flexibilitatea: Implementarea meniului în EEPROM a transformat un simplu cititor de senzori într-un dispozitiv adaptiv, capabil să răspundă nevoilor specifice ale utilizatorului prin calibrare și setarea pragurilor de alertă.

Importanța Prelucrării Datelor: Filtrarea semnalelor (prin media mobilă) și utilizarea formulelor climatologice (Magnus-Tetens) au arătat că precizia unei stații meteo nu depinde doar de senzori, ci și de algoritmii de procesare a datelor brute.

Feedback-ul Multimodal: Combinarea alertelor vizuale (RGB) cu cele sonore (PWM) și condiționarea acestora de factori externi (Lumină/Lux) oferă o experiență de utilizare sigură și non-intruzivă.

În concluzie, stația meteo realizată este un sistem robust și versatil, care reușește să centralizeze monitorizarea complexă a mediului ambiant într-o interfață simplă și eficientă, fiind o bază solidă pentru extinderi viitoare (ex: conectivitate IoT sau logarea datelor pe card SD).

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.

anicolaescu2602_download.zip

Jurnal

Această secțiune documentează etapele parcurse în dezvoltarea proiectului, evidențiind principalele sarcini și modul în care au fost soluționate problemele tehnice întâmpinate.

Dată Etapă / Activitate Descriere și Rezultate
20.04.2026 Documentare și Setup Analiza senzorilor AHT20 și BMP280. Stabilirea schemei de pini pe ATmega328P.
25.04.2026 Drivere I2C Low-Level Implementarea manuală a protocolului TWI. Testarea comunicației cu LCD-ul (adresa 0x27).
02.05.2026 Achiziție Date Senzori Citirea datelor brute de la AHT20. Implementarea logică pentru controlul LED-ului RGB.
05.05.2026 Calibrare și Filtrare Integrarea BMP280. Implementarea filtrului de medie mobilă pentru presiune (10 eșantioane).
08.05.2026 Interfață și Meniu Implementarea logică pentru pagini multiple pe LCD și meniul de setări praguri.
10.05.2026 Gestiune Memorie Integrarea logică EEPROM pentru salvarea permanentă a pragurilor setate de utilizator.
11.05.2026 Alerte și Mod Noapte Implementarea PWM dinamic pentru Buzzer și a logicii de silențios bazată pe LDR (Lux).
12.05.2026 Finalizare și Wiki Curățarea codului, realizarea Makefile-ului și finalizarea documentației pe Wiki.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Resurse Hardware (Datasheets)

Documentația oficială utilizată pentru înțelegerea hărții regiștrilor și a protocoalelor de comunicare:

Atmel ATmega328P: Datasheet complet (Architecture, Registers, Timers).

Bosch BMP280: Digital Pressure Sensor Datasheet (utilizat pentru formulele de compensare și calibrare).

Cursurile si laboratoarele din cadrul cursului de Proiectarea cu Microprocesoare

Resurse Software

Uneltele și mediile de programare care au facilitat dezvoltarea proiectului:

PlatformIO Core: Documentație oficială pentru managementul proiectului și al build-ului.

AVR Libc Home Page: Standard C library for AVR (referință pentru <avr/interrupt.h> și <avr/eeprom.h>).

Formula Magnus-Tetens: Dew Point Calculation Methodology (calculul punctului de rouă).

Export to PDF

pm/prj2026/atoader/anicolaescu2602.1779549400.txt.gz · Last modified: 2026/05/23 18:16 by anicolaescu2602
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