开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
整机功能代码讲解

整机代码

1 软件设计 
  本节,我们将融合前面的蓝牙收发、三轴记步、电量检测、外部 Flash 读写、 心率检测和 Led 屏幕显示,完成手环的制作。 
  以上各个部分可以参考前面的章节。 
  首先,看一下我们手环的整个软件主函数流程。


图1
  代码运行后,首先进入初始化,初始化系统时钟、外设和蓝牙。除此之外, 还开启了定时中断和 GPIO 中断。
  我们的定时中断每 10ms 触发一次,用于 ADC 定时采集心率数据,以及定时和时间更新。另外,由于一些原因,主函数中的步数读取、电量检测、心率检测、屏幕显示并不是每一次循环都执行一次。这里的定时中断也作为一个计时功能, 步数 20 秒更新一次,心率模块 1 分钟打开一次,亮屏无操作,5 秒熄灭屏幕。
  这里的 GPIO 中断主要是用来切换屏幕显示页面。


代码1
  从 GPIO 的中断回调函数中可以看出,每次中断只是把变量 Touch_release 置1,并没有直接对显示做任何处理,而在定时中断的回调函数中,判断变量Touch_release 的值,从而确定我们是长时间按键,还是短时间按键,来完成相应的处理。
  在定时器中断函数中,检测到短时间触摸,就打开显示标志位,同时设置显示的页面。
  关于蓝牙收发部分,我们在蓝牙收发章节的基础上进行了修改,通过手机软件 Wolverine BLE 发送 step 获取步数、发送 cal 获取卡路里、发送 heart 获取心率值、发送 rtc 加时间完成手环的时间设置。下面是函数


代码2.1


代码2.2

每当手环收到来自手机软件 Wolverine BLE 的数据时,首先从 Flash 中读取步数和心率数据。然后对比接收到字符串。最后发送或设置相应的数据。这里有一点要注意,我们从 Flash 中读取到的是数据,而通过蓝牙发送的是字符串,就需要将数字转换成字符就如同代码中将一个位的数字加上 0x30,换算成该数字对应的 ASCII 码值。
  对于发送给手机的卡路里数据,其实是通过三轴步数计算过来的。消耗的卡
路里跟步数以及个人的体重等因素呈比例关系,大家可以根据自己的情况修改卡路里与步数之间的系数。


代码3
关于其他部分代码,请参考我们的我整机代码例程。

2  实验现象

首先打开 SmartSnippets。


图2
  设置好 SmartSnippets 之后,点击上图中的 Open。 
  (1)点击 Connect,连接我们的单片机。


图3

(2)点击 Erase,擦除 Flash。


图4

(3)点击 Browse,找到我们工程的.hex 文件。


图5

(4)点击 Burn,完成代码下载。


图 6
  代码下载完成之后,运行代码,能看到屏幕显示时间。


图 7
  在时间显示界面下,触摸一下按键,会显示心率。


图8
 
  在心率显示界面下,触摸一下按键,会显示步数界面。


图 9

再触摸一下按键,就会进入卡路里显示界面。


图10

打开手机软件 Wolverine BLE。

(1)点击 Connect。


图11

(2)选择我们的蓝牙设备 DIALOG-PRFL。


图12

我们发送 step,会获取步数。


图 13
  发送 cal,会获取卡路里。


图14
  发送 heart,会获取心率。


图15

【开发教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解相关推荐

  1. 【开源教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 整机功能代码讲解 整机代码 1 软件设计    本节,我们将融合前面的蓝牙收发.三轴记步.电量检测.外部 Flash 读写. 心率检测和 Led ...

  2. 【开源教程1】疯壳·开源蓝牙心率防水运动手环-开发套件简介

    开源蓝牙心率防水运动手环  --疯壳·智能穿戴开发系列 开发套件简介 为了方便编写文档教程,以及开发调试,我们拆出了一个手环硬件主板,并焊接上了 jlink 下载线以及 usb 转串口线,如下图所示( ...

  3. 【开发教程9】疯壳·开源蓝牙心率防水运动手环-心率监测

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列    心率监测 1心率测量原理简介          我们手环的心率测量, 采用的是 PPG 光电容积脉搏波描记法原理(PhotoPlethysm ...

  4. 【开发教程10】疯壳·开源蓝牙心率防水运动手环-蓝牙 BLE 收发

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 蓝牙 BLE 收发 1相关简介          DA14580 内部集成了射频模块,同时官方也提供了一套 SDK,里面包含了蓝牙协议栈部分.本节 ...

  5. 【开发教程7】疯壳·开源蓝牙心率防水运动手环-电容触摸

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 电容触摸 1相关简介      本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断.   DA14580 ...

  6. 【开源教程7】疯壳·开源蓝牙心率防水运动手环-电容触摸

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 电容触摸 1相关简介      本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断.   DA14580 ...

  7. 【开源教程8】疯壳·开源蓝牙心率防水运动手环-三轴计步伐

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 三轴计步伐 三轴记步     1相关简介          本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数.        ...

  8. 【开源教程10】疯壳·开源蓝牙心率防水运动手环-蓝牙 BLE 收发

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 蓝牙 BLE 收发 1相关简介          DA14580 内部集成了射频模块,同时官方也提供了一套 SDK,里面包含了蓝牙协议栈部分.本节 ...

  9. 【开发教程8】疯壳·开源蓝牙心率防水运动手环-三轴计步伐

    蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 三轴计步伐 三轴记步     1相关简介          本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数.          ...

最新文章

  1. python图像腐蚀处理_[Python图像处理]八.图像腐蚀和图像膨胀
  2. 阿里云上测试服务器的搭建
  3. 变量之--列表初始化和结构化绑定
  4. json web token没有哪个成分_SpringBoot 2.1.4集成JWT实现token验证
  5. Ubuntu 在终端下使用命令行打开pdf文件
  6. Exchange Server 2013多域名证书申请
  7. spark学习-Spark的Map()和FlatMap()函数使用
  8. 1.2、安装Django-1.5.1及所需要的Python2.74环境
  9. Git最好的CRLF(回车,换行)处理策略是什么?
  10. HDU1846 Brave Game【巴什博弈】
  11. 高并发来袭,如何搭建微服务架构?
  12. 教程贴--DISM 安装系统
  13. 第5讲:VUE3工程中实现页面加载中效果和页面切换动画效果。
  14. 数字信号处理--FFT与蝶形算法--学习笔记
  15. 球的表面积公式是怎么推导出来的?
  16. java获取日期/时间
  17. Pyhton可视化(1): 历年中国大学学术排行榜
  18. 实得打印机色带芯更换
  19. 《满城黄金甲》另类观后感
  20. Redis配置不当致使root被提权漏洞

热门文章

  1. mysql 一对多 count_MySQL COUNT的一对多总和
  2. 短视频美食系列都有哪些变现方式?丨国仁网络资讯
  3. html5游戏一键端,【稀有游戏】伊卡洛斯ol手工端+VM一键端+伊卡洛斯客户端
  4. 前端开发和html5,Web前端和HTML5前端相同吗 有区别吗
  5. 中国矿业大学2020岁末赛校赛wp
  6. 【exe4j】如何利用exe4j把java桌面程序生成exe文件
  7. 在线渗透测试网址信息收集网站-密码工具-漏洞查找平台-安全视频平台
  8. 百度云同步盘网络异常【1】解决办法(续)
  9. c/c++播放音乐(PlaySound、mciSendString、mciSendCommand)
  10. 理解围绕软件技术标准的上层动机和力量