你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【我要为STM32站台】基于STM32L432家用无线报警系统  

[复制链接]
Paderboy 发布时间:2016-11-18 23:35
本帖最后由 Paderboy 于 2016-11-18 23:40 编辑 " p! w4 b: H7 a' X. e$ v0 w

; u  w) t9 n- Z) Z" R& g+ j这个是基于NUCLEO STM32L432KC作为主控的 小范围家用无线报警系统项目0 _9 {$ H; n' Z' r

! R% t9 `4 a6 @3 B5 O* P# _% A. }5 ?  W- v) f* Y
Screenshot_2016-11-18-08-31-02.png
$ Y6 P# ~8 v' d' A
0 Q$ a8 i4 [! Z. Z+ d2 t3 C: ~, t" b# P+ K
整体的使用成本,还是很低的。。。用的模块都是市场上常见的产品。。/ {) s: W( I! {" [+ M

; ^" _$ I3 y1 u/ ^0 Z7 i7 L5 h8 o1.NUCLEO STM32L432KC作为主控 也就是接收端(接收无线数据),这里用到了市场广泛使用的NRF24L01模块作为发射和接收无线数据4 M, p1 I" D" m( B# d

0 l9 n6 o+ z& _2.因为手头有NUCLEO STM32F031的开发板,(也可以使用其他STM32F0系列的或者STM8等等。。。)6 T: @# ?/ ^  t- Q. [( O
所以这个项目就用了这个板子作为无线发射端; l6 V: E+ o, G/ D6 J$ t( G

" o. i4 t, r# @4 W1 [3.使用HC-SR501人体红外传感器模块(有进口和台产的,这个小项目用的是进口的,测试后效果不错,灵敏度很高),
6 P, z: ]2 A+ k2 S, A, l   使用HC-SR501的输出高电平去开启单片机供电回路,这样检测到有人的时间,模块默认发送报警信息。。, g4 ^& I- w5 \9 S
3 d  a  J; @, P6 e
4.当STM32L432KC主控接收到无线报警信息后,自己判断是那个发射端的报警信息。。处理后,启动报警设备的同时,; P5 I8 L# x5 C. ~. h& c, T
通过串口发送给蓝牙设备报警信息。。
, T; M9 |% U9 A4 N; M" m: |- i. W, C# o4 O# ^% q" h
5.如果手机APP端默认开启报警功能,这时就会通过震动和声音提示,有外人闯入设定的报警范围。。 同时可以通过手机APP查询报警区域/ e8 w  ~) _6 ?, c: ]& d: M$ d5 Y
  (例如.车库..)非常方便,可配置多发射端,只需要修改下不同发送端的识别ID就可以了。。* L$ }5 V& v7 L' A$ }
4 L; S. C, L( s  V. V" r' ^
6.可以通过APP解除报警(可关闭报警系统)和一个在主控的手动按键来解除报警状态。。8 [+ H+ ?6 m5 O5 ^: ?7 `
& G1 z$ _. Y$ u5 U. }5 h* I: `
' b) e9 r# E7 o; Y' Z- L2 B
好的先介绍下主要的设备:  H6 F5 t0 N" i4 A! Z

2 L2 [- I- V& H! Q/ F1.STM32L432KC 开发板9 u5 e! n! M5 Y+ O
2.STM32F031K6 开发板
5 |) Y& c! e9 {$ Z1 m! B3 W3.2xNRF24L01 无线模块
. N' p6 d! m% A4.人体红外传感器HC-SR501
: `( ?. l9 _! U( x, ]# v5.有源蜂鸣器
4 ~% \6 J0 w6 \7 r2 c6.少许杜邦线
* S# w& a" D# n: P' m' W# d! w4 y7.蓝牙模块2.1
, H" }- i4 R( ?! r0 d8.发射端电源和触发电路2 c+ h- K% `! G7 ?) P' E* E9 [
# s2 _+ R3 F: R- D  o, s- N
以下就是这个项目的流程图0 m7 k) ?" G- {7 c( s6 @5 O3 U( g3 t
) D" d; [2 {* N& z
L432WirelessAlarm.jpg
: i6 w! |9 W+ H3 V开发平台:
4 p: q6 R6 O4 ^CubeMx+Keil5 不得不说,CubeMx用了以后会依赖啊。。变懒了。。。本项目都是使用Cube+HAL库实现的。。
  C3 M  p$ |& `3 G7 Z; ~* q0 F3 S$ \2 F9 F. {* J2 b: Z2 N
测试工具:0 X9 w' A! N# }! Z/ O
串口助手(主要用于测试程序和调试的反馈)* p* E% u  m  l% j% l& `3 u' ]
安卓手机一台(用于APP功能测试)+ B& A) j, e& D' t) B

  h2 ^8 D6 G0 C& _( B接下来就上图吧!!
) y. ~! P% I) n+ }- g! i9 D: f; X- X" e$ O0 K# m+ G, Y
这是发射端STM32F031K6 配置SPI和串口输出,方便调试
0 V  W& u& @- }" Z3 O; s fwireless-01.png & @0 P9 S; y' x( n5 T9 ^" L
% p  _2 `4 i7 d9 g! {
使用内部晶振
/ |7 k9 v; s5 z fwireless-02.png + N" s! \; |8 Z- B

" A0 d* y3 o( h0 @/ r1 RSPI配置
$ k6 P% l) ^0 N( Q2 g fwireless-03.png , l0 p8 A( P" S9 A
7 \/ ]# m' D9 }$ v' n# i
串口配置) _9 n+ G5 G# E2 W  z9 k
fwireless-04.png
- Y* L! |. t) r2 P0 I: w! u  {* J% k- {" {- f# e9 d8 y. m
发射端实物图片
& u. H: `9 W# s$ x* y6 e' K IMG_20161118_103731.jpg $ k* `0 H% Y' n+ ~$ h
' s  c1 R- `2 x- ~
人体红外+2片串联的铁锂电池作为发射端的供电测试电源+一个LDO稳压电路(丑陋的转接板请忽悠了
2 v; ]2 U1 l1 B- ~5 h IMG_20161118_103743.jpg
( C8 [5 l6 L$ h0 y0 c+ l% _9 r: f( n& l# }
IMG_20161118_103801.jpg ! f1 q1 Y) D6 S7 e2 J/ j) n2 _

* @8 o' y6 y0 e2 U使用HC-SR501的输出端去开关发射端的供电,可以提高电池使用时间。如果人体红外传感器没被触发,发射机是断电状态。。。非常省电。。2 b/ p# e! \' Y  X
wirelessHW.png , f, G- h$ ?1 k- ]% P+ o  K

  T. U; X( ~: U  L) I5 Q. s好了接下来是主角STM32L432KC 接收端的配置截图如下:* L3 M4 V3 t; T6 |6 o, o
7 d( O  D# X$ c, C
用到了SPI3+串口1+串口2 还有输出GPIO开关蜂鸣器' U0 |. J. Q& ^/ y' Z- [  t
wireless-01.png 1 e6 s9 L) s: ~7 D7 G
2 D- I) Q# Z2 i
使用内部晶振
! \& J! Y; |2 F$ B. R wireless-02.png 1 R3 N( Z  J+ t3 {& v/ f- U
+ M# V8 B+ ^) b3 ]. r$ ?5 f  W
SPI3 配置
0 w0 F0 e4 k( w* Q# l+ W  g wireless-03.png ( {: q& K! q1 C& ?- a+ D) {2 V6 w8 Q

2 C- P- l- a' j2 j; J5 p串口1配置 DMA IDLE 接收和发送数据给蓝牙模块
: w6 ], W2 y. Q3 j" y% S wireless-04.png ' {5 Z; x* w" x2 B7 m" w4 ^  ]
  p* n' X1 ]* L/ @7 R  \! u
wireless-05.png
& S9 w/ h- Y( ~4 ?. c) W3 o; B% H$ a* c/ K8 D9 A
串口2用于调试直接输出测试数据到电脑上
2 K! S2 S( X0 i6 j! R3 R wireless-06.png ! f& _& F' y2 I4 v- Y
, E  a( t- w0 b5 z0 w/ u) W2 r
wireless-08.png 9 }( N; f$ F' k0 r! w4 l

+ s% F2 k, R' b# `7 |$ h好了,工程建好了,就开始调试程序。。。 NRF24L01 是非常普通的无线模块了。。这里就不再多介绍了。。。! `! D1 j% K, F, {; q3 F! m- X" b) V
以下是调试过程的截图片段. X0 G. G8 S% E) }' f% d
wirelesssoft-01.png
& a9 c+ @* c* d% D. l3 O9 [( [" c" {  b+ t% L3 \$ ~/ X
wirelesssoft-02.png
; n) |4 r: h3 ^" s3 W* w9 Q- `9 m! E% v/ U
wirelesssoft-03.png ' ]9 @2 w5 j# ^! V

6 }0 n9 z/ z8 _2 y wirelesssoft-04.png 2 b. q3 @8 q# H+ X

7 _8 y' Z. m* M- s程序都编译通过后,直接下载到发射端和接收端来验证吧。。
# W( ?% i. l( b; P' |% R) H6 v, c5 o$ z# L  q4 \( H
实体图片是必须要有的。。。。" ?# T; {+ D6 y8 j3 |0 o: d
IMG_20161118_103839.jpg ! ~* J$ a, A3 E/ \; R) u; |$ l
$ h# z4 D8 y3 n0 }# [
IMG_20161118_162516.jpg - C. z* }$ `, h. |7 o* O

" o. y& V2 C7 E& D3 t, M8 j IMG_20161118_162536.jpg
: d9 f# {0 R$ |% ^4 Q- X; y& J" s+ E
7 W# P5 ^  r! ^3 E IMG_20161118_162544.jpg
" j* K# C0 `! w. o
, O: y/ A* X$ b- l wirelessyz-01.png " T4 p! m8 Q) N) |9 D3 W/ ~
' T2 R' p2 t" M
wirelessyz-02.png
  V& W) V( z2 z# k+ D& A6 m' m6 r
wirelessyz-03.png 7 \& f& J( ?& b5 X7 R- _, O, P
  d8 w& ?4 s) x! t' q9 g
wirelessyz-04.png
+ x8 }/ W- ^2 b; k  N1 I, ?4 u! x+ W' c2 m  J( M

) @3 P8 G1 ^. {- J1 i, b8 r7 j好了。。。。亮点在这。、。; k0 A( d0 H# z- `

3 R) M0 w" G9 ~' U, c8 A+ g( t+ l- F' f; A1 [6 i1 r

# C' z5 M9 Q+ E, l. M( m% g1 |  a4 n2 S
Screenshot_2016-11-18-08-30-49.png ! |( w5 _' X/ G+ G9 \; G3 T
, |0 J$ _. j6 d4 f
Screenshot_2016-11-18-08-31-49.png
- P; D/ f! M" U4 U7 g  m4 ?' ]2 B+ Y6 H9 X+ h% g, l
Screenshot_2016-11-18-21-40-29.png " [! H: h5 h; R/ {
% }- }+ n8 o6 M* w" F! _
好了这个项目就差不多完成了。。。
" ]- T. ^$ b+ K5 k( {0 _- w2 ?, {3 j  Y
总结下:
( c1 u' e2 A* ?4 n0 f% B3 e这个项目功能比较简单,不过还是比较实用的。。。可改进的地方(例如:添加TFT显示提升主机的体验,有条件的可以给主控再添加PM2.5,温湿度等2 Q$ d9 o( T- J4 T5 A
外设更丰富这个项目的功能整合。)也可以添加Wifi 实现远程IOT控制等等。。。) K$ N! S) v" r6 S- P0 Y6 S( N" Q
因为工作比较忙,这个项目弄的比较零散,不过整体框架基本完成。。软件调试也完成的大部分。。APP基本可以用了。等有时间继续优化。。。
  d% t/ d& [) y* {2 `0 o3 I6 G% h* M. h
5 c; j: r. [2 _$ l! M$ A' r
希望大伙会喜欢。。。。。。3 Z# k/ O/ Q! t$ k. }
9 e6 s: ?# ]: A6 ^# a3 K

( Y  a* R* H$ e4 q. p

评分

参与人数 1 ST金币 +30 收起 理由
zero99 + 30

查看全部评分

收藏 4 评论38 发布时间:2016-11-18 23:35

举报

38个回答
黑皮男 回答时间:2016-11-24 18:43:40
cuyebiren 发表于 2016-11-19 11:50
& l& l5 z. ~2 V楼主厉害!: g: T% I# ]  W! P
手机APP不会是用 Java 写的吧?' E. T( C; h* ~$ u$ Q- ^3 i# s
有没有简单点的编译器,如像 LabWindows CVI 这种的,纯 C 语言 ...
. d( ~  ?1 Z1 T( d8 c
安卓手机APP就是用Java语言,这个其实也不难,做一些简单的,我现在就是会点皮毛
黑皮男 回答时间:2016-11-24 18:44:35
cuyebiren 发表于 2016-11-19 11:50
. ~3 q0 P( P; j楼主厉害!1 Y% S- _7 d4 f0 r8 P% A* s
手机APP不会是用 Java 写的吧?( E* b3 q+ h0 a) s, \& _# Y9 P
有没有简单点的编译器,如像 LabWindows CVI 这种的,纯 C 语言 ...

  E# K2 j; d% L' C4 [1 j而且IDE里面还可以通过图形界面来进行控件布局,也是挺方便的1 g/ k3 u# ~2 k5 s1 \1 A4 M
Paderboy 回答时间:2016-11-19 13:26:20
cuyebiren 发表于 2016-11-19 11:50- _3 `$ s( |+ z( i) T" G
楼主厉害!
0 _+ n4 C% C% v3 F. W) i$ f手机APP不会是用 Java 写的吧?- o3 N! R  d& e2 t) I
有没有简单点的编译器,如像 LabWindows CVI 这种的,纯 C 语言 ...

/ y; l( S" a8 _  `- |6 O/ @纯 C 语言 + 控件 编写估计是没有。。。
zero99 回答时间:2016-11-19 00:05:49
赞一个
Paderboy 回答时间:2016-11-19 07:56:05
zero99 发表于 2016-11-19 00:05$ c3 J! ]+ X( W$ ]
赞一个
7 N7 A7 a4 A9 H; ]/ y
yanhaijian 回答时间:2016-11-19 08:19:29
全能通吃,厉害。
Paderboy 回答时间:2016-11-19 08:21:14
yanhaijian 发表于 2016-11-19 08:19
' b+ m1 m, l! w3 Z' j0 |全能通吃,厉害。

1 p, [$ N# H- R: Z5 o- W" Y多谢多谢
wamcncn 回答时间:2016-11-19 09:19:19
赞一个,手机APP,软硬通吃
Paderboy 回答时间:2016-11-19 09:47:17
wambob 发表于 2016-11-19 09:19) f* s- P% ^2 b1 N' \8 ]
赞一个,手机APP,软硬通吃

% n5 A: x8 D0 H
cuyebiren 回答时间:2016-11-19 11:50:59
楼主厉害!
8 B! w+ d5 ?. z手机APP不会是用 Java 写的吧?
& ?  \  a% J* d  P" L有没有简单点的编译器,如像 LabWindows CVI 这种的,纯 C 语言 + 控件 编写,不需要在学习新的 语言 的 语法
cuyebiren 回答时间:2016-11-19 14:53:54
Paderboy 发表于 2016-11-19 13:26
; l- j1 T& ]# G$ ]纯 C 语言 + 控件 编写估计是没有。。。
- c$ l3 m' b$ ]* ^2 E
LabWindows CVI 就是的,不过只能在 Windows 系统上运行,很期待 像他这样的能在 安卓 上运行的
Paderboy 回答时间:2016-11-19 15:02:16
嗯期待吧。。。
zbber 回答时间:2016-11-19 21:37:53
楼主厉害,真是难得给力的帖子啊; }% N0 X" K* @- f+ g" p$ v9 b+ F
Paderboy 回答时间:2016-11-19 21:45:37
zbber 发表于 2016-11-19 21:37
" N2 [# H6 y, m楼主厉害,真是难得给力的帖子啊

9 |( c% u. c; h6 ^) b6 o: s那都有你啊。。。
五哥1 回答时间:2016-11-20 22:25:13
做的很好
Paderboy 回答时间:2016-11-20 22:59:37
五哥1 发表于 2016-11-20 22:25/ X3 n. [! K: N" _* V: N
做的很好

* C  R8 {  n, X# s0 Y3 V+ fthx
123下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版