|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开源蓝牙心率防水运动手环 ——疯壳·智能穿戴开发系列 整机功能代码讲解 ! t8 y9 z* e1 h- [# w# v
% K1 B1 P0 J0 i( E3 U8 R
5 f6 Q3 n. }$ j0 I- Q& G4 \" ~) ?
% a' a! D$ n$ x! w$ g整机代码
2 { ?& N7 k$ _8 N0 J8 W2 p. \ ~5 |0 _8 G# e6 Z b4 L/ D7 n% @& I+ f
1 软件设计
- G. G! g3 Z1 C+ j2 J 本节,我们将融合前面的蓝牙收发、三轴记步、电量检测、外部 Flash 读写、 心率检测和 Led 屏幕显示,完成手环的制作。
! \5 x' v: l1 n. v( k# n7 p% Q 以上各个部分可以参考前面的章节。
$ h1 a- z; |( |0 K 首先,看一下我们手环的整个软件主函数流程。8 X1 |4 [+ {5 l. a1 ?* j! s
2 D* o+ r% F. O# L r7 ^
% D" p' F, N& ]1 \0 l; u
图1
% i& p1 ~5 e' M% [5 v 代码运行后,首先进入初始化,初始化系统时钟、外设和蓝牙。除此之外, 还开启了定时中断和 GPIO 中断。$ W4 r4 }7 S6 w" t+ t
我们的定时中断每 10ms 触发一次,用于 ADC 定时采集心率数据,以及定时和时间更新。另外,由于一些原因,主函数中的步数读取、电量检测、心率检测、屏幕显示并不是每一次循环都执行一次。这里的定时中断也作为一个计时功能, 步数 20 秒更新一次,心率模块 1 分钟打开一次,亮屏无操作,5 秒熄灭屏幕。
9 m( t9 I' I1 ]! R+ Z- A9 m 这里的 GPIO 中断主要是用来切换屏幕显示页面。
3 _% }( h5 l+ O5 s E$ Y4 M- s' U0 B
5 M2 \ x5 F8 y& b2 ]2 A8 [1 x
6 t6 F% y; j& z代码1
* Z% }6 c. j) \5 t8 T6 ~ 从 GPIO 的中断回调函数中可以看出,每次中断只是把变量 Touch_release 置1,并没有直接对显示做任何处理,而在定时中断的回调函数中,判断变量Touch_release 的值,从而确定我们是长时间按键,还是短时间按键,来完成相应的处理。
8 \" C9 g5 Y6 R5 d( H+ r 在定时器中断函数中,检测到短时间触摸,就打开显示标志位,同时设置显示的页面。
9 _7 ]# J! L' Q X& T 关于蓝牙收发部分,我们在蓝牙收发章节的基础上进行了修改,通过手机软件 Wolverine BLE 发送 step 获取步数、发送 cal 获取卡路里、发送 heart 获取心率值、发送 rtc 加时间完成手环的时间设置。下面是函数. _" t" _' x8 a) e) Q u
8 c q! t1 h6 P- b" q9 D4 ]
% C. |0 C9 M% X
代码2.13 X% T H, |9 \
% |& H0 r# C9 Z( m& u" I
* G" o/ Y! h: Q. m9 ~3 f代码2.2
4 T/ m- }; j% a V
8 F0 U; D! Y; z9 O4 m9 W 每当手环收到来自手机软件 Wolverine BLE 的数据时,首先从 Flash 中读取步数和心率数据。然后对比接收到字符串。最后发送或设置相应的数据。这里有一点要注意,我们从 Flash 中读取到的是数据,而通过蓝牙发送的是字符串,就需要将数字转换成字符就如同代码中将一个位的数字加上 0x30,换算成该数字对应的 ASCII 码值。
v" ~: D5 q+ {9 K' s* G( Y- u: T) O 对于发送给手机的卡路里数据,其实是通过三轴步数计算过来的。消耗的卡
7 I/ p8 U O: R% ^% r路里跟步数以及个人的体重等因素呈比例关系,大家可以根据自己的情况修改卡路里与步数之间的系数。" k6 c" E9 @- g- n- m6 _0 f
0 P# k/ x8 f3 Z2 J4 f, y4 V! E5 J
2 J+ W* C" m/ A T$ [
代码3" q3 b5 w+ H9 H( P& k
关于其他部分代码,请参考我们的我整机代码例程。& w( ?% D, ~0 r6 `
3 A0 {. b5 J3 k0 ]6 q+ q. @6 o, m& e3 v4 u2 n5 ~
2 实验现象' h7 F/ [- @! W0 N
2 o& a/ D6 u$ ]: B3 y 首先打开 SmartSnippets。
# t$ A4 e, v( n8 M/ F" L1 {
; a5 g4 Z# q& |3 s6 G
1 W6 I/ K, z& O' K
图2* z5 W' F- v6 j- P+ O) H
设置好 SmartSnippets 之后,点击上图中的 Open。 / R2 {$ D6 \" y3 K
(1)点击 Connect,连接我们的单片机。
6 N3 y o; _2 b- Y( d3 ~; w
% e {- G: Z/ d4 S
d$ s* ]+ P4 k1 h/ D图3
$ _% I3 ]3 v' w, o/ G1 W% u. L1 Y1 Q) T# e/ k/ t
(2)点击 Erase,擦除 Flash。
- r( o# v. w, `6 t! O# ~6 c* n
Y9 B, V2 p. X9 }
8 e# `3 ?9 o( Q) V; }" H2 _! K
图4
$ t% i' P a F- F; W Z6 f, Q$ U& s( T) l7 p6 ^
(3)点击 Browse,找到我们工程的.hex 文件。
, g* ?3 z7 @( j$ V6 I5 X$ Y! \. L) Q- q' s* M
5 o' }6 d# d* ?3 A4 E图58 `9 ]' w- g, ~" d4 _) G0 M5 ^
) W6 ~% w0 E5 G; R8 x* C
(4)点击 Burn,完成代码下载。
$ v d" I: y5 M% {& d$ B( M% m# e' `& ]
7 R5 n) {+ Z7 [! ]; b; Z图 6
2 X% M0 F7 ]% R* ?8 e# } 代码下载完成之后,运行代码,能看到屏幕显示时间。4 Y- t& \7 X' I4 [' U' u6 |! e
: U1 G G+ L' q. i
: F5 f: N9 ~% {/ W9 U/ p
图 70 b( S+ X0 Q8 b3 v( U
在时间显示界面下,触摸一下按键,会显示心率。" v) r6 ?# K- d' q+ ~
: R5 q8 }: H: R& z! c
' \& `+ W2 E- [+ ~! Z4 s" V图8/ t u# G* i! T
" ~6 S" v1 p9 n7 W 在心率显示界面下,触摸一下按键,会显示步数界面。( y i9 g; A. W
# U* ~) H; }+ e- P+ E
( v4 y+ J8 _9 O2 A' f6 p5 I
图 9: H+ ?6 {: V9 g! Q% B: O6 e6 Z
8 E. f n2 w, D: R% {& n
再触摸一下按键,就会进入卡路里显示界面。& b8 f* ~/ G2 b; j C1 Y
2 v$ Y6 Z# l$ ^& z; }9 C
. s; b, o( ?. y4 g. N n) y" n图10; Z, B4 x/ M4 h1 _ A \
3 x$ X# N8 X1 `. l* Z$ @ 打开手机软件 Wolverine BLE。; e9 s( G; x% G' T7 j
& ~8 a. L" C/ U! d4 b. W9 N
( i* d5 P: c) R& b8 a3 s (1)点击 Connect。- N" F. @, v* f( ~; B3 l4 O
2 p) J ^5 I6 ^- t# Q: y
2 {+ u, w) F8 `( W0 t( I# R
图110 G" G! ]/ N1 Z' B. e- c" \5 l
- G8 a' E9 v: N; m+ r
(2)选择我们的蓝牙设备 DIALOG-PRFL。1 y& T7 g+ C- o
8 C: P( O* V: H( M
2 @4 ^4 S W6 h/ g! O5 r# l. W图12- Z+ p- Q$ o! }* E/ m& I2 a
* ^# a6 N4 I; _1 `4 A& r J, i
我们发送 step,会获取步数。
) G8 m9 \$ A7 `4 {0 g; c# z" \: }2 ?) }4 [ \) Y9 s P5 \
O, K; |0 ~6 v+ }# y$ b. n图 13' {& X( N% u" D% ^# u6 @6 l
发送 cal,会获取卡路里。
, D4 g/ e7 y4 g
) n% A d3 U9 D, j6 B( O+ F
+ W& h8 G; o4 D& e图14
2 a( c, y D3 j) M$ t8 d 发送 heart,会获取心率。
& t2 c5 Q, U i" m# G9 I+ F' b; P5 r% ]9 R* `; O* L. E0 c
N. E- B% O7 H9 |* O% ]* G# f3 U+ J7 u图15
/ u( n: J! Y' q! [. B* @& Y/ }5 b I1 `1 h) q; C
7 R0 N. Y! c! d! x3 k% z7 B7 C. H8 d7 H- \) _- Z+ ^- Q
文件下载请点击:
9_(100%开源)蓝牙心率防水运动手环_整机功能代码讲解.pdf
(1.86 MB, 下载次数: 0)
* u4 Z; S0 s! H* z [8 Q
( ]# e% E$ N+ X$ H2 C3 T, t9 y& t! q3 o
|
|