2026 M-Design设计竞赛 - 基于树莓派5的空巢老人智能监护系统
该项目使用了树莓派5,实现了空巢老人智能监护系统的设计,它的主要功能为:环境检测及异常行为检测。
标签
树莓派5
YOLOv5
2026 M-Design
空耳-
更新2026-06-09
23

2026 M-Design设计竞赛 - 基于树莓派5的空巢老人智能监护系统

一、项目介绍和创意介绍

随着我国人口老龄化程度不断加深,空巢老人的居家安全问题日益成为社会关注的焦点。跌倒是最常见的老年人意外伤害之一,若未能及时发现和救助,可能导致骨折、脑损伤甚至危及生命。同时,独居老人的居住环境质量(温度、湿度、气压、光照等)也直接影响其健康与舒适。然而,现有的跌倒检测方案多为可穿戴设备,老人穿戴麻烦、遗忘率高;传统的环境监测系统又缺乏主动判断危险的能力,家属也无法远程实时获知老人状态。

针对这一痛点,本作品设计了一套基于树莓派5的多传感器融合智能监护系统。该系统利用 YOLOv5 深度学习视觉模型对摄像头画面进行实时分析,精准识别老人跌倒行为;同时,通过 I²C 总线同步采集六轴运动传感器(MPU6050)、气压温度传感器(BMP280)、高精度温湿度传感器(HDC1080)等多维环境数据。所有环境与告警信息以仪表盘形式,通过 Flask 搭建的 Web 服务器和 Server-Sent Events(SSE)技术实时推送到任意联网设备的浏览器中。此外,系统集成了 ST25DV04K 动态 NFC 标签,家属或急救人员只需用手机触碰标签,即可自动打开监护网页,为紧急救援争取宝贵时间。

项目创意亮点

  • 视觉感知:YOLOv5 摄像头跌倒检测作为核心安全判断依据,降低误报和漏报。
  • 非穿戴式设计:所有传感器安装在室内固定位置,老人无需额外佩戴任何设备,无感监测大幅提升使用依从性。
  • 环境全面感知:温湿度、气压、光照等数据帮助家属判断室内舒适度,预防中暑、受凉等次生健康风险。
  • 一碰即达的紧急访问:NFC 标签储存监护网页 URI,亲友手机触碰即可打开页面,无需记忆 IP 地址或扫码,极大降低紧急场景下的操作门槛。

二、使用到的硬件简介

硬件

型号

功能描述

连接方式

主控板

树莓派 5 (4GB)

运行 YOLOv5 推理、传感器数据采集、Web 服务器

-

摄像头

1080P USB 免驱摄像头

实时采集室内画面,作为跌倒检测的视频输入

USB 3.0 接口

六轴传感器

MPU6050

获取三轴加速度、三轴角速度、芯片温度

I²C-1(地址 0x68)

气压传感器

BMP280

采集大气压强、环境温度

I²C-2(地址 0x76)

温湿度传感器

HDC1080

高精度温湿度数据,用于环境舒适度判断

I²C-2(地址 0x40)

温湿度传感器(预留)

SHT30

备用温湿度扩展

I²C-2

光照传感器(预留)

OPT3001

环境光照度检测

I²C-2

NFC 动态标签

ST25DV04K

存储监护网页 URI,手机靠近自动打开浏览器

I²C-2

所有 I²C 传感器通过树莓派的双 I²C 总线连接:MPU6050 挂在 I²C-1(GPIO2/3),NFC 标签BMP280 与 HDC1080 挂在 I²C-2(GPIO4/5),有效避免地址冲突和总线拥堵。摄像头通过 USB 直连,无需额外驱动。

image.png

三、方案框图和项目设计思路

系统整体框图

image.png

硬件连接图

90249d22cba3fde6cb4a48d016e3dd3f.jpg

设计思路

本系统的设计遵循“感知-判断-推送-展示”四层架构。

  1. 感知层:由 I²C 传感器和 USB 摄像头构成。I²C 传感器通过 Python 编写的面向对象驱动类定时读取寄存器数据;摄像头通过 OpenCV 连续读取视频帧。
  2. 判断层:核心是 YOLOv5 模型对视频帧进行人体跌倒检测。模型使用自定义跌倒数据集训练。当连续多帧识别到“跌倒”类别时,判定为一次潜在危险事件。同时,环境传感器数据直接用于展示,不作复杂判据。
  3. 推送层:Flask 应用维护两条 SSE 通道 —— /stream 以 1Hz 频率推送传感器数据和跌倒告警标志;同时提供一个 /update_alarm HTTP 接口,接收来自 YOLOv5 脚本的 POST 请求以更新全局告警状态。这种松耦合设计使得 YOLOv5 检测与 Web 服务可以独立运行,互不阻塞。
  4. 展示层:前端采用 HTML5 + Chart.js 实现响应式仪表盘。玻璃拟态风格的卡片实时刷新数据,环境曲线动态滚动,跌倒告警卡片在收到 alarm: true 时触发 CSS 动画,变为红色闪烁。NFC 标签中写入的 URI 记录使任何支持 NFC 的手机触碰即打开仪表盘,免去手动输入。

四、原理图和PCB介绍

原理图

  • mpu6050
    InvenSense六轴运动跟踪传感器,集成三轴加速度计和三轴陀螺仪,并内置数字运动处理器(DMP)和温度传感器。 image.png
  • LIS2MDLTR
    STMicroelectronics超低功耗三轴磁力计(电子罗盘),用于检测地磁场强度。image.png
  • LSM6DSMTR
    STMicroelectronics iNEMO 惯性模块,集成三轴加速度计和三轴陀螺仪,具有机器学习内核和有限状态机。image.png
  • SHT30-DIS-B10KS
    Sensirion 数字温湿度传感器,基于 CMOSens 技术。image.png
  • BMP280
    Bosch Sensortec(博世传感)气压传感器,可同时测量大气压强和环境温度。image.png
  • HDC1080DMBR
    Texas Instruments(德州仪器)高精度数字温湿度传感器,内置加热元件。image.png
  • OPT3001DNPR
    Texas Instruments(德州仪器)环境光传感器,内置 23 位有效分辨率的光-数字转换器。image.png
  • ST25DV04K-IER6S3
    STMicroelectronics(意法半导体)动态 NFC/RFID 标签 IC,带有 4 Kbit EEPROM,支持 NDEF 格式和 I²C 接口。image.png
  • 拓展接口
  • image.png
  • MCP2515T-I/ML
  • image.png

PCB

image.pngimage.png

五、软件流程图和关键代码介绍

软件总体流程图

image.png

关键代码介绍

1. YOLOv5 跌倒检测与 Flask 联动(detect.py 修改片段)

# 在 detect.py 的图片处理循环末尾,遍历检测结果判断是否有跌倒类别
FALL_CLASS_ID = 0         # 根据实际模型调整
FALL_CLASS_NAME = 'fall'
fall_detected = False
if len(det):
  for *xyxy, conf, cls in reversed(det):
      c = int(cls)
      if c == FALL_CLASS_ID or names[c] == FALL_CLASS_NAME:
          fall_detected = True
          break
# 向 Flask 发送状态
try:
  requests.post('http://127.0.0.1:5000/update_alarm',
                json={'fall': fall_detected}, timeout=1)
except Exception:
  pass


2. Flask 端接收告警并推送 SSE(app.py 核心部分)

fall_alarm = {'fall': False, 'timestamp': 0}
alarm_lock = threading.Lock()

@app.route('/update_alarm', methods=['POST'])
def update_alarm():
  global fall_alarm
  data = request.get_json()
  with alarm_lock:
      fall_alarm['fall'] = data.get('fall', False)
  return 'OK', 200

def event_stream():
  while True:
      data = read_all_sensors()
      with alarm_lock:
          data['alarm'] = fall_alarm['fall']
      yield f"data: {json.dumps(data)}\n\n"
      time.sleep(1.0)


3. 前端告警联动(JavaScript 片段)

const alarmCard = document.getElementById('alarm-card');
if (data.alarm) {
  alarmCard.classList.add('blink');
  alarmStatus.textContent = 'FALL DETECTED!';
  alarmStatus.style.color = '#ff4d6a';
} else {
  alarmCard.classList.remove('blink');
  alarmStatus.textContent = 'Safe';
  alarmStatus.style.color = '#00ff88';
}


六、功能展示图及说明

  • 仪表盘全景:深色渐变背景衬托下,六张玻璃拟态卡片分别展示“跌倒检测”、“MPU6050 加速度/温度”、“BMP280 气压/温度”、“HDC1080 温湿度”、以及预留给其他传感器的半透明占位卡片。每张卡片下方设有动态 Chart.js 折线图,可回溯最近 30 个数据点。
  • 跌倒告警效果:正常状态下,“跌倒检测”卡片显示绿色“Safe”,边框透明。当 YOLOv5 检测到跌倒时,该卡片瞬间变为红色边框,并带有脉动闪烁动画,中央文字变为“FALL DETECTED!”,提示立即查看。
  • NFC 一碰即达:用支持 NFC 的智能手机轻触 ST25DV04K 标签,手机自动弹出浏览器并打开监护网页,全程无需输入地址或扫码,实测响应时间小于 2 秒。
  • 环境数据曲线:温湿度、气压等曲线以流畅动画实时更新,家属可直观观察室内环境变化趋势。

image.png

image.png

46af47ebc75c3f07d91aa9cc8e950249.jpg

七、设计中遇到的难题和解决方法

  1. YOLOv5 在树莓派上的实时性挑战
    树莓派 CPU 直接运行 YOLOv5s 模型时,推理速度仅 5 fps,远远无法满足实时视频分析需求。
    解决方法:采用模型量化技术,将 PyTorch 模型转换为 ONNX 格式,使用 ONNX Runtime 进行推理。
  2. 跌倒检测误报问题
    初期模型将弯腰拾物、躺在沙发上等动作误判为跌倒,引起频繁虚警。
    解决方法:在 YOLOv5 输出后引入连续帧确认机制(连续 5 帧检测到跌倒才触警),显著降低了误报率。
  3. I²C 总线冲突
    BMP280 与 HDC1080 挂在同一条 I²C-2 总线上,连续交叉访问时偶发 Remote I/O Error。
    解决方法:引入 Python threading.Lock,对 I²C-2 的操作进行互斥保护,并将各传感器读取间隔从 0.5 秒调整为 1 秒,确保设备有足够转换时间。
  4. 文件编码导致脚本运行失败
    多次出现 “Non-UTF-8 code starting with...” 报错,原因是从不同平台复制代码时引入了中文乱码字节。
    解决方法:最终将所有代码文件统一保存为纯 ASCII 或严格 UTF-8 编码,并添加文件头声明 # -*- coding: utf-8 -*-,彻底解决了环境兼容性问题。

八、对本次竞赛的心得体会

参加 2026 M-Design 设计竞赛,让我们经历了一次从硬件选型、传感器底层驱动开发,到深度学习模型部署、前后端全栈开发的完整工程实践。从最初在面包板上艰难点亮第一个 I²C 传感器,到最后实现一套能够真正守护老人安全的监护原型,每一步都充满了挑战与惊喜。

我们深刻体会到,物联网与人工智能技术的结合,在智慧养老领域具有巨大的应用潜力。一个看似简单的跌倒检测功能,背后需要电源完整性、通信可靠性、模型准确率、用户体验设计等多方面的细致考量。特别感谢贸泽电子提供的元器件赞助和硬禾学堂的技术支持,让我们能够心无旁骛地专注于创造。本项目不仅是一个技术竞赛作品,更承载着我们对于社会问题的关注和解决愿望。未来,我们将继续完善系统,加入语音对讲、烟雾报警、微信推送等功能,让空巢老人的安全监护真正无死角。希望我们的作品能为智慧养老贡献一份微薄之力,也期待在竞赛中与更多志同道合的伙伴交流学习。


软硬件
元器件
SHT30A-DIS-B10KS
汽车级数字温湿度传感器(±3%)
HDC1080DMBR
2% RH 低功耗数字相对湿度传感器
电路图
附件下载
best.pt
app.py
detect.py
ProPrj_树莓派5拓展板_2026-06-08.epro2
团队介绍
kone
评论
0 / 100
查看更多
猜你喜欢
制作FPGA电子琴1. 存储一段音乐,并可以进行音乐播放, 2. 可以自己通过板上的按键进行弹奏,支持两个按键同时按下(和弦)并且声音不能失真,板上的按键只有13个,可以通过有上方的“上“、”下”两个按键对音程进行扩展
john
2578
M-Design设计竞赛-基于树莓派5-STM32的汽车仪表盘该项目使用了该项目使用了树莓派5作为主控平台、STM32F103C8T6作为协处理器,结合多种传感器模块和Qt框架,,实现了一个智能车载仪表盘系统的设计,它的主要功能为:1.通过STM32协处理器实现了多传感器数据采集与融合: 使用MPU6050获取车辆姿态数据(横滚角/俯仰角/偏航角) 通过TJA1051T CAN收发器解析OBD-II标准协议,实时获取发动机转速、车速、水温等车辆状态 采用ATGM332D GPS模块实现卫星定位(经纬度/海拔/速度) 通过SHT30监测车内温湿度环境参数 2.基于树莓派5的Qt人机交互界面实现了: 实时显示车辆动态数据的三维仪表盘。
空耳-
2872
2026 M-Design设计竞赛 - 基于树莓派和ESP32设计的智能家居系统该项目使用了树莓派5,实现了智能家居系统的设计,它的主要功能为:部署语音模型和qwen模型,能够进行人机交互,并通过MQTT协议上传OneNET和下发命令。 该项目使用了ESP32-S3-DEVKITC-1-N32R16V,实现了智能家居系统的执行系统的设计,它的主要功能为:实现了温湿度和空气质量的读取,对舵机和灯光的控制。
Y_HT
59
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号