|
本帖最后由 Paderboy 于 2016-11-18 23:40 编辑 这个是基于NUCLEO STM32L432KC作为主控的 小范围家用无线报警系统项目7 E$ {* V# Z$ [4 r& \ 6 U o# @0 R! \- G $ j5 ~0 b$ R; _. x
" |# t3 s. {0 N 整体的使用成本,还是很低的。。。用的模块都是市场上常见的产品。。1 k! H" y% n+ \/ _( Y2 y: E% v 1.NUCLEO STM32L432KC作为主控 也就是接收端(接收无线数据),这里用到了市场广泛使用的NRF24L01模块作为发射和接收无线数据# s: W ]5 ]( Y8 o * D) @# e- x0 T$ A, n$ a! m 2.因为手头有NUCLEO STM32F031的开发板,(也可以使用其他STM32F0系列的或者STM8等等。。。) 所以这个项目就用了这个板子作为无线发射端3 j$ D7 r; m% g. \7 [2 q 3.使用HC-SR501人体红外传感器模块(有进口和台产的,这个小项目用的是进口的,测试后效果不错,灵敏度很高), 使用HC-SR501的输出高电平去开启单片机供电回路,这样检测到有人的时间,模块默认发送报警信息。。! ~ V. p6 J/ q* l7 e3 o 4.当STM32L432KC主控接收到无线报警信息后,自己判断是那个发射端的报警信息。。处理后,启动报警设备的同时, 通过串口发送给蓝牙设备报警信息。。8 s6 B7 E. a% W* N ( x" E" E% U# l% T- q 5.如果手机APP端默认开启报警功能,这时就会通过震动和声音提示,有外人闯入设定的报警范围。。 同时可以通过手机APP查询报警区域6 H+ v# ~1 i& ?& K0 e- A R (例如.车库..)非常方便,可配置多发射端,只需要修改下不同发送端的识别ID就可以了。。 4 ?, ^6 d* g* j 6.可以通过APP解除报警(可关闭报警系统)和一个在主控的手动按键来解除报警状态。。: T3 t% n1 v0 u+ \; L 8 [% b/ L1 d. w! L" c0 S* ] 好的先介绍下主要的设备:; r) R' T d+ ?+ k8 |( I0 Q 1.STM32L432KC 开发板/ ~+ w3 d ]4 f# p$ Q# q6 Q% [ 2.STM32F031K6 开发板 3.2xNRF24L01 无线模块* T: O0 g$ z @: m 4.人体红外传感器HC-SR5017 a5 c* k4 E1 |9 d* \# [ 5.有源蜂鸣器 6.少许杜邦线 7.蓝牙模块2.12 C' Y4 |$ b/ V7 t 8.发射端电源和触发电路 以下就是这个项目的流程图 3 D4 ~; J, p' w' C |# R
开发平台: CubeMx+Keil5 不得不说,CubeMx用了以后会依赖啊。。变懒了。。 。本项目都是使用Cube+HAL库实现的。。+ p2 f- {& B+ Q测试工具:/ H! ?! S: ~7 K, U% D 串口助手(主要用于测试程序和调试的反馈)% N/ v* E0 I8 Y0 E) G6 j 安卓手机一台(用于APP功能测试) . U+ O1 |6 F) R6 D3 ~( g/ g 接下来就上图吧!!9 O' Y0 l* Q1 ^. ?7 |0 s& m 7 K0 E3 Q3 g# N) a' O5 E6 o 这是发射端STM32F031K6 配置SPI和串口输出,方便调试# d& F9 W# n# h; T D7 X% W
& P& C' c2 Y ? @7 O5 k, v 使用内部晶振
SPI配置
: [8 ?) X% ]/ n+ M* _ 串口配置
0 r3 ?/ s1 b' ~& G- ~ 发射端实物图片' W* p, J8 I, x
- J# S( L5 N! S+ {& v 人体红外+2片串联的铁锂电池作为发射端的供电测试电源+一个LDO稳压电路(丑陋的转接板请忽悠了 )( |: _ O* v" X" [7 Z2 F; ?
& G8 X! p/ s1 X, ^# V
使用HC-SR501的输出端去开关发射端的供电,可以提高电池使用时间。如果人体红外传感器没被触发,发射机是断电状态。。。非常省电。。3 q) ?1 U1 v% B5 j Z2 c9 w$ [
6 e& u5 N' j: D" z# Y, N$ d 好了接下来是主角STM32L432KC 接收端的配置截图如下:: q$ }# Z. E4 Z- i9 p! W! i- n! m : ]- b! s: C6 W6 s" g! y; \ 用到了SPI3+串口1+串口2 还有输出GPIO开关蜂鸣器+ Z1 I+ l' M7 `8 s
使用内部晶振
SPI3 配置
串口1配置 DMA IDLE 接收和发送数据给蓝牙模块
串口2用于调试直接输出测试数据到电脑上
* |0 y, f' V9 M' Z7 z+ z; s/ W- y
好了,工程建好了,就开始调试程序。。。 NRF24L01 是非常普通的无线模块了。。这里就不再多介绍了。。。2 M2 L7 [3 z. F$ n$ F7 t' S& E 以下是调试过程的截图片段, o: z0 _" x( z- Q. Z/ x
- e! I/ |; D7 j+ R. y( @: @
7 S# e* ~0 o7 ` 程序都编译通过后,直接下载到发射端和接收端来验证吧。。- Q) J6 M; Y9 }, w ; T) X% L/ b* X% h6 ? 实体图片是必须要有的。。。。" H% \5 V. |3 ?
( @4 T6 [3 Q* Q5 I
% a- A# }5 A7 K2 {4 L
5 m! R; K5 s, Y( L# e2 f/ S* r! h, [
& N1 w6 s. }/ k5 j
, K0 e [/ }& k4 j/ c 好了。。。。亮点在这。、。 V9 {; C2 B/ y8 [: x, H 5 [! _- N/ V/ Y5 _0 c) Y3 |
+ Q$ A' z8 Y7 `& v% X% K8 x+ F# k
7 H4 p0 ^$ N) X: X( T' @8 @
好了这个项目就差不多完成了。。。, o# `. Z4 [, C/ s2 z ' f- p# W1 ? V 总结下: 这个项目功能比较简单,不过还是比较实用的。。。可改进的地方(例如:添加TFT显示提升主机的体验,有条件的可以给主控再添加PM2.5,温湿度等 外设更丰富这个项目的功能整合。)也可以添加Wifi 实现远程IOT控制等等。。。' @* B1 i2 Y ] 因为工作比较忙,这个项目弄的比较零散,不过整体框架基本完成。。软件调试也完成的大部分。。APP基本可以用了。等有时间继续优化。。。" M: L8 ]' Y. R + a1 ^) }1 X6 E; _5 W 9 R+ {. t$ a; L 希望大伙会喜欢。。。。。。 , u6 w- i' L- B2 X6 u: B* R |
STM32L4R9 QuadSPI Flash通讯速率优化解析 32位总线的DMA传输适配核心方案
【STEVAL-STWINKT1B评测】运行Datalog固件并记录运行时间
【STEVAL-STWINKT1B评测】数字麦/模拟麦对比测试+音频配套上位机软件开发
【板卡评测】STEVAL-STWINKT1B读取 ACC/GYRO/MAG 实时数据
小白也能明白的STM32的低功耗与唤醒机制
【STM32入门学习路径指南】(四步走)
STM32和Arduino对比,谁更耐打?
STM32系统中2种数据掉电保护的方法
STM32 LL为什么比HAL高效?
STM32小白入门指南:从基础到OTA实现方案
微信公众号
手机版
安卓手机APP就是用Java语言,这个其实也不难,做一些简单的,我现在就是会点皮毛
而且IDE里面还可以通过图形界面来进行控件布局,也是挺方便的
纯 C 语言 + 控件 编写估计是没有。。。
手机APP不会是用 Java 写的吧?" w2 V* w* I2 b P
有没有简单点的编译器,如像 LabWindows CVI 这种的,纯 C 语言 + 控件 编写,不需要在学习新的 语言 的 语法
LabWindows CVI 就是的,不过只能在 Windows 系统上运行,很期待 像他这样的能在 安卓 上运行的