SleepGuard - Monitor de calitate a somnului

Dumitrașcu Filip-Teodor 333CA

Introducere

SleepGuard
SleepGuard este un dispozitiv integrat pentru monitorizarea calității somnului în timp real, utilizând o serie de senzori specializați. Acesta captează mișcările utilizatorului printr-un accelerometru, detectează zgomote ambientale și sforăitul cu ajutorul unui microfon cu amplificator, afișează temperatura camerei și include un ceas cu alarmă programabilă. La finalul ciclului de somn, oferă utilizatorului un raport informativ prin WiFi pe un dispozitiv extern (telefon, laptop), incluzând recomandări personalizate pentru îmbunătățirea calității somnului.

Scopul proiectului
Proiectul are ca obiectiv susținerea utilizatorului în înțelegerea și optimizarea obiceiurilor de somn prin colectarea unor date relevante (mișcare, zgomot, temperatură ambientală). De asemenea, sistemul declanșează o alarmă concepută pentru a permite o trezire mai naturală și mai eficientă.

Inspirație
Proiectul a fost inspirat din lipsa calității somnului autorului si a importanței sale pentru sănătatea fizică și mentală. Mulți indivizi nu sunt conștienți de calitatea slabă a somnului lor, întrucât aceasta nu este determinată exclusiv de durata somnului, ci și de profunzimea și continuitatea acestuia.

Importanță
SleepGuard reprezintă o soluție accesibilă și ușor de realizat (DIY) pentru monitorizarea somnului, oferind o alternativă viabilă la produsele comerciale de profil. Prin furnizarea unor date clare și acționabile despre obiceiurile nocturne, dispozitivul îi sprijină pe utilizatori în adoptarea unor măsuri concrete pentru îmbunătățirea odihnei, ceea ce are un impact direct asupra stării generale de bine și a productivității zilnice.

Descriere generală

 Block diagram of the system

Componente hardware:

  • ESP32-WROOM-32 - Microcontroller
  • MPU6050 - Accelerometru și modul giroscop
  • MAX4466 - Microfon cu amplificator
  • Passive Buzzer - Buzzer Pasiv 3.3V (output)
  • Push Buttons - Butoane (input)
  • DHT11 - Senzor de temperatură și umiditate
  • LCD 1602 - Display Liquid Crystal (output)
  • Breadboard Power Supply - Supply de curent în toate componentele
  • 6 x AA Battery Holder - Sursă de alimentare 9V
  • External Device - Telefon/Laptop pentru afișarea rezultatelor

Funcționalitate software:

  • Actuatori - Buzzer (semnale audio, alarmă), LCD (afișare mesaje stare dispozitiv)
  • Traductori (Senzori) - MPU6050 (mișcare, rotație, temperatură corporală), MAX4466 (înregistrare zgomot, sforăit), DHT11 (temperatură ambientală), Butoane (setare alarmă)
  • WiFi - Comunicare cu device extern

Interacțiune componente:

1. ESP32 <-> LCD - status pe parcursul utilizării, oprire LCD când timer-ul este activ
2. Butoane <-> ESP32 - configurare și oprire alarmă, buzzer
3. MPU6050, MAX4466, DHT11 <-> ESP32 - masoară calitatea somnului
4. ESP32 <-> Buzzer - trezire utilizator, oprire senzori
5. ESP32 <-> External Device - trimitere rezultate

Hardware Design

 Wiring diagram

Observații design

  • Butoanele nu au nevoie de rezistențe de pull-up (sunt configurate in cod cu flagul INPUT_PULLUP)
  • Între GND și VCC ale lui ESP32 este adăugat un condensator de 220uF / 470uF pentru a elimina spike-urile de tensiune la activarea WiFi-ului (Brownout detector was triggered)

Alimentare
Dispozitivul este alimentat prin 6 baterii alcaline de 1.5V (total 9V), legate în serie într-un battery holder pack cu DC jack. Jack-ul este conectat la un breadboard power supply care prin poziționarea a 2 jumpere, distribuie pe rail-urile breadboard-ului 3.3V respectiv 5V.
Astfel pot fi alimentate:

  • LCD-ul de la 5V
  • restul componentelor de la 3.3V

Power Management

Componentă Consum în IDLE (mA) Consum în Running (mA)
ESP32 (WiFi activ) 80 120-150
MPU6050 0.5 3.9
MAX4466 0.7 0.7
DHT11 0.1 0.5
LCD 1602 1 15-20
2 Buttons 0 0
Buzzer Pasive 3.3V 0 30
Total 82.3 170.1 - 205.1

Autonomie
6 batterii AA (total 2000-2500 mA)) ⇒

  • ~= 12 ore în Running
  • ~= 30 ore în IDLE

Având in vedere optimizările făcute in cod :

  • Pornirea senzorilor doar când timer-ul se scurge (timpul efectiv de somn)
  • Inchidere backlight LCD când timer-ul se scurge (daca utilizatorul doarme, lumina lcd-ului e inutila)
  • Conectare WiFi doar la trezire (când datele sunt gata de trimis)
  • Dezactivare Bluetooth

⇒ autonomie efectivă: 24 de ore (3 nopți)

Software Design

Source code: GitHub Repository

IDE: Visual Studio Code and PlatformIO extension

Dependențe externe:

  • framework-ul Arduino din PlatformIO
  • librăria MPU6050 @ ^1.0.0 pentru configurarea accelerometrului
  • librăria adafruit/DHT sensor library @ ^1.4.6 pentru configurarea senzorului de temperatură
  • librăria LiquidCrystal_I2C @ ^1.1.0 pentru configurarea display-ului

Structura codului:
Implementarea se bazeaza pe un FSM (Finite State Machine) (utils.h). Device-ul este trecut prin mai multe stări (main):

  • INIT - sunt inițializate toate componentele și se stabilește timpul de somn al user-ului (Buttons/)
  • SET_ALARM - se setează timer-ul cu timpul specificat (Buzzer/)
  • MEASURE - cât timp timer-ul se scurge (utilizatorul doarme), senzorii colecteaza date (DHT11/, MAX4466/, MPU6050/)
  • WAKEUP - buzzerul sună și senzorii se opresc
  • WIFI_CONNECT - esp32 se conecteaza la wifi pentru a trimite datele masurate pe un dispozitiv extern
  • SEND_DATA - datele sunt trimise ( ServerWeb/ )

Adițional, în LCD/ se afișează constant pe display în ce stare e device ul și în Sleep/ sunt parsate datele despre somn:

  • ce tip de somn a avut utilizatorul (deep, rem, light, restless) și pentru cât timp
  • temperatura corpului
  • nivelul de decibeli (dacă a sforait user-ul, dacă s-au produs zgomote)
  • temperatura ambientală
  • umiditate

Total linii de cod: 900 - 1000

Laboratoare folosite:

0. GPIO - input/output componente
1. UART - afișare de mesaje pe serial
2. Întreruperi - butoane: configurare alarmă, oprire alarmă
3. Timere - peste cât timp suna alarma
3. PWM - acționarea asupra buzzer-ului
4. ADC - configurarea microfonului
6. I2C - comunicarea cu lcd-ul si mpu6050
extra. Wi-Fi - ESP32 creează un server web unde afișează rezultatele monitorizate în timpul somnului


Parameter Deep Sleep REM Sleep Light Sleep Restless Sleep
Accelerometer < 0.8 m/s² < 1.5 m/s² < 3.0 m/s² ≥ 3.0 m/s²
Gyroscope < 0.25 rad/s < 0.5 rad/s < 1.0 rad/s ≥ 1.0 rad/s
Noise 120 units 122.5 units 125 units ≥ 125 units

Rezultate Obţinute

 1
 2
 3
 4
 5

  • Accelerometrul se pune in buzunarul tricoului de pijama:

 6

  • Un exemplu de rezultat al dispozitivului:

 Results

  • Demo:

Google drive video

Concluzii

SleepGuard este un proiect ce evidențiază importanța calității somnului unui utilizator, indiferent de durata acestuia. Monitorizarea poate fi realizată cu ușurință folosind componente accesibile și un microcontroller ESP32. Printre realizările notabile se numără:
* Consum redus de energie, în ciuda numărului mare de componente hardware utilizate
* Logica complexă a stărilor prin care trece dispozitivul și implementarea acesteia
* Afișarea rezultatelor prin intermediul unei interfețe web, pentru o vizualizare mai clară a datelor

Idei pentru dezvoltări ulterioare:
* Analiză mai detaliată a datelor colectate, în scopul îmbunătățirii calității somnului
* Tonuri de alarmă personalizabile, în funcție de preferințele utilizatorului
* Integrarea într-un ceas digital „SleepWatch”, pentru o portabilitate sporită
* O interpretare a rezultatului mai bună pe baza unor sfaturi medicale

Download

Source code, project details and project images: GitHub Repository

Github content:

  • Source code
  • README file
  • All images on ocw

Jurnal

  • Alegere temă proiect: 29.04.2025
  • Confirmare temă proiect (la laborator): 30.04.2025
  • Comandare piese lipsă: 03.05.2025
  • Schelet documentație (Introducere, Descriere Generală, Resurse Hardware): 04.05.2025
  • Piese livrate: 08.05.2025
  • Alimentare și LCD montate: 10.05.2025
  • Cod funcționalitate LCD: 11.05.2025
  • Butoane, buzzer și mpu6050 montate: 13.05.2025
  • Cod funcționalitate butoane, buzzer, mpu6050: 13.05.2025
  • Microfon max4466 și Dht11 montate: 15.05.2025
  • HARDWARE DONE
  • Cod funcționalitate microfon și dht11: 17.05.2025
  • Cod funcționalitate WiFi device extern: 17.05.2025
  • SOFTWARE DONE
  • Continuare documentație (Hardware, Software): 18.05.20205
  • DOCUMENTAȚIE DONE

Bibliografie/Resurse

Resurse Hardware

Name Description Link Datasheet
ESP32-WROOM Microcontroller ESP32 Optimus Digital Datasheet
MPU6050 Accelerometer and Gyroscope module Sigmanortec Datasheet
MAX4466 Microphone with amplifier Sigmanortec Datasheet
Passive Buzzer Buzzer 3.3V Optimus Digital Datasheet
Buttons 4 pin Push Buttons Optimus Digital Datasheet
DHT11 Temperature and Humidity Sensor Optimus Digital Datasheet
LCD 1602 Liquid Crystal Display Optimus Digital Datasheet
Power Supply Breadboard Power Supply Optimus Digital Datasheet
Battery holder 6 AA Battery holder with DC jack Optimus Digital Datasheet
Other Capacitor, Resistors, Wires male-female/male-male, Breadboard

Resurse Software

pm/prj2025/cmoarcas/filip.dumitrascu.txt · Last modified: 2025/05/29 23:14 by filip.dumitrascu
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