Тематический план
Descriere Curs
Sumar Curs:
Internetul Lucrurilor reprezinta o retea de dispozitive, sisteme incorporate care participa împreună la rezolvarea unei probleme.
Un Sistem Incorporat reprezinta un dispozitiv sau echipament realizat prin inginerie din diferite domenii cu ar fi Inginerie Mecanica (ME), Inginerie Electrica (EE), si Inginerie Software (SWE).
- Funcțional, un sistem Incorporat interacționează cu mediul extern preluând informație din acesta, procesând, și raportând înapoi către el. aceste interacțiuni fiind te tipul Sistem Mediu, Sistem Utilizator, Sistem Sistem.
- Structural, sistemul embedded este compus din o totalitate de componente specializate pentru a realiza intercesiunile și procesările necesare.
Obiective Curs:
În cadrul acestui curs se vor studia aspectele de structura și funcționalitate a unui Sistem Incorporat din cadrul stemelor (IoT), din perspectiva unei arhitecturi generice, si analiza componentelor acesteia cum ar fi Interacțiunea cu Utilizatorul, Sensori, Actuatori, Diagnoze, Control, Procesare si Comunicare, realizând diverse aplicații pentru accentuarea rolului acestora în sistem.
Titular curs: lector universitar - Andrei Bragarenco
Forum pentru comunicare in cadrul cursului
Resurs editat colaborativ de catre studenti si profesor pentru notite de curs
----------------------------------------------------------------------
----------------------------------------------------------------------
Sondaje
Sondaj Initial (anonim)
Sondaj Intermediar (anonim)
Sondaj Final (anonim)
Evaluare
- Testul pentru Evaluarea Intermediara A1 contine un set de intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 30 minute. dupa acest interval testul se va preda automat
- In timpul examinarii nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Промежуточный тест A1 содержит набор вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 30 минут. по истечении этого интервала тест будет сдан автоматически
- во время экзамена вы не сможете увидеть, какой ответ вы написали неправильно.
Laborator
Formatul raportului
Raportul de laborator trebuie să fie detaliat și să reflecte toate aspectele lucrării, inclusiv analiza tehnologică, proiectarea, implementarea și testarea soluției.
1. Analiza situației în domeniu
- Descrierea tehnologiilor utilizate și a contextului aplicației dezvoltate.
- Prezentarea componentelor hardware și software utilizate, explicând rolul fiecăreia.
- Explicații asupra arhitecturii sistemului și justificarea alegerii soluției.
- Studiu de caz relevant care demonstrează aplicabilitatea soluției propuse.
2. Proiectare
- Realizarea schiței arhitecturale pentru a evidenția interconectarea componentelor cu explicatiile aferente pentru rolul fiecarei componente si interfete
- Scheme bloc de comportament, algoritm (FollowChart, FSM, etc) cu explicatii aferente despre abordarea plicata
- Schița electrică, ilustrând conexiunile circuitului și integrarea perifericelor.
- Structura proiectului trebuie să fie bine organizată, fiecare modul având un rol clar si sa reflecte organizare conform schitei arhitecturale.
- Implementarea modulară:
- Fiecare componentă este reflectată în fișiere
.cppși.h, respectând principiile de separare a interfeței și implementării. - Fișiere
.h: Definirea interfețelor, explicarea metodelor disponibile. - Fișiere
.cpp: Implementarea soluției, cu explicații detaliate pentru secvențele de cod critice. - Scheme bloc funcționale, pentru fiecare modul implementat, incluse în document.
- Fiecare componentă este reflectată în fișiere
3. Prezentarea rezultatelor
- Capturi de ecran relevante ale interacțiunii cu sistemul și a datelor procesate.
- Poze ale montajului hardware, dacă lucrarea implică echipamente fizice.
- Rapoarte din interfața serială, evidențiind schimbul de date și comportamentul sistemului.
- Demonstrarea funcționării printr-un video, dacă este cazul (link către sursa video).
- Rezultatele simulării, dacă sistemul a fost testat într-un simulator precum Proteus.
4. Concluzii
- Analiza performanței sistemului, identificarea eventualelor limitări și propuneri de îmbunătățire.
- Concluzii asupra rezultatelor obținute în urma efectuării lucrării de laborator.
- Impactul tehnologiei utilizate în aplicații reale.
5. Notă privind utilizarea instrumentelor AI
Dacă în redactarea raportului au fost utilizate instrumente AI, acest lucru trebuie menționat.
Recomandare:
"În timpul redactării acestui raport, autorul a utilizat [NUME INSTRUMENT AI] pentru generarea/consolidarea conținutului. Informațiile rezultate au fost revizuite, validate și ajustate conform cerințelor lucrării de laborator."6. Bibliografie
- Raportul trebuie să includă cel puțin 3 referințe către cursuri, documentație oficială sau literatură tehnică suplimentară.
7. Anexă - Codul sursă
- Codul complet al proiectului organizat conform structurii
.cppși.h. - Codul trebuie să fie bine documentat, cu comentarii explicative asupra fiecărui modul.
- Se vor include link-uri către repository GitHub, dacă proiectul este gestionat online.
Lab: Ghid elaborare Capitol Analiza Domeniu
----------------------------------------------------------------------
Lucrare de Laborator Nr 0 : Introducere in mediul de dezvoltare - Button + LED
OPTIONAL - fara pontare - Realizarea unei aplicatii simple Button Led pentru studiul mediului de dezvoltare aplicatii IoT
Definire problema
- sa se proiecteze o apliatie in baza de MCU care ar schimba starea unui LED la detectarea apasarii unui buton
Recomandari
- se recomanda utilizarea unui IDE cu suport arduino, care permite lucrul cu mai multe fisiere. de exemplu Eclipse
- pentru Validare se recomanda utilizarea unui simulator, de ex Proteus.
- functionalitatile pentru fiecare echipament periferic ( led, buton, lcd, keypad) sa fie realizate in fisiere separate, in scop de reutilizare in lucrarile urmatoare
- utilizarea regulilor de codare magic number si CamelCase
Pontaj
- nu se aplica pontaj la aceasta lucrare introductiva
Penalizari
- nu se aplica penalizari la aceasta lucrare introductiva
Lab 0 Recording
----------------------------------------------------------------------
Lucrare de Laborator Nr 1.1 : Interactiunea cu Utilizatorul : STDIO - Interfata seriala
Realizarea applicatiilor pentru interactiune cu utilizatorul prin interfata seriala utilizand libraria STDIO pentru a facilita interactiunea clasica cu functii tipprintf(..) si scanf(...)
Lab 1.1 Interacțiunea cu Utilizatorul: STDIO - Interfața Serială
Scopul lucrării
Familiarizarea studenților cu utilizarea bibliotecii STDIO pentru comunicare serială și implementarea unei aplicații simple care controlează un LED prin comenzi text transmise de la un terminal serial.
Obiectivele lucrării
- Înțelegerea principiilor de bază ale comunicației seriale.
- Utilizarea bibliotecii STDIO pentru schimbul de informații text.
- Proiectarea unei aplicații care interpretează comenzi transmise prin interfața serială.
- Dezvoltarea unei soluții modulare, cu funcționalități separate pentru controlul perifericelor.
Definire problema
- Sa se configureze aplicatia pentru lucrul cu libraia STDIO prin interfata seriala pentru schimbul de text prin terminal.
- sa se proiecteze o aplicate in baza de MCU care ar receptiona comenzi de la terminal prin interfata seriala pentru a seta starea unui LED.
- led on pentru aprindere si
- led off pentru stingere.,
- sistemul trebuie sa raspunda cu mesaje text despre confirmarea comenzii
- pentru schimbul de text prin terminal a se utiliza libraia STDIO
Materiale și resurse
Componente hardware:
- Microcontroler (Arduino Uno, ESP32 sau similar)
- LED-uri
- Rezistor de 220 Ω
- Breadboard
- Cabluri de conexiune (jumper wires)
- Sursă de alimentare (USB)
Resurse software:
- Visual Studio Code cu extensia PlatformIO instalată
- Emulator terminal serial (ex.: Monitor Serial din PlatformIO, TeraTerm sau Putty)
- Simulator hardware (opțional, ex.: Proteus)
Recomandari
- se recomanda utilizarea unui IDE cu suport arduino, care permite lucrul cu mai multe fisiere. de exemplu Eclipse
- pentru Validare se recomanda utilizarea unui simulator, de ex Proteus.
- functionalitatile pentru fiecare echipament periferic ( led, buton, lcd, keypad) sa fie realizate in fisiere separate, in scop de reutilizare in lucrarile urmatoare
- utilizarea regulilor de codare CamelCase
Pontaj
Cerințe obligatorii:
- Respectarea structurii modulare a proiectului.
- Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
- Respectarea formatului raportului conform normelor UTM.
Notare
- Nu se accepta rapoartele care nu corespund cerintelor de prezentare
- 50% demonstrarea rezultatelor.
- 10% utilizarea STDIO (
printf,scanf, etc.). - 10% explicarea interfeței hardware-software stackuril de periferii.
- 10% prezentarea schiței electrice.
- 10% demonstrarea funcționării fizice.
NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice a soluției!!
- - 10% penalizare pentru fiecare săptămână întârziere de la deadline.
Lab 1.1 Recording
----------------------------------------------------------------------
Lucrare de Laborator Nr 1.2 : Interactiunea cu Utilizatorul: LCD + KeyPad
Realizarea applicatiilor pentru interactiune cu utilizatorul prin Keypad + LCD utilizand libraria STDIO pentru a facilita interactiunea clasica cu functii tip printf(..) si scanf(...)
Interacțiunea cu Utilizatorul: STDIO - LCD + Keypad
Scopul lucrării
Familiarizarea studenților cu utilizarea bibliotecii STDIO pentru interactiune cu periferiile LCD si Keypad implementarea unei aplicații simple care verifica un cod introdus de la tastatura, si printeaza un mesaj la LCD.
Obiectivele lucrării
- Înțelegerea principiilor de bază ale perifericelor pentru interactiunea cu utilizatorul..
- Utilizarea bibliotecii STDIO pentru schimbul de informații text.
- Proiectarea unei aplicații care interpretează comenzi transmise prin tastatura si printare la LCD
- Dezvoltarea unei soluții modulare, cu funcționalități separate pentru controlul perifericelor.
Definire Problema
- Sa se configureze aplicatia pentru lucrul cu libraia STDIO prin interfata seriala pentru schimbul de text prin LCD+Keypad.
- Sa se proiecteze o aplicatie in baza de MCU pentru detectarea unui cod de la o tastarura 4x4, sa verifice codul si sa afisese mesaj la un LCD.
- Pentru cod valid sa se aprinda un led de culoare verde, pentru cod invalid, un led de culoare rosie.
- A se utiliza STDIO pentru scanarea tastaturii si afisare la LCD.
Materiale și resurse
Componente hardware:
- Microcontroler (Arduino Uno, ESP32 sau similar)
- LED-uri
- LCD 2x16 (4x20 sau altele din aceasta serie)
- Keypad 4x4
- Rezistor de 220 Ω
- Breadboard
- Cabluri de conexiune (jumper wires)
- Sursă de alimentare (USB)
Resurse software:
- Visual Studio Code cu extensia PlatformIO instalată
- Emulator terminal serial (ex.: Monitor Serial din PlatformIO, TeraTerm sau Putty)
- Simulator hardware (opțional, ex.: Proteus)
Recomandari
- se recomanda utilizarea unui IDE cu suport arduino, care permite lucrul cu mai multe fisiere. de exemplu Eclipse
- pentru Validare se recomanda utilizarea unui simulator, de ex Proteus.
- functionalitatile pentru fiecare echipament periferic ( led, buton, lcd, keypad) sa fie realizate in fisiere separate, in scop de reutilizare in lucrarile urmatoare
- utilizarea regulilor de codare CamelCase
Pontaj
Cerințe obligatorii:
- Respectarea structurii modulare a proiectului.
- Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
- Respectarea formatului raportului conform normelor UTM.
Notare
- Nu se accepta rapoartele care nu corespund cerintelor de prezentare
- 50% demonstrarea rezultatelor.
- 10% utilizarea STDIO (
printf,scanf, etc.). - 10% explicarea interfeței hardware-software.
- 10% prezentarea schiței electrice.
- 10% demonstrarea funcționării fizice.
NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice a soluției!!
- - 10% penalizare pentru fiecare săptămână întârziere de la deadline.
Lab 1.2 Recording
----------------------------------------------------------------------
Lucrare de Laborator Nr 2.1 : Sisteme de Operare - Secventiale
Realizarea applicatiilor cu Sisteme de operare Secventiale pentru a lansa mai multe sarcini in paralel pe acelasi microcontroller.
Scopul lucrării:
Realizarea unei aplicații modulare pentru MCU care să ruleze secvențial cel puțin 3 task-uri, demonstrând metodologia de planificare, sincronizare și execuție non-preemptivă a task-urilor.
Obiectivele lucrării:
- Familiarizarea cu principiile de planificare secvențială și execuție non-preemptivă a task-urilor într-un sistem embedded.
- Analiza metodelor de stabilire a recurentei și a offset-urilor între task-uri pentru optimizarea utilizării resurselor procesorului.
- Înțelegerea și aplicarea mecanismului de sincronizare între task-uri prin modelul provider/consumer, ca metodă de comunicare internă a datelor.
- Elaborarea unui model de execuție secvențială, evidențiind avantajele și limitările acesteia din punct de vedere metodologic.
- Documentarea detaliată a arhitecturii software și prezentarea schemelor bloc și a schemelor electrice, ca parte integrantă a metodologiei de proiectare.
Definire Problema
Realizarea unei aplicații pentru MCU care să ruleze secvențial cel puțin 3 task-uri distincte, după cum urmează:
- Task 1 – Button LED: Schimbarea stării unui LED la detectarea unei apăsări pe buton.
- Task 2 – LED Intermitent: Controlul unui LED intermitent, activ doar atunci când LED-ul din Task 1 este stins.
- Task 3 – Variabilă de stare: Incrementarea/decrementarea unei variabile prin apăsarea a două butoane, reprezentând numărul de recurențe/timp în care LED-ul din Task 2 se află într-o anumită stare.
Un Task de Idle va prelua informațiile din variabilele globale/semnale generate de celelalte task-uri (conform modelului provider/consumer) și le va afișa utilizând funcțiile STDIO (ex. printf), demonstrând astfel metodologia de raportare și monitorizare a stărilor sistemului.
Indicații pentru implementare
1. sa se implementeze comunicarea intre Taskuri ca provider consumer:
- task-ul care generează date, provider, stochează rezultatele într-o variabila globala/semnal
- task-ul care utilizează aceste date, consumer, citește aceasta variabila/semnal.
de ex: task de UI (LCD sau Serial) preia informația din niște variabile-semnale globale și raportează
2. A se urma principiile prezentate la curs Sisteme Secvențiale
- stabilirea rezonabila a recurentei pentru a diminua incarcarea procesorului
- stabilirea ofsetului, intru a activa în ordinea cuvenita task urile
3. Task-ul de raportare pentru Secvențial cu utilizare STDIO printf() catre LCD va fi rulat in bucla infinita/IDLE deoarece este bazat pe un spin lock și ar putea bloca întreruperile deci secvențial clasic - printf & delay in main loop,
Materiale și Resurse:
Componente hardware:
- Microcontroler (Arduino Uno, ESP32 sau similar)
- LED-uri
- Rezistor de 220 Ω
- Butoane (minim 3, pentru funcționalitățile specificate)
- Breadboard
- Cabluri de conexiune (jumper wires)
- Sursă de alimentare (USB)
Resurse software:
- Visual Studio Code cu extensia PlatformIO instalată
- Emulator terminal (ex.: Monitor Serial din PlatformIO, TeraTerm sau Putty)
- Simulator hardware (opțional, ex.: Proteus)
Recomandări:
- Se recomandă utilizarea unui IDE cu suport Arduino (de exemplu, Eclipse) pentru gestionarea proiectelor modulare.
- Pentru validare se recomandă utilizarea unui simulator hardware (ex.: Proteus).
- Funcționalitățile pentru fiecare periferic (LED, buton, LCD etc.) trebuie implementate în fișiere separate, pentru a facilita reutilizarea în lucrările viitoare.
- Respectați convențiile de codare (CamelCase etc.) și asigurați o documentare detaliată a soluției.
Pontaj:
Cerințe obligatorii:
- Respectarea structurii modulare a proiectului.
- Prezentarea schițelor arhitecturale, a schemelor bloc și a schemelor electrice.
- Respectarea formatului raportului conform normelor UTM.
Notare:
- 50% – Demonstrarea rezultatelor (funcționarea corectă a execuției secvențiale a task-urilor și implementarea mecanismului provider/consumer).
- 10% – Utilizarea STDIO (printf, scanf, etc.) pentru raportare și monitorizare.
- 10% – Explicarea interfeței hardware–software, evidențiind metodologia implementată.
- 10% – Prezentarea schemelor electrice.
- 10% – Demonstrarea funcționării fizice a soluției.
NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice a soluției!!
- 10% penalizare pentru fiecare săptămână întârziere de la deadline.
Lab 2.1 Recording
----------------------------------------------------------------------
Lucrare de Laborator Nr 2.2 : Sisteme de Operare Preemptive - FreeRTOS
Realizarea applicatiilor cu Sisteme de operare in timp real (RTOS) pentru a lansa mai multe sarcini in paralel pe acelasi microcontroller.
Lucrare de laborator Nr. 2.2: Sisteme de Operare Preemptive – FreeRTOS
Scopul lucrării
Realizarea unei aplicații modulare pentru un microcontroler (MCU) utilizând FreeRTOS, care să ruleze secvențial cel puțin 3 task-uri și să demonstreze metodologia de planificare, sincronizare și execuție a task-urilor în timp real.
Obiectivele lucrării
- Familiarizarea cu principiile de planificare și execuție a task-urilor într-un sistem embedded utilizând FreeRTOS.
- Implementarea mecanismelor de sincronizare între task-uri folosind semafoare.
- Utilizarea unui buffer pentru comunicarea între task-uri în model provider/consumer.
- Aplicarea corectă a recurentei și offset-urilor între task-uri pentru optimizarea utilizării resurselor procesorului.
- Documentarea arhitecturii software și prezentarea schemelor bloc și schemelor electrice, ca parte integrantă a metodologiei de proiectare.
Definire Problemă
Realizarea unei aplicații pentru MCU care va rula minim 3 task-uri utilizând FreeRTOS:
- Button Led – Va aprinde un led timp de 1 SEC LED la detectarea unei apăsări pe buton. Task-ul va ridica un semafor și va avea recurența de 10 ms.
- Task Sincron – Va aștepta ridicarea semaforului de la primul task, va incrementa o variabilă (
N = N + 1) și va trimite în buffer o serie deNbytes (1,2,3,..N), la un interval de 50 ms. Dupa care, va controla un LED care va clipi de N ori, cu faza ON - 300 ms, OFF - 500 ms. - Task Asincron – Va citi la fiecare 200 ms bufferul și va afișa octeții citiți în terminal prin STDIO. La detectarea unui
0, se va trece pe un rând nou. (a se organiza o formatare informativa a mesajelor), se poate utiliza si LCD in acest scop
Indicații pentru implementare
-
Asigurarea recurentei pentru Task 1
- Se va utiliza
xTaskDelayUntil(delay)în bucla infinită pentru respectarea perioadei de 10 ms.
- Se va utiliza
-
Sincronizarea Task 1 și Task 2
- Se va utiliza un semafor binar:
- Task 1 va utiliza
xSemaphoreGive()pentru a semnaliza apăsarea butonului. - Task 2 va utiliza
xSemaphoreTake()pentru a detecta schimbarea de stare și a iniția execuția sa.
- Task 1 va utiliza
- Se va utiliza un semafor binar:
-
Comunicarea între Task 2 și Task 3 folosind bufferul
- Task 2 (provider) va stoca datele într-un buffer global, utilizând
xQueueSendToFront() - Task 3 (consumer) va citi datele din buffer folosind
xQueueReceive(). și le va afișa pe terminalul serial.
- Task 2 (provider) va stoca datele într-un buffer global, utilizând
-
Pauze și controlul temporizării
- Se va folosi
xTaskDelay(delay)pentru a intervalele de timp in cadrul tascurilor unde e cazul.
- Se va folosi
Materiale și Resurse
Componente hardware
- Microcontroler (ESP32, STM32 sau Arduino cu suport FreeRTOS)
- LED-uri
- Rezistor de 220Ω
- Butoane (minim 1, pentru funcționalitatea specificată)
- Breadboard
- Cabluri de conexiune (jumper wires)
- Sursă de alimentare (USB)
Resurse software
- Visual Studio Code cu extensia PlatformIO instalată
- Biblioteca FreeRTOS
- Emulator terminal (ex.: Monitor Serial din PlatformIO, TeraTerm sau Putty)
- Simulator hardware (opțional, ex.: Proteus)
Recomandări
- Utilizarea unui IDE cu suport Arduino (de exemplu, Eclipse sau VS Code cu PlatformIO) pentru gestionarea proiectelor modulare.
- Validarea codului printr-un simulator hardware (ex.: Proteus) înainte de testarea pe hardware real.
- Implementarea funcționalităților pentru fiecare periferic (LED, buton, buffer etc.) în fișiere separate pentru a facilita reutilizarea.
- Respectarea convențiilor de codare (
CamelCase,snake_case) și documentarea detaliată a soluției.
Cerințe obligatorii:
- Respectarea structurii modulare a proiectului.
- Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
- Respectarea formatului raportului conform normelor UTM.
Pontaj
- Nu se accepta rapoartele care nu corespund cerintelor de prezentare
- 50% Prezentarea simpla a functionarii sistemului elaborat.
- 10% Explicarea semafoarelor și bufferului pentru sincronizare între task-uri
- 10% Explicarea interfeței hardware-software a stackurilor periferiilor și metodologia implementată
- 10% Prezentarea schemelor electrice si diagramelor scheme bloc SW
- 10% Demonstrarea funcționării fizice a soluției
- 10% Implementarea unui comportamnet improvizat aditional cu utilizare servicii FreeRTOS (de ex cu utlizare mutex-uri)
NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice a soluției!, SI implementare a unui comportament aditional improvizat
- Penalizare: -10% pentru fiecare săptămână întârziere de la deadline.
Lab 2.2 Recording
----------------------------------------------------------------------
Lucrare de Laborator Nr 3.1 : Senzori - Achizitie de semnal
Realizarea applicatiilor cu de achiziție a semnalelor din mediuil extern de la senzori, si afișare parametrul fizic
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
- Familiarizarea cu principiile de achiziție a semnalelor de la senzori analogici și digitali.
- Definirea și gestionarea semnalelor în cadrul aplicației.
- Implementarea unei soluții pentru achiziția recurentă a datelor de la un senzor, utilizând FreeRTOS pentru planificarea task-urilor.
- 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.
- 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:
- 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/).
- Recurența achiziției: Achiziția să fie realizată cu o recurență prestabilită, utilizând FreeRTOS și funcțiile
vTaskDelayUntil()pentru offset șivTaskDelay()pentru recurență. - Gestionarea semnalelor: Să se definească și să se gestioneze semnalele în cadrul aplicației, inclusiv starea sistemului și alte informații utile.
- 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.
- 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
- Selectarea senzorului: Fiecare student va selecta un senzor (analogic sau digital) din lista atașată sau de pe site-ul menționat
- 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.
- Pentru senzorii analogici, se va utiliza funcția
- 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().
- Gestionarea semnalelor:
- Să se definească semnalele relevante pentru aplicație (de exemplu, starea senzorului, erori, alerte etc.).
- Să se gestioneze aceste semnale în cadrul task-urilor FreeRTOS.
- 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
- Se recomandă utilizarea unui IDE cu suport Arduino (de exemplu, Eclipse sau VS Code cu PlatformIO) pentru gestionarea proiectelor modulare.
- Pentru validare, se recomandă utilizarea unui simulator hardware (ex.: Proteus) înainte de testarea pe hardware real.
- Respectarea convențiilor de codare (CamelCase, snake_case) și documentarea detaliată a soluției.
Cerințe obligatorii
- Respectarea structurii modulare a proiectului.
- Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
- 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.
Lab 3.1 Recording
----------------------------------------------------------------------
Lucrare de Laborator Nr 3.2 : Senzori - Conditionare semnal.
Realizarea applicatiilor cu de condiționare semnalulele de la senzori, si afișarea parametrului fizic
Lab 3.2: Senzori – Condiționare Semnal
Scopul lucrării
Realizarea unei aplicații modulare pentru un microcontroler (MCU), care să efectueze condiționarea semnalului achiziționat de la un senzor analogic sau digital, aplicând metode de filtrare digitală și conversii specifice, pentru a afișa parametrii fizici prelucrați pe un terminal LCD și/sau Serial, folosind interfața STDIO și FreeRTOS.
Obiectivele lucrării
- Familiarizarea cu metodele de condiționare digitală a semnalelor provenite de la senzori analogici și digitali.
- Implementarea algoritmilor de filtrare digitală (filtru sare și piper, filtru mediere ponderată).
- Aplicarea conversiei ADC-Voltage și Voltage-Parametru fizic.
- Utilizarea bibliotecii STDIO pentru generarea rapoartelor periodice privind datele prelucrate.
- 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 bazată pe MCU pentru condiționarea semnalului preluat de la un senzor analogic sau digital (selectat din PDF-ul atașat sau http://www.37sensors.com), conform următoarelor cerințe:
-
Achiziția semnalului:
- Să se achiziționeze semnalul de la senzorul selectat (analogic sau digital, non-binar).
-
Condiționarea semnalului:
- Implementarea unui filtru digital de tip "sare și piper" pentru eliminarea zgomotului impulsiv.
- Implementarea unui filtru digital de mediere ponderată pentru netezirea suplimentară a semnalului achiziționat.
-
Conversie:
- Conversia ADC-to-Voltage și Voltage-to-Parametru fizic conform specificațiilor senzorului ales.
- Aplicarea saturării pentru a limita valorile prelucrate în intervale valide.
-
Afișarea datelor:
- Datele procesate să fie afișate periodic (LCD și/sau terminal Serial) folosind STDIO (printf).
-
Recurență și offset:
- Să se utilizeze FreeRTOS pentru stabilirea recurenței precise a achiziției și condiționării semnalului folosind vTaskDelayUntil() și offset-uri cu vTaskDelay().
Materiale și resurse
Componente hardware:
- Microcontroler cu suport FreeRTOS (ESP32, STM32 sau Arduino cu FreeRTOS)
- Senzor (analogic/digital non-binar)
- LCD (2x16, 4x20 sau similar)
- Rezistoare (în funcție de senzor)
- Breadboard
- Cabluri jumper
- Sursă de alimentare (USB)
Resurse software:
- Visual Studio Code cu PlatformIO
- Biblioteca FreeRTOS
- Emulator terminal (Monitor Serial din PlatformIO, TeraTerm sau Putty)
- Biblioteci specifice senzorului și LCD-ului
- Simulator hardware (opțional, ex.: Proteus)
Recomandări
- Pentru validare, se recomandă utilizarea unui simulator hardware (ex.: Proteus).
- Funcționalitățile pentru fiecare echipament periferic (LED, buton, LCD, senzor) trebuie realizate în fișiere separate, pentru reutilizare.
- Respectarea convențiilor de codare (magic number și CamelCase).
Cerințe obligatorii
- Respectarea structurii modulare a proiectului.
- Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
- Respectarea formatului raportului conform normelor UTM.
Pontaj
- 50% – Aplicația de bază pentru achiziția și afișarea simplă a parametrului pe LCD/Serial prin STDIO.
- 10% – Implementarea filtrului digital "sare și piper".
- 10% – Implementarea filtrului digital de mediere ponderată.
- 10% – Realizarea aplicatiei in Taskuri FreeRTOS, dintre care unul dedicat pentru raportare recurents (printare mesaje).
- 10% – Condiționarea completă aplicată suplimentar unui alt senzor decât cel utilizat anterior (ex.: DHT sau Ultrasonic),
- 10% – Demonstrarea funcționării fizice complete a soluției.
NOTĂ:
- Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției și implementarea comportamentului adițional improvizat!
- Penalizare: -10% pentru fiecare săptămână întârziere față de termenul stabilit.
Întrebări de control
- Care este necesitatea condiționării semnalului achiziționat de la senzori în aplicațiile embedded IoT?
- Cum funcționează și care sunt avantajele unui filtru "sare și piper"?
- Ce reprezintă un filtru digital cu mediere ponderată și când este recomandat a fi utilizat?
- Care sunt implicațiile aplicării saturării în procesul de conversie ADC-Voltage și Voltage-parametru fizic?
- Care sunt provocările implementării filtrelor digitale pe microcontrolere și cum pot fi acestea optimizate?
- Cum poate contribui utilizarea FreeRTOS la îmbunătățirea stabilității și recurenței procesului de achiziție și condiționare semnalelor?
Lab 3.2 Recording
----------------------------------------------------------------------
Lucrare de Laborator Nr 4.1 : Actuatori cu interfata binara - Releu.
Realizarea applicatiilor de generare actiune asupra mediuylui extern, conversia semnalul in putere, acționare unui actuator.
Lucrare de laborator Nr. 4.1: Actuatori cu Interfață Binară - Control Releu (Serial/Keypad și LCD)
Scopul lucrării
Realizarea unei aplicații modulare pentru un microcontroler (MCU) care să controleze dispozitive de acționare binare (bec electric sau ventilator) folosind comenzi recepționate prin interfața STDIO, fie prin terminal serial, fie prin tastatură (Keypad), și să raporteze starea actuatorului către un afișaj LCD sau prin interfața serială.
Obiectivele lucrării
- Familiarizarea cu principiile de funcționare și control al releelor în aplicații embedded.
- Utilizarea bibliotecii STDIO pentru interacțiunea cu utilizatorul prin intermediul terminalului serial și/sau tastaturii matriciale (Keypad).
- Implementarea controlului binar al actuatoarelor (bec electric sau ventilator) prin intermediul unui releu.
- Dezvoltarea unei soluții modulare, structurată pe fișiere separate pentru fiecare periferic, asigurând astfel reutilizarea în proiecte viitoare.
- 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 bazată pe MCU care va controla dispozitivele binare de acționare (bec electric sau ventilator), respectând următoarele cerințe:
-
Control prin interfața STDIO:
-
Recepționarea comenzilor utilizatorului fie prin intermediul unui terminal serial, fie prin intermediul tastaturii matriciale 4x4.
-
Comenzile acceptate vor fi:
-
relay onpentru activarea dispozitivului de acționare; -
relay offpentru dezactivarea dispozitivului de acționare.
-
-
-
Raportarea stării actuatorului:
-
Aplicația trebuie să raporteze confirmarea comenzilor și starea curentă a actuatorului prin intermediul afișajului LCD și/sau a interfeței seriale folosind funcțiile bibliotecii STDIO (ex.:
printf()).
-
-
Interfață hardware-software clar definită:
-
Componentele periferice (releu, keypad, LCD etc.) să fie implementate în module separate cu interfețe clar definite.
-
Materiale și resurse
Componente hardware:
- Microcontroler (ESP32, Arduino Uno sau similar)
- Modul releu (5V)
- Bec electric (de joasă tensiune) sau ventilator (DC de joasă tensiune)
- Rezistoare (220 Ω pentru LED-uri, dacă sunt utilizate pentru raportare vizuală adițională)
- Tastatură matricială (4x4, opțională dacă nu se utilizează interfața serială)
- LCD (2x16, 4x20 sau similar, pentru afișare)
- Breadboard
- Cabluri jumper
- Sursă de alimentare (USB și/sau alimentare externă pentru actuator)
Resurse software:
- Visual Studio Code cu extensia PlatformIO instalată
- Emulator terminal (Monitor Serial din PlatformIO, TeraTerm sau Putty)
- Biblioteci pentru LCD (LiquidCrystal sau LiquidCrystal_I2C) și Keypad
- Simulator hardware (opțional, ex.: Proteus)
Recomandări
- Pentru validare, se recomandă utilizarea unui simulator hardware (ex.: Proteus).
- Funcționalitățile pentru fiecare echipament periferic (LCD, releu, keypad etc.) trebuie realizate în fișiere separate pentru reutilizare ușoară.
- Respectarea convențiilor de codare (CamelCase).
- Implementarea unei interfețe clare și intuitive pentru comenzile primite și raportarea stărilor.
Indicații pentru implementare
-
Control Releu:
-
Utilizarea pinilor digitali ai MCU pentru a controla releul cu funcția
digitalWrite(). -
Implementarea unei logici clare pentru ON/OFF pe baza comenzilor primite.
-
-
Comunicare STDIO:
-
Pentru terminal serial, utilizarea funcțiilor
scanf()șiprintf()pentru interacțiunea cu utilizatorul. -
Pentru Keypad, citirea și interpretarea comenzilor cu biblioteci specifice (ex. Keypad.h).
-
-
Task-uri (opțional FreeRTOS):
-
Implementarea în task-uri dedicate FreeRTOS, pentru gestionarea clară a citirii comenzilor, controlului releului și afișării informațiilor.
-
Cerințe obligatorii
- Respectarea structurii modulare a proiectului.
- Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
- Respectarea formatului raportului conform normelor UTM.
Pontaj
- 50% – Aplicația de bază funcțională (control ON/OFF releu, comenzi STDIO prin Serial/Keypad).
- 10% – Utilizarea corectă a funcțiilor STDIO (
printf(),scanf()) pentru interacțiune și raportare. - 10% – Claritatea și modularitatea interfeței hardware-software a dispozitivelor periferice.
- 10% – Prezentarea schemelor electrice și a diagramelor bloc arhitecturale.
- 10% – Demonstrarea funcționării fizice a soluției implementate.
- 10% – Implementarea unui comportament adițional improvizat (ex.: afișarea unei avertizări speciale în caz de eroare sau comenzi invalide).
NOTĂ:
Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției și implementarea comportamentului adițional improvizat!-
Penalizare: -10% pentru fiecare săptămână întârziere față de termenul stabilit.
Întrebări de control
-
Care este principiul de funcționare al unui releu electromagnetic utilizat în aplicațiile embedded?
-
Cum se realizează citirea comenzilor text folosind interfața STDIO (
scanf) și cum sunt acestea interpretate? -
Care sunt avantajele implementării modulare a funcționalităților perifericelor în proiectele embedded?
-
Ce probleme pot apărea la comandarea unui releu și cum pot fi rezolvate acestea (ex.: interferențe electromagnetice)?
-
De ce este importantă raportarea stărilor actuatorului și cum poate influența această raportare utilizarea aplicației finale?
----------------------------------------------------------------------
Lucrare de Laborator Nr 4.2 : Actuatori cu interfata analogica - Motor in curent continuu
Realizarea applicatiilor de generare actiune asupra mediuylui extern, conversia semnalul in putere, acționare unui actuator.
Lucrare de laborator Nr. 4.2: Actuatori Analogici – Control Motor DC (Driver L298)
Scopul lucrării
Realizarea unei aplicații modulare pentru un microcontroler (MCU) care să controleze un motor DC utilizând driverul L298. Comenzile vor fi recepționate prin interfața STDIO (terminal serial sau keypad), iar raportarea parametrilor motorului se va realiza pe interfața serială și/sau afișor LCD.
Obiectivele lucrării
- Familiarizarea cu principiile de control ale motoarelor DC utilizând driverul L298.
- Implementarea controlului analogic (PWM) pentru reglarea puterii aplicate unui motor DC.
- Utilizarea bibliotecii STDIO pentru preluarea comenzilor utilizatorului și raportarea parametrilor de stare.
- Realizarea driverelor pentru periferice (L298, motor, LCD) cu niveluri clare de abstractizare.
- 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 pentru controlul unui motor DC prin intermediul unui driver L298, cu următoarele cerințe:
- Comenzi recepționate prin STDIO (serial sau keypad):
motor set [-100 .. 100]– Setarea directă a puterii și direcției motorului (-100% pentru putere maximă înapoi, 100% înainte, 0 pentru oprire).motor stop– Oprire imediată a motorului.motor max– Setarea puterii la valoarea maximă (100%) în direcția curentă.motor inc– Creșterea incrementală a puterii motorului cu +10% (fără a depăși ±100%).motor dec– Descreșterea incrementală a puterii motorului cu -10% (spre 0%).
-
Control PWM al motorului:
-
Reglarea puterii motorului proporțional cu valoarea setată prin PWM.
-
-
Raportarea stării motorului:
-
Aplicația trebuie să raporteze periodic sau la schimbarea stării parametrii actuali (direcție, putere setată) prin STDIO (printf pe Serial și/sau LCD).
-
-
Structură modulară și abstractizare:
-
Driverele pentru periferice (L298, LCD, Keypad etc.) vor fi organizate pe niveluri de abstractizare, permițând interschimbabilitatea și reutilizarea în proiecte viitoare.
-
Materiale și resurse
Componente hardware:
- Microcontroler (ESP32, Arduino Uno sau similar)
- Motor DC
- Driver L298 (modul L298N)
- Alimentare externă pentru motor (6–12V DC recomandat)
- LCD (2x16, 4x20 sau similar)
- Tastatură matricială 4x4 (opțională, pentru alternative la comenzi seriale)
- Rezistoare (220 Ω pentru LED-uri indicatoare, dacă sunt utilizate)
- Breadboard și cabluri jumper
- Sursă alimentare MCU (USB)
Resurse software:
- Visual Studio Code cu PlatformIO
- Emulator terminal serial (Monitor Serial din PlatformIO, TeraTerm sau Putty)
- Biblioteci specifice (Arduino, LCD, Keypad)
- Simulator hardware (opțional, ex.: Proteus)
Recomandări
- Se recomandă utilizarea unui simulator hardware (ex.: Proteus) pentru validarea inițială a aplicației.
- Implementarea modulară cu fișiere separate pentru fiecare nivel de abstractizare a driverului (control motor, comunicare STDIO, raportare stare etc.).
- Respectarea convențiilor de codare (CamelCase și evitarea „magic numbers”).
Indicații pentru implementare
- Nivel abstractizare drivere:
- Nivelul scăzut: gestionarea directă a pinilor L298 și PWM.
- Nivelul mediu: control logic motor (direcție, putere PWM).
- Nivelul înalt: interfața STDIO și comenzile utilizatorului (interpretare comenzi, validare date).
- Comunicare STDIO:
- Utilizarea clară a
scanf()șiprintf()pentru interfața serială. - Pentru Keypad, realizarea unei interfețe intuitive care să permită setarea incrementală sau directă a puterii motorului.
- Utilizarea clară a
- Taskuri FreeRTOS:
- Implementarea în task-uri FreeRTOS pentru separarea clară a controlului motorului, recepționării comenzilor și raportării periodice a parametrilor.
Cerințe obligatorii
- Respectarea structurii modulare și abstractizarea driverelor periferice.
- Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
- Respectarea formatului raportului conform normelor UTM.
Pontaj
- 50% – Aplicația de bază (control direcție și putere PWM prin comenzi STDIO, LCD/serial).
- 10% – Implementarea corectă și clară a nivelurilor de abstractizare ale driverelor periferice (L298 și motor DC).
- 10% – Utilizarea corectă și eficientă a funcțiilor STDIO (
scanf(),printf()). - 10% – Prezentarea schemelor electrice și a diagramelor bloc arhitecturale.
- 10% – Demonstrarea funcționării fizice complete a soluției implementate.
- 10% – Implementarea unui comportament adițional improvizat (ex.: limitare inteligentă incrementală sau afișarea unui mesaj când se atinge limita maximă/minimă a puterii).
NOTĂ:
Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției și implementarea comportamentului adițional improvizat!-
Penalizare: -10% pentru fiecare săptămână întârziere față de termenul stabilit.
Întrebări de control
- Cum funcționează driverul L298 în controlul motoarelor DC?
- Care sunt beneficiile comenzilor incrementale de reglare a puterii în aplicațiile embedded?
- Ce se întâmplă dacă se depășește intervalul permis (-100%, 100%) și cum se poate gestiona acest caz?
- De ce este importantă structurarea driverelor periferice pe niveluri de abstractizare diferite?
- Ce considerente trebuie luate în calcul pentru protecția circuitului la comenzi rapide succesive sau inversări bruște ale sensului de rotație?
----------------------------------------------------------------------
Lucrare de Laborator Nr 5.1 : Control funcțional - ON-OFF cu Histereza
Realizarea applicatiilor de Control funcțional cu metoda de reglare automata - ON/OFF cu histereza
Lab 5.1: Control funcțional – ON-OFF cu Histereză
Scopul lucrării
Realizarea unei aplicații modulare pentru un microcontroler (MCU) care să implementeze un sistem de control ON-OFF cu histereză aplicat asupra unui parametru de control (ex.: temperatură, umiditate sau poziție rotor), acționat prin releu sau driver L298. Setarea valorii de referință (Set Point) se va face printr-un mecanism de interacțiune ales, iar valorile vor fi afișate pe LCD și/sau prin interfața serială utilizând STDIO.Obiectivele lucrării
-
Familiarizarea cu principiile metodei de control ON-OFF cu histereză.
-
Aplicarea histerezei în sistemele de acționare bazate pe releu sau driver L298.
-
Dezvoltarea unei aplicații modulare, cu interfață STDIO și afișare LCD.
-
Afișarea și ajustarea parametrilor de control în timp real.
Definire Problemă
Să se realizeze o aplicație în baza de MCU care implementează un sistem de control ON-OFF cu histereză pentru una dintre următoarele variante (la alegere):Varianta A – Control temperatură sau umiditate, pe baza valorii de la un senzor digital (ex. DHT22), cu acționare prin releu.
Varianta B – Control poziție rotor (ex. servo motor) cu acționare prin driver L298, folosind control ON/OFF cu histereză. Motorul va fi acționat în regim de saturație (putere fixă 50%), cu comutare între direcții în funcție de abatere.
Pentru ambele variante:
-
Setarea valorii de referință (Set Point) se va face prin una dintre metodele: potențiometru, două butoane (UP/DOWN), senzor encoder, keypad 4x4 sau interfață serială.
-
Valoarea de Set Point și valoarea curentă se vor afișa pe LCD (2x16 sau 4x20) și/sau prin interfața serială folosind STDIO (
printf). -
Se va aplica o histereză configurabilă (valoare fixă sau definită prin cod) pentru a preveni comutările frecvente.
-
Controlul se va face cu logica: ON sub pragul inferior, OFF peste pragul superior.
Materiale și resurse
Componente hardware:-
Microcontroler (ESP32, STM32 sau Arduino cu suport STDIO)
-
Senzor: DHT11/DHT22 (pentru temperatură/umiditate) sau potențiometru/encoder (pentru poziție rotor)
-
Actuator: Releu sau motor cu driver L298
-
LCD (2x16 sau 4x20, preferabil I2C)
-
Tastatură 4x4, butoane, rezistențe, breadboard, fire jumper
-
Sursă de alimentare (USB sau externă pentru actuator)
Resurse software:
-
Visual Studio Code cu extensia PlatformIO
-
Biblioteci pentru LCD, STDIO (Serial), senzorul ales, Keypad etc.
-
Emulator terminal serial (Monitor Serial din PlatformIO, TeraTerm, Putty)
-
Simulator hardware (opțional, ex.: Proteus)
Recomandări
-
Se recomandă utilizarea unui IDE cu suport Arduino, cum ar fi Eclipse sau VS Code cu PlatformIO.
-
Pentru validare, se recomandă utilizarea unui simulator hardware (ex.: Proteus).
-
Funcționalitățile pentru fiecare echipament periferic (senzor, actuator, LCD etc.) să fie realizate în fișiere separate, pentru reutilizare.
-
Se recomandă respectarea convențiilor de codare CamelCase și evitarea magic number.
-
Se recomandă trimiterea datelor către Serial Plotter pentru analiză vizuală a comportamentului sistemului.
Pontaj
Cerințe obligatorii:-
Respectarea structurii modulare a proiectului.
-
Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
-
Respectarea formatului raportului conform normelor UTM.
Notare:
50% – Funcționarea corectă a controlului ON-OFF cu histereză (releu sau L298)
10% – Implementarea corectă a metodei de setare a valorii de referință
10% – Utilizarea STDIO (printf) pentru afișare și interacțiune
10% – Prezentarea schemelor electrice și diagramelor arhitecturale
10% – Demonstrarea funcționării fizice complete a soluției
10% – Implementarea unui comportament adițional improvizat (ex.: alertă la abatere mare, LED avertizare, sunet buzzer)NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției și implementarea comportamentului adițional improvizat.
10% penalizare pentru fiecare săptămână întârziere față de termenul stabilit.
Întrebări de control
-
Ce este metoda de control ON-OFF cu histereză și de ce este utilă?
-
Cum se implementează logica de histereză în codul unui MCU?
-
Care sunt diferențele între acționarea prin releu și prin driver L298?
-
Ce avantaje și dezavantaje oferă fiecare metodă de setare a Set Point-ului?
-
Ce probleme pot apărea la controlul sistemelor cu comutări frecvente și cum pot fi evitate?
-
De ce este importantă raportarea valorilor SetPoint și Actual Value în timp real?
-
----------------------------------------------------------------------
Lucrare de Laborator Nr 5.2 : Control funcțional - PID Control
Realizarea applicatiilor de Control funcțional cu metoda de reglare automata -PID Control
Lab 5.2: Control funcțional – PID
Scopul lucrării
Realizarea unei aplicații modulare pentru un microcontroler (MCU) care să implementeze un sistem de control PID aplicat asupra unui parametru fizic (temperatură, umiditate, turație sau poziție), utilizând senzori adecvați și actuatori controlați analogic (ex. ventilator, motor, încălzitor). Setarea valorii de referință (Set Point) se va face printr-o metodă interactivă aleasă, iar valorile de interes vor fi afișate și transmise în scop de analiză.Obiectivele lucrării
-
Înțelegerea principiilor metodei PID (Proporțional – Integral – Derivativ).
-
Implementarea unui algoritm de control PID pentru un parametru fizic măsurabil.
-
Controlul unui actuator în regim analogic prin driver L298 sau direct prin PWM.
-
Afișarea valorii de referință și a valorii măsurate în timp real.
-
Utilizarea STDIO pentru interfața de control și debug.
-
Transmiterea datelor relevante către Arduino Serial Plotter.
Definire Problemă
Să se realizeze o aplicație în baza de MCU care implementează un sistem de control PID pentru una dintre următoarele variante:Varianta A – Control temperatură, cu senzor digital (ex. DHT22) și un încălzitor ca actuator, acționat printr-un releu PWM sau MOSFET.
Varianta B – Control umiditate, cu senzor digital (ex. DHT22) și ventilator ca actuator, controlat prin PWM.
Varianta C – Control turație motor, cu encoder ca senzor de viteză și driver L298 pentru alimentarea motorului.
Varianta D – Control poziție rotor, cu potențiometru ca senzor și driver L298 ca actuator, pentru poziționare bidirecțională.
Varianta E – Un alt parametru pentru control la alegere (cu validare din partea profesorului).
Set Point (valoarea de referință) se va seta din una din următoarele surse, la alegere:
-
potențiometru
-
două butoane (UP/DOWN)
-
senzor encoder
-
tastatură 4x4
-
interfață serială
Valoarea de Set Point și valoarea curentă se vor afișa pe:
-
afișaj LCD (I2C sau paralel) și/sau
-
interfața serială, utilizând funcții din biblioteca STDIO (
printf()).
Pentru demonstrarea controlului în timp real, datele relevante (SetPoint, Value, Output) vor fi trimise către Arduino Serial Plotter.
Materiale și resurse
Componente hardware:-
Microcontroler (ESP32, STM32 sau Arduino cu suport PID)
-
Senzor (în funcție de variantă: DHT22, encoder, potențiometru etc.)
-
Actuator (releu, ventilator, motor DC + driver L298)
-
LCD 2x16 / 4x20 (I2C preferabil)
-
Tastatură 4x4, potențiometru, butoane, breadboard, fire jumper
-
Sursă de alimentare adecvată (MCU și actuator)
Resurse software:
-
Visual Studio Code cu PlatformIO
-
Biblioteca PID (ex. Arduino PID Library)
-
Biblioteci pentru LCD, STDIO, senzori și actuatori
-
Arduino Serial Plotter
-
Simulator hardware (opțional: Proteus)
Recomandări
-
Se recomandă utilizarea unui IDE cu suport modular (ex. PlatformIO).
-
Reutilizați soluțiile existente din lucrările anterioare (STDIO, senzor, actuator, afișaj).
-
Structura codului trebuie să permită extinderea și reutilizarea modulelor.
-
Testați aplicația cu diverse SetPoint-uri și observați comportamentul PID.
-
Pentru debugging și demonstrare se recomandă trimiterea datelor în format grafic (Serial Plotter).
Pontaj
Cerințe obligatorii:-
Respectarea structurii modulare a proiectului.
-
Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
-
Respectarea formatului raportului conform normelor UTM.
Notare:
50% – Funcționarea corectă a sistemului de control PID (pentru varianta aleasă)
10% – Implementarea metodei de setare și ajustare a Set Point
10% – Afișarea valorilor Set Point și Value (LCD și/sau STDIO)
10% – Prezentarea schemelor electrice și arhitecturale
10% – Demonstrarea funcționării fizice a soluției
10% – Implementarea unui comportament adițional improvizat (ex. comutare mod manual/automat, protecție, log de date etc.)NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției și implementarea comportamentului adițional improvizat.
10% penalizare pentru fiecare săptămână întârziere față de termenul stabilit.
Întrebări de control
-
Cum funcționează metoda PID și care este rolul fiecărui termen?
-
Ce diferențe există între controlul PID și controlul ON/OFF cu histereză?
-
Cum se determină turația unui motor utilizând un encoder?
-
Cum se reglează direcția și puterea unui motor DC cu L298?
-
Ce surse pot introduce erori în sistemul de control și cum pot fi corectate?
-
Cum poate fi analizat comportamentul sistemului folosind Serial Plotter?
-
----------------------------------------------------------------------
Lucrare de Laborator Nr 6.1 : Control comportamental cu Automate Finite: Button-Led
Realizarea applicatiei de Control comportamental cu Automate Finite - Automat de control Button-Led
Lab 6.1: Control comportamental cu Automate Finite – Button-LED
Scopul lucrării
Familiarizarea cu implementarea automatelor finite (FSM – Finite State Machine) pentru controlul comportamental al unui sistem simplu, utilizând un buton ca eveniment de intrare și un LED ca ieșire controlată.Obiectivele lucrării
-
Înțelegerea principiilor de funcționare ale automatelor finite în aplicații embedded.
-
Proiectarea și implementarea unui FSM pentru controlul unui LED între două stări (ON/OFF), prin intermediul unui buton.
-
Utilizarea interfeței STDIO (serial sau LCD) pentru raportarea stării curente a automatului.
-
Dezvoltarea unei aplicații modulare, cu logica FSM separată într-un fișier dedicat.
Definire Problemă
Să se realizeze o aplicație embedded care implementează un automat finit pentru controlul unui LED, în funcție de apăsarea unui buton.Stările automatului:
-
Stare 0 (OFF): LED-ul este stins.
-
Stare 1 (ON): LED-ul este aprins.
Tranziția între stări se va face la fiecare apăsare validă a butonului (cu debounce implementat).
Afișarea stării curente se va realiza în timp real prin:
-
interfața serială (
printf) sau -
LCD (2x16 sau 4x20), utilizând biblioteca STDIO/LCD.
Materiale și resurse
Componente hardware:-
Microcontroler (ESP32, STM32 sau Arduino)
-
Buton (cu rezistență de pull-up sau pull-down)
-
LED și rezistor de 220Ω
-
LCD (opțional, pentru afișare alternativă)
-
Breadboard, cabluri de conexiune
-
Sursă de alimentare (USB)
Resurse software:
-
Visual Studio Code cu PlatformIO
-
Biblioteci: STDIO (Serial), LiquidCrystal_I2C
-
Simulator hardware (opțional: Proteus)
Recomandări
-
A se utiliza interfața serială sau LCD cu servicii STDIO pentru raportarea stării curente și a tranzițiilor automatului.
-
Reutilizați modulele dezvoltate în lucrările anterioare pentru gestionarea butonului, LED-ului și interfeței de afișare.
-
Revizuiți resursele teoretice predate la curs privind automatele finite deterministe și diagramele de stare.
Pontaj
Cerințe obligatorii:-
Respectarea structurii modulare a proiectului.
-
Prezentarea schemelor bloc, a FSM-ului (diagrama de stări) și a interfețelor hardware-software.
-
Respectarea formatului raportului conform normelor UTM.
Notare:
50% – Funcționarea corectă a automatului finit cu 2 stări (ON/OFF)
10% – Afișarea stării curente prin STDIO (Serial/LCD)
10% – Prezentarea diagramei de sistem, a FSM-ului și a interfețelor HW/SW
10% – Prezentarea schemelor electrice și diagramelor bloc
10% – Demonstrarea funcționării fizice a soluției
10% – Implementarea unui comportament adițional improvizat (ex.: stare intermediară – LED intermitent, timeout automat, reset, stare „wait” etc.)NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției și implementarea comportamentului adițional improvizat care implică minim 3 stări.
10% penalizare pentru fiecare săptămână întârziere față de termenul stabilit.
Întrebări de control
-
Ce este un automat finit și care sunt elementele sale (stări, tranziții, evenimente)?
-
Cum se implementează un FSM în limbaj C/C++ pentru microcontrolere?
-
Ce este debouncing-ul și de ce este necesar în gestionarea unui buton?
-
Cum se poate monitoriza starea automatului în timp real prin interfața serială sau LCD?
-
Care sunt avantajele separării logicii FSM într-un modul dedicat?
-
Ce beneficii aduce extinderea FSM-ului cu o stare suplimentară în funcționalitatea aplicației?
-
----------------------------------------------------------------------
Lucrare de Laborator Nr 6.2 : Control comportamental cu Automate Finite: Semafor
Realizarea applicatiei de Control comportamental cu Automate Finite - Automat de control a unui semafor
Lab 6.2: Control comportamental cu Automate Finite – Semafor Inteligent
Scopul lucrării
Realizarea unei aplicații modulare în baza de MCU care implementează un semafor inteligent pentru o intersecție cu două direcții de trafic (Est și Nord), utilizând un automat finit și sistemul de operare în timp real FreeRTOS. Controlul stărilor semaforului se va face în funcție de cereri provenite de la senzori (prezență vehicul sau apăsare buton pietonal).Obiectivele lucrării
-
Înțelegerea modului de implementare a automatelor finite în contextul controlului comportamental.
-
Implementarea controlului unui semafor pentru două direcții de trafic utilizând FreeRTOS.
-
Sincronizarea tranzițiilor de stare ale semaforului prin mecanisme FreeRTOS (taskuri, semafoare, delayuri).
-
Reacția automatului la cereri provenite de la senzori digitali.
-
Afișarea stării curente a semaforului prin interfața serială sau LCD.
Definire Problemă
Să se proiecteze și implementeze o aplicație care controlează un semafor inteligent la o intersecție în cruce cu două direcții de trafic:-
direcția Est ↔ Vest
-
direcția Nord ↔ Sud
Semaforul va avea următoarele caracteristici:
-
Trecerea de la o direcție verde la cealaltă va avea loc în funcție de o cerere activă (simulată cu un buton sau senzor digital).
-
Dacă nu există cerere pentru direcția Nord, direcția Est are prioritate și rămâne verde.
-
Tranzițiile vor respecta regulile de semnalizare rutieră: verde → galben → roșu.
-
Timpul de afișare a fiecărei stări (verde, galben, roșu) va fi controlat prin delayuri FreeRTOS (
vTaskDelay,vTaskDelayUntil). -
Automat finit implementat pentru controlul fiecărei direcții.
-
Cererea de trecere se poate activa printr-un buton sau un senzor de proximitate.
-
Starea curentă a semaforului va fi afișată prin STDIO (Serial sau LCD).
Materiale și resurse
Componente hardware:-
Microcontroler (ESP32, STM32 sau Arduino cu suport FreeRTOS)
-
LED-uri: roșu, galben, verde pentru ambele direcții
-
Buton/senzor digital pentru simularea cererii de la direcția Nord
-
Rezistențe 220Ω
-
Breadboard și cabluri de conexiune
-
Sursă de alimentare USB
-
LCD (opțional)
Resurse software:
-
Visual Studio Code cu PlatformIO
-
Biblioteca FreeRTOS
-
Biblioteci pentru LCD și STDIO
-
Simulator hardware (opțional: Proteus)
Recomandări
-
Utilizați câte un task dedicat pentru fiecare direcție de trafic sau pentru fiecare semafor.
-
Utilizați semafoare binare sau variabile globale pentru comunicarea între taskul de cerere și taskul semaforului.
-
Structurați codul modular, cu automatul finit separat și configurabil.
-
Afișați stările curente și cererile active în format text pe terminalul serial sau LCD.
Pontaj
Cerințe obligatorii:-
Respectarea structurii modulare a proiectului.
-
Prezentarea schemelor bloc, a FSM-ului (automat finit) și a interfețelor HW/SW.
-
Respectarea formatului raportului conform normelor UTM.
Notare:
50% – Funcționarea corectă a semaforului inteligent cu FSM și reacție la cerere
10% – Utilizarea corectă a serviciilor FreeRTOS pentru temporizare și sincronizare
10% – Afișarea stării semaforului prin STDIO (Serial/LCD)
10% – Prezentarea diagramei de sistem, a FSM-ului și a interfețelor HW/SW
10% – Prezentarea schemelor electrice și diagramelor arhitecturale
10% – Implementarea unui comportament adițional improvizat (ex.: mod pietonal cu temporizare separată, prioritate vehicul de urgență, mod noapte cu galben intermitent)NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției ș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
-
Ce este un automat finit și cum se aplică în controlul semafoarelor?
-
Cum se utilizează FreeRTOS pentru a sincroniza taskuri și a controla temporizările?
-
Ce rol are semaforul binar în comunicarea între taskuri?
-
Cum se gestionează cererile multiple în cadrul automatului finit?
-
Care sunt avantajele controlului bazat pe cerere în intersecțiile inteligente?
-
Ce îmbunătățiri pot fi aduse sistemului pentru creșterea siguranței și eficienței?
-
----------------------------------------------------------------------
Lucrare de Laborator Nr 7.1 : Comunicații cu module periferice: I²C - Protocol HW
Realizarea applicatiilor cu comunicatii interne - intre coponentele electronice ale dispozitivului cu interfete HW de comunicare
Lab 7.1: Comunicații cu module periferice – I²C – Protocol HW
Scopul lucrării
Familiarizarea cu protocolul de comunicație I²C și implementarea unei aplicații de comunicație între două microcontrolere (master și slave), în care slave-ul colectează date reale de la senzori ultrasonici, iar masterul interoghează periodic datele prin I²C. Aplicația va utiliza sistemul de operare în timp real FreeRTOS pentru organizarea logicii în taskuri separate.Obiectivele lucrării
-
Înțelegerea principiilor protocolului I²C și a structurii hardware de comunicație între microcontrolere.
-
Configurarea comunicației între două microcontrolere prin magistrala I²C (master ↔ slave).
-
Integrarea unuia sau mai multor senzori ultrasonici cu MCU-ul slave.
-
Organizarea aplicației în taskuri FreeRTOS pentru colectare, actualizare buffer și comunicare.
-
Interogarea de către master și afișarea datelor colectate folosind STDIO (Serial) și/sau LCD.
Definire Problemă
Să se realizeze o aplicație în care două microcontrolere comunică prin protocolul I²C, având următoarele comportamente:-
MCU Slave:
-
Integrează unul sau mai mulți senzori ultrasonici (ex. HC-SR04) conectați pe GPIO.
-
Rulează în FreeRTOS cel puțin două taskuri:
-
Task de achiziție periodică a distanței de la senzori.
-
Task de actualizare buffer partajat pentru răspuns I²C.
-
-
Răspunde cererilor I²C de la master cu datele cele mai recente din buffer.
-
-
MCU Master:
-
Trimite periodic comenzi de interogare către slave.
-
Primește datele înapoi prin I²C și le afișează:
-
fie pe LCD (opțional),
-
fie în interfața serială, utilizând funcții STDIO (
printf).
-
-
Formatul de date transmis trebuie să fie structurat: HEAD, LENGTH, PAYLOAD, CHECKSUM.
-
Materiale și resurse
Componente hardware:-
2 x Microcontrolere (ESP32, STM32 sau Arduino Uno/Nano)
-
1 sau mai mulți senzori HC-SR04
-
Rezistențe de pull-up 4.7 kΩ pentru SDA și SCL
-
LCD (opțional, pentru afișare alternativă)
-
Breadboard, cabluri jumper
-
Sursă de alimentare USB
Resurse software:
-
Visual Studio Code cu extensia PlatformIO
-
FreeRTOS (inclus în framework-ul Arduino pentru ESP32 / STM32)
-
Biblioteca Wire pentru I²C
-
Biblioteci pentru senzori HC-SR04
-
Simulator hardware (opțional: Proteus)
Recomandări
-
Structurați aplicația slave astfel încât senzorii să fie integrați modular.
-
Pentru achiziția HC-SR04 folosiți delay precis (
vTaskDelayUntil) pentru stabilitate. -
Masterul poate interoga toți senzorii simultan (pachet mare) sau individual (adresare logică).
-
Utilizați semnale de sincronizare sau mutex dacă bufferul de răspuns este partajat între taskuri.
-
Reutilizați logica de afișare STDIO și LCD din lucrările anterioare.
Pontaj
Cerințe obligatorii:-
Respectarea structurii modulare a proiectului.
-
Prezentarea schemei bloc, a arhitecturii comunicației, a FSM-ului (dacă este cazul) și a interfețelor HW/SW.
-
Respectarea formatului raportului conform normelor UTM.
Notare:
50% – Funcționarea completă a comunicației I²C între cele două MCU-uri cu date reale de la senzori
10% – Utilizarea corectă a taskurilor FreeRTOS pentru achiziție și partajare date
10% – Structura clară și sigură a datelor transmise și afișarea corectă la master
10% – Prezentarea diagramei de sistem, a arhitecturii taskurilor și a interfețelor HW/SW
10% – Prezentarea schemelor electrice și a conexiunilor fizice
10% – Implementarea unui comportament adițional improvizat (ex.: adresare multiplă de senzori, calibrare automată, semnal de alertă în caz de apropiere excesivă)NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției ș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 se configurează o magistrală I²C între două microcontrolere?
-
Ce rol are fiecare componentă a pachetului de date: HEAD, PAYLOAD, CHECKSUM?
-
Cum se gestionează sincronizarea între taskuri în FreeRTOS (semnale, mutexuri)?
-
Ce problemă apare dacă masterul interoghează slave-ul în timp ce acesta actualizează datele?
-
Ce diferență este între I²C hardware și un protocol logic software?
-
Care sunt avantajele rulării în FreeRTOS față de programarea secvențială pentru această aplicație?
-
----------------------------------------------------------------------
Lucrare de Laborator Nr 7.2 : Comunicații intre dispozitive: Serial - Protocol SW
Realizarea applicatiilor cu comunicatii externe - Intre dispozitive cu protocoale de comunicare SW.
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ă: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?
-
----------------------------------------------------------------------
Lucrare de Laborator Nr 7.3 : Comunicații Internet: MQTT - Cloud
Realizarea applicatiilor cu comunicatii Internet - prin protocolul MQTT penru interactiunea cu o resursa Cloud
Descriere
Sa se realizeze o aplicatie ce va implementa comunicatiile intre echipamente dupa cum urmeaza:
- Realizarea unei aplicatii decomunicare Internet prin protocolul MQTT penru interactiunea cu o resursa Cloud
- Colectarea datelor de la sensori si trimitere catre un broker MQTT
- urmarirea mesajelor de la un proker MQTT si setarea starii unui actuator la alegere
- Datele sunt vizualizate si controlate de la un dashboard Internet (ThingsBoard sau HiveMQ)
Recomandare:
- Reutilizati la maxim solutiile prezentate in laboratoarele precedente
- A se utiliza ESP32 in calitate de MCU
- Urmati tutoriale existemte pentru realizarea conexiunuii cu serverul MQTT
- https://thingsboard.io/docs/samples/esp32/gpio-control-pico-kit-dht22-sensor/
- https://www.survivingwithandroid.com/esp32-mqtt-client-publish-and-subscribe/
- revizuiti resursele predate la curs
Pontaj:
- nota 5 - simpla aplicatie de comunicare
- +1.0 - pentru implementare modulara a proiectului
- +1.0 - MCU (ESP32) trimite datele catre proker MQTT
- +1.0.- MCU (ESP32) primeste datele de la server MQTT
- +1.0 - datele sunt vizualizate si controlate de la un dashboard Internet (ThingsBoard sau HiveMQ)
- +1.0 - pentru demonstrarea probelor de implementare fizica
NOTA: pontaj maxim posibil doar la prezentare functionare fizica !!
penalitati
- -1 - penalizare pentru fiecare saptamana intarziere de la deadline
- -1 - penalizare pentru nerespectare format raport
----------------------------------------------------------------------
Proiect - Alternativa Lucrari de laborator
sistem incorporat reprezinta un dispozitiv electronic în cadrul căruia este incorporată o unitate de procesare.. În acest modul se va analiza conceptul sistemului Incorporat definind o arhitectură generică, vom analiza aspectul arhitecturii HW pe nivele de incorporare, aspectul arhitecturii SW pe nivele de abstracție, la fel, vom da noțiunea de sisteme, Interfețe și semnale.
Realizarea unui proiect in baza componentelor studiate la laborator
In calitate de faze vom avea la moment:
1. Definire si clarificare tema (requirements) + o scurta cercetare introductiva la tema, ca regula reprezinta sectiunea de introducere de la orce raport de laborator
2. Arhitectura sistemului - o diagrama de sistem, care poate fi ajustata pe parcurs
3.1. Device abstracvtion - Achizite informatie - reprezinta metoda de achizitie specifica proiectului pe care il aveti. Driver modul sensor + conditionare (Problema rezolvata la ultima lucrare de laborator)
3.2. Device Abstraction - Actionare asupra mediului - Driver actuator (similar ca si la sensor - vom da exemplu la laboratorRaportul va cntine:
📌 Scopul si formularea problemei
📌 O descrierea a pasilor in realizarea proiectulu (lista de activitati care am facut ca sa realizam proiectul)
📌 scurta introducere in metodele si componentele utilizate in proiect
📌 Definirea Arhitecturii generale a sistemului - Vezi in prezentari de la curs exemple de arhitectura de sistem ( a se adauga comentarii de descriere succinta al arhitecturii)
📌 Definirea Arhitecturii in straturi - Vezi prezentarile de la curs exemple de arhitecturi in straturi ( a se adauga comentarii de descriere succinta al arhitecturii)
📌O schita electrica a proiectului( a se adauga comentarii de descriere succinta al schitei electrice)
📌 Descrierea functionala/comportamentala si rolul modulelor/componentelor electronice
📌 Descrierea functionala/comportamentala si rolul componentelor SW (noi leam separat in fisiere un fisier e o componenta) cu scheme Blok flow chart sau altele cu descrierile aferente, extrase de sectiuni critice de cod.
Prezentarea rezultatelor - Simulari, poze, screenshoturi - Probe ca sistemul functioneaza.
📌ANEXA: Codul sursa comentat
T1. Introducere in Internetul Lucrurilor (IoT)
sistem incorporat reprezinta un dispozitiv electronic în cadrul căruia este incorporată o unitate de procesare.. În acest modul se va analiza conceptul sistemului Incorporat definind o arhitectură generică, vom analiza aspectul arhitecturii HW pe nivele de incorporare, aspectul arhitecturii SW pe nivele de abstracție, la fel, vom da noțiunea de sisteme, Interfețe și semnale.
- Arhitectura Sistemelor Incorporate
- Arhitectura HW pe nivele de incorporare
- Arhitectura SW pe nivele de abstractie
- Sisteme, Interfețe si Semnale
Test Expres C1. contine 5 intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест C1. содержит 5 вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
----------------------------------------------------------------------
Test Expres C2. contine 5 intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест T2. содержит 5 вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
T2. Interacțiunea cu Utilizatorul
Interfața cu utilizatorul reprezintă totalitatea componentelor ce facilitează interacțiunea cu utilizatorul sistemului. ca regulă reprezintă o colecție de senzori și dispozitive de acționare specializați. În acest modul se vor analiza interfețe de la cele mai simple pana la cele complexe, urmând a elucida modul de funcționare a interfețelor din categoriile cum ar fi : Interfețe binare, Interfețe tablouri uni si bi-dimensionale, Interfața standard de intrare/ieșire STDIO și Interfețe complexe de interacțiune.
- Interfețe binare
- Interfețe tablouri uni si bi-dimensionale
- Interfața standard de intrare/ieșire STDIO
- Interfețe complexe de interacțiune
----------------------------------------------------------------------
Test Expres C3. contine 5 intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест C1. содержит 5 вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
T3. Sisteme de operare pentru sisteme Incorporate
Sisteme de operare reprezintă mecanismul de gestionare a resurselor unui sistem de calcul cum ar fi memoria, periferiile și timpul de procesare. În acest modul vom analiza modalitatea de operare începând de la operarea în bucla Infinită, vom defini conceptul de funcționare a sistemelor secvențiale și vom analiza modul de funcționare a sistemelor de operare preemptive. Ca și exemplu funcțional vom analiza soluția open source pentru sisteme de operare în timp real - FreeRTOS.
- Operare în bucla Infinită
- Sisteme secventiale
- Sisteme de Opreare Preemptive
- Sistemul de Operare in Timp Real FreeRTOS
----------------------------------------------------------------------
Testul Expres contine 5 intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит 5 вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
----------------------------------------------------------------------
Testul Expres contine 5 intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит 5 вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
----------------------------------------------------------------------
T4. Senzori
Senzorii reprezinta totalitatea de componente realizate prin inginerie software (SW), inginerie electrică (EE) și inginerie mecanica (ME) care participa la transformarea unui semnal din mediul exterior, reprezentat de o mărime fizică (PHY) într-un semnal intern al sistemului. În acest modul vom da o clasificare a senzorilor, vom analiza metodele de achiziție a semnalelor și modalitățile de condiționare și prelucrare a semnalului achiziționat.
- Clasificare Sensori
- Metode de Achiziții semnal
- Condiționare semnal
- Prelucrare semnal achiziționat
----------------------------------------------------------------------
Testul Expres contine 5 intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит 5 вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
----------------------------------------------------------------------
Testul Expres contine 5 intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит 5 вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
Referințe:
T5. Actuatori
Actuatorii reprezinta totalitatea de componente realizate prin inginerie software (SW), inginerie electrică (EE) și inginerie mecanica (ME) care participa la transformarea unui semnal interiorul sistemului într-o acțiune asuprea mediul exterior, reprezentat de o mărime fizică (PHY). În acest modul vom da o clasificare a actuatorilor, vom analiza metodele de acționare, modalitățile de condiționare și prelucrare a semnalului de acțiune, cât și a convertoarelor de putere.
- Clasificare Actuatori
- Metode de Actionare
- Conditionare semnal de actiune si control
- Convertoare de putere
----------------------------------------------------------------------
Testul Expres contine 5 intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит 5 вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
----------------------------------------------------------------------
T5. Diagnoze și Protectii
Diagnoza reprezinta mecanismul de monitorizare a funcționalităților sistemului și generare de reacții la anumite situații. În acest modul vom defini modalitatea de detecție a simptomelor, mecanisme de calificare a diagnozelor, gestionare a erorilor și generare de reacții la anumite situații detectate în cadrul sistemului
Protecțiile reprezintă mecanismele de limitare a funcționalităților in dependent de anumite simptome pentru a proteja sistemul sau mediul, mecanismele fiind din categoriile Informare, Limitare, Derating, Blocare sau altele
- Detectare Simptome
- Calificare diagnoze
- Reacții la simptome si erori
- Gestionare Erori
- Protecții
----------------------------------------------------------------------
Testul Expres contine un set de intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит несколько вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
T7. Control
Control reprezinta o abstracție ce definește funcționalitatea sistemului pentru a rezolva o problemă specifică sistemului. În acest modul se vor analiza diverse modalități de control de la metode simple, fără reacție inversa cum este controlul în buclă deschisă, sau cu reacție inversa control On/Off, pana la metode mai complexe cum ar fi control PID, control cu Automate Finite și Control Fuzzy, și vom introduce noțiunea de interpretor de program
- Control in buclă deschisă
- Control On/Off
- Control PID
- Control cu Automate Finite
- Control cu Interpretare Program
- Control Fuzzy
----------------------------------------------------------------------
Testul Expres contine un set de intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит несколько вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
----------------------------------------------------------------------
Testul Expres contine un set de intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит несколько вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
----------------------------------------------------------------------
Testul Expres contine un set de intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит несколько вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
----------------------------------------------------------------------
Testul Expres contine un set de intrebari, si se evalueaza automat.
- testul îl veți avea șansa sa îl scrieți o singura data
- în intervalul orar strict stabilit - 5 minute. dupa acest interval testul se va preda automat
- In timpul testului nu veți avea posibilitatea sa vedeți care anume răspuns ați greșit sau scris corect.
Експресс тест содержит несколько вопросов и оценивается автоматически.
- у вас будет возможность написать тест только один раз
- в строго установленный временной интервал - 5 минут. по истечении этого интервала тест будет сдан автоматически
- во время теста вы не сможете увидеть, какой ответ вы написали неправильно.
T8. Comunicare
Comunicarea reprezintă modalitatea de schimb de informație intre interlocutori. În acest modul vom da noțiunea de comunicare, vom analiza aspectul fizic al rețelelor de comunicare, vom analiza mecanismele de transfer de informație prin protocoale fizice si protocoale logice de comunicare. deasemenea vom identifica modalități de comunicare intre componentele sistemului, comunicare intre dispozitive la fel ca și aspectul comunicării cu rețeaua Internet și Cloud.
- Noțiune de comunicare
- Rețele de comunicare
- Protocoale fizice
- Protocoale logice
- comunicare intre componente
- comunicare intre dispozitive
- Comunicații Internet & Cloud
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
Part 1
Part 2
T9. Securitatea Cibernetica
----------------------------------------------------------------------
T10 Aplicatii IoT
----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
Referinte Curs
Referințe: