Smart Thermometer System

Introducere

  • Proiectul constă într-un sistem embedded ce măsoară temperatura ambientală folosind senzorul analogic LM35 și afișează valoarea citită pe un LCD 16×2.
  • 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.
  • 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.

Descriere generală

Schemă bloc cu modulele hardware și software + descrierea interacțiunii dintre ele.

Schema bloc a proiectului

  • LM35 convertește temperatura în semnal analogic
  • ADC0804 convertește semnalul analogic în date digitale pe 8 biți
  • Arduino Uno citește datele digitale, le interpretează și decide acțiunile
  • LCD 16×2 afișează temperatura
  • Buzzer-ul este activat prin PWM când temperatura depășește un prag critic
  • Ventilatorul este acționat de un motor controlat de Arduino când temperatura e prea mare
  • Butonul permite resetarea sistemului sau calibrare
  • UART trimite date seriale către un PC pentru logging

Hardware Design

  • Listă de componente + datasheet/linkuri
  • Scheme electrice (urmează a fi realizate)
  • Diagrame de semnal (ADC + PWM)

Bill of Materials (BOM)

Componentă Model Interfață Link / Datasheet
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)
Convertor ADC ADC0804 Paralel (8b) [ADC0804 Datasheet](https://www.ti.com/lit/ds/symlink/adc0804-n.pdf)
Afișaj LCD LCD 16×2 GPIO 4-bit [HD44780 LCD](https://www.sparkfun.com/datasheets/LCD/HD44780.pdf)
Buzzer pasiv - PWM -
Motor cu ventilator DC 5V Motor + Propeller GPIO cu tranzistor driver -
Buton calibrate - GPIO (INT0) -

Pini utilizați:

Componentă Pin Arduino Funcție
——————–————-———
LCD 16×2 D2–D7 GPIO (D4–D7 + RS, E)
ADC0804 D8–D13 GPIO input
LM35 ADC0804 IN Analog
UART TX D1 Serial out
UART RX D0 Serial in
PWM buzzer D9 Semnal PWM
Motor ventilator D10 Control motor (cu tranzistor)
Buton D3 (INT1) Întrerupere externă

Software Design

  • PlatformIO (Arduino Uno)
  • Biblioteci proprii pentru LCD
  • Algoritmi: citire periodică ADC, afișare LCD, transmitere UART, PWM alert, control motor, întrerupere reset

  • IDE: Visual Studio Code + PlatformIO
  • Framework: Arduino (C++)
  • Funcționalități:
    • Inițializare GPIO, UART, PWM, ADC software
    • Loop de citire periodică temperatură + afișare pe LCD
    • Trimitere serială a valorii măsurate
    • Activare buzzer și ventilator dacă temperatura e prea mare
    • Întrerupere buton pentru reset sau calibrare

Rezultate Obţinute

În prezent se lucrează la partea fizică. Codul software a fost generat și testat în simulator.

Concluzii

Proiectul este în stadiu de dezvoltare. Toate funcționalitățile software au fost scrise și urmează integrarea fizică a componentelor pentru testare și validare.

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

GIT - https://github.com/WhyNotZebra/smart-thermometer

pm/prj2025/avaduva/andrei_vlad.iancu.txt · Last modified: 2025/05/25 23:31 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