ESP32 · IoT / NVR
Sleep Radar
DFRobot C1001 60 ГГц · ESP32-C3 · M5Stack Tab5
Бесконтактный датчик сна на стене над кроватью: радар 60 ГГц следит за присутствием, дыханием, пульсом и фазами сна и по Wi-Fi передаёт данные в Home Assistant через MQTT. Экран M5Stack Tab5 показывает ночь целиком, её разбор и короткий совет.
flash.miroslav.diy/sleep-radar/
Аппаратная часть
- 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)
01 / SCREENS
Экраны и корпус
Экраны Tab5 нарисованы кодом самой прошивки вне устройства на синтетических данных симулятора — это не запись настоящей ночи. Панели Home Assistant — живые снимки панели «Sleep» 14 октября 2026 с настоящими данными датчика на стенде, не над кроватью. Корпус — рендеры параметрической модели из 3D-просмотра на flash.miroslav.diy (вид «в сборе», корпус полупрозрачный): основной вариант под 103450 и вариант C под 104060. Источник, коммит, тип и размеры каждого файла записывает скрипт импорта в src/screenshots/sleep-radar/manifest.json.
Изображения импортированы из репозитория miroslavb/sleep-radar на коммите f95292ebdabb; тип — OFF-DEVICE RENDER + LIVE HOME ASSISTANT.
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
Ссылки
- Открыть прошивку и настройку https://flash.miroslav.diy/sleep-radar/
- Открыть схему сборки https://flash.miroslav.diy/sleep-radar/wiring.html
- Открыть корпус в 3D https://flash.miroslav.diy/sleep-radar/enclosure.html
- Репозиторий https://github.com/miroslavb/sleep-radar
05 / PROVENANCE
Источники
- README
/root/projects/sleep-radar/README.md - GBrain
projects/sleep-radar
Описание и технические факты сверены с указанными каноническими источниками. Статус сверён прямой, публичной или LGTM-пробой .