Table of Contents

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:

Funcționalitate software:

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

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:

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)) ⇒

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

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

Software Design

Source code: GitHub Repository

IDE: Visual Studio Code and PlatformIO extension

Dependențe externe:

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

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

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

 6

 Results

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:

Jurnal

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

PlatformIO

Arduino framework for ESP32

ESP32 (30 pin version) Configuration

Estimating Sleep parameters using accelerometer

Calculating decibels using microphone max4466

Brownout detector was triggered ESP32 WiFi error handler