Bỏ qua, đến nội dung chính
Nastrotek
Giải pháp IoTIoT SolutionsMới

Đồng hồ để bàn “chỉ báo chất lượng giấc ngủ” không cần camera

Ghi chú làm một đồng hồ ESP32 cạnh giường, dùng CO2, nhiệt độ, ánh sáng và cảm biến hiện diện để giải thích vì sao sáng dậy thấy phòng ngủ không ổn, không cần camera.

Chia sẻ

LinkedInFacebookX
A hand reviewing a sleep environment score on a camera-free DIY bedside clock in the morning

Có những sáng dậy thấy người mệt nhưng không rõ vì sao: phòng bí, điều hòa để hơi nóng, rèm lọt sáng sớm, hay đơn giản là tối qua lên giường muộn. Mình muốn có một chiếc đồng hồ cạnh giường ghi lại vài dấu hiệu đó, để sáng hôm sau nhìn một cái là biết nên sửa điều gì trước.

Điểm mình không muốn đụng vào là camera trong phòng ngủ. Dự án này không cố “nhìn” người ngủ. Nó ghép các tín hiệu đơn giản từ phòng và giường, rồi hiện một chỉ báo tham khảo vào buổi sáng. Không đo REM, không kết luận ngủ sâu và cũng không chẩn đoán ngưng thở.

Đồng hồ thực sự biết được gì?

Tín hiệuĐiều có thể suy ra hợp lý
CO2, nhiệt độ, độ ẩmPhòng có bí, nóng hoặc ẩm hơn mức quen thuộc hay không
Ánh sángPhòng tối lúc bắt đầu ngủ và có bị sáng sớm hay không
Mức ồnCó bao nhiêu khoảng thời gian ồn vượt nền phòng
FSR dưới giườngThời điểm lên giường, rời giường và tổng thời gian nằm
Lịch sử 7 ngàyGiờ ngủ và giờ dậy có đều hay không

FSR không biết mình đang thức hay ngủ. Mức ồn cũng không chứng minh tiếng động đã làm mình tỉnh. Đây là lý do trên màn hình nên ghi “Sleep conditions” hoặc “Chỉ báo đêm qua”, thay vì khẳng định “bạn ngủ sâu 3 giờ 20 phút”.

ESP32-S3, màn hình e-paper, cảm biến SCD41, cảm biến ánh sáng, microphone MEMS, encoder và vỏ đồng hồ in 3D đặt trên bàn.

Bản đầu tiên nên đo ít nhưng rõ: CO2, nhiệt độ, độ ẩm, ánh sáng, mức ồn và trạng thái có người trên giường.

Phần cứng cho bản đầu tiên

  • ESP32-S3, ưu tiên board có PSRAM nếu dùng giao diện lớn.
  • OLED SH1107 128 x 128 hoặc e-paper 2.9 inch. OLED dễ làm đồng hồ liên tục; e-paper dịu mắt hơn nhưng không hợp để cập nhật từng giây.
  • SCD40/SCD41 để đo CO2, nhiệt độ và độ ẩm.
  • BH1750 để đo ánh sáng phòng.
  • Microphone MEMS I2S hoặc mạch đo âm lượng analog chỉ dùng để tính mức ồn tại chỗ.
  • Encoder có nút nhấn để xem lý do mất điểm và đặt giờ báo thức.
  • Một node ESP32 riêng cùng một hoặc hai FSR dưới nan giường.
  • Vỏ in 3D có khe thoáng quanh cảm biến, nhưng không để luồng nhiệt từ ESP32 thổi thẳng vào SCD41.

Nếu muốn bản gọn nhất, có thể bỏ microphone và cảm biến giường. Khi đó, đồng hồ chỉ chấm môi trường phòng cùng độ đều của giờ tắt đèn. Điểm sẽ ít thông tin hơn nhưng vẫn hữu ích và dễ tin hơn một thuật toán quá tham.

Chấm điểm thế nào để không tự lừa mình?

Mình sẽ bắt đầu với công thức dễ giải thích:

40 điểm: CO2, nhiệt độ, độ ẩm, ánh sáng và mức ồn
35 điểm: tổng thời gian có người trên giường
15 điểm: số lần rời giường kéo dài
10 điểm: độ đều của giờ lên giường trong 7 ngày

Ngưỡng không nên đóng đinh cho mọi người. Hãy ghi dữ liệu khoảng một tuần, chọn những đêm bản thân cảm thấy ổn làm baseline, rồi mới đặt vùng tốt/cần chú ý. Ở Việt Nam, phòng dùng máy lạnh, phòng mở cửa sổ và phòng có hai người sẽ có đường CO2, nhiệt độ rất khác nhau.

Điểm số cũng cần đi kèm lý do. 72 - phòng bí từ 02:10 có ích hơn một vòng tròn màu cam không giải thích gì.

Khung ESPHome cho cảm biến phòng

Phần đọc dữ liệu cơ bản khá ngắn:

i2c:
  sda: GPIO8
  scl: GPIO9

sensor:
  - platform: scd4x
    measurement_mode: low_power_periodic
    co2:
      name: "Bedroom CO2"
    temperature:
      name: "Bedroom Temperature"
    humidity:
      name: "Bedroom Humidity"

  - platform: bh1750
    name: "Bedroom Illuminance"
    update_interval: 60s

Điểm tổng có thể được tính trong Home Assistant vì cần lịch sử qua đêm. Đồng hồ chỉ nhận lại sleep_condition_score và một dòng lý do ngắn. Nếu Home Assistant mất kết nối, nó vẫn phải xem giờ và báo thức bình thường; sáng hôm đó chỉ hiện “chưa đủ dữ liệu”.

Đồng hồ chỉ báo giấc ngủ không có camera đặt trên tủ đầu giường, màn hình rất tối khi có người đang ngủ.

Ban đêm chỉ giữ giờ ở độ sáng thấp hoặc tắt hẳn; điểm đánh giá chỉ cần xuất hiện vào buổi sáng.

Riêng tư nên được thiết kế ngay từ đầu

Không có camera mới chỉ là bước đầu. Với microphone, firmware chỉ nên tính RMS/dB theo cửa sổ ngắn rồi bỏ mẫu âm thanh; không lưu file, không stream và không có API nghe lại. Có thể thêm công tắc vật lý ngắt nguồn microphone để người dùng kiểm tra được bằng mắt.

Dữ liệu cũng nên ở trong mạng nội bộ qua ESPHome và Home Assistant. Trên màn hình chỉ hiện điểm tổng, không hiện lịch sử chi tiết nếu đồng hồ được đặt ở nơi người khác dễ nhìn thấy.

Mình sẽ thử MVP như sau

  1. Dùng SOAS làm đồng hồ, giữ encoder và chế độ màn hình ban đêm.
  2. Thêm SCD41 cùng BH1750, log dữ liệu trong bảy đêm.
  3. Làm node FSR một bên giường, thêm delayed_ondelayed_off để tránh đếm nhầm khi trở mình.
  4. Chỉ tính ba thông tin đầu tiên: thời gian trên giường, CO2 trung bình và số phút phòng quá sáng.
  5. Sau mỗi sáng, tự ghi lại cảm nhận bằng một nút “ổn/chưa ổn” để chỉnh baseline.

Điểm mình muốn kiểm chứng không phải là một “điểm ngủ” thật chính xác. Mình chỉ cần nó đủ trung thực để nói: đêm qua CO2 cao từ khoảng 2 giờ sáng, phòng sáng sớm hơn mọi ngày, hoặc thời gian nằm trên giường ngắn hơn tuần trước. Nếu thông tin đó giúp mình sửa một thói quen nhỏ vào tối hôm sau, chiếc đồng hồ đã có ích rồi.

Nguồn tham khảo

Chia sẻ

LinkedInFacebookX

Tiếp tục khám phá

Đọc tiếp

Bài viết liên quan

Xem thêm trong Giải pháp IoT

Nastrotek sử dụng cookie để phân tích truy cập và cá nhân hóa quảng cáo, giúp hiểu cách website được sử dụng. Bạn có thể chấp nhận hoặc từ chối các cookie không thiết yếu.