创客项目秀 | 基于使用 XIAO BLE Sense 和 Edge Impulse 的宠物活动跟踪器

今天为大家带来的是来自美国的创作者米顿-达斯的作品:宠物活动跟踪器.这个装置主要是为宠物主人提供关于宠物日常活动量的详尽数据,还能够根据宠物的独特需求,提供个性化的健康建议和活动指导。

项目背景

为了全面促进宠物的健康与活力,采用了创新的TinyML技术,并结合了先进的数据分析算法。这款TinyML模型经过精心设计,用于精确解析来自三轴惯性测量单元(IMU)的数据,从而能够实时监测和预测宠物的活动水平。通过深入分析宠物的运动模式和行为特征,不仅能够为宠物主人提供关于宠物日常活动量的详尽数据,还能够根据宠物的独特需求,提供个性化的健康建议和活动指导。这种集成系统的设计旨在帮助宠物主人更好地理解和响应宠物的健康需求,从而有效提升宠物的整体福祉和生活质量。不仅注重宠物的身体健康,还关注宠物的心理健康和幸福感。通过监测宠物的活动水平,宠物主人可以更好地了解宠物的喜好和需求,为其提供更加舒适和愉悦的生活环境。我们相信,这款基于TinyML技术的宠物活动监测系统将成为宠物主人与宠物之间沟通的桥梁,让宠物享受到更加健康、快乐的生活。

材料清单

硬件部分

  • Seeed Studio Seeed XIAO BLE nRF52840 Sense

  • 3.7V可充电电池

软件应用程序和网络工具包

  • Arduino IDE

  • Edge Impluse Studio

  • Google Flutter

手动工具和制造机器

  • 3D打印机

  • 电烙铁

宠物也是我们生活中的重要伙伴,它们的健康和活力同样值得我们和社会的关注。为了让宠物也能享受到科技带来的便利,特别选择了 XIAO BLE Sense 这款精致的微控制器。它不仅内置了强大的 Nordic nRF52840 MCU,还支持蓝牙 5.0 无线通信技术。其搭载的 32 位 ARM® Cortex™-M4 CPU 配合 6 轴惯性测量单元(IMU),能够精确追踪宠物的休息、行走、跑步等多种活动状态,为我们的小伙伴保持最佳活力状态提供科学依据。这款设备的出现,不仅填补了宠物健身追踪市场的空白,更是宠物健康护理领域的一次重要创新。通过实时监测宠物的活动数据,宠物主人可以更加科学地调整宠物的饮食和运动计划,让宠物的生活更加健康和快乐。让科技的力量,为我们的宠物带来更美好的生活。

硬件介绍

图1 XIAO BLE Sense

图1是XIAO BLE Sense的基础介绍,在开始使用 XIAO进行编程之前,我们需要安装电路板固件。最好的资源是官方 wiki,它将一步步指导帮助我们设置 Arduino IDE。在开始制作这个项目前,要确保已经安装了必要的驱动程序和软件,例如 Arduino IDE 和相应的开发板管理器。这样就可以轻松地安装 XIAO BLE Sense 的固件。

EI BLUE

对于任何机器学习项目来说,数据收集都是非常重要的一部分。为了捕获更准确的数据,我必须在狗狗佩戴项圈的时候收集数据,这就排除了通过 USB 将 XIAO BLE Sense 连接到计算来收集数据传统方法。因此,我创建了一个名为 EI Blue 的移动应用程序,它可以从 XIAO 通过蓝牙无线采集数据。这个应用程序能够将加速度计数据直接传输到 Edge Impulse studio,以便进行进一步的分析和处理。使用 EI Blue 应用程序进行数据采集简单便捷。首先,我们需要将固件烧录到XIAO BLE Sense 开发板上。接着,使用应用程序扫描二维码,来配置我们的项目。完成这些步骤后,我们就可以开始收集数据了。大家可以查看以下链接中的视频,以获取详细的操作指南。在烧录固件和配置应用程序之后,请确保您的手机与 XIAO BLE Sense 开发板之间的蓝牙连接稳定。这将有助于您获得准确和连续的数据流。此外,大家也可以克隆项目,并在您自己的计算机上构建应用程序。这样,就可以开始收集和分析您家宠物的活动数据,为您的宠物健康提供更精细的护理。

模型训练

我收集好我的数据并上传到Edge Impulse网站上面。

图2 Edge Impulse 网站采集数据

我们应该能在 Edge Impulse Studio 看到如图2所示的数据。已经收集了 5 秒钟的样本。为了建立一个稳健的机器学习模型,请尽可能多地收集数据。已经收集了大约 6 分钟的数据来开始,并将随着时间的推移继续收集更多数据

设置脉冲模型

如图3所示,在这里,我们将使用指定模型的输入数据、数字信号处理步骤以及所需的神经网络架构。众所周知,加速度计数据是属于时间序列的原始数据。设定了 50Hz 的采样频率,因此每秒将获得 50 个加速度计数据点,数据点的采集间隔为 1000/50,即每 200 毫秒采集一次。

图3 Edge Impulse 网站设置模型

然后选择频谱分析作为处理模块,因为它能够有效地从加速度计数据中提取出有用的特征。

图4 Edge Impulse 网站模型训练

如图4所示,在 “Spectral Analysis”(频谱分析)页面上,请确保选中的是“Calculate feature importance “(计算特征重要性)选项,这将根据我们收集的数据展示哪些特征是最为关键的。例如,我们可能会看到 “accX Spectral Power”(X轴光谱功率)的特征重要性最高,这是因为包含了休息、步行和跑步等多种状态的数据,这些活动都是在X轴上的变化较大,从而导致了数据的分离。

图5 Edge Impulse 网站模型结果

如图5所示,在模型测试阶段,此模型实现了 90% 的准确率。但请大家记住,这仅是一个概念验证,因为作者只收集了我家狗狗的数据。理想情况下,为了增加数据集的多样性并使模型更具普遍性,我们应该去收集不同品种狗狗的数据。不过,目前的结果已经达到了初步目标。完成这些步骤后,训练好的模型可以导出成Arduino 库,我们可以下载这个Arduino 库并将其添加到 Arduino IDE 中。然后,将 XIAO_BLE_Pet_Activity.ino 程序上传到 XIAO BLE Sense 开发板。当然,在模型训练和测试完成后,我们也可以通过调整参数和优化模型来进一步提高准确率。此外,还可以考虑将模型部署到其他微控制器或设备上,以便在不同的环境中使用。

移动应用程序

移动应用程序是用 Flutter 编写的,因此像完成这个项目需要安装 Flutter 环境。作者也强烈建议使用 VS Code 软件配合 Flutter 插件进行开发,这样可以更便捷地编写 Flutter/Dart的代码。

因为目前没有用安卓系统的设备,所以只为 iOS 平台构建了应用程序。但 Flutter 是一个跨平台移动框架,这意味着相同的代码也可以用于构建安卓的应用程序。

如果要为 iOS 构建应用程序,请在项目文件夹的根目录下运行以下命令。

open ios/Runner.xcworkspace/

这将启动 Xcode。使用配置文件对应用程序并进行签名,然后将其部署到手机上。

此外,这个项目还在 PCBWay 上进行了发布。

如图6所示,配套的移动应用程序通过蓝牙无缝连接至设备,微控制器实时工作,每分钟发送一次精准的活动预测数据。这些数据会被安全地存储在手机的本地存储器中,并转化为直观的图表,为宠物主人提供宝贵且易于理解的健康见解。

定制部件和外壳

这款设备的外壳用的是3d打印打印出来的,如图7所示XIAO BLE Sense和锂电池当好的放进这个便携的外壳之中,也多谢于XIAO BLE Sense的体积很小,非常适合用于穿戴式的的设备中。

图7 成品组装

首先,使用3D建模软件SolidWorks来设计外壳的各个部分,包括顶部、底部、固定和支撑部分。设计时需要考虑XIAO BLE Sense开发板和电池的尺寸,并预留足够的空间。确保外壳设计具有良好的结构强度和机械连接方式,它们都留有螺丝孔,可以用螺丝将他们一个一个的紧密连接起来。如图8所示,这是让我的宠物狗能够佩戴着这个设备随意奔跑所设计的固定部分,它能牢固地将外壳固定在项圈上面。

图8 项圈固定器

如图9所示,这个是外壳中间的支持部分,这里考虑的XIAO BLE Sense开发板的大小,并且也要保证不让它和外壳别的部分撞到下面放到锂电池上。

图9 外壳支撑

如图10所示,顶部外壳的设计是我最喜欢也是最经典的狗爪子标志,让这个设备有很强的识别度。

图10 顶部外壳

最后如图11所示,这里是我放置锂电池的地方,壳子两边留有与项圈固定的位置,它也是能固定在项圈的重要部分之一。

图11 底部外壳

成品展示

完成所有的软硬件设计后,只需进行硬件组装工作,并将外壳固定在狗狗的项圈上面大功告成了!最终的成品如图12所示!

图 12 成品展示

总结

这个项目的设计初衷是为了帮助宠物主人更好地了解宠物的状态。创新性地应用了先进的tinyML模型和三轴IMU传感器,成功地将先进技术与宠物健康监测相结合,为主人提供了更好了解宠物状态的途径,项目成功地将物联网技术应用于宠物活动跟踪,为宠物主人提供了便捷的监控手段,提高了宠物的生活质量。这篇文章详细介绍了如何使用XIAO BLE Sense和Edge Impulse创建一个宠物活动跟踪器,步骤清晰,对于想要进行类似项目开发的读者非常有帮助。文章中提到了一些关键的技术要点,如使用XIAO BLE Sense作为微控制器,通过蓝牙将移动应用程序连接至设备,使用Edge Impulse进行数据分析等。这些技术要点都是实现宠物活动跟踪器项目的重要部分,需要读者仔细学习和理解。此外,文章还提供了一些关于定制部件和外壳的信息,这对于项目的实物制作也非常有帮助。通过阅读这篇文章,对于如何使用XIAO BLE Sense和Edge Impulse创建一个宠物活动跟踪器会有了更深入的了解,同时也会对于物联网应用的开发有了更浓厚的兴趣。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/894433.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 数值计算与数值分析基础

Python 数值计算与数值分析基础 示例演示 当涉及到Python数值计算和数值分析时,下面是20个示例,涵盖了一些常见的用法: 1.数值积分: 在 Python 中,你可以使用 scipy.integrate 模块中的 quad 函数来进行数值积分 …

【Linux驱动开发】通过ioremap虚拟内存映射的寄存器操作驱动、C应用函数库开发 devmem命令测试(正点原子STM32MP135文档BUG)

【Linux驱动开发】通过ioremap虚拟内存映射的寄存器操作驱动、C应用函数库开发 devmem命令测试(正点原子STM32MP135文档BUG) 【Linux驱动开发】通过ioremap虚拟内存映射的寄存器操作驱动 devmem命令测试 gitee库: https://gitee.com/Mike_Zho…

记一次Netty模拟压测应用开发

背景 最近需要开发一个上游端模拟数据推送,测试高流量下下游的业务功能处理速度,大致架构如下 准备工作 构造消息体,由于是模拟大量数据推送并没有业务逻辑,所以我们使用池化的directBuffer增加推送消息以及减少创建和消费buf…

13.1 Linux_网络编程_TCP/UDP

字节序 1、概述 什么是字节序: 字节序就是字节的存储顺序,分为大端字节序和小端字节序。 大端字节序:低地址存高位(网络)小端字节序:低地址存低位(主机) 检验主机字节序模式&…

Java @RequestPart注解:同时实现文件上传与JSON对象传参

RequestPart注解:用于处理multipart/form-data请求的一部分,通常用于文件上传或者处理表单中的字段。 java后端举例: PostMapping("/fileTest")public AjaxResult fileTest(RequestPart("file") MultipartFile file,Req…

【时间之外】IT人求职和创业应知【10】

认知决定你的赚钱能力。以下是今天可能影响你求职和创业的热点新闻: 今日关键字:SFISF【互换便利】 1. 央行推出股票回购增持再贷款,科技股全线爆发 新闻概要: 2024年10月18日,央行等三部门联合发布《关于设立股票回购增持再贷款有关事宜的通知》,同时表示年底有进一步…

基于GeoScene Pro的开源数据治理与二维制图规范化处理智能工具箱

内容导读 本文描述的是一个基于GeoScene Pro4.0/ArcGIS3.1 Pro平台的开源数据治理与二维制图规范化处理智能工具箱(免费试用,文末有获取方式),旨在解决GIS应用中数据转换、检查、治理和制图数据规范化处理方面的问题。 工具箱结合了Geoscene/ArcGIS Pr…

Asp.net Core SignalR 跨域设置(Furion)

前端VUE2.0/3.0 后端NET8.0/NET6.0 框架Furion 前端安装SignalR通信库&#xff0c;下面任意一条安装指令都可以&#xff0c;根据项目自行选择 npm install microsoft/signalr yarn add microsoft/signalr前端使用 <script> import { HubConnectionBuilder } from micr…

[Halcon矩阵] 通过手眼标定矩阵计算相机旋转角度

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…

SpringBoot教程(三十二) | SpringBoot集成Skywalking链路跟踪

SpringBoot教程&#xff08;三十二&#xff09; | SpringBoot集成Skywalking链路跟踪 一、Skywalking是什么&#xff1f;二、Skywalking与JDK版本的对应关系三、Skywalking下载四、Skywalking 数据存储五、Skywalking 的启动六、部署探针前提&#xff1a; Agents 8.9.0 放入 项…

C#从零开始学习(用unity探索C#)(unity Lab1)

初次使用Unity 本章所有的代码都放在 https://github.com/hikinazimi/head-first-Csharp Unity的下载与安装 从 unity官网下载Unity Hub Unity的使用 安装后,注册账号,下载unity版本,然后创建3d项目 设置窗口界面布局 3D对象的创建 点击对象,然后点击Move Guzmo,就可以拖动…

云服务解决方案,针对小程序、网页、HTML5等轻量化视频解决方案

无论是社交媒体上的短视频分享&#xff0c;还是企业官网中的产品展示&#xff0c;亦或是教育平台上的互动课程&#xff0c;高质量、易制作的视频内容正以前所未有的速度改变着我们的生活方式和工作模式。然而&#xff0c;面对多样化的发布平台和日益增长的个性化需求&#xff0…

Python从0到100(六十五):Python OpenCV-图像运颜色转换及几何变换

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

.net 根据html的input type=“week“控件的值获取星期一和星期日的日期

初始化 "week" 控件值&#xff1a; //MVC部分 public ActionResult WeeklyList() {int weekNo new GregorianCalendar().GetWeekOfYear(System.DateTime.Now, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday);string DefaultWeek DateTime.No…

ssm医院交互系统+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 摘要 I Abstract II 1绪论 1 1.1研究背景与意义 1 1.1.1研究背景 1 1.1.2研究意义 1 1.2国内外研究…

python+大数据+基于spark的短视频推荐系统【内含源码+文档+部署教程】

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

Mybatis框架 day1018

ok了家人们书接上文&#xff0c;我们继续学习mybatis框架 五.数据输出 5.7 属性和字段的映射 5.7.1 别名映射 将数据库表的字段别名设置成和实体类属性一致。 <!-- 给每一个字段设置一个别名&#xff0c;让别名和Java实体类中 属性名一致 --> <select id"fi…

赋能特大城市水务数据安全高速运算,深圳计算科学研究院YashanDB数据库系统斩获“鼎新杯”二等奖

第三届“鼎新杯”数字化转型应用优秀案例评选结果日前正式公布&#xff0c;深圳计算科学研究院联合深圳市环境水务集团有限公司申报的《深圳环境水务国产数据库YashanDB&#xff0c;赋能特大城市水务数据安全高速运转》案例&#xff0c;经过5个多月的评审&#xff0c;从4000申报…

设计模式04-创建型模式1(简单工厂/工厂模式/抽象工厂/Java)

3.1 简单工厂模式 3.1.1 创建型模式 创建型设计模式将对象的创建过程和对象的使用过程分离&#xff0c;用户使用对象时无需关注对象的创建细节&#xff0c;外界对于这些对象只需要知道它们共同的接口&#xff0c;而不用清楚其实现细节&#xff0c;使得整个系统的设计更加符合…

Redis JSON介绍

Redis JSON介绍 Redis JSON先说说JSON是什么再说说JSON Path先推荐两个网站JSONPath JAVA clents Redis JSON 安装内存json命令语法命令url命令解释JSON.ARRAPPENDJSON.ARRINDEXJSON.ARRINSERTJSON.ARRLENJSON.ARRPOPJSON.ARRTRIMJSON.CLEARJSON.DEBUG MEMORYJSON.DEBUGJSON.DE…