|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开源蓝牙心率防水运动手环 ——疯壳·智能穿戴开发系列 整机功能代码讲解
# F$ ]9 G0 Q8 @! o" n6 z+ H6 A* R0 }+ k4 t& L
" K5 P) ~% H5 |, k. c% R* w# j' }0 ]7 ^' u" p" H9 y1 h
整机代码
3 b, @$ ]# c* B) {) [! j. N8 ~ L: o7 C, J! r3 u
1 软件设计
/ e& H6 N T6 Q/ x$ M 本节,我们将融合前面的蓝牙收发、三轴记步、电量检测、外部 Flash 读写、 心率检测和 Led 屏幕显示,完成手环的制作。 0 Y+ \) B, U) e7 W
以上各个部分可以参考前面的章节。
% B7 G, D1 E; ~ 首先,看一下我们手环的整个软件主函数流程。
& z! W! G' W7 I( Z& }# A
/ Y9 s; n9 a/ k
. U$ s. l. ?4 ^2 I6 y! F
图1
0 q! G' }& s. Q; ~8 ? c# G 代码运行后,首先进入初始化,初始化系统时钟、外设和蓝牙。除此之外, 还开启了定时中断和 GPIO 中断。
. F, B- M/ a% H 我们的定时中断每 10ms 触发一次,用于 ADC 定时采集心率数据,以及定时和时间更新。另外,由于一些原因,主函数中的步数读取、电量检测、心率检测、屏幕显示并不是每一次循环都执行一次。这里的定时中断也作为一个计时功能, 步数 20 秒更新一次,心率模块 1 分钟打开一次,亮屏无操作,5 秒熄灭屏幕。! _- \# }% W' x2 [
这里的 GPIO 中断主要是用来切换屏幕显示页面。# A2 @5 }/ y, _/ s
; @, H/ i2 G, C. ~
" e5 k; l' f4 |* v代码1) f" i8 r, U3 o( N: I% G ~! z
从 GPIO 的中断回调函数中可以看出,每次中断只是把变量 Touch_release 置1,并没有直接对显示做任何处理,而在定时中断的回调函数中,判断变量Touch_release 的值,从而确定我们是长时间按键,还是短时间按键,来完成相应的处理。
+ {3 D6 A+ I8 p 在定时器中断函数中,检测到短时间触摸,就打开显示标志位,同时设置显示的页面。& l9 }- h. M ?5 P$ e
关于蓝牙收发部分,我们在蓝牙收发章节的基础上进行了修改,通过手机软件 Wolverine BLE 发送 step 获取步数、发送 cal 获取卡路里、发送 heart 获取心率值、发送 rtc 加时间完成手环的时间设置。下面是函数
+ C# w' U7 p! S+ }% O2 u" r6 r( z1 M$ V/ U# P$ I( \2 l; w/ s
# u. R8 v- \) D: w( u& Y8 u
代码2.1" @ I: s" n: `' R6 I
! t2 w* V o: m7 K D7 H
5 j$ V6 T; t1 T* l8 F u \代码2.2
) O; Y' F* n+ F3 O" }$ e* T" o) w, J% v7 |* ]' L( R1 Z+ R; I- Q
每当手环收到来自手机软件 Wolverine BLE 的数据时,首先从 Flash 中读取步数和心率数据。然后对比接收到字符串。最后发送或设置相应的数据。这里有一点要注意,我们从 Flash 中读取到的是数据,而通过蓝牙发送的是字符串,就需要将数字转换成字符就如同代码中将一个位的数字加上 0x30,换算成该数字对应的 ASCII 码值。. Y; t" ?0 g1 W' T! ]
对于发送给手机的卡路里数据,其实是通过三轴步数计算过来的。消耗的卡
6 Y7 @( R! D) p# M- y路里跟步数以及个人的体重等因素呈比例关系,大家可以根据自己的情况修改卡路里与步数之间的系数。+ \) U5 Z3 T: x
0 h2 C7 ~6 q5 h4 R5 m5 _
% {' ^" i( u. i4 `; y代码3* ?3 [% }: Z: r; S( O$ l) a
关于其他部分代码,请参考我们的我整机代码例程。8 f) K2 p$ X) i9 O2 f) g: a
* Q$ R y" f/ m3 r3 L; i( }, Y% c* Z9 l0 t& O; F) E
2 实验现象
4 E# ?0 F4 s: H4 U5 v) u6 e. C% |
9 M5 d, e- o2 s( {1 [# m 首先打开 SmartSnippets。 \: [8 g$ [) a: w" l
$ ] M4 q* h: W- D8 {* s& d2 r
- X4 C. i& W y, h/ Q
图2% }- q! q; w$ w+ J2 x) L$ D0 R ?
设置好 SmartSnippets 之后,点击上图中的 Open。
7 \8 ~$ |* _ ~ ?1 X9 L) T (1)点击 Connect,连接我们的单片机。
* W' `+ p( K$ T* W( j: l! e8 \ [( q5 s" j, C
' f1 I! k: s# N5 t" E7 e
图3" e2 C: J- `6 w( M) V* I# t
& K- i; X# P/ I (2)点击 Erase,擦除 Flash。
. S4 P$ z. q0 F4 E* U; [# ^& j T. k. n/ T
. i4 h! G) j9 u8 b图43 w& V1 g; e5 `) C& R
O7 v& C+ z+ D0 i% y) Y (3)点击 Browse,找到我们工程的.hex 文件。
1 [9 n7 c6 U, G8 J- C
- U# `" ^! ~, B& A" D }
: x+ m; w, e8 f1 [图5
) g+ j, K5 c/ U; c5 V6 ]2 d1 Z# X8 E
7 C) p" v& \/ k. f (4)点击 Burn,完成代码下载。
; T3 g! H7 }. F0 Y+ k. L# {2 a3 U. P5 d' N' s6 B# _4 q0 Y* }5 c! l
2 a, y; R4 ]7 z- v1 j- K5 |, Y图 6: o* f& B$ s: m$ J2 ~
代码下载完成之后,运行代码,能看到屏幕显示时间。
8 A% \: L/ q0 ^! e2 z8 q$ j& _
4 `) N& ]3 h% p" @& t) N
% C% R& a' ?$ O6 [5 m( q6 m图 7
$ C/ k3 |, G/ r J7 ] I 在时间显示界面下,触摸一下按键,会显示心率。
8 U; b) ^2 [6 P6 \3 R/ j4 W& c; }9 O# Z3 t- {
; x% M& a, L4 T# \& S图8
/ `. z( B, }- c3 q4 t0 l6 ~4 o: ]: d/ I* k ]
在心率显示界面下,触摸一下按键,会显示步数界面。, R" M: ?6 F- Q- J1 L0 o/ ]- o
3 x- _3 j5 _2 p+ `0 X0 i" @3 J
0 {2 g5 ]1 ~ U. E" G
图 9
6 x+ r; r& x& B ~) h% n; |7 D( Q3 C/ c0 P. M
再触摸一下按键,就会进入卡路里显示界面。& T+ H1 W& r& ~$ b4 }/ ~
# c* b8 V: P5 ?) Q% z
. \$ t1 ` m# x6 ^- M图106 I0 G: W- N) ]0 a- Z# }7 m
" G+ e9 ~* Z4 ~) T" m: `& I 打开手机软件 Wolverine BLE。
/ U2 Q( n# `2 P) p, T4 d; M& [; g+ I- @
& @: [* G1 ]( Q L! c5 Z% t1 _1 c (1)点击 Connect。
- z% j* e/ Z: ?4 r- l, e2 x& w1 [
8 ?5 |" n- t! A, C# o/ H
4 j) T3 s4 A* \7 H3 ^* b
图11/ R4 v5 {! c3 |3 g' G' p, ^% G3 M
8 } b( q C! {4 `2 o
(2)选择我们的蓝牙设备 DIALOG-PRFL。' h: k% Y" X' }+ X/ O i* A% d
# h7 }- h/ X& c O& I6 f/ Y
% c6 w& ~& C& u2 _
图12
+ Z u. h" Q/ ]' V
8 p0 g( ~* R2 Y& h$ N 我们发送 step,会获取步数。
- a+ q* V' d# T7 s% O9 _' C5 R9 Z3 B$ ]/ g
6 w5 I' ~. [" b8 w8 W# g3 O
图 13/ ^* M; h# }! K% ^$ ~; g
发送 cal,会获取卡路里。
2 q# D+ m: Q. l4 a- G4 F- d. R9 F9 B# q" t0 O# y
$ E' k' u& L* s* c* F( ]5 X
图14; U, B- S6 D2 u6 i3 v
发送 heart,会获取心率。
0 {+ u( K1 D! R: @2 I e
5 C% l9 t; k4 g9 D
& C; G7 c' h$ G4 M6 |图15- q" G8 X3 @- J& t
" l6 u9 U+ ]/ ]7 K- H
: E* t( c' W0 Q, U- w- V0 l3 J% x: M" l2 Q5 [
文件下载请点击:
9_(100%开源)蓝牙心率防水运动手环_整机功能代码讲解.pdf
(1.86 MB, 下载次数: 0)
9 E& ^6 [9 r+ V! \& I; n
! V. s0 G% y( m( s; e( ]" ], ]' M/ l% V& [9 k
|
|