Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:avaduva:andrei_vlad.iancu [2025/05/25 22:35]
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 18: Line 19:
 {{ :​pm:​prj2025:​avaduva:​bloc.png |Schema bloc a proiectului}} {{ :​pm:​prj2025:​avaduva:​bloc.png |Schema bloc a proiectului}}
  
-* LM35 convertește temperatura în semnal analogic +  ​* LM35 convertește temperatura în semnal analogic 
-* ADC0804 ​convertor analog-digital legat la PA0–PA7 +  * ADC0804 ​convertește semnalul analogic în date digitale pe 8 biți 
-STM32F103 procesează valorile convertite +  Arduino Uno citește datele digitale, le interpretează și decide acțiunile 
-* LCD 16x2 conectat prin GPIO controlează ​afișarea +  * LCD 16x2 afișează temperatura 
-* PWM controlează un buzzer de semnalizare termică +  Buzzer-ul este activat prin PWM când temperatura depășește ​un prag critic 
-UART trimite ​temperatura ​la PC pentru logging +  Ventilatorul este acționat de un motor controlat de Arduino când temperatura ​e prea mare 
-* Butonul ​generează întreruperi ​pentru ​calibrare/​reset+  * Butonul ​permite resetarea sistemului sau calibrare 
 +  * UART trimite date seriale către un PC pentru ​logging
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 36: Line 38:
 **Bill of Materials (BOM)** **Bill of Materials (BOM)**
  
-^ Componentă ^ Model ^ Interfață ^ Link / Datasheet ^ +^ Componentă ​        ​^ Model          ^ Interfață ​       ^ Link / Datasheet ^ 
-| Microcontroller | STM32F103CBTx ​| GPIO, UART, ADC, PWM | [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) | 
-| Afișaj LCD | LCD 16x2 | 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 pasiv | - | PWM | - | +| Buzzer pasiv       ​| -              | PWM               | - | 
-| Buton calibrate | - | GPIO (EXTI) | - |+| Motor cu ventilator| DC 5V Motor + Propeller | GPIO cu tranzistor driver ​| - | 
 +| Buton calibrate ​   | -              | GPIO (INT0      ​| - |
  
 **Pini utilizați:​** **Pini utilizați:​**
  
-| Componentă | Pin STM32 | Funcție | +| Componentă ​        ​| Pin Arduino ​| Funcție | 
-|------------|-----------|---------| +|--------------------|-------------|---------| 
-| LCD 16x2   ​PB0PB7   | GPIO (D4–D7 + RS, E) | +| LCD 16x2           ​D2D7       | GPIO (D4–D7 + RS, E) | 
-| ADC0804 ​   PA0PA7   | GPIO input | +| ADC0804 ​           D8D13      ​| GPIO input | 
-| LM35       ​| ADC0804 IN | Analog | +| LM35               ​| ADC0804 IN  | Analog | 
-| UART TX    PA9       | Serial out | +| UART TX            D1          ​| Serial out | 
-| UART RX    PA10      ​| Serial in | +| UART RX            D0          ​| Serial in | 
-| PWM out    ​PA8       | Semnal ​buzzer ​+| PWM buzzer ​        D9          ​| Semnal ​PWM | 
-| Buton      PC13      ​EXTI13 ​|+| 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   * Biblioteci proprii pentru LCD
-  * Algoritmi: citire periodică ADC, afișare LCD, transmitere UART, PWM alert, ​EXTI reset+  * Algoritmi: citire periodică ADC, afișare LCD, transmitere UART, PWM alert, ​control motor, întrerupere ​reset
 </​note>​ </​note>​
  
   * IDE: Visual Studio Code + PlatformIO   * IDE: Visual Studio Code + PlatformIO
-  * Framework: ​STM32 libopencm3+  * Framework: ​Arduino (C++)
   * Funcționalități:​   * Funcționalități:​
-    * Inițializare GPIO, ADC, UART, EXTIPWM+    * Inițializare GPIO, UART, PWMADC software
     * Loop de citire periodică temperatură + afișare pe LCD     * Loop de citire periodică temperatură + afișare pe LCD
     * Trimitere serială a valorii măsurate     * Trimitere serială a valorii măsurate
-    * Pornire ​buzzer dacă temperatura ​depășește un prag +    * Activare ​buzzer ​și ventilator ​dacă temperatura e prea mare 
-    * Întrerupere buton pentru reset+    * Întrerupere buton pentru reset sau calibrare
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 84: Line 88:
  
 Codul sursă include: Codul sursă include:
-  * main.c+  * main.cpp
   * lcd.c/.h   * lcd.c/.h
   * uart.c/.h   * uart.c/.h
   * adc.c/.h   * adc.c/.h
-  * timer_pwm.c/.h +  * pwm.c/.h 
-  * Makefile ​/ platformio.ini +  * delay.c/.h 
-</note>+  * gpio.c/.h 
 +  * platformio.ini 
 + 
 +GIT - https://​github.com/​WhyNotZebra/smart-thermometer
  
pm/prj2025/avaduva/andrei_vlad.iancu.1748201738.txt.gz · Last modified: 2025/05/25 22:35 by andrei_vlad.iancu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0