Lab 3.1 Sensori - Achizitia de informatii.

Lucrare de laborator Nr. 3.1: Senzori - Achiziție Semnal

Scopul lucrării

Realizarea unei aplicații modulare pentru un microcontroler (MCU) care să achiziționeze semnale de la un senzor (analogic sau digital), să gestioneze semnalele și să afișeze parametrii fizici măsurați pe un terminal (LCD și/sau Serial), utilizând STDIO pentru afișare și FreeRTOS pentru gestionarea recurenței și offset-urilor.

Obiectivele lucrării

  1. Familiarizarea cu principiile de achiziție a semnalelor de la senzori analogici și digitali.
  2. Definirea și gestionarea semnalelor în cadrul aplicației.
  3. Implementarea unei soluții pentru achiziția recurentă a datelor de la un senzor, utilizând FreeRTOS pentru planificarea task-urilor.
  4. Utilizarea interfeței STDIO (printf, scanf etc.) pentru generarea rapoartelor de stare a sistemului și afișarea datelor achiziționate pe LCD și/sau Serial.
  5. Documentarea arhitecturii software și prezentarea schemelor bloc și schemelor electrice, ca parte integrantă a metodologiei de proiectare.

Definirea problemei

Să se realizeze o aplicație în baza de MCU care să prelucreze și să afișeze datele achiziționate de la un senzor (analogic sau digital). Aplicația trebuie să îndeplinească următoarele cerințe:

  1. Achiziția semnalului: Să se achiziționeze semnalul de la senzorul selectat (dintr-o listă predefinită sau de pe site-ul http://www.37sensors.com/).
  2. Recurența achiziției: Achiziția să fie realizată cu o recurență prestabilită, utilizând FreeRTOS și funcțiile vTaskDelayUntil() pentru offset și vTaskDelay() pentru recurență.
  3. Gestionarea semnalelor: Să se definească și să se gestioneze semnalele în cadrul aplicației, inclusiv starea sistemului și alte informații utile.
  4. Afișarea datelor:
    • Să se afișeze datele achiziționate pe un afișor LCD și/sou pe terminalul Serial, utilizând interfața STDIO (printf) in format de raport strucutrat recurent.
    • Să se creeze un task FreeRTOS cu o recurență de 500 ms pentru afișarea periodică a stării sistemului, semnalelor și altor informații utile.
  5. Modularitate: Să se implementeze funcționalitățile pentru achiziția, gestionarea și afișarea datelor în module separate, pentru a facilita reutilizarea în proiecte viitoare.

Indicații pentru implementare

  1. Selectarea senzorului: Fiecare student va selecta un senzor (analogic sau digital) din lista atașată sau de pe site-ul menționat
  2. Achiziția semnalului:
    • Pentru senzorii analogici, se va utiliza funcția analogRead() și se va aplica o scalare adecvată pentru a obține valoarea fizică.
    • Pentru senzorii digitali, se va utiliza protocolul de comunicare specific (de exemplu, I2C, SPI sau UART) pentru citirea datelor.
  3. Recurența achiziției:
    • Se va utiliza FreeRTOS pentru crearea și planificarea task-urilor.
    • Pentru recurență, se va folosi vTaskDelayUntil() pentru a asigura intervale precise între achiziții.
    • Pentru offset-uri între task-uri, se va folosi vTaskDelay().
  4. Gestionarea semnalelor:
    1. Să se definească semnalele relevante pentru aplicație (de exemplu, starea senzorului, erori, alerte etc.).
    2. Să se gestioneze aceste semnale în cadrul task-urilor FreeRTOS.
  5. Afișarea datelor:
    • Se va utiliza interfața STDIO (printf) pentru afișarea datelor pe LCD și/sau Serial.
    • Să se creeze un task FreeRTOS cu o recurență de 500 ms pentru afișarea periodică a stării sistemului, semnalelor și altor informații utile.

Materiale și resurse

Componente hardware:

  • Microcontroler cu suport FreeRTOS (ESP32, STM32 sau Arduino cu FreeRTOS).
  • Senzor (analogic sau digital) selectat din listă sau de pe http://www.37sensors.com/.
  • Afișor LCD (2x16, 4x20 sau similar).
  • Breadboard.
  • Cabluri de conexiune (jumper wires).
  • Sursă de alimentare (USB).

Resurse software:

  • Visual Studio Code cu extensia PlatformIO instalată.
  • Bibliotecă FreeRTOS.
  • Emulator terminal (ex.: Monitor Serial din PlatformIO, TeraTerm sau Putty).
  • Biblioteci specifice pentru senzor și LCD (dacă este necesar).
  • Simulator hardware (opțional, ex.: Proteus).

Recomandări

  1. Se recomandă utilizarea unui IDE cu suport Arduino (de exemplu, Eclipse sau VS Code cu PlatformIO) pentru gestionarea proiectelor modulare.
  2. Pentru validare, se recomandă utilizarea unui simulator hardware (ex.: Proteus) înainte de testarea pe hardware real.
  3. Respectarea convențiilor de codare (CamelCase, snake_case) și documentarea detaliată a soluției.

Cerințe obligatorii

  1. Respectarea structurii modulare a proiectului.
  2. Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
  3. Respectarea formatului raportului conform normelor UTM.

Pontaj

  • 50% – Demonstrarea funcționării corecte a achiziției, gestionării semnalelor și afișării datelor.
  • 10% – Utilizarea corectă a funcțiilor STDIO (printf) pentru generarea rapoartelor de stare.
  • 10% – Explicarea interfeței hardware-software pentru stackurile de periferii (sensor, UI) și a metodologiei implementate.
  • 10% – Explicarea schemelor electrice și a diagramelor bloc.
  • 10% – Demonstrarea funcționării fizice a soluției.
  • 10% – Implementarea unui comportament adițional improvizat (de exemplu, afișarea unui mesaj de avertizare la depășirea unui prag).

NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice a soluției și implementarea unui comportament adițional improvizat.

Penalizare: -10% pentru fiecare săptămână întârziere de la deadline.