|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开源蓝牙心率防水运动手环 ——疯壳·智能穿戴开发系列 整机功能代码讲解 $ J; K3 \& }) e, b0 g0 g1 H; r
$ s$ Q `. ^+ z# M4 Q! H* K6 f0 B$ ]: ^/ k# O* h; X
, O9 W) g# t' `3 t2 l- @. V, a( A
整机代码 / j5 U0 S) k( k3 k1 D6 \ d
. D7 s* X! E; ?( `1 软件设计 # C5 {0 K5 o* S# E; `* H# N( b
本节,我们将融合前面的蓝牙收发、三轴记步、电量检测、外部 Flash 读写、 心率检测和 Led 屏幕显示,完成手环的制作。
! D2 |& H1 i8 F8 z9 { 以上各个部分可以参考前面的章节。 4 p( q6 G# d/ n% `5 e; x |
首先,看一下我们手环的整个软件主函数流程。2 c1 V1 O: q: S1 ]( |* E* B" N! Q. X
, y! C" Q+ C( S0 Y* i
' h/ C2 Z5 r* R, c
图10 J: x5 A" {4 u
代码运行后,首先进入初始化,初始化系统时钟、外设和蓝牙。除此之外, 还开启了定时中断和 GPIO 中断。
1 A1 \) b7 v/ V3 O) U) W 我们的定时中断每 10ms 触发一次,用于 ADC 定时采集心率数据,以及定时和时间更新。另外,由于一些原因,主函数中的步数读取、电量检测、心率检测、屏幕显示并不是每一次循环都执行一次。这里的定时中断也作为一个计时功能, 步数 20 秒更新一次,心率模块 1 分钟打开一次,亮屏无操作,5 秒熄灭屏幕。* \6 P$ F+ e) m8 R9 T0 \: X
这里的 GPIO 中断主要是用来切换屏幕显示页面。7 k, i2 |8 }/ \9 `; G" {, T w
- H; g, ]. a! Z
3 q7 ]9 x5 _* m. D/ y m+ P4 q X+ Y8 f
代码1, h$ R) |% m& g. p
从 GPIO 的中断回调函数中可以看出,每次中断只是把变量 Touch_release 置1,并没有直接对显示做任何处理,而在定时中断的回调函数中,判断变量Touch_release 的值,从而确定我们是长时间按键,还是短时间按键,来完成相应的处理。
+ }! ]4 T0 i& z: u% D; R* ^& H 在定时器中断函数中,检测到短时间触摸,就打开显示标志位,同时设置显示的页面。# y' @+ |# p& l& {! ^9 c: Y( p
关于蓝牙收发部分,我们在蓝牙收发章节的基础上进行了修改,通过手机软件 Wolverine BLE 发送 step 获取步数、发送 cal 获取卡路里、发送 heart 获取心率值、发送 rtc 加时间完成手环的时间设置。下面是函数' Q* ?+ h4 u( \4 V9 n7 k
: D) L* Z4 x2 g8 y6 T, G! g
1 S% G6 I7 O4 q$ X$ L7 x
代码2.1% `, w. {, f7 Z
2 P* V$ |' Q! m) A5 A- Y
" _5 @8 h( d' g/ I2 _; S3 \/ F代码2.2
3 u, J/ B7 A( G: ~+ q$ i
6 M D; `: u T I" ] 每当手环收到来自手机软件 Wolverine BLE 的数据时,首先从 Flash 中读取步数和心率数据。然后对比接收到字符串。最后发送或设置相应的数据。这里有一点要注意,我们从 Flash 中读取到的是数据,而通过蓝牙发送的是字符串,就需要将数字转换成字符就如同代码中将一个位的数字加上 0x30,换算成该数字对应的 ASCII 码值。3 P) q& b6 w& |9 M2 A; Q% G
对于发送给手机的卡路里数据,其实是通过三轴步数计算过来的。消耗的卡
% c9 O# U6 I8 e3 I路里跟步数以及个人的体重等因素呈比例关系,大家可以根据自己的情况修改卡路里与步数之间的系数。
$ R' j6 q# R, t* J' e
: k5 n5 t3 P8 C, @
B( T# A7 R1 [4 ^) {- X# s+ @
代码3
$ Q+ ~9 q0 c* d: ~关于其他部分代码,请参考我们的我整机代码例程。
" T2 t+ v2 u4 B/ [, p* Y* S0 k0 f
. _4 C" G4 Z3 [! I- R9 d% P2 实验现象" F: X s, E$ X% H. C- e/ h$ p
, h, Q/ f9 k& W) V' v
首先打开 SmartSnippets。& i$ [7 T; V) L$ v
' `1 q5 W$ x8 g2 U. f& x
! ?+ h8 x* K0 T" a图2
. |& h$ K% X2 d+ {$ Y) C3 G 设置好 SmartSnippets 之后,点击上图中的 Open。 2 E# i3 |3 r; }. ?* R% ^
(1)点击 Connect,连接我们的单片机。" m6 x6 f5 Q. T) G) c$ m8 n. c
8 i( }9 `: ]& k; B: ^
, m! d& f$ P4 m4 N图3 A% i( Y* T2 {; y4 r1 x
; W9 K; r$ S4 U, ?9 e" g( Q9 K
(2)点击 Erase,擦除 Flash。
* `( C/ K# [/ p. V- v. f7 D8 }0 }! d" a
6 @! R& f( r9 [图4- H+ i5 v/ l3 m3 n2 ~0 s
! c% A9 O- f& }1 ?6 _5 T% ~ (3)点击 Browse,找到我们工程的.hex 文件。
4 v' Y1 C5 f9 l9 F5 x( h( p* s1 A8 h4 h# |( T3 U* c
( ]# U3 ]6 Q- _( ]% @9 }0 @& y图5
+ @5 z3 a. ~; K+ V
) J1 g! Q. p, Z* x (4)点击 Burn,完成代码下载。# v; x, \5 \% u. _
4 K4 g$ E+ V% b% d- U6 ~9 V& L# ?
. }+ n7 q" n8 y3 m' g图 69 e; r5 `+ i5 ^ U+ z7 E
代码下载完成之后,运行代码,能看到屏幕显示时间。1 r( W% d. b4 b( W" Q) _$ j( r X
- {) C, Q; H6 t$ C
; c9 B4 a+ Q. Z8 d% \/ v' M
图 7
8 H! W7 Y( V& C( R 在时间显示界面下,触摸一下按键,会显示心率。
0 _, _, L6 _; |3 |( N+ k
: G' j+ B1 x8 c* S, L! t5 `
+ c7 h5 r# \. Q
图8# @5 Z5 U/ e! f6 t
, O: {! p2 P" q$ c
在心率显示界面下,触摸一下按键,会显示步数界面。! c* C2 y) Z$ G+ q/ q; G) Z. s' X
* z7 P6 [) z. S
7 y f5 _5 I+ d; Z Y
图 9
* e4 z# J$ M# k0 p" x' [+ ^/ y& a5 w$ D) b# z8 r& B& i, k1 e z
再触摸一下按键,就会进入卡路里显示界面。" s5 J9 v$ j$ }. K. O7 i" m5 \
' m$ k+ b8 |9 }; U0 g( y
$ F3 V* |* \) H0 i
图10- c( N: F/ r% u: h
' j O0 _* r+ u4 u- q: [
打开手机软件 Wolverine BLE。& i9 L3 {* @) w {; F! I
/ O; S* q( d: I# [
( S4 \" K2 l6 o; N" N (1)点击 Connect。0 T9 n# p( @, y& x7 U8 M. P
$ U6 T1 I7 w( H) L% {
! M7 y0 k$ u7 S; S5 G2 j/ b$ W7 @5 w
图11 M; u- O4 K4 s
# W9 t& r1 d! ~; C2 _: | (2)选择我们的蓝牙设备 DIALOG-PRFL。
. K% ]; J( c8 Q9 X+ `; b
# |8 K {* y! S7 e4 j, E& u
+ p6 i! R4 D4 J* I6 a! P( T
图12
) i; d6 p5 V3 G" Y
1 |# ^& g( s6 _7 M/ ~0 I 我们发送 step,会获取步数。6 x }1 S2 {' W- o# S
' O$ C( L0 J! F$ ^
) ?! e8 b _6 b1 z2 _+ C
图 13
7 F9 k1 z9 @) K0 X 发送 cal,会获取卡路里。
; P9 x( {2 m. i: `; L: c
6 @+ e& z. g) \
, t) ~3 L# D+ J" X+ _/ t3 O图14 i9 K6 ~- m; ]7 z8 a+ {
发送 heart,会获取心率。
+ a U6 {8 L' D4 w2 Y% L- S- `
$ e4 ^' Z0 l3 [, k; y- B- q! P: m' T
1 a1 q6 t1 x' ^4 f7 l2 [/ S0 c
图15
+ Z4 a, ~4 n/ Z$ W9 R6 m7 z" _! o
o$ ]0 j$ o" ]. Q) ]( H0 B1 ~$ J6 j6 v1 O! W" p* Y! d
9 T4 P0 F' J! X- F3 U/ ]- q- P
文件下载请点击:
9_(100%开源)蓝牙心率防水运动手环_整机功能代码讲解.pdf
(1.86 MB, 下载次数: 0)
3 k7 v; ~1 q: D
' m/ Z. q; c8 b. Z2 d- _* t0 O9 ~7 T: |) _- m
|
|