Table of Contents

Statie Meteo cu Navigatie - Degeratu Razvan-Andrei

Introducere

Proiectul reprezinta o statie meteorologica autonoma, capabila sa monitorizeze in timp real temperatura, umiditatea si presiunea atmosferica din mediul ambiant. Datele sunt prelucrate si afisate local pe un ecran OLED de 0.96' sub doua forme: un ecran de date text si trei ecrane dedicate pentru istoricul grafic al fiecarui parametru, completate de statistici de minim si maxim stocate persistent.

Sistemul utilizeaza un potentiometru analogic pentru navigarea fluida intre ecrane. Schimbarea paginilor este gestionata in fundal prin intreruperi hardware. Codul este scris integral in C pentru microcontrolerul ATmega328P, lucrand direct la nivel de registri hardware, fara a apela la biblioteci high-level din ecosistemul Arduino.

Ideea de pornire: Dorinta de a dezvolta un sistem de telemetrie compact si independent, care nu doar afiseaza valori instantanee, ci construiește un istoric vizual direct pe un ecran de rezolutie mica. Prin eliminarea comunicatiei UART, statia devine un dispozitiv portabil prin conectarea la o baterie de 9V, capabil sa retina istoricul climatic chiar si dupa intreruperea alimentarii.

Utilitate: Monitorizarea microclimatului ambiental cu un grad ridicat de precizie si analizarea tendintelor meteorologice pe termen scurt prin intermediul graficelor cu axe si grid renderizate bitwise.

Ipoteza

Cred că scrierea codului exclusiv la nivel de regiștri, fără utilizarea bibliotecilor de nivel înalt, va îmbunătăți semnificativ performanța, va reduce dramatic amprenta de memorie SRAM și va asigura fluiditatea afișării pe ecranul OLED (refresh rate stabil), deoarece elimină overhead-ul funcțiilor din biblioteci și permite actualizarea asincronă a ecranului și citirea senzorilor direct în bucla principală, cu temporizare hardware.

Descriere generala

Sistemul este organizat in jurul microcontrolerului ATmega328P, care gestioneaza perifericele in mod concurent:

Hardware Design

BOM (Bill Of Materials):

Schema Electrica (Conexiuni principale): Toate perifericele digitale impart aceeasi magistrala I2C, conectate in paralel la pinii hardware dedicati ai portului C:

Schema electrica  Videoclip demonstrativ https://www.youtube.com/watch?v=PE-LNIbtaL8

Software Design

Elemente de Noutate

Metrici si Evaluare

Metrici de performanță stabilite și îndeplinite:

1. **Amprenta de memorie:** Obiectiv: sub 20% ocupare RAM. Prin scrierea la nivel de registre și renunțarea la framebuffer, utilizarea SRAM a scăzut drastic, lăsând spațiu liber pentru array-urile istorice.
2. **Timpul de răspuns al interfeței:** Obiectiv: <100ms lag. Măsurat prin setarea Timer1 să eșantioneze potențiometrul la 10Hz. Sistemul reacționează instant la rotirea potențiometrului.
3. **Refresh Rate Stabil:** Menținerea unei bucle principale care redesenează ecranele grafice la ~20 FPS (asigurat prin `_delay_ms(50)`).

Profilarea Codului: Evaluarea codului s-a realizat prin testare unitară. Inițial, am validat transmisia I2C izolată către OLED trimițând octeți individuali din datasheet-ul SSD1306. Apoi am integrat rutinele complexe (formulele de calibrare Bosch pentru BME280 pe int32_t). Corectitudinea memoriei a fost validată prin întreruperea repetată a alimentării și verificarea citirii corecte din registrele EEPROM la repornire. Siguranța execuției a fost testată rulând stația non-stop timp de >12h.

Planificare si Jurnal

Munca a fost planificată modular, de la hardware spre software.

Rezultate Obţinute

Am obtinut un sistem embedded complet, portabil si stabil. Potentiometrul permite selectarea a 5 ecrane distincte. Ecranele de grafica randeaza corect evolutia climatului, iar sistemul afiseaza permanent extremele inregistrate, fara artefacte vizuale, cu un consum minim de memorie si o implementare hardware curată, fără fire expuse haotic.

Concluzii

Scrierea codului la nivel de registru a evidentiat avantajele optimizarii de spatiu si viteza specifice programarii low-level. Integrarea timerelor si a intreruperilor a permis decuplarea logicii de afisare de cea de achizitie. Sistemul rezultat confirma pe deplin ipoteza initiala, este robust, retine datele critic-istorice in mod nevolatil si reprezinta o aplicatie practica excelenta a conceptelor studiate.

Download

Bibliografie/Resurse