miroslav.diyDIY hardware lab

ESP32 · IoT / NVR

Sleep Radar

DFRobot C1001 60 ГГц · ESP32-C3 · M5Stack Tab5

Бесконтактный датчик сна на стене над кроватью: радар 60 ГГц следит за присутствием, дыханием, пульсом и фазами сна и по Wi-Fi передаёт данные в Home Assistant через MQTT. Экран M5Stack Tab5 показывает ночь целиком, её разбор и короткий совет.

Доступен

Аппаратная часть

  • DFRobot C1001 (SEN0623) · mmWave-радар 60 ГГц
  • ESP32-C3 SuperMini · WEMOS D1 mini Battery Shield (TP5410)
  • Li-ion 103450 2000 мА·ч, 104060 3000 мА·ч или 2 × 21700 параллельно
  • M5Stack Tab5 · Home Assistant (MQTT discovery)

02 / PURPOSE

Что делает проект

Радар висит на стене над изголовьем и смотрит на грудную клетку спящего с расстояния 0,4–1,5 м: без браслетов и камер он видит, лежит ли человек в кровати, считает пульс и дыхание, оценивает движение и сам размечает фазы сна. Режим один — непрерывный: радар включён всегда, а узел-датчик на ESP32-C3 каждые 15 секунд и при каждом изменении публикует данные в MQTT, Home Assistant сам создаёт сущности, а экран M5Stack Tab5 строит гипнограмму ночи, считает время сна, засыпание, пробуждения, эффективность и паузы дыхания и даёт короткий совет. Прошивка обоих устройств и настройка Wi-Fi и MQTT — прямо из браузера по USB. Не медицинское изделие: фазы сна, число пауз дыхания и советы — справочная информация, а не диагноз.

03 / SYSTEM

Архитектура

  • Узел-датчик: радар C1001 по UART 115200 подключён к ESP32-C3 SuperMini; кадры радара разбирает собственный неблокирующий парсер с native-тестами. Данные идут в Mosquitto в Home Assistant с MQTT discovery, настройки возвращаются через retained-топики set/*; для спальни в Home Assistant собрана панель «Sleep».
  • Питание: WEMOS D1 mini Battery Shield (TP5410) заряжает ячейку от гнезда USB-C на корпусе и повышает её напряжение до 5 В; через выключатель 5 В идут на радар и через диод Шоттки — на вывод 5V платы C3. Радар включён всегда: у C1001 нет управления питанием по UART, режима энергосбережения нет. Узел в среднем берёт из ячейки ≈ 177 мА (замер полного разряда), поэтому 103450 на 2000 мА·ч хватает на ≈ 11 часов, то есть на одну ночь.
  • Вариант питания C: один аккумулятор 104060 на 3000 мА·ч вместо 103450 — в замере 16 ч 54 мин от полного заряда до отключения, то есть целая ночь с запасом ≈ 6 часов; подключается так же, как 103450. Его корпус на 5,5 мм шире и на 6 мм выше (75,5 × 38,1 × 85,5 мм при наклоне 45°) и подогнан под ячейку владельца 9,4 × 39,7 × 59,1 мм с платой защиты внутри длины.
  • Вариант питания B: вместо 103450 — две ячейки 21700 параллельно в держателе через плату защиты 1S: ≈ 56 часов непрерывной работы, заряд ≈ 10 часов при 1 А; для него в модели есть отдельный, более широкий вариант корпуса.
  • Экран M5Stack Tab5 (ESP32-P4, Wi-Fi через ESP32-C6) берёт данные датчика из того же брокера, рисует на английском страницы Now, Night, Trends и Device и публикует свою аналитику ночи обратно в Home Assistant. Он показывает и свою батарею 2S: с притушенным экраном Tab5 потребляет ≈ 1,15 Вт — это ≈ 12,6 ч от 2200 мА·ч и ≈ 25 ч от 4400 мА·ч. Модуль Wi-Fi ESP32-C6 обновлён прямо на устройстве с ESP-Hosted 1.4.1 до 2.12.8.
  • Пароли Wi-Fi и MQTT в прошивки не вшиваются: их вводят по USB на странице настройки (Web Serial), устройство хранит их у себя. Образы прошиваются из браузера через ESP Flasher со сверкой размера и SHA-256. С прошивок 1.2 обновления идут по воздуху: устройство по кнопке Install в Home Assistant само скачивает образ с flash.miroslav.diy, проверяет подпись ECDSA и SHA-256 и откатывается к прежней версии, если новая не вышла на связь.
  • Корпус — параметрическая модель на Python: настенная пластина, корпус с наклоном 30°, 45° или 60° и крышка, на которой стоят все платы и аккумулятор, — в вариантах под 103450, 104060 и 2 × 21700. Окно радара — стенка 1,5 мм, светодиоды заряда шилда светят в окошко на боковой грани; STL, 3MF и интерактивная 3D-модель — на странице сборки.

04 / LINKS

05 / PROVENANCE

Источники

  • README/root/projects/sleep-radar/README.md
  • GBrainprojects/sleep-radar

Описание и технические факты сверены с указанными каноническими источниками. Статус сверён прямой, публичной или LGTM-пробой .