This shows you the differences between two versions of the page.
pm:prj2025:avaduva:andrei_vlad.iancu [2025/05/25 22:51] andrei_vlad.iancu |
pm:prj2025:avaduva:andrei_vlad.iancu [2025/05/25 23:31] (current) andrei_vlad.iancu |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | |||
====== Smart Thermometer System ====== | ====== Smart Thermometer System ====== | ||
Line 5: | Line 6: | ||
<note tip> | <note tip> | ||
* Proiectul constă într-un sistem embedded ce măsoară temperatura ambientală folosind senzorul analogic LM35 și afișează valoarea citită pe un LCD 16x2. | * Proiectul constă într-un sistem embedded ce măsoară temperatura ambientală folosind senzorul analogic LM35 și afișează valoarea citită pe un LCD 16x2. | ||
- | * Scopul este dezvoltarea unui sistem embedded complet funcțional, cu integrare hardware și software, folosind periferice standard ale microcontrollerului STM32F103CBTx. | + | * Scopul este dezvoltarea unui sistem embedded complet funcțional, cu integrare hardware și software, folosind periferice standard ale unui microcontroller Arduino Uno. |
* Ideea proiectului a plecat de la necesitatea unui instrument simplu și eficient de măsurare a temperaturii ambientale, integrabil ușor în aplicații casnice sau industriale. | * Ideea proiectului a plecat de la necesitatea unui instrument simplu și eficient de măsurare a temperaturii ambientale, integrabil ușor în aplicații casnice sau industriale. | ||
- | * Este un proiect util atât educațional cât și practic, exersând concepte embedded precum GPIO, ADC, LCD, UART, întreruperi, temporizatoare și PWM. | + | * Este un proiect util atât educațional cât și practic, exersând concepte embedded precum GPIO, ADC, LCD, PWM, UART și întreruperi externe. |
</note> | </note> | ||
Line 19: | Line 20: | ||
* LM35 convertește temperatura în semnal analogic | * LM35 convertește temperatura în semnal analogic | ||
- | * ADC0804 convertește semnalul analogic în valoare digitală | + | * ADC0804 convertește semnalul analogic în date digitale pe 8 biți |
- | * STM32F103 primește datele convertite prin GPIO | + | * Arduino Uno citește datele digitale, le interpretează și decide acțiunile |
- | * LCD 16x2 afișează temperatura măsurată | + | * LCD 16x2 afișează temperatura |
- | * Buzzerul pornește dacă temperatura depășește un prag critic | + | * Buzzer-ul este activat prin PWM când temperatura depășește un prag critic |
- | * UART trimite valorile către un PC pentru monitorizare | + | * Ventilatorul este acționat de un motor controlat de Arduino când temperatura e prea mare |
- | * Butonul permite calibrare sau reset prin întrerupere externă | + | * Butonul permite resetarea sistemului sau calibrare |
+ | * UART trimite date seriale către un PC pentru logging | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
<note tip> | <note tip> | ||
- | * Listă de piese | + | * Listă de componente + datasheet/linkuri |
- | * Scheme electrice (urmează) | + | * Scheme electrice (urmează a fi realizate) |
- | * Diagrame de semnal (PWM, ADC) | + | * Diagrame de semnal (ADC + PWM) |
</note> | </note> | ||
**Bill of Materials (BOM)** | **Bill of Materials (BOM)** | ||
- | ^ Componentă ^ Model ^ Interfață ^ Link / Datasheet ^ | + | ^ Componentă ^ Model ^ Interfață ^ Link / Datasheet ^ |
- | | Microcontroller | STM32F103CBTx | GPIO, UART | [STM32F103CBT6 datasheet](https://www.st.com/resource/en/datasheet/stm32f103c8.pdf) | | + | | Microcontroller | Arduino Uno | GPIO, UART, ADC, PWM | [Arduino Uno](https://store.arduino.cc/products/arduino-uno-rev3) | |
- | | Senzor temperatură | LM35DZ | Analog | [LM35 Datasheet](https://www.ti.com/lit/ds/symlink/lm35.pdf) | | + | | Senzor temperatură | LM35DZ | Analog | [LM35 Datasheet](https://www.ti.com/lit/ds/symlink/lm35.pdf) | |
- | | Convertor ADC | ADC0804 | Paralel (8b) | [ADC0804 Datasheet](https://www.ti.com/lit/ds/symlink/adc0804.pdf) | | + | | Convertor ADC | ADC0804 | Paralel (8b) | [ADC0804 Datasheet](https://www.ti.com/lit/ds/symlink/adc0804-n.pdf) | |
- | | LCD 16x2 | HD44780 | GPIO 4-bit | [HD44780 LCD](https://www.sparkfun.com/datasheets/LCD/HD44780.pdf) | | + | | Afișaj LCD | LCD 16x2 | GPIO 4-bit | [HD44780 LCD](https://www.sparkfun.com/datasheets/LCD/HD44780.pdf) | |
- | | Buzzer | - | PWM | - | | + | | Buzzer pasiv | - | PWM | - | |
- | | Ventilator DC | - | PWM (motor) | - | | + | | Motor cu ventilator| DC 5V Motor + Propeller | GPIO cu tranzistor driver | - | |
- | | Buton calibrate | - | GPIO (EXTI) | - | | + | | Buton calibrate | - | GPIO (INT0) | - | |
**Pini utilizați:** | **Pini utilizați:** | ||
- | ^ Componentă ^ Pini STM32 ^ Funcție ^ | + | | Componentă | Pin Arduino | Funcție | |
- | | LCD | PB0–PB7 | GPIO (D4–D7 + RS, E) | | + | |--------------------|-------------|---------| |
- | | ADC0804 | PA0–PA7 | GPIO input | | + | | LCD 16x2 | D2–D7 | GPIO (D4–D7 + RS, E) | |
- | | LM35 | ADC0804 IN | Analog | | + | | ADC0804 | D8–D13 | GPIO input | |
- | | UART | PA9 (TX), PA10(RX)| Comunicație PC | | + | | LM35 | ADC0804 IN | Analog | |
- | | Buzzer | PA8 | PWM | | + | | UART TX | D1 | Serial out | |
- | | Motor DC | TIM PWM (ex. PA1) | Răcire activă | | + | | UART RX | D0 | Serial in | |
- | | Buton | PC13 | EXTI13 | | + | | PWM buzzer | D9 | Semnal PWM | |
+ | | Motor ventilator | D10 | Control motor (cu tranzistor) | | ||
+ | | Buton | D3 (INT1) | Întrerupere externă | | ||
===== Software Design ===== | ===== Software Design ===== | ||
<note tip> | <note tip> | ||
- | * PlatformIO (STM32 + libopencm3) | + | * PlatformIO (Arduino Uno) |
- | * Biblioteci proprii pentru LCD, ADC, UART | + | * Biblioteci proprii pentru LCD |
- | * Algoritmi: citire ADC, afișare LCD, transmitere UART, PWM buzzer/motor, întrerupere buton | + | * Algoritmi: citire periodică ADC, afișare LCD, transmitere UART, PWM alert, control motor, întrerupere reset |
</note> | </note> | ||
- | **Mediu dezvoltare:** | + | * IDE: Visual Studio Code + PlatformIO |
- | * Visual Studio Code + PlatformIO | + | * Framework: Arduino (C++) |
- | * Framework: libopencm3 | + | * Funcționalități: |
- | + | * Inițializare GPIO, UART, PWM, ADC software | |
- | **Funcționalități implementate:** | + | * Loop de citire periodică temperatură + afișare pe LCD |
- | * Inițializare periferice: GPIO, ADC, PWM, UART, EXTI | + | * Trimitere serială a valorii măsurate |
- | * Afișare continuă temperatură pe LCD | + | * Activare buzzer și ventilator dacă temperatura e prea mare |
- | * Transmitere serială (UART) pentru logging | + | * Întrerupere buton pentru reset sau calibrare |
- | * Pornire buzzer și ventilator dacă temperatura depășește pragul | + | |
- | * Întrerupere externă de la buton pentru calibrare/reset | + | |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
<note tip> | <note tip> | ||
- | * Proiectul este în stadiu de dezvoltare. Codul software este implementat și testat parțial în simulare. Urmează integrarea fizică a componentelor. | + | În prezent se lucrează la partea fizică. Codul software a fost generat și testat în simulator. |
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | Toate funcționalitățile software au fost definite și implementate modular. Integrarea fizică se va face în săptămânile următoare. Proiectul include concepte din minim 5 laboratoare (GPIO, ADC, UART, PWM, întreruperi). | + | Proiectul este în stadiu de dezvoltare. Toate funcționalitățile software au fost scrise și urmează integrarea fizică a componentelor pentru testare și validare. |
- | + | ||
- | ===== Download ===== | + | |
- | + | ||
- | <note warning> | + | |
- | Codul sursă este disponibil în repository GitHub (urmează publicarea). | + | |
- | </note> | + | |
- | + | ||
- | ===== Jurnal ===== | + | |
- | + | ||
- | <note tip> | + | |
- | * 25.05 – Finalizare arhitectură software și generare cod de bază | + | |
- | * 26.05 – Creare documentație wiki și schemă bloc | + | |
- | </note> | + | |
- | ===== Bibliografie/Resurse ===== | + | Codul sursă include: |
+ | * main.cpp | ||
+ | * lcd.c/.h | ||
+ | * uart.c/.h | ||
+ | * adc.c/.h | ||
+ | * pwm.c/.h | ||
+ | * delay.c/.h | ||
+ | * gpio.c/.h | ||
+ | * platformio.ini | ||
- | **Resurse Software** | + | GIT - https://github.com/WhyNotZebra/smart-thermometer |
- | * [libopencm3](https://github.com/libopencm3/libopencm3) | + | |
- | * [PlatformIO Docs](https://docs.platformio.org/) | + | |
- | **Resurse Hardware** | ||
- | * [LM35 Datasheet](https://www.ti.com/lit/ds/symlink/lm35.pdf) | ||
- | * [ADC0804 Datasheet](https://www.ti.com/lit/ds/symlink/adc0804.pdf) | ||
- | * [STM32F103CBT6 Datasheet](https://www.st.com/resource/en/datasheet/stm32f103c8.pdf) | ||
- | * [HD44780 LCD](https://www.sparkfun.com/datasheets/LCD/HD44780.pdf) |