|
本帖最后由 Paderboy 于 2016-11-18 23:40 编辑 这个是基于NUCLEO STM32L432KC作为主控的 小范围家用无线报警系统项目 . o7 M$ N: z5 @% c1 \
* Z0 l" O$ M7 ^2 D$ N* t5 } 整体的使用成本,还是很低的。。。用的模块都是市场上常见的产品。。 1.NUCLEO STM32L432KC作为主控 也就是接收端(接收无线数据),这里用到了市场广泛使用的NRF24L01模块作为发射和接收无线数据. }& w8 x1 S) x6 M 2.因为手头有NUCLEO STM32F031的开发板,(也可以使用其他STM32F0系列的或者STM8等等。。。) 所以这个项目就用了这个板子作为无线发射端 - j+ z9 b& c; @ _3 q* Q0 R 3.使用HC-SR501人体红外传感器模块(有进口和台产的,这个小项目用的是进口的,测试后效果不错,灵敏度很高), 使用HC-SR501的输出高电平去开启单片机供电回路,这样检测到有人的时间,模块默认发送报警信息。。1 |: c |6 H5 N/ ? 5 p% @- Y7 ~* y 4.当STM32L432KC主控接收到无线报警信息后,自己判断是那个发射端的报警信息。。处理后,启动报警设备的同时,3 `: ]$ x% x+ E0 q* I+ h9 S* l% G3 i 通过串口发送给蓝牙设备报警信息。。 , o$ ?% _0 c! z+ ] 5.如果手机APP端默认开启报警功能,这时就会通过震动和声音提示,有外人闯入设定的报警范围。。 同时可以通过手机APP查询报警区域& w0 }8 r0 t. {/ U (例如.车库..)非常方便,可配置多发射端,只需要修改下不同发送端的识别ID就可以了。。 6.可以通过APP解除报警(可关闭报警系统)和一个在主控的手动按键来解除报警状态。。 . k. p; ~9 l7 i% b4 L. n- K 1 ]- H+ O. e# H' m- g9 w) s 好的先介绍下主要的设备: 9 Y/ A1 H# K C B: k 1.STM32L432KC 开发板 2.STM32F031K6 开发板 3.2xNRF24L01 无线模块* Q' V+ q) J6 c; E7 k7 N 4.人体红外传感器HC-SR501 5.有源蜂鸣器 6.少许杜邦线 7.蓝牙模块2.1 X3 I' r m& C" ?, p- S% s 8.发射端电源和触发电路 6 E" j' F2 k% f 以下就是这个项目的流程图 `& ^4 T i U# E& B ' g. q9 I/ p: i g. c! i
开发平台: CubeMx+Keil5 不得不说,CubeMx用了以后会依赖啊。。变懒了。。 。本项目都是使用Cube+HAL库实现的。。0 j* p* b l' G, T7 W( O, L/ J! J+ ~! q/ A! X8 G; a 测试工具: 串口助手(主要用于测试程序和调试的反馈)# r+ s. V' N0 a' x! {3 ? 安卓手机一台(用于APP功能测试) m# Q- W. o% P" h/ W5 b0 F 接下来就上图吧!!1 y" g; N: x" l; C; Z0 }& G3 \0 n 这是发射端STM32F031K6 配置SPI和串口输出,方便调试
使用内部晶振# i2 }2 D. _ Z4 e8 r8 l
1 u6 b6 U; V0 A2 o SPI配置/ ~' {: l$ M8 p, y' m8 l
串口配置, ~3 k4 Y, M" D8 S/ Z) z7 p/ L
发射端实物图片
人体红外+2片串联的铁锂电池作为发射端的供电测试电源+一个LDO稳压电路(丑陋的转接板请忽悠了 )
; w& W$ M+ r9 C3 G- n
1 ? k; ]1 _' q 使用HC-SR501的输出端去开关发射端的供电,可以提高电池使用时间。如果人体红外传感器没被触发,发射机是断电状态。。。非常省电。。
好了接下来是主角STM32L432KC 接收端的配置截图如下: : _. R; b6 [3 k7 X 用到了SPI3+串口1+串口2 还有输出GPIO开关蜂鸣器
使用内部晶振
SPI3 配置( E2 E: y8 [8 ^
串口1配置 DMA IDLE 接收和发送数据给蓝牙模块7 F7 Z1 n+ [) `
( e4 X, r5 O: d5 q0 ~. e! Y 串口2用于调试直接输出测试数据到电脑上; Q: l) E; A8 M9 [" V: B
! T8 A' |+ V! }- Z$ s, v
好了,工程建好了,就开始调试程序。。。 NRF24L01 是非常普通的无线模块了。。这里就不再多介绍了。。。 以下是调试过程的截图片段
( F1 A4 \. A h: ~0 `5 n; b
3 @+ O6 }6 n; D
) L% q8 g% P5 N% c+ ^3 E8 D 程序都编译通过后,直接下载到发射端和接收端来验证吧。。 实体图片是必须要有的。。。。7 ~( n4 u9 J! g. O. r% D
/ G" ?/ t8 M' P; w" y! ^, M6 [" l' @
0 T, c6 ~6 ~+ f R: v! M1 \9 s ! M D. g+ r4 C9 y Y+ ` 好了。。。。亮点在这。、。 . }6 J4 v1 l5 a5 r $ u5 |" W! {6 v
1 O9 h; s0 V5 a5 E0 t) \: ?
好了这个项目就差不多完成了。。。7 I! Z X" {( u1 K+ i 4 r6 V9 {* b, M 总结下:+ }+ ~8 P O7 X/ a% Y- k 这个项目功能比较简单,不过还是比较实用的。。。可改进的地方(例如:添加TFT显示提升主机的体验,有条件的可以给主控再添加PM2.5,温湿度等 外设更丰富这个项目的功能整合。)也可以添加Wifi 实现远程IOT控制等等。。。 因为工作比较忙,这个项目弄的比较零散,不过整体框架基本完成。。软件调试也完成的大部分。。APP基本可以用了。等有时间继续优化。。。; {8 T; G8 Y7 t5 l 希望大伙会喜欢。。。。。。 9 s7 c" P0 @! ^* i& Z$ ?; D |
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 写的吧?
有没有简单点的编译器,如像 LabWindows CVI 这种的,纯 C 语言 + 控件 编写,不需要在学习新的 语言 的 语法
LabWindows CVI 就是的,不过只能在 Windows 系统上运行,很期待 像他这样的能在 安卓 上运行的