|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开源蓝牙心率防水运动手环 ——疯壳·智能穿戴开发系列 整机功能代码讲解 8 A3 g. s: F. e3 `' Q& X" h
0 b2 N2 [1 k( a* T& w
0 B# Q( _& a" `! F' o
6 ]9 H% \' o( O. I8 \7 t整机代码
- x4 g! P4 }) ]+ g( A9 L7 k3 g& b! c9 {" d$ K* [
1 软件设计
% a' @0 ~. T0 |$ |8 m 本节,我们将融合前面的蓝牙收发、三轴记步、电量检测、外部 Flash 读写、 心率检测和 Led 屏幕显示,完成手环的制作。 + W5 u B0 W# B: e5 _0 g2 r9 I2 n/ {
以上各个部分可以参考前面的章节。
) T5 `$ I! {5 l 首先,看一下我们手环的整个软件主函数流程。3 y0 r2 }: e+ e( X1 O
# ^2 C/ c& h6 w
1 R) Y7 G/ _' o
图1
: K2 F: m5 Z- z/ u5 q3 m 代码运行后,首先进入初始化,初始化系统时钟、外设和蓝牙。除此之外, 还开启了定时中断和 GPIO 中断。
( ~$ x! K% w! h1 V; ] 我们的定时中断每 10ms 触发一次,用于 ADC 定时采集心率数据,以及定时和时间更新。另外,由于一些原因,主函数中的步数读取、电量检测、心率检测、屏幕显示并不是每一次循环都执行一次。这里的定时中断也作为一个计时功能, 步数 20 秒更新一次,心率模块 1 分钟打开一次,亮屏无操作,5 秒熄灭屏幕。
& z5 _9 [- W8 A7 O/ @; ^( _ 这里的 GPIO 中断主要是用来切换屏幕显示页面。; n5 \) C0 R- o* s* d
8 |# u: l% E) B+ a' A( }2 @& V
- t5 k! T' a1 b- _6 K, H1 e1 O5 E
代码1
: c1 o' @ b) K- @* @8 y4 c 从 GPIO 的中断回调函数中可以看出,每次中断只是把变量 Touch_release 置1,并没有直接对显示做任何处理,而在定时中断的回调函数中,判断变量Touch_release 的值,从而确定我们是长时间按键,还是短时间按键,来完成相应的处理。
I W& v3 h! {; U 在定时器中断函数中,检测到短时间触摸,就打开显示标志位,同时设置显示的页面。
; k& P4 l) L! J# } 关于蓝牙收发部分,我们在蓝牙收发章节的基础上进行了修改,通过手机软件 Wolverine BLE 发送 step 获取步数、发送 cal 获取卡路里、发送 heart 获取心率值、发送 rtc 加时间完成手环的时间设置。下面是函数6 F) c, R+ p/ d! j; U6 m
8 _0 a- X8 Y, n% O' ~
" `) J: D6 T2 N0 g( F# Q
代码2.1; M9 o5 O4 M$ p. K" h! d) v
$ S' a+ J4 J! k2 J$ n7 U3 W2 [& y' p
3 ]+ V, H$ z5 [. ~- Z
代码2.2
, L M1 M% v+ W) B% |2 m# n: c& e1 Y* }7 [& \2 Z, }
每当手环收到来自手机软件 Wolverine BLE 的数据时,首先从 Flash 中读取步数和心率数据。然后对比接收到字符串。最后发送或设置相应的数据。这里有一点要注意,我们从 Flash 中读取到的是数据,而通过蓝牙发送的是字符串,就需要将数字转换成字符就如同代码中将一个位的数字加上 0x30,换算成该数字对应的 ASCII 码值。
C" X+ G' C& G; c4 J$ D 对于发送给手机的卡路里数据,其实是通过三轴步数计算过来的。消耗的卡
6 i- ~0 x7 n4 a( t; C7 S) T, e路里跟步数以及个人的体重等因素呈比例关系,大家可以根据自己的情况修改卡路里与步数之间的系数。
9 B* ^2 \ I3 A$ r0 O0 F3 j3 ^: H! q: g' E2 q* \
1 ^# M- L1 X9 ]
代码3
5 [8 y5 w/ \: j1 k8 K, T8 N2 E关于其他部分代码,请参考我们的我整机代码例程。
" _! _, }& u: b4 m
1 Z3 [6 L; b/ J) Z! R) g" u4 }* R# V' S4 C( t. e) `
2 实验现象; u, b3 y7 K9 f" k! P( |
3 G! P' S* n$ b6 f: H; E 首先打开 SmartSnippets。
3 }) m; t9 {: B, u/ r1 n! g: K% @
( W4 t8 M! a/ E+ I# S4 x
9 s5 p. j( c. E4 A/ h
图2
( s6 j: U" Z8 A0 }. b/ d' g; A; C 设置好 SmartSnippets 之后,点击上图中的 Open。 3 O7 U! O J ^$ Y
(1)点击 Connect,连接我们的单片机。9 B7 o! M; f) M. g" Q
4 Q) j* Y0 L% z4 r) e7 n) U( R
h3 J9 w* d' k# ?9 `. o# K图3! {7 ` z- N: X
% }# C( T; Y/ d9 n! q( [ (2)点击 Erase,擦除 Flash。- U0 p( }: ]) p5 I( ]
3 j% n# r9 r( Y- ?
, c' N) Q) I) U$ _6 z q
图41 q$ X7 T" K$ m
! o, U" W$ c# M( g: r0 A; F (3)点击 Browse,找到我们工程的.hex 文件。
S6 `1 u8 X+ t4 u0 D% B) N1 {% n4 i/ ]! g, T# i1 x
, v( B+ o2 e% J5 u+ e
图5
+ h9 D$ t" i" `6 m y! U6 i$ @8 j6 s9 O$ B
(4)点击 Burn,完成代码下载。
) E1 V2 H7 \5 @, Q: R" V- z1 ]; q3 h
2 l, R, T/ N, B8 c, r
- @( N5 E5 T$ V* w图 6
" e" c; r) G& j) Y4 p 代码下载完成之后,运行代码,能看到屏幕显示时间。2 a7 U) E+ u1 q6 a! T+ n: a
) @% e6 ]/ s% }; `
. z2 T, ?5 i! w' J# s# X图 7
& {) x, Y, B- t1 y% h! t 在时间显示界面下,触摸一下按键,会显示心率。7 x' D- _) i8 |5 L1 E0 Q# u; d
7 G6 Q. b; a+ [: T: F" E4 b
* x: |* a0 F2 I# n2 G0 C
图8
) _7 ?; Q1 |, }, e' T- l: o+ U/ Z, u
在心率显示界面下,触摸一下按键,会显示步数界面。
# W) f; L9 w; p+ i7 o) e6 E- e# B, a& q+ v- [" ^, w! {
/ f1 l; Z h8 y) v9 p图 9) s6 h1 l- g1 M% i6 |
" u8 g; I" {1 L2 u* c. \# _# q# D
再触摸一下按键,就会进入卡路里显示界面。" o* D3 ?, K2 w! G, V
5 r% M8 a( O5 h4 [' j8 j7 D% |
% {+ C ~4 m9 i) d7 T1 Q图10# ^ T0 J; j- f8 q+ [( |
# i6 [# {( w# ]# O! s3 h! d
打开手机软件 Wolverine BLE。( a7 U5 S: y1 ~/ L( C
, n2 X e$ V& {' F
6 y/ F1 w4 B1 x& e" D4 | (1)点击 Connect。( c# |; F6 m2 R$ M: n2 c" w
4 b' g. Y* n9 S1 d- N5 j8 @( \: N& m
/ ]$ L0 Y+ _8 K/ I- l- G; t图11& ?1 i, h& H: B2 W' V
) l+ t' i; s$ }" G7 O0 L
(2)选择我们的蓝牙设备 DIALOG-PRFL。
; n) e( X3 ~# @" N3 w" y$ K1 D0 @. p1 e h6 z" J5 n
4 Q7 S! }5 c8 k/ w
图12
. O3 g) T! M1 G: j
6 M- `# ^! j( s0 R; |+ @ 我们发送 step,会获取步数。6 K2 V& V% b" z d2 f
7 T2 t8 L( O1 i# ?
* \2 g) l6 o) ~2 I$ a
图 13
: f2 m; I2 ^7 T7 S7 |7 |, t( ]$ B 发送 cal,会获取卡路里。/ ^! A' d: l. j! f9 B6 c, }
+ |/ B9 M6 e/ G1 p
/ r" \! s9 d: m, h+ K图14
[1 j- ]8 H0 M% T0 J( c9 ~ 发送 heart,会获取心率。
* X% P- v$ }0 s1 [; Y; ?! S9 D9 b/ Y5 D2 K) t/ b, t
/ H) A% [4 G6 X$ v图15; e' v" [# o, b$ S# D& \
; c* B7 k, Q" c5 U
, ~; @$ } o7 b7 f
z7 [ G3 B4 A$ W文件下载请点击:
9_(100%开源)蓝牙心率防水运动手环_整机功能代码讲解.pdf
(1.86 MB, 下载次数: 0)
& I0 ^- a% G. Q) u5 |& t
' U6 U* _: [- ~: C4 n) [& r. \5 `0 e0 R1 K
|
|