本帖最后由 Paderboy 于 2016-11-18 23:40 编辑 " p! w4 b: H7 a' X. e$ v0 w 这个是基于NUCLEO STM32L432KC作为主控的 小范围家用无线报警系统项目0 _9 {$ H; n' Z' r % A. }5 ? W- v) f* Y + d2 t3 C: ~, t" b# P+ K 整体的使用成本,还是很低的。。。用的模块都是市场上常见的产品。。/ {) s: W( I! {" [+ M 1.NUCLEO STM32L432KC作为主控 也就是接收端(接收无线数据),这里用到了市场广泛使用的NRF24L01模块作为发射和接收无线数据4 M, p1 I" D" m( B# d 2.因为手头有NUCLEO STM32F031的开发板,(也可以使用其他STM32F0系列的或者STM8等等。。。)6 T: @# ?/ ^ t- Q. [( O 所以这个项目就用了这个板子作为无线发射端; l6 V: E+ o, G/ D6 J$ t( G 3.使用HC-SR501人体红外传感器模块(有进口和台产的,这个小项目用的是进口的,测试后效果不错,灵敏度很高), 使用HC-SR501的输出高电平去开启单片机供电回路,这样检测到有人的时间,模块默认发送报警信息。。, g4 ^& I- w5 \9 S 3 d a J; @, P6 e 4.当STM32L432KC主控接收到无线报警信息后,自己判断是那个发射端的报警信息。。处理后,启动报警设备的同时,; P5 I8 L# x5 C. ~. h& c, T 通过串口发送给蓝牙设备报警信息。。 ; 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 1.STM32L432KC 开发板9 u5 e! n! M5 Y+ O 2.STM32F031K6 开发板 3.2xNRF24L01 无线模块 4.人体红外传感器HC-SR501 5.有源蜂鸣器 6.少许杜邦线 7.蓝牙模块2.1 8.发射端电源和触发电路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 开发平台: CubeMx+Keil5 不得不说,CubeMx用了以后会依赖啊。。变懒了。。。本项目都是使用Cube+HAL库实现的。。 . {* 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 接下来就上图吧!! : f; X- X" e$ O0 K# m+ G, Y 这是发射端STM32F031K6 配置SPI和串口输出,方便调试 % p _2 `4 i7 d9 g! { 使用内部晶振 SPI配置 7 \/ ]# m' D9 }$ v' n# i 串口配置) _9 n+ G5 G# E2 W z9 k {* J% k- {" {- f# e9 d8 y. m 发射端实物图片 ' s c1 R- `2 x- ~ 人体红外+2片串联的铁锂电池作为发射端的供电测试电源+一个LDO稳压电路(丑陋的转接板请忽悠了) 9 r: f( n& l# } 使用HC-SR501的输出端去开关发射端的供电,可以提高电池使用时间。如果人体红外传感器没被触发,发射机是断电状态。。。非常省电。。2 b/ p# e! \' Y X 好了接下来是主角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 2 D- I) Q# Z2 i 使用内部晶振 + M# V8 B+ ^) b3 ]. r$ ?5 f W SPI3 配置 串口1配置 DMA IDLE 接收和发送数据给蓝牙模块 p* n' X1 ]* L/ @7 R \! u ; B% H$ a* c/ K8 D9 A 串口2用于调试直接输出测试数据到电脑上 , E a( t- w0 b5 z0 w/ u) W2 r 好了,工程建好了,就开始调试程序。。。 NRF24L01 是非常普通的无线模块了。。这里就不再多介绍了。。。! `! D1 j% K, F, {; q3 F! m- X" b) V 以下是调试过程的截图片段. X0 G. G8 S% E) }' f% d " { b+ t% L3 \$ ~/ X " s3 W* w9 Q- `9 m! E% v/ U 程序都编译通过后,直接下载到发射端和接收端来验证吧。。 ) H6 v, c5 o$ z# L q4 \( H 实体图片是必须要有的。。。。" ?# T; {+ D6 y8 j3 |0 o: d $ h# z4 D8 y3 n0 }# [ ' T2 R' p2 t" M # k+ D& A6 m' m6 r d8 w& ?4 s) x! t' q9 g ! x+ W' c2 m J( M 好了。。。。亮点在这。、。; k0 A( d0 H# z- ` - F' f; A1 [6 i1 r ( m% g1 | a4 n2 S , |0 J$ _. j6 d4 f 2 B+ Y6 H9 X+ h% g, l % }- }+ n8 o6 M* w" F! _ 好了这个项目就差不多完成了。。。 0 _- w2 ?, {3 j Y 总结下: 这个项目功能比较简单,不过还是比较实用的。。。可改进的地方(例如:添加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基本可以用了。等有时间继续优化。。。 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 |
基于STM32L476+64M QSPI接口PSRAM(IPS6404L)开源分享(含源码)
基于STM32L4R9 的QuadSPI Flash 通讯速率不理想经验分享
STM32L4超低功耗功能概述
基于STM32L431RC Standby和RTC中断唤醒经验分享
基于STM32L431的睡眠模式经验分享
STM32L4R9 的 QuadSPI Flash 通讯速率不理想
STM32L4、STM32L4+和STM32G4系列 微控制器上的专利代码读取保护
STM32L433在STOP模式USART不能工作的解决办法
【实测教程】基于STM32L4系列的实测教程分享合集
STM32L4系列MCU的五种振荡器和使用说明
安卓手机APP就是用Java语言,这个其实也不难,做一些简单的,我现在就是会点皮毛
而且IDE里面还可以通过图形界面来进行控件布局,也是挺方便的1 g/ k3 u# ~2 k5 s1 \1 A4 M
纯 C 语言 + 控件 编写估计是没有。。。
多谢多谢
手机APP不会是用 Java 写的吧?
有没有简单点的编译器,如像 LabWindows CVI 这种的,纯 C 语言 + 控件 编写,不需要在学习新的 语言 的 语法
LabWindows CVI 就是的,不过只能在 Windows 系统上运行,很期待 像他这样的能在 安卓 上运行的
那都有你啊。。。
thx