|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开源蓝牙心率防水运动手环 ——疯壳·智能穿戴开发系列 整机功能代码讲解
. w" A$ N& _8 U8 O8 T
" f9 ]/ \+ ?3 \6 {' L
# Z( v1 ~6 A# V8 F9 ?0 y' T5 z
. b: k: ?8 e, ]1 v1 E6 S6 ]整机代码
J% G8 l2 l- ^, V2 ^% Y- {- O- t; q" a N! Y) Z
1 软件设计
$ [$ r% r; t# y4 F( I8 m 本节,我们将融合前面的蓝牙收发、三轴记步、电量检测、外部 Flash 读写、 心率检测和 Led 屏幕显示,完成手环的制作。
: i. g2 E$ D6 _/ ^ 以上各个部分可以参考前面的章节。
9 V# s! F: s& M 首先,看一下我们手环的整个软件主函数流程。
' j# `) w% g# I" B5 A( ^' ~& o, } S/ J# `. R# @
; r# a' d. B4 t8 O4 h7 W图1
) X& e- O/ I7 B# E8 E 代码运行后,首先进入初始化,初始化系统时钟、外设和蓝牙。除此之外, 还开启了定时中断和 GPIO 中断。
3 t% E/ V3 D7 p& h" | 我们的定时中断每 10ms 触发一次,用于 ADC 定时采集心率数据,以及定时和时间更新。另外,由于一些原因,主函数中的步数读取、电量检测、心率检测、屏幕显示并不是每一次循环都执行一次。这里的定时中断也作为一个计时功能, 步数 20 秒更新一次,心率模块 1 分钟打开一次,亮屏无操作,5 秒熄灭屏幕。9 f; m; t- F5 q8 V2 `
这里的 GPIO 中断主要是用来切换屏幕显示页面。
! W3 c1 b+ }( _- Y( j, F
& l6 c- o1 X+ G9 C
1 _1 D/ @% Z$ G \. c* J- j0 D代码14 r- R$ D2 ], [# y7 D& }
从 GPIO 的中断回调函数中可以看出,每次中断只是把变量 Touch_release 置1,并没有直接对显示做任何处理,而在定时中断的回调函数中,判断变量Touch_release 的值,从而确定我们是长时间按键,还是短时间按键,来完成相应的处理。
4 J! R7 N, x; N& k+ {$ W1 C! o 在定时器中断函数中,检测到短时间触摸,就打开显示标志位,同时设置显示的页面。3 S! c4 L. a# O$ t2 w" P
关于蓝牙收发部分,我们在蓝牙收发章节的基础上进行了修改,通过手机软件 Wolverine BLE 发送 step 获取步数、发送 cal 获取卡路里、发送 heart 获取心率值、发送 rtc 加时间完成手环的时间设置。下面是函数6 P/ e9 H; T4 T$ Y; @) D' k9 O0 r
4 }8 X4 C0 u5 r) d
) M. w2 m. i" l. E9 {2 a3 Y代码2.1
, |) X# C) u6 [% r) v/ s
2 w+ K' F( b W( E
1 e* ]& x: d2 u$ }5 I
代码2.2& c; d1 U' K5 Y3 w0 l) ~
( C2 Z1 t; E$ H1 T* r
每当手环收到来自手机软件 Wolverine BLE 的数据时,首先从 Flash 中读取步数和心率数据。然后对比接收到字符串。最后发送或设置相应的数据。这里有一点要注意,我们从 Flash 中读取到的是数据,而通过蓝牙发送的是字符串,就需要将数字转换成字符就如同代码中将一个位的数字加上 0x30,换算成该数字对应的 ASCII 码值。! s( S9 h9 c [4 J+ A$ U! o
对于发送给手机的卡路里数据,其实是通过三轴步数计算过来的。消耗的卡
) g# V, j+ l& F) k+ m& X: L7 p路里跟步数以及个人的体重等因素呈比例关系,大家可以根据自己的情况修改卡路里与步数之间的系数。6 ]& k: o" I5 [% ^6 |$ }/ K4 j: f
6 f! A) V. H' X! D
j* ]) ~/ R1 Y8 U+ i代码3
/ M+ d Y0 n6 [0 ]9 \/ t关于其他部分代码,请参考我们的我整机代码例程。
4 T% Q! A3 p. ]1 p. N" D) v. b5 _% d$ i) D6 M) @/ m
" m2 p* R8 w3 ], ?& s2 实验现象
) P3 p E% Q J, G& d. h( d7 I+ X3 h" j, ~2 M5 ^+ C# y
首先打开 SmartSnippets。4 m x9 k, Q+ I
1 [9 T* W* N# W* g
& u; K( @# v( X. C5 @6 l图2* H* }) L c' X. ~$ f! e6 X: L3 M
设置好 SmartSnippets 之后,点击上图中的 Open。
0 y8 Q/ l/ y0 f (1)点击 Connect,连接我们的单片机。5 C v2 ~7 o5 M$ ?2 D! x
( o" z" E1 V5 r
, g0 P& m: ^; U, a6 O: b8 V' I图3
# U1 a1 D5 M9 a; _) f1 i
" W7 i! s# v( l- g (2)点击 Erase,擦除 Flash。4 }4 } O8 j4 ^% U
; d6 U2 W' O8 G
8 \! R0 |: |7 @' E( `
图4
7 d6 S; V. ~/ n: Z/ E% {. |5 z. E4 z% F4 \2 N) s5 F
(3)点击 Browse,找到我们工程的.hex 文件。0 o, O. X. R+ T, Z( O# f
; N/ S$ w/ \9 t/ K5 K
( m0 C- H/ L# n X% k1 x {6 b
图50 x7 w J& a, l( g
4 d5 d- u8 z" j0 `: {: ^6 r (4)点击 Burn,完成代码下载。
( H+ l# a1 o" x# V$ S0 c
6 t* d) u7 V9 g6 z& w4 z
! e6 f, B8 `0 _: D6 z3 O. d9 y
图 6 F$ U2 ^) s5 k- b5 S
代码下载完成之后,运行代码,能看到屏幕显示时间。
. S1 C( }' l( L9 v% X: B, X, z! j$ a) F4 @
, s( I" h6 m/ R9 c- z% Y5 s图 7
8 f9 K' Y" {! W9 M( C" \- q2 a 在时间显示界面下,触摸一下按键,会显示心率。: b/ a8 x8 F2 }
6 s; l+ k/ O8 }$ M$ C
8 g% z ^3 _2 m% o; x/ A图8% \6 o1 j4 U2 o' Z' x" E$ N' S
' U+ i# D" f) i$ u8 |8 v3 q5 L& F 在心率显示界面下,触摸一下按键,会显示步数界面。% w; T3 f+ L9 \5 F: X7 m
" a& h; k" v8 Z8 y2 V2 }2 y% G
' O: J& Q. m, n) q) [/ N. t图 9
9 ^. h3 P* _: K- w N+ `5 A$ j2 m' E, ~% k, ^
再触摸一下按键,就会进入卡路里显示界面。
" \3 I! v( L, _1 v5 R3 s$ m; |. o! @; L; ^& o! c! a# {, L Z8 Y
1 R/ N' W) g+ h! f( j图10
" q/ f4 ^. H/ k5 i8 O# L5 o0 g+ T6 i ?8 y1 u; W
打开手机软件 Wolverine BLE。
. `* o k/ K2 }0 e. c1 b5 N% Z( N# ?" j, ]- n6 y$ o. e y8 t
$ O1 P1 Z: O. N9 t' P) \" J( N
(1)点击 Connect。4 Y) N% s g5 R$ o, s5 L' b
$ s; J; i* p1 M8 v3 @- m D( f3 X/ n
) X) C4 ^+ _% _% ~7 d1 {- t图11
' V3 T5 z4 k2 k j
, D, f, O2 a1 R+ Z0 J% |2 \, t (2)选择我们的蓝牙设备 DIALOG-PRFL。
/ W* n7 ]- P" l$ N* K0 I8 p3 L; P2 b2 |1 M+ o5 E3 e1 \4 { p
+ a+ U! T/ p! P
图121 h# P' }6 v Y7 F( I
& @" p: x, s+ c' W. U0 N% B
我们发送 step,会获取步数。) x, ?7 q& P( `: ]# h. [2 X' X
6 k, @5 ^& o1 T1 S' T; k/ E
1 r& p+ d7 k8 ^, j$ l1 {- l$ S图 13
3 u+ b* b: g. P8 T7 w 发送 cal,会获取卡路里。# h5 X7 p3 P. P1 N" z& p
/ ^* @* d2 R6 |% y% z5 x
5 I. P* X6 s& M/ \" S图14
" v4 w. v+ H& |9 v+ e. g 发送 heart,会获取心率。) r" z" O+ n. d& k: X% Y2 b
9 W+ H8 L) ^4 L
8 y6 A `% H" Y% M
图151 m1 L/ l- I1 i- p+ o' u
! M2 ^1 Q: I3 W R
/ R' o$ |' Q0 e% m: B, }- I% a4 r( f+ K1 V& L& Q! n6 S8 G+ V: k7 _
文件下载请点击:
9_(100%开源)蓝牙心率防水运动手环_整机功能代码讲解.pdf
(1.86 MB, 下载次数: 0)
7 y2 ~% v# k9 n# `* {% T x7 E8 |8 U
# i& y& s" o! m6 {: U A, {) Z5 f/ k1 G1 j2 i* w6 E E& q
|
|