空耳-

  • 2024-12-21
  • 加入了学习《Arduino? Nano RP2040 Connect 任务视频》,观看 PDM 数据打印及音频波形

  • 回复了主题帖: 【米尔 瑞芯微RK3576 工业开发板】1.跑SDK内转换好的yolov5s模型,晚点跑一下yolov10

    这个多少tops算力呢、

  • 2024-12-05
  • 加入了学习《嵌入式c语言进阶》,观看 课程内容和理念介绍

  • 回复了主题帖: 【2024 DigiKey 创意大赛】基于树莓派的空巢老人监护系统

    程序源码以及训练好的权重文件fall_down .zip

  • 2024-11-01
  • 加入了学习《基于树莓派5的工业智能网关视频》,观看 得捷2024大赛基于树莓派5的智能工业网关视频

  • 2024-10-31
  • 发表了主题帖: 【2024 DigiKey 创意大赛】基于树莓派的空巢老人监护系统

    本帖最后由 空耳- 于 2024-11-1 04:33 编辑 一、项目简介 1、设计名称 基于树莓派的空巢老人监护系统 2、项目照片 环境监测部分:       跌倒监测部分:   3、项目用到的板卡 (1)Raspberry Pi 5       处理器:2.4GHz 4核 64位Cortex-A76       内存:4GB LPDDR4X-4267       通讯接口:Wi-Fi 6(802.11ac) 支持2.4GHz和5GHz频段       Bluetooth 5.2 支持低功耗蓝牙连接       1个2.5Gbps 1000M Ethernet       2个USB3.0       2个USB2.0       GPIO:标准40Pin GPIO插头       音视频接口:双micro HDMI接口,支持双4K@60fps视频输出       2-lane MIPI DSI       2-lane MIPI CSI       MicroSD卡槽:支持更高速的MicroSD卡       PCIe接口: PCIe 2.0 x1接口,支持高速外设连接 (2)esp32   (3)其他传感器,mq-2,mq-5,dht11,GSM模块 4、项目功能     背景:随着我国社会老龄化的加剧, 特别是空巢老年人群体的扩大, 已经引起了广泛关注。 根据最新的统计数据, 我国 60 岁及以上的老年人口比例已经达到 18.7%, 而 65岁及以上的老年人口比例则为 13.5%, 与上一次人口普查相比, 这两个年龄段的人口比例分别上升了 5.44%和 4.63%。 同时, 《中国空巢老人现状报告 2017》 预测, 到2030 年, 我国的老龄人口将接近 3 亿, 其中 90%将是空巢老人家庭。 随着城市化进程的快速推进, 越来越多的年轻人涌向城市, 导致农村空巢老人的数量日益增加。     随着社会老龄化的加剧, 空巢老人的生活安全问题越来越受到重视。 本项目旨在开发一种基于树莓派的空巢老人守护系统, 该系统通过实时监控老人的姿态和环境信息, 能够迅速识别天然气泄漏, 家中失火, 老人跌倒等危险情况, 并立即向子女发送警告通知, 从而提升空巢老人的安全保障和生活品质。 本项目将综合运用嵌入式技术、 深度学习算法和物联网技术, 探讨如何构建一个高效且可靠的监测系统,为空巢老人的家庭护理提供技术支持与保障。 二、系统框图 系统设计方案:     为满足特定研究主题的需求, 本系统需要一个全面的设计方案。 系统的主要作用是监测老年人居家环境以及是否出现跌倒情况。 基于这一目标, 系统主要包含两个部分: 一部分是通过物联网技术实施环境监控, 另一部分则是专门用于检测跌倒这一危险行为。 系统总体框图如下:          物联网环境监测系统设计框图     在系统中,传感器数据监测部分负责监测空巢老人的室内环境参数,并通过云平台将信息发送给手机应用程序。在危险环境下,系统会通过GSM进行报警。系统包括数据采集模块,主控模块,通信模块等部分。     硬件框图:     软件框图:物联网环境监测系统使用Arduino IDE进行程序设计,设计了ESP-32主程序,DHT11温湿度传感器检测程序、MQ-2和MQ-5气体传感器检测程序,以及GSM报警通知程序。通过点灯Blinker APP软件,可以实时显示采集到的环境数据,并在发现危险情况时进行报警。   跌倒行为监测系统系统设计框图: 本文选择的ARM硬件平台为:Raspberry Pi 5处理器:2.4GHz 4核 64位Cortex-A76内存:4GB LPDDR4X-4267通讯接口:Wi-Fi 6(802.11ac) 支持2.4GHz和5GHz频段 Bluetooth 5.2 支持低功耗蓝牙连接1个2.5Gbps 1000M Ethernet。主要使用到了一下外部接口。    三、各部分功能说明     应用软件分为2大块:     跌倒行为监测:通过树莓派实施对跌倒行为的监控,主要聚焦于目标检测算法的研究,并采用YOLOv5算法来实现对老人跌倒的检测。对数据集进行多次训练,直到模型的准确度达到预定的目标。然后,将这个模型部署到目标设备上,对老人的行为进行视频监测,判断是否跌倒。最后通过GSM模块的短信功能进行报警。     物联网环境监测:通过采用DHT11传感器来监测老人居家环境的温湿度,并将获取的数据上传到云端进行显示和存储。这有助于实时了解老人居家环境的温湿度情况。通过采用MQ-5传感器来监测可燃气体是否泄露,并将获取的数据上传到云端进行显示和存储。这有助于实时了解老人居家环境的危险因素,提醒老人或者家属做出相应措施。通过采用MQ-2烟雾传感器来监测家中是否失火,并将获取的数据上传到云端进行显示和存储。这有助于实时了解老人居家环境的危险因素,提醒老人或者家属做出相应措施。 四、作品源码 环境监测部分: #define WAIBU1 35 //定义蜂鸣器引脚 #define WAIBU2 34 //定义蜂鸣器引脚 #define beep 25 //定义蜂鸣器引脚 #define MQ2_pin 33 //定义MQ-5传感器AO采样 #define MQ5_pin 32 //定义MQ-5传感器AO采样 //温湿度部分 #define DHTPIN 26 //定义DHT11模块连接stm32的管脚PB8 #define DHTTYPE DHT11 // 使用温度湿度模块的类型为DHT11 DHT dht(DHTPIN, DHTTYPE); //生成DHT对象,参数是引脚和DHT的类型 BlinkerNumber HUMI("humi"); //定义湿度数据键名 BlinkerNumber TEMP("temp"); //定义温度数据键名 BlinkerNumber MQ5("mq5"); //定义温度数据键名 BlinkerNumber MQ2("mq2"); //定义温度数据键名 BlinkerSlider Slider0("T"); //位置0-3 滑块 数据键名 BlinkerSlider Slider1("H"); //位置0-3 滑块 数据键名 BlinkerSlider Slider2("M"); //位置0-3 滑块 数据键名 BlinkerSlider Slider3("N"); //位置0-3 滑块 数据键名 //定义浮点型全局变量 储存传感器读取的数据 int humi_read = 0, temp_read = 0; int ADC_MQ5=0; int ADC_MQ2=0; int temp_read_threshold=30; //默认值后面要用到 int humi_read_threshold=90; //默认值后面要用到 int ADC_MQ5_read_threshold=500; //默认值后面要用到 int ADC_MQ2_read_threshold=2200; //默认值后面要用到 //**********定义连接WiFi***********************************// char auth[] = "************"; //设备Blinker注册码 char ssid[] = "6"; //家里路由器名称 char pswd[] = "12345678"; //家里路由器密码 //定义浮点型全局变量 储存定时时间的数据 uint32_t read_time = 0; void sensor_work() { //每隔两秒钟进入判断获取温湿度和危险气体浓度数值 if (read_time == 0 || (millis() - read_time) >= 2000) { read_time = millis(); //温湿度检测 float h = dht.readHumidity(); float t = dht.readTemperature(); humi_read = h; temp_read = t; //串口打印数值 Serial.print("湿度:"); Serial.print(humi_read); Serial.print(" 温度:"); Serial.print(temp_read); //危险气体mq-5检测 ADC_MQ5=analogRead(MQ5_pin); //串口打印数值 Serial.print(" 危险气体:"); Serial.println(ADC_MQ5); //mq-2检测 ADC_MQ2=analogRead(MQ2_pin); //串口打印数值 Serial.print(" 烟雾浓度:"); Serial.println(ADC_MQ2); } if(humi_read > humi_read_threshold ) { Blinker.notify("当前湿度过高"); digitalWrite(beep,LOW); sim800c1(); Blinker.delay(500); digitalWrite(beep,HIGH); } if( temp_read > temp_read_threshold ) { Blinker.notify("当前温度过高"); digitalWrite(beep,LOW); sim800c1(); Blinker.delay(500); digitalWrite(beep,HIGH); } if(ADC_MQ5 >ADC_MQ5_read_threshold) { Blinker.notify("当前危险气体浓度过高"); digitalWrite(beep,LOW); sim800c1(); Blinker.delay(500); digitalWrite(beep,HIGH); } if(ADC_MQ2 >ADC_MQ2_read_threshold) { Blinker.notify("当前烟雾浓度过高"); digitalWrite(beep,LOW); sim800c1(); Blinker.delay(500); digitalWrite(beep,HIGH); } if(digitalRead(WAIBU1) ==HIGH) { Blinker.notify("检测到老人摔倒!!"); digitalWrite(beep,LOW); sim800c2(); Blinker.delay(500); digitalWrite(beep,HIGH); } if(digitalRead(WAIBU2) ==HIGH) { Blinker.notify("检测到老人摔倒!!"); digitalWrite(beep,LOW); sim800c2(); Blinker.delay(500); digitalWrite(beep,HIGH); } } String data=""; String num="15181147909"; void sim800c1() { Serial2.println("AT"); //Once the handshake test is successful, it will back to OK delay(500); Serial2.println("AT+CMGF=1"); // Configuring TEXT mode delay(500); data="";data+="AT+CMGS=";data+="\"";data+=num;data+="\""; Serial2.println(data); delay(500); Serial2.print("danger"); //text content delay(500); Serial2.write(26); } String data2=""; void sim800c2() { Serial2.println("AT"); //Once the handshake test is successful, it will back to OK delay(500); Serial2.println("AT+CMGF=1"); // Configuring TEXT mode delay(500); data2="";data2+="AT+CMGS=";data2+="\"";data2+=num;data2+="\""; Serial2.println(data2); delay(500); Serial2.print("fall"); //text content delay(500); // Serial2.write(26); Serial2.write(0x1a); } //回传数据 void heartbeat() { if(humi_read>0) { HUMI.print(humi_read); //给blinkerapp回传湿度数据 } if(temp_read>0) { TEMP.print(temp_read); //给blinkerapp回传温度数据 } if(ADC_MQ5>0) { MQ5.print(ADC_MQ5); //给blinkerapp回传湿度数据 } if(ADC_MQ2>0) { MQ2.print(ADC_MQ2); //给blinkerapp回传湿度数据 } } //图表 void dataStorage()//云存储温湿度数据函数 { Blinker.dataStorage("tubiao", humi_read);//存储酒精度数 Blinker.dataStorage("tubiao1", temp_read);//存储酒精度数 Blinker.dataStorage("tubiao2", ADC_MQ5);//存储酒精度数 Blinker.dataStorage("tubiao3", ADC_MQ2);//存储酒精度数 } //滑块任务0函数 void slider0_callback(int32_t value) //滑块0 { //Slider0.color("#00FF00"); temp_read_threshold=value; } //滑块任务1函数 void slider1_callback(int32_t value) //滑块0 { //Slider1.color("#00FF00"); humi_read_threshold=value; } //滑块任务2函数 void slider2_callback(int32_t value) //滑块0 { //Slider2.color("#00FF00"); ADC_MQ5_read_threshold=value; } //滑块任务3函数 void slider3_callback(int32_t value) //滑块0 { //Slider2.color("#00FF00"); ADC_MQ2_read_threshold=value; } void setup() { Serial.begin(115200);//初始化串口 Serial2.begin(115200); BLINKER_DEBUG.debugAll(); //调试窗口 Blinker.begin(auth, ssid, pswd); //初始化ESP32设备连接网络 Blinker.attachHeartbeat(heartbeat);//注册回调函数 Blinker.attachDataStorage(dataStorage); //图表 Slider0.attach(slider0_callback);//关联滑动开关 Slider1.attach(slider1_callback);//关联滑动开关 Slider2.attach(slider2_callback);//关联滑动开关 Slider3.attach(slider3_callback);//关联滑动开关 //初始化DHT传感器IO工作 dht.begin(); //初始化MQ-5传感器 pinMode(MQ5_pin, INPUT); //初始化MQ-2传感器 pinMode(MQ2_pin, INPUT); //初始化蜂鸣器 pinMode(beep, OUTPUT); digitalWrite(beep,HIGH); //初始外部引脚1 pinMode(WAIBU1, INPUT); digitalWrite(WAIBU1,LOW); //初始化外部引脚2 pinMode(WAIBU2, INPUT); digitalWrite(WAIBU2,LOW); } void loop() { Blinker.run(); sensor_work(); }   跌倒监测部分:其实这一部分代码量没有多少,只有是数据集的标注,和环境的搭建,模型的训练比较复杂。 模型介绍:     YOLO系列算法自2015年推出以来,以其高精度、高效率和高实用性获得广泛应用。YOLOv1将整张图片输入网络,直接回归框的位置和类别,但存在对小物体检测效果不佳、长宽比不一致导致的识别问题以及定位误差。YOLOv2提高了定位准确度并增加了识别种类,但未完全解决YOLOv1的问题。YOLOv3在模型复杂度上提升,检测精度显著提高,但速度略有下降。YOLOv3使用单一网络评估,性能卓越,但小型物体检测能力有限,精度和召回率都低。YOLOv4适用于实际工作环境,检测速度达到实时级别,降低了训练门槛,实现了速度与精度的平衡。本文所选用的目标检测算法是 YOLOv5。     YOLOv5算法包含五个不同版本:YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l以及YOLOv5x。通常情况下,目标检测算法主要由四个部分构成:输入端、基准网络、Neck网络以及Head输出端。     输入端:接收尺寸为608*608的图片,并进行图像预处理。     基准网络:负责提取图像的通用特征,通常由一些高性能的分类器网络构成。     Neck网络:增强特征的多样性和鲁棒性。     Head输出端:输出目标检测的结果。         观察图像后,可以看到,在五个不同版本中。YOLOv5x的检测准确度最高,但检测速度最慢;而YOLOv5n的检测速度最快,但检测准确度最差。考虑到树莓派5的推理能力,这里选择了yolov5s模型。     数据据制作:在众多图片数据集标注工具中,本文选择LabelImg工具进行数据集标注。       在图片标注任务完成后,LabelImg会创建一个文件来记录标注后的图片详细信息。这个文件格式可以选择的,但是YOLO只支持txt文件格式的数据,       上图中,从左至右的信息分别为标注内容的类别,归一化[16]后的中心点x坐标,y坐标以及归一化后的目标识别框的宽度和高度。在正常情况下,txt文件中,目标类别的数量与文件中的信息行数是一致的。     模型训练:首先在data目录下创建一个fall_data.yaml的数据集配置文件,如下图所示:       接下来在models下建立一个fall_yolov5s.yaml的模型配置文件,内容如下:       最后,需要对train.py文件进行调整,设置所需的迭代次数,并选择合适的模型及其权重。完成这些设置后,就可以开始训练数据集了。训练过程中的所有输出和最终结果都将保存在runs文件夹中。     最终训练出来的结果精度还行,80%以上,勉强可以使用。     PR曲线如下:    跌倒监测数据集: 训练好的权重文件: best.pt 标注好的数据集:由于数据集压缩包大于300mb,有需要的朋友可以留下邮箱,我发你。 五、作品功能演示视频 [localvideo]bbfa5e2c95b2e1640b4acc8f740d2665[/localvideo]   点灯blinker APP,登入自己的账号进入软件监控界面,环境信息采集结果如图   GSM报警通知内容如下       跌倒测试:   稍后上传 六、项目总结     本次项目主要是用于守护空巢老人。系统由两部分组成:物联网环境监测部分和跌倒行为监测部分。环境监测部分采用ESP32系列微控制器作为核心,利用传感器来监测居住空间的温度、湿度和可燃气体浓度及烟雾浓度,并通过点灯blinker应用程序提供反馈。跌倒行为识别部分则采用YOLOv5目标检测算法,来识别老人是否跌倒,并在检测到跌倒时发出警报。 七,存在的问题及展望 1、由于时间关系,项目只是实现了部分功能,严格来讲原理样机的要求还达不到,后续还需要花时间进一步完善。 2、现有系统设计无法预测跌倒行为。为了提升系统的预警能力,我希望在未来的学习中整合人体姿态估计算法,并将其部署到嵌入式系统中,以便能够对老人的跌倒行为进行早期预测和及时干预。通过这些改进,系统可以更加有效地保障空巢老人的安全,减少潜在的安全风险。 3、树莓派的推理性能确实有点弱,只有10fps不到的样子,后续会考虑加装AI拓展板,或者更换主控。

  • 加入了学习《【2024DigiKey创意大赛】基于AIOT的智能家居设备开发演示视频》,观看 【2024DigiKey创意大赛】基于AIOT的智能家居设备开发

  • 2024-09-22
  • 回复了主题帖: 【2024 DigiKey创意大赛】 物料开箱

    很精致嘛  

  • 2024-09-14
  • 加入了学习《DigiKey 应用说:Raspberry Pi 5 在视频直播中的应用》,观看 Raspberry Pi 5 在视频直播中的应用

  • 2024-09-09
  • 回复了主题帖: 【2024 DigiKey 创意大赛】物料开箱

    空耳- 发表于 2024-9-5 10:40 8G不是不报销吗,活动只有4G啊   是我格局小了

  • 2024-09-05
  • 回复了主题帖: 【2024 DigiKey 创意大赛】物料开箱

    8G不是不报销吗,活动只有4G啊  

  • 2024-08-13
  • 回复了主题帖: 【2024 DigiKey 创意大赛】基于树莓派的空巢老人守护系统01-开箱贴

    秦天qintian0303 发表于 2024-8-13 15:00 弄个可以移动的视频监控,避免看不到人着急   确实是个好主意,但是好难,哥

  • 2024-08-12
  • 回复了主题帖: 【2024 DigiKey 创意大赛】基于树莓派的空巢老人守护系统01-开箱贴

    damiaa 发表于 2024-8-12 12:46 我手上的2G的树莓派4没敢下手自己焊接改造。 慢慢熟悉一下,还是可以焊的,8g全新120左右,咸鱼便宜点

  • 回复了主题帖: 【2024 DigiKey 创意大赛】基于树莓派的空巢老人守护系统01-开箱贴

    damiaa 发表于 2024-8-12 11:02 楼主这树莓派5内存是小了。搞个8G的爽点。 正有打算,差不多100快可以淘一个8g的

  • 回复了主题帖: 【2024 DigiKey 创意大赛】基于树莓派的空巢老人守护系统01-开箱贴

    wangerxian 发表于 2024-8-12 09:29 偷偷告诉你,得捷的箱子都很大~ 目前看了很多网友的帖子,暂时发现我的是最大的

  • 发表了主题帖: 【2024 DigiKey 创意大赛】基于树莓派的空巢老人守护系统01-开箱贴

    本帖最后由 空耳- 于 2024-8-13 12:36 编辑 【2024 DigiKey 创意大赛】基于树莓派的空巢老人守护系统01-开箱贴 首先,很荣幸入围参加这次活动,在这里非常感谢EEWORLD论坛与得捷电子! 这次活动我选择了SC1111,NUCLEO-F411RE,ESP32-C6-DEVKITC-1-N8来参加本次活动。接下来就是开箱环节了。 这是我第一次在得捷购物,虽然是美国发货,但是速度还是很快的。包装也十分霸气,上档次。(我的这个包装箱,可能是本次活动中最大的)   图1 包装外观图 图2是我选择的三款物料,可以看出包装还是很精致的。   图2 物料独立包装  图3为树莓派5 4G版本,主要用于监控图像的采集和推流。后续可以考虑换一个8g的DDR。     图3 树莓派5 图4 为esp32c6主要采集老人的居住环境信息。   图4 esp32c6 图5 为stm32f411 主要采集老人的心率,血氧的身体参数,以及mpu6050辅助判断老人是否发生跌倒等危险情况。(如果时间充足的情况下,我想把这一部分从新规划pcb,做的小巧一点做成手表的形式,就是不知道符合活动要求吗?会不会被判断没有使用必选物料。)    图5 stm32f411  最后本次的开箱环节就到此结束了。再次感谢EEWORLD论坛与得捷电子!

  • 2024-07-22
  • 回复了主题帖: 【NUCLEO H533RE】基于读写接口实现标准输入输出

    怀揣少年梦 发表于 2024-7-10 23:28 好的,可能是USB集线器的问题,现在好了 我也遇到过,typec线太差了  

  • 2024-07-16
  • 回复了主题帖: 【NUCLEO H533RE】32位定时器高精度长时间PWM输出

    原理图在哪啊

  • 2024-07-08
  • 回复了主题帖: 【正点原子i.MX93开发板】2.1 人脸识别考勤机环境搭建--opencv与opencv-contrib(2)

    lugl4313820 发表于 2024-7-8 09:02 opencv的版本有什么讲究吗?我前面弄过,就是安装特麻烦。 没啥讲究,就是版本一定要对应

  • 上传了资料: imx93 opencv-4.8.0与opencv-contrib-4.8.0交叉编译的库文件

最近访客

< 1/3 >

统计信息

已有46人来访过

  • 芯积分:281
  • 好友:1
  • 主题:9
  • 回复:35

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言