This is an old revision of the document!


Stație Meteo "Smart" cu Interfață Duală (CLI și OLED)

Introducere

Ce face proiectul: Proiectul este o stație meteorologică capabilă să citească temperatura, umiditatea și presiunea atmosferică din mediul ambiant. Datele sunt afișate local pe un ecran OLED, dar sunt și trimise simultan către un PC prin intermediul interfeței UART. Mai mult, stația dispune de o interfață de tip Command Line (CLI) prin care utilizatorul poate trimite comenzi de la PC pentru a interoga istoricul măsurătorilor, a opri/porni ecranul sau a cere statistici.

Scopul lui: Scopul este de a construi un sistem complet de telemetrie și achiziție de date, demonstrând interconectarea mai multor periferice (I2C pentru senzori/display, Timer pentru scheduling, USART pentru comunicație PC). Codul va fi scris “bare-metal” în C pe arhitectura ATmega328P, fără a apela la bibliotecile high-level specifice mediului Arduino.

Ideea de pornire: Am dorit să depășesc stadiul unei simple stații care doar afișează numere pe un ecran, adăugând componenta de conectivitate cu PC-ul pentru posibilitatea de data logging. Astfel, am îmbinat necesitatea măsurării fizice (I2C) cu interacțiunea software avansată (UART + Întreruperi).

Utilitate: Proiectul este util pentru monitorizarea microclimatului dintr-o cameră, iar datele trimise prin UART pot fi preluate ușor de scripturi externe pe PC pentru a genera grafice în timp real.

Descriere generală

Arhitectura proiectului este de tip Master-Slave pe I2C pentru componentele fizice și Client-Server simplu prin UART pentru interfața cu PC-ul.

  • Microcontrolerul (Master): Un Arduino cu ATmega328P folosește un Timer hardware pentru a da ritmul aplicației, trezind sistemul periodic pentru a face citiri.
  • Modul BME280 (I2C Slave 1): Preia datele fizice brute și le transmite microcontrolerului.
  • Display OLED (I2C Slave 2): Primește datele formatate de la microcontroler și le afișează.
  • PC (Interfață UART): Acționează ca un terminal de unde se pot da comenzi (via întreruperi de recepție RX) și unde se primesc log-urile de la stație (TX).

Schema Bloc: [ PC / Terminal (PuTTY) ] ⇐= UART (TX/RX via cablu USB) =⇒ [ Microcontroler (ATmega328P pe Arduino) ]

                                                                     |
                                                         I2C Bus (A4-SDA, A5-SCL)
                                                              /              \
                                             [ Senzor BME280 ]             [ Display OLED 0.96" ]

Hardware Design

BOM (Bill Of Materials):

  • Placă de dezvoltare Arduino Uno sau Nano (ATmega328P) - 1 buc.
  • Senzor de mediu BME280 (Temperatură, Umiditate, Presiune) - 1 buc.
  • Display OLED 0.96” I2C (driver SSD1306) - 1 buc.
  • Breadboard (Placă de teste) - 1 buc.
  • Fire de conexiune (Jumper wires) - 1 set.

Schema Electrică (Conexiuni principale): Deoarece magistrala I2C împarte aceleași fire, componentele se leagă în paralel la pinii dedicați de pe Arduino (SDA = Analog 4, SCL = Analog 5):

  • BME280 → VCC la 3.3V sau 5V (în funcție 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 → Comunicația serială se realizează 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`). Comunicația I2C (TWI) va fi scrisă din registre (`TWCR`, `TWSR`, `TWDR`).
  • Concepte și algoritmi:
    • I2C (Lab 6): Setarea magistralei ca Master, adresarea corectă a BME280 (ex: 0x76) și OLED (ex: 0x3C).
    • Timere (Lab 2): Folosirea Timer1/Timer2 în mod CTC pentru a genera întreruperi hardware la intervale fixe, evitând delay-urile blocante (`_delay_ms`).
    • UART (Lab 1): Configurarea interfeței pentru debugging și interfață CLI; folosirea întreruperilor `RXCIE0` pentru preluarea comenzilor de pe PC.

Rezultate Obţinute

*(Se va completa la Etapa 3)*

Concluzii

*(Se va completa la finalul proiectului)*

Download

*(Se va completa la final cu arhiva codului și schemele pdf)*

Jurnal

  • 07 Mai 2026: Stabilirea temei și a perifericelor (BME280, OLED). S-a clarificat funcționalitatea interfeței UART ca CLI (Command Line Interface) pentru a atinge multiple concepte de curs (Timere, I2C, USART cu întreruperi). Crearea structurii wiki și a BOM-ului.

Bibliografie/Resurse

  • Datasheet ATmega328P (Microchip).
  • Datasheet Senzor BME280 (Bosch Sensortec).
  • Datasheet Display OLED SSD1306.
  • Laboratorul 1, 2 și 6 de la cursul PM.
pm/prj2026/victor.stoica0203/degeratu_razvan.1778154008.txt.gz · Last modified: 2026/05/07 14:40 by razvan.degeratu
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