Lab 7.2 Comunicare intre dispozitive - Protocol SW Sierial

Lab 7.2: Comunicații între dispozitive – Protocol logic binar prin interfața serială

Scopul lucrării
Familiarizarea cu implementarea unui protocol logic binar pentru comunicația între două microcontrolere, utilizând interfață serială dedicată și structurarea datelor în pachete binare validate. Aplicația va fi organizată în taskuri FreeRTOS, folosind un mecanism de comunicare asincron bazat pe FIFO pentru transmisia și recepția datelor. Afișarea stării sistemului și a rezultatelor se va realiza prin servicii STDIO.

Obiectivele lucrării

  • Proiectarea unui protocol logic binar pentru schimbul de date între dispozitive embedded.

  • Configurarea unei interfețe seriale dedicate pentru comunicare între două microcontrolere.

  • Implementarea unui mecanism de comunicare asincronă prin coadă FIFO de mesaje cu lungime fixă.

  • Organizarea logicii aplicației în taskuri FreeRTOS dedicate recepției, interpretării și răspunsului.

  • Atribuirea și urmărirea unui identificator de pachet pentru validarea secvenței de transmisie.

  • Afișarea prin STDIO a informațiilor de stare și diagnostic în timpul rulării aplicației.

Definire Problemă
Să se realizeze o aplicație embedded care implementează un protocol logic binar de comunicație între două microcontrolere conectate printr-o interfață serială dedicată (hardware sau software). Comunicarea se va realiza prin pachete binare, având următoarea structură:

[START][ID][SEQ][CMD][LEN][PAYLOAD][CHECKSUM][END]

unde:

  • START: delimitator binar (STX - 0x02)

  • ID: identificator dispozitiv

  • SEQ: număr de ordine al pachetului

  • CMD: codul comenzii solicitate

  • PAYLOAD: date utile

  • CHECKSUM: verificare simplă pentru validitate

  • END: delimitatori binari (ETX - 0x03)

Dispozitivul Master:

  • Generează și transmite periodic cereri binare.

  • Afișează răspunsurile decodificate prin STDIO (pe interfață LCD sau serială redirecționată).

Dispozitivul Slave:

  • Primește pachetele binare printr-o interfață serială dedicată.

  • Depozitează fiecare pachet într-un buffer FIFO cu lungime fixă, pentru procesare ulterioară.

  • Procesează pachetele validând structura și integritatea.

  • Generează răspunsuri corespunzătoare cererilor primite.

Materiale și resurse
Componente hardware:

  • 2 x Microcontrolere (ESP32, STM32, Arduino Uno/Nano etc.)

  • LED-uri, senzori simpli (opțional)

  • LCD (I2C sau paralel, pentru afișare STDIO)

  • Conexiune UART (TX ↔ RX), GND comun

  • Breadboard, fire jumper

  • Sursă de alimentare USB

Resurse software:

  • Visual Studio Code cu PlatformIO

  • FreeRTOS

  • Biblioteci pentru STDIO, senzori, LCD

  • Configurație pentru transmitere/recepție prin port serial dedicat (altul decât cel folosit pentru STDIO)

Recomandări

  • Pachetele transmise vor fi binare și nu vor include niciun caracter ASCII pentru comenzi.

  • Comunicarea se va face pe interfață serială separată de canalul STDIO.

  • Taskurile FreeRTOS vor gestiona recepția pachetelor, plasarea în FIFO, interpretarea și răspunsul.

  • Verificarea integrității se va face prin sumă simplă (checksum) sau XOR.

Pontaj
Cerințe obligatorii:

  • Respectarea structurii modulare a proiectului.

  • Prezentarea schemei bloc, structurii pachetului și a interfețelor HW/SW.

  • Respectarea formatului raportului conform normelor UTM.

Notare:
50% – Funcționarea completă a protocolului binar cu transmitere și recepție corectă
10% – Implementarea mecanismului FIFO pentru stocarea pachetelor primite
10% – Organizarea aplicației în taskuri FreeRTOS cu funcții clare (recepție, prelucrare, răspuns)
10% – Prezentarea structurii pachetului, arhitecturii sistemului și interfețelor HW/SW
10% – Prezentarea conexiunilor electrice și a schemelor echipamentelor utilizate
10% – Implementarea unui comportament adițional improvizat (ex. detecție pachete pierdute, ACK/NACK, retransmisie, filtru pe ID, extensie protocol)

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

10% penalizare pentru fiecare săptămână întârziere față de termenul stabilit.

Întrebări de control

  • Cum este definit un protocol logic binar și care sunt componentele lui esențiale?

  • Ce diferență există între o coadă FIFO și un buffer circular?

  • Ce rol are câmpul SEQ și cum este gestionată ordinea pachetelor?

  • Cum se sincronizează transmiterea și recepția într-un sistem cu taskuri RTOS?

  • Cum se asigură consistența datelor într-un buffer FIFO accesat concurent?

  • Ce avantaje oferă transmiterea binară față de cea în format text în aplicațiile embedded?