自给自足:手搓了一个睡眠监测仪,用着怎么样?
很久不分享手搓党作品拉!
今天分享一个“基于毫米波雷达的睡眠监测仪”作品!
用Air700E开发板+毫米波雷达,手搓一个开箱即用的睡眠监测仪,不花冤枉钱!
来仔细瞧瞧!
一、项目原理及硬件制作
毫米波是指频率范围从30-300GHz的电磁波,它的波长很短,雷达发射的毫米波会随人体反射回来,同时人体微小的移动会改变毫米波。有了这些变化,雷达可以计算出人体移动的距离速度以及方向。
- 项目原理 -
毫米波雷达测人体胸腔起伏,根据起伏计算心率和呼吸频率,然后通过算法推算睡眠状态,使用手机小程序读取和展示数据。

相比市面上的手环,毫米波雷达无需佩戴即可实现无感体验的隐形监测。
- 主要物料 -
本文睡眠监测仪主要硬件物料包含:毫米波雷达R60ABD1、合宙Air700E开发板、传感器(AHT20、BH1750等等)、底板和外壳。除了底板需要打板和外壳需要3D打印,其他零件都可以在网上购买组装。
01. 毫米波雷达R60ABD1:
常见的毫米波雷达有24/60/77GHz三种,原理上频率越高,雷达感知的微动幅度越小。这款60GHz自带睡眠监测功能的毫米波雷达,它很接近我的想法。

02. 合宙Air700E开发板:
按照以往经验,睡眠监测仪最简单直接的做法是,找一块开发板连上雷达串口,将雷达数据通过蓝牙转发出去,客户端通过蓝牙读取雷达数据,然后展示出来。
但为了让家里的老人也能用,我打算加上远程看护的功能,所以这里要改用可以Wi-Fi或者4G通信的开发板,还要部署一套存放和查询数据的后端服务。

虽然我对开发板选型没有任何偏好,但觉得有必要把吃灰的羊毛利用起来——以前入手的合宙Air700E开发板不仅性价比高,而且可以用Lua写嵌入式,特别适合。
03. 自制底板(可选):
自制的底板用于整合Air700E开发板、毫米波雷达R60ABD1和其他传感器(AHT20、BH1750等等)。


所以其实即使没有底板,用杜邦线连接它们,然后刷入固件,也可以在小程序验证毫米波雷达的睡眠监测能力。不过为了避免验证过程中发生各种问题,我还是建议用底板验证。
04. 自制外壳(可选):
设计外壳时,要注意到雷达的距离最好是半波长的整数倍;加上USB口和按键,硬件图形就出来了。为了方便调试,外壳保留了开发板上的开机键和关机键。

- 硬件组装 -
拿到板子开始组装,先焊接元器件和Air700E开发板,再装雷达。可以看到堆叠后雷达和Air700E开发板还有一点点距离,雷达性能应该不会有太大影响。


安装外壳也是很简单,几乎不可能犯错。上好螺丝之后,测试一下按键有没有问题,到这里硬件算是完成了。
![]()
- 开源链接 -
目前基于毫米波雷达的睡眠监测仪项目硬件,已在立创平台开源。可通过原工程链接获取项目相关详细操作步骤、注意事项,以及原理图、PCB等最新文件:
原工程链接:
https://oshwhub.com/zomco/MR60LT0
开源协议:
CERN Open Hardware License
二、功能实现及效果测试

- 功能实现 -
项目代码嵌入式部分,我直接用合宙官方的模板工程。删掉不需要的代码,加上雷达串口通讯相关代码。雷达协议并不复杂,心率、呼吸频率、体动是实时上报的,所以比较好调试。而睡眠数据每10分钟才上报一次,调试会比较困难。
后端部分主要分三块:
-
从雷达拿数据存到数据库
-
提供历史数据查询接口
-
提供实时数据查询接口
对接雷达的部分会麻烦一些,其他都是很简单的增删查改。
前端部分我直接参考小米运动的设计,除了要有查看历史数据和实时数据的页面,还需要有调整雷达和绑定雷达的入口。到这里软件也好了,可以测试一下效果。
- 效果测试 -
01. 绑定设备:
插卡开机,等待指示灯常绿。长按绑定键,雷达进入绑定状态;然后打开小程序OWR Care,扫描开发板表面的二维码,等待绑定完成。调整雷达位置,确保雷达距离合适。


02. 心率测试:
我们先看看实时数据,心率测试结果和手环的有一些偏差,但也不是太离谱:

03. 睡眠测试:
睡眠数据要等睡醒才会有,而且雷达只能做单人睡眠监测。但我没有这样的测试条件,这里只好先给出双人监测测试结果,最后我测了三组数据:

有几个地方需要注意:
首先因为睡眠数据的上报,频率是10分钟一次,所以雷达计算睡眠时长最小单位是10分钟。
其次,手环可以测出快速眼动期时长,雷达则不能;雷达会计算清醒时长而手环就没有。最后我无法确认手环和雷达对睡眠状态定义是否一致,也无法得知他们的结果是否能反映实际情况。
但至少从三组数据可以看出,手环和雷达测得的睡眠时长,总体上接近实际时长。第三组数据偏差较大,估计在双人监测场景,雷达无法区分哪个人先睡或者先醒,直接将睡眠时长叠加计算了。
考虑到项目定位不是医疗器械,我觉得这种偏差是可以接受的,使用几天整体感受也是很好。
- 待改进完善 -

指示灯太亮:
挂在床头就有点光污染,不过可以将外壳做厚避免透光,但我估计会影响雷达性能。当然,最好的办法是换其他材质的外壳。
雷达自身算法也可以再优化一下:
实测发现,有吹风干扰的时候,雷达会误判有人在睡觉,或者雷达安装角度不够,有时候会没有数据,不知道厂商那边有没有升级计划。
总体上看,个人认为雷达使用体验比手环好多了,它更符合用户长期使用的习惯,要回查睡眠数据也是很方便。如果你也对毫米波雷达睡眠监测仪感兴趣,不妨自己试试DIY~
相关文章:
自给自足:手搓了一个睡眠监测仪,用着怎么样?
很久不分享手搓党作品拉! 今天分享一个“基于毫米波雷达的睡眠监测仪”作品! 用Air700E开发板毫米波雷达,手搓一个开箱即用的睡眠监测仪,不花冤枉钱! 来仔细瞧瞧! 一、项目原理及硬件制作 毫米波是指频率…...
Miniforge详细安装教程(macOs和Windows)
(注:主要是解决商业应用anaconda收费问题,这是轻量级的代替,个人完全可以使用anaconda和miniconda) Miniforge 是一个轻量级的包管理器,类似于 Anaconda 和 Miniconda。它主要用于安装基于 conda 的 Python 环境,专注于…...
HDFS Shell作业1
1.在HDFS上建立/user/stu/自己学号,和/user/stu/input目录。 命令: hdfs dfs -mkdir -p /user/stu/22 hdfs dfs -mkdir /user/stu/input 2.用两种不同的方法上传albums.csv至HDFS的学号目录和input目录中。 命令: hdfs dfs -put par…...
工业交换机一键重启的好处
在当今高度自动化和智能化的工业环境中,工业交换机作为网络系统中至关重要的一环,其稳定性和可靠性直接影响到整个生产过程的顺利进行。为了更好地维护这些设备的健康运行,一键重启功能应运而生,并呈现出诸多显著的好处。 首先&am…...
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
全文目录: 前言一、PL/SQL基础语法1.1 变量声明变量声明示例: 二、记录类型与集合类型的使用2.1 记录类型记录类型的定义与使用 2.2 集合类型 三、PL/SQL表与关联数组3.1 PL/SQL表(嵌套表)嵌套表的定义与使用 3.2 关联数组关联数组…...
springboot系列--web相关知识探索二
一、映射 指的是与请求处理方法关联的URL路径,通过在Spring MVC的控制器类(使用RestController注解修饰的类)上使用注解(如 RequestMapping、GetMapping)来指定请求映射路径,可以将不同的HTTP请求映射到相应…...
Oracle 12c在Windows环境下安装
适合初学者使用的Oracle 12c在Windows环境下安装步骤、参数配置、常见问题及参数调优的详细补充说明。 一、Oracle 12c安装步骤 1. 准备工作 在安装Oracle 12c之前,确保你的系统满足以下要求: 操作系统:Oracle 12c支持的Windows版本包括Wi…...
Stable Diffusion绘画 | 来训练属于自己的模型:打标处理与优化
上一篇完成的打标工作,是为了获取提示词,让AI认识和学习图片的特征。 因此,合适、恰当、无误的提示词,对最终模型效果是相当重要的。 Tag 如何优化 通过软件自动生成的 Tag 只是起到快速建立大体架构的作用,里面会涉…...
【论文笔记】Visual Instruction Tuning
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Visual Instruction Tunin…...
ubuntu 设置静态IP
一、 ip addresssudo nano /etc/netplan/50-cloud-init.yaml 修改前: 修改后: # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-inits # ne…...
Java 每日一刊(第19期):泛型
文章目录 前言1. 泛型概述1.1 不使用泛型 vs 使用泛型1.2 泛型的作用 2. 泛型的基本语法2.1 定义带类型参数的泛型类2.2 使用泛型类2.3 泛型方法 3. 泛型类型推断与钻石操作符3.1 类型推断3.2 钻石操作符 4. 通配符的使用4.1 无界通配符 <?>4.2 上界通配符 <? exten…...
windows下安装rabbitMQ并开通管理界面和允许远程访问
如题,在windows下安装一个rabbitMQ server;然后用浏览器访问其管理界面;由于rabbitMQ的默认账号guest默认只能本机访问,因此需要设置允许其他机器远程访问。这跟mysql的思路很像,默认只能本地访问,要远程访…...
深度剖析音频剪辑免费工具的特色与优势
是热爱生活的伙伴或者想要记录美好声音的普通用户,都可能会需要对音频进行剪辑处理。而幸运的是,现在有许多优秀的音频剪辑软件提供了免费版本,让我们能够轻松地施展音频剪辑的魔法。接下来,就让我们一同深入了解这些音频剪辑免费…...
Oracle中TRUNC()函数详解
文章目录 前言一、TRUNC函数的语法二、主要用途三、测试用例总结 前言 在Oracle中,TRUNC函数用于截取或截断日期、时间或数值表达式的部分。它返回一个日期、时间或数值的截断版本,根据提供的格式进行截取。 一、TRUNC函数的语法 TRUNC(date) TRUNC(d…...
【Spring Boot 入门一】构建你的第一个Spring Boot应用
一、引言 在当今的软件开发领域,Java一直占据着重要的地位。而Spring Boot作为Spring框架的延伸,为Java开发者提供了一种更加便捷、高效的开发方式。它简化了Spring应用的搭建和配置过程,让开发者能够专注于业务逻辑的实现。无论是构建小型的…...
PPT 快捷键使用、技巧
前言: 本文操作是以office 2021为基础的,仅供参考;不同版本office 的 ppt 快捷键 以及对应功能会有差异,需要实践出真知。 shift 移动 水平/垂直 移动 ; shift 放大/缩小 等比例放大 缩小 ; 正圆 正…...
Web安全 - 文件上传漏洞(File Upload Vulnerability)
文章目录 OWASP 2023 TOP 10导图定义攻击场景1. 上传恶意脚本2. 目录遍历3. 覆盖现有文件4. 文件上传结合社会工程攻击 防御措施1. 文件类型验证2. 文件名限制3. 文件存储位置4. 文件权限设置5. 文件内容检测6. 访问控制7. 服务器配置 文件类型验证实现Hutool的FileTypeUtil使用…...
vue3中el-input在form表单按下回车刷新页面
摘要: 在input框中点击回车之后不是调用我写的回车事件,而是刷新页面! 如果表单中只有一个input 框则按下回车会直接关闭表单 所以导致刷新页面 再写一个input 表单 ,并设置style“display:none” <ElInput style"display…...
SQL Server中关于个性化需求批量删除表的做法
在实际开发中,我们常常会遇到需要批量删除表,且具有共同特征的情况,例如:找出表名中数字结尾的表之类的,本文我将以3中类似情况为例,来示范并解说此类需求如何完成: 第一种,批量删除…...
关于按键状态机解决Delay给程序带来的问题
问题产生 我在学习中断的过程中,使用EXTI15外部中断,在其中加入HAL_Delay();就会发生报错 错误地方 其它地方配置 问题原因 在中断服务例程(ISR)中使用 HAL_Delay() 会导致问题的原因是: 阻塞性: HAL_D…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
