Smart Desk Companion

Introducere

Ce face proiectul:

Dispozitivul monitorizeaza conditiile ambientale ale spatiului de lucru al utilizatorului, masurand:

  • calitatea aerului (CO2 / COV) - prin senzorul MQ-135
  • temperatura si umiditatea aerului - prin senzorul DHT11
  • nivelul de iluminare ambienta - prin LDR (fotorezistor)

Atunci cand un parametru depaseste un prag prestabilit:

  • se activeaza buzzer-ul (alerta sonora)
  • se aprinde LED-ul rosu de avertizare
  • LCD-ul afiseaza un mesaj de alerta prioritar

Timer-ul Pomodoro integrat:

  • se porneste/reseteaza printr-un buton fizic
  • LED-ul verde indica sesiunea activa (25 minute)
  • la finalul sesiunii, buzzer-ul emite un semnal distinctiv

Scopul si ideea de la care am pornit:

Mi-am propus sa construiesc un dispozitiv accesibil care sa ajute utilizatorii sa mentina un mediu de lucru sanatos si productiv, printr-un sistem care:

  • avertizeaza discret asupra conditiilor ambientale necorespunzatoare
  • colecteaza si afiseaza date climatice in timp real
  • integreaza o metoda dovedita de gestionare a timpului (tehnica Pomodoro)
  • functioneaza complet autonom, fara conexiune internet sau aplicatii externe

De ce cred ca este util:

  • Pentru utilizatori individuali - ajuta la mentinerea unui mediu de lucru sanatos si la structurarea sesiunilor de lucru.
  • Pentru studenti si freelanceri - solutie all-in-one pentru monitorizare si productivitate fara costuri mari.
  • Pentru sanatate pe termen lung - semnalarea calitatii slabe a aerului sau a luminii insuficiente previne oboseala oculara si problemele respiratorii.

Descriere generala

Diagrama Bloc

Dispozitivul este format din urmatoarele componente:

  • Senzor MQ-135 (analogic) - detecteaza calitatea aerului (CO2, COV, amoniac)
  • Senzor DHT11 - masoara temperatura si umiditatea relativa
  • LDR (Fotorezistor) - detecteaza nivelul de iluminare ambienta
  • LCD 16×2 cu interfata I2C - afiseaza datele in timp real
  • Buzzer pasiv 5V - emite alerte sonore la depasirea pragurilor
  • Buton normal - declansaza/reseteaza timer-ul Pomodoro
  • LED Verde - indicator vizual sesiune Pomodoro activa
  • LED Rosu - indicator vizual alerta ambienta
  • ATmega328P - citeste toti senzorii, decide actiunile si controleaza output-urile
  • Alimentare 5V (USB) - pentru toate modulele

Interactiuni intre module

Senzorul MQ-135 trimite un semnal analogic continuu pe pinul A0 al microcontrollerului. ATmega328P citeste valoarea prin ADC si o compara cu un prag prestabilit. Daca valoarea depaseste pragul, se activeaza alertele (buzzer + LED rosu) si se afiseaza un mesaj de avertizare pe LCD.

ATmega328P:

  • compara valoarea de la MQ-135 cu un prag de calitate a aerului
  • compara nivelul de lumina de la LDR (A1) cu un prag minim de iluminare
  • citeste temperatura si umiditatea prin protocol digital de la DHT11 (pinul D7)
  • actualizeaza periodic LCD-ul cu datele curente (rotatie ciclica)
  • gestioneaza starea timer-ului Pomodoro pe baza intreruperii butonului (D2)

DHT11:

  • masoara temperatura si umiditatea aerului
  • trimite datele microcontrollerului o data la 2 secunde, in format digital

LCD-ul:

  • primeste comenzi prin I2C (pinii A4-SDA si A5-SCL)
  • afiseaza ciclic: calitate aer, temperatura, umiditate, stare Pomodoro
  • mesajele de alerta au prioritate fata de afisarea normala

Buzzer-ul:

  • se activeaza la depasirea pragului de calitate a aerului sau lumina insuficienta
  • emite un semnal distinct (mai lung) la expirarea intervalului Pomodoro

Butonul normal:

  • conectat pe D2 cu rezistor pull-up extern de 10kOhm
  • la apasare, porneste sau reseteaza sesiunea Pomodoro de 25 minute

Hardware Design

Bill of Materials (Lista Pieselor)

Nr. Componenta Descriere Cantitate
1 ATmega328P (Arduino Uno) Microcontroller 8-bit AVR - unitatea centrala 1
2 Senzor MQ-135 Senzor calitate aer (CO2, VOC, NH3) 1
3 Senzor DHT11 Senzor temperatura si umiditate 1
4 LDR (Fotorezistor) Detectare nivel luminos ambiental 1
5 LCD 16×2 cu modul I2C Afisare date in timp real 1
6 Buzzer pasiv 5V Alerte sonore (prag depasit, timer) 1
7 Buton normal Declansare/resetare timer Pomodoro 1
8 LED Verde Indicator sesiune Pomodoro activa 1
9 LED Rosu Indicator alerta ambienta 1
10 Rezistori 10kOhm Pull-up LDR si buton 2
11 Rezistori 220Ohm Protectie LED-uri 2
12 Breadboard 400 puncte Placa de prototipare 1
13 Cabluri tata-tata Conectare componente ~30
14 Alimentare USB 5V Alimentare sistem 1

Schema Electrica

Schema electrica prezinta conexiunile dintre toate modulele si microcontrollerul ATmega328P. Alimentarea de 5V este comuna tuturor componentelor, asigurata prin portul USB al placii Arduino Uno.

Tabel Legaturi Componente

Componenta Pin Modul Pin Arduino Functie
Senzor MQ-135A AOUT A0 (PC0/ADC0) Semnal analogic calitate aer
VCC +5V Alimentare incalzitor
GND GND Masa incalzitor
RL 10kOhm AOUT - GND A0 → GND Rezistor sarcina divizor tensiune
Senzor DHT11 DATA (I/O) D7 (PD7) Date temperatura & umiditate
VCC +5V Alimentare
GND GND Masa
R5 1kOhm pull-up DATA - VCC D7 → +5V Pull-up linie date DHT11
LDR + R4 10kOhm Anod LDR +5V Alimentare divizor luminos
Jonctiune LDR-R4 A1 (PC1/ADC1) Semnal analogic nivel luminos
Catod R4 GND Masa divizor
LCD 16×2 I2C SDA A4 (PC4/SDA) Date I2C
SCL A5 (PC5/SCL) Ceas I2C
VCC / GND +5V / GND Alimentare
Buzzer pasiv PIN D6 (PD6/OC0A) Alerta sonora PWM
GND GND Masa
Buton normal PIN D2 (PD2/INT0) Declansare Pomodoro (intrerupere INT0)
GND GND Masa
R3 10kOhm pull-up D2 - VCC D2 → +5V Pull-up linie buton
LED Verde (LED2) Anod D4 (PD4) Indicator sesiune Pomodoro activa
R2 220Ohm - GND D4 → GND Protectie LED verde
LED Rosu (LED1) Anod D5 (PD5/OC0B) Indicator alerta ambienta
R1 220Ohm - GND D5 → GND Protectie LED rosu

Poza montaj fizic:

Video demonstrativ:

https://youtu.be/-bkMuSFO8lg?feature=shared

Software Design

Mediu de dezvoltare:

Proiectul a fost dezvoltat folosind PlatformIO cu VSCode, fara framework Arduino, folosind doar avr-libc (bare-metal). Compilatorul folosit este avr-gcc cu target ATmega328P la 16MHz.

Structura codului:

Codul este organizat modular, fiecare fisier sursa avand o responsabilitate clara:

  • main.c - loop principal, initializare periferice, coordonare module
  • adc.c - driver ADC bare-metal, citire MQ-135 si LDR prin registre ADMUX/ADCSRA
  • dht11.c - protocol single-wire bit-banging pentru citirea temperaturii si umiditatii
  • i2c.c - driver TWI hardware la 100kHz prin registre TWBR/TWCR/TWDR
  • lcd.c - driver LCD 16×2 prin expander I2C PCF8574, mod 4-bit
  • buzzer.c - generare ton PWM prin Timer0 in mod CTC pe pinul OC0A (D6)
  • timer.c - Timer1 CTC pentru tick de 1 secunda (Pomodoro), Timer2 CTC pentru millis()
  • sensors.c - agregare date senzori si verificare praguri de alerta
  • display.c - logica afisare LCD cu rotatie pagini si prioritate alerte
  • pomodoro.c - timer Pomodoro 25 minute, ISR INT0 pentru buton, LED verde

Algoritmi implementati:

  • Citire ADC in mod Single Conversion cu prescaler 128 (125kHz)
  • Protocol DHT11 bit-banging: semnal START 20ms LOW, citire 40 biti cu masurare durata HIGH
  • Driver I2C hardware TWI: conditii START/STOP, transfer byte cu verificare ACK
  • Driver LCD in mod 4-bit: initializare HD44780, trimitere nibble cu puls Enable
  • Generare ton buzzer: Timer0 CTC cu toggle OC0A, frecventa variabila prin OCR0A
  • Timer Pomodoro: Timer1 CTC la 1Hz, decrement secunde in ISR, flag _second_tick
  • millis(): Timer2 CTC la 1000Hz, contor global incrementat in ISR
  • Debounce buton: verificare interval minim 200ms intre apasari consecutive
  • Rotatie pagini LCD: schimbare pagina la fiecare 3 secunde prin millis()
  • Prioritate alerte: mesajele de alerta suprascriu paginile normale pe LCD

Registre AVR folosite:

  • ADMUX, ADCSRA - configurare si pornire conversie ADC
  • TWBR, TWSR, TWCR, TWDR - comunicatie I2C hardware
  • TCCR0A, TCCR0B, OCR0A - Timer0 pentru buzzer PWM
  • TCCR1A, TCCR1B, OCR1A, TIMSK1 - Timer1 pentru Pomodoro tick
  • TCCR2A, TCCR2B, OCR2A, TIMSK2 - Timer2 pentru millis()
  • EICRA, EIMSK - configurare intrerupere externa INT0 pentru buton
  • DDRD, PORTD, PIND - configurare pini digitali LED-uri si buton
  • UBRR0H, UBRR0L, UCSR0B, UCSR0C, UDR0 - UART pentru debug serial

Rezultate Obtinute

Proiectul Smart Desk Companion functioneaza conform specificatiilor propuse. In urma testarii au fost validate urmatoarele functionalitati:

  • Senzorul MQ-135 detecteaza corect calitatea aerului si activeaza alerta sonora si vizuala atunci cand valoarea ADC depaseste pragul prestabilit.
  • Senzorul DHT11 transmite corect temperatura si umiditatea la fiecare 2 secunde, valorile fiind afisate pe LCD si monitorizate pentru depasirea pragurilor.
  • Fotorezistorul LDR detecteaza nivelul de lumina ambienta si activeaza alerta atunci cand iluminarea scade sub pragul minim, util in special pentru sesiunile de lucru in conditii de lumina slaba.
  • LCD-ul 16×2 afiseaza ciclic datele de la toti senzorii si prioritizeaza mesajele de alerta atunci cand este cazul.
  • Buzzer-ul emite alerte sonore clare la depasirea oricarui prag si un semnal distinctiv la finalul sesiunii Pomodoro.
  • Timer-ul Pomodoro functioneaza corect: sesiunea de 25 de minute porneste la apasarea butonului, LED-ul verde ramane aprins pe toata durata, iar la final buzzer-ul emite semnalul de incheiere.
  • Sistemul functioneaza complet autonom, fara conexiune la internet sau aplicatii externe.

Dispozitivul s-a dovedit util in practica, oferind feedback in timp real asupra conditiilor de lucru si ajutand la structurarea timpului prin tehnica Pomodoro. Utilizarea acestuia in timpul sesiunilor de studiu contribuie la constientizarea factorilor de mediu care pot afecta concentrarea si sanatatea pe termen lung.

Concluzii

Proiectul Smart Desk Companion reprezinta o solutie practica si accesibila pentru monitorizarea mediului de lucru si gestionarea timpului. Implementarea bare-metal pe ATmega328P a permis intelegerea aprofundata a registrelor AVR si a perifericelor hardware: ADC, timere, PWM, I2C, intreruperi externe si UART.

Principalele provocari intampinate au fost calibrarea fotorezistorului LDR (valorile ADC variind in functie de rezistorul din divizorul de tensiune si de conditiile de lumina) si implementarea corecta a protocolului DHT11 prin bit-banging.

Proiectul poate fi extins in viitor cu:

  • conectivitate Wi-Fi pentru logarea datelor in cloud
  • afisaj grafic color in locul LCD-ului text
  • notificari mobile la depasirea pragurilor

Download

Bibliografie/Resurse

pm/prj2026/vlad.radulescu2901/cristina.iordache04.txt · Last modified: 2026/05/23 22:49 by cristina.iordache04
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