This is an old revision of the document!
Statie Meteo Smart cu Interfata Duala
Introducere
Proiectul este o statie meteorologica capabila sa citeasca temperatura, umiditatea si presiunea atmosferica din mediul ambiant. Datele sunt afisate local pe un ecran OLED, dar sunt si trimise simultan catre un PC prin intermediul interfetei UART. Mai mult, statia dispune de o interfata de tip Command Line (CLI) prin care utilizatorul poate trimite comenzi de la PC pentru a interoga istoricul masuratorilor, a opri/porni ecranul sau a cere statistici.
Scopul este de a construi un sistem complet de telemetrie si achizitie de date, demonstrand interconectarea mai multor periferice (I2C pentru senzori/display, Timer pentru scheduling, USART pentru comunicatie PC). Codul va fi scris “bare-metal” in C pe arhitectura ATmega328P, fara a apela la bibliotecile high-level specifice mediului Arduino.
Ideea de pornire:
Am dorit sa depasesc stadiul unei simple statii care doar afiseaza numere pe un ecran, adaugand componenta de conectivitate cu PC-ul pentru posibilitatea de data logging. Astfel, am imbinat necesitatea masurarii fizice (I2C) cu interactiunea software avansata (UART + Intreruperi).
Utilitate:
Proiectul este util pentru monitorizarea microclimatului dintr-o camera, iar datele trimise prin UART pot fi preluate usor de scripturi externe pe PC pentru a genera grafice in timp real.
Descriere generala
Arhitectura proiectului este de tip Master-Slave pe I2C pentru componentele fizice si Client-Server simplu prin UART pentru interfata cu PC-ul.
Microcontrolerul (Master): Un Arduino cu ATmega328P foloseste un Timer hardware pentru a da ritmul aplicatiei, trezind sistemul periodic pentru a face citiri.
Modul BME280 (I2C Slave 1): Preia datele si le transmite microcontrolerului.
Display OLED (I2C Slave 2): Primeste datele formatate de la microcontroler si le afiseaza.
PC (Interfata UART): Actioneaza ca un terminal de unde se pot da comenzi (via intreruperi de receptie RX) si unde se primesc log-urile de la statie (TX).
Schema Bloc:
Hardware Design
BOM (Bill Of Materials):
Placa de dezvoltare Arduino - 1 buc.
Senzor de mediu BME280 (Temperatura, Umiditate, Presiune) - 1 buc.
Display OLED 0.96” I2C - 1 buc.
Breadboard (Placa de teste) - 1 buc.
Fire de conexiune (Jumper wires) - 1 set.
Schema Electrica (Conexiuni principale):
Deoarece magistrala I2C imparte aceleasi fire, componentele se leaga in paralel la pinii dedicati de pe Arduino (SDA = Analog 4, SCL = Analog 5):
BME280 → VCC la 3.3V sau 5V (in functie de modul), GND la GND, SDA la pinul A4 (PC4), SCL la pinul A5 (PC5).
OLED → VCC la 3.3V sau 5V, GND la GND, SDA la pinul A4 (PC4), SCL la pinul A5 (PC5).
PC/UART → Comunicatia seriala se realizeaza direct prin cablul USB via chip-ul convertor USB-Serial integrat pe placa Arduino.
Software Design
Mediu de dezvoltare: VS Code cu extensia PlatformIO (compilator avr-gcc).
Abordare “Bare-Metal”: Se va evita folosirea bibliotecilor standard Arduino (precum `Wire.h`). Comunicatia I2C (TWI) va fi scrisa din registre (`TWCR`, `TWSR`, `TWDR`).
Concepte si algoritmi:
I2C (Lab 6): Setarea magistralei ca Master, adresarea corecta a BME280 (ex: 0x76) si OLED (ex: 0x3C).
Timere (Lab 2): Folosirea Timer1/Timer2 in mod CTC pentru a genera intreruperi hardware la intervale fixe, evitand delay-urile blocante (`_delay_ms`).
UART (Lab 1): Configurarea interfetei pentru debugging si interfata CLI; folosirea intreruperilor `RXCIE0` pentru preluarea comenzilor de pe PC.
Rezultate Obţinute
Concluzii
Download
Jurnal
07 Mai 2026: Stabilirea temei si a perifericelor (BME280, OLED). S-a clarificat functionalitatea interfetei UART ca CLI (Command Line Interface) pentru a atinge multiple concepte de laborator (Timere, I2C, USART cu intreruperi). Crearea structurii wiki si a BOM-ului.
Bibliografie/Resurse
Datasheet ATmega328P (Microchip).
Datasheet Senzor BME280 (Bosch Sensortec).
Datasheet Display OLED SSD1306.
Laboratorul 1, 2 si 6