本帖最后由 Paderboy 于 2016-11-18 23:40 编辑 这个是基于NUCLEO STM32L432KC作为主控的 小范围家用无线报警系统项目& q) b. k; Q5 b) i( Z2 Y& L8 P . `, L- m0 o, o. K1 X. w- O 整体的使用成本,还是很低的。。。用的模块都是市场上常见的产品。。 1.NUCLEO STM32L432KC作为主控 也就是接收端(接收无线数据),这里用到了市场广泛使用的NRF24L01模块作为发射和接收无线数据0 l, y' K% {( L 2.因为手头有NUCLEO STM32F031的开发板,(也可以使用其他STM32F0系列的或者STM8等等。。。)$ A5 t n: V% [- B) C# w" }8 Z1 a 所以这个项目就用了这个板子作为无线发射端 1 J2 I) q) x4 W" A. M O, e. ^" f 3.使用HC-SR501人体红外传感器模块(有进口和台产的,这个小项目用的是进口的,测试后效果不错,灵敏度很高), 使用HC-SR501的输出高电平去开启单片机供电回路,这样检测到有人的时间,模块默认发送报警信息。。% Q6 u+ c" ]9 o/ w. R 6 ~% {8 A& o( c- p 4.当STM32L432KC主控接收到无线报警信息后,自己判断是那个发射端的报警信息。。处理后,启动报警设备的同时,+ k3 C4 w& s, U% s 通过串口发送给蓝牙设备报警信息。。 5.如果手机APP端默认开启报警功能,这时就会通过震动和声音提示,有外人闯入设定的报警范围。。 同时可以通过手机APP查询报警区域 (例如.车库..)非常方便,可配置多发射端,只需要修改下不同发送端的识别ID就可以了。。! ]4 m+ p4 s: Q# T) a* _1 M - B7 c; X( [3 D. X+ V2 `6 z 6.可以通过APP解除报警(可关闭报警系统)和一个在主控的手动按键来解除报警状态。。9 C: B) ]; Q+ y( b& P* s5 J2 f! c 5 h3 D0 E: y8 w! B6 | 好的先介绍下主要的设备: $ F& R3 u7 B: U' j0 d2 ^8 N Q 1.STM32L432KC 开发板+ Y+ R w4 |. y& b 2.STM32F031K6 开发板 3.2xNRF24L01 无线模块 4.人体红外传感器HC-SR5015 |6 a; P* X8 ~; r( S 5.有源蜂鸣器 6.少许杜邦线 7.蓝牙模块2.1 8.发射端电源和触发电路2 E9 `7 S4 [ |; K" K" w6 Y/ z4 v% X c8 I1 P# P+ S9 E. k; B4 } 以下就是这个项目的流程图0 H+ ]) u! f3 R( i3 Y 开发平台:) M- H4 {; o7 |9 _& c% Z! f( O CubeMx+Keil5 不得不说,CubeMx用了以后会依赖啊。。变懒了。。。本项目都是使用Cube+HAL库实现的。。 测试工具:& J2 \1 a- b% E; [- d: X" e 串口助手(主要用于测试程序和调试的反馈)- F/ G! `* X; N# Z5 E 安卓手机一台(用于APP功能测试)9 i' P! A x' @ 接下来就上图吧!! 这是发射端STM32F031K6 配置SPI和串口输出,方便调试1 }: T1 {3 \8 M! ^ P5 A4 l# n 使用内部晶振- {' A' z/ ]: H3 b( q( | . |& W& v: W P9 {9 A Z SPI配置 1 I' @9 }! Q$ d 串口配置 发射端实物图片0 k( I, V$ R7 C3 K5 u7 b/ k 9 T/ R1 E" s/ I1 i4 ~ 人体红外+2片串联的铁锂电池作为发射端的供电测试电源+一个LDO稳压电路(丑陋的转接板请忽悠了) * v4 d0 S. D! {$ D) i , Y9 {: O! b( V; g t 使用HC-SR501的输出端去开关发射端的供电,可以提高电池使用时间。如果人体红外传感器没被触发,发射机是断电状态。。。非常省电。。 ) V' {; _5 M* x/ Y, d 好了接下来是主角STM32L432KC 接收端的配置截图如下:* x/ p+ L6 k- O2 e$ k 6 `# o) S* D; \8 t9 N" g' A 用到了SPI3+串口1+串口2 还有输出GPIO开关蜂鸣器 3 `8 O! _, k$ b7 Q8 R$ T8 u 使用内部晶振 4 G# u6 c' b# T0 M" Y SPI3 配置 串口1配置 DMA IDLE 接收和发送数据给蓝牙模块 # S* a& r/ k, A- a0 X. ?6 p5 T, R 串口2用于调试直接输出测试数据到电脑上 8 m& `( `. R+ ^% L, J 好了,工程建好了,就开始调试程序。。。 NRF24L01 是非常普通的无线模块了。。这里就不再多介绍了。。。2 b0 [. \ |. J$ ]' _0 S 以下是调试过程的截图片段9 `: ^0 U9 Q! Z( l6 ? 8 ?4 O* O8 ?" R2 c* Y" E1 u/ G4 f5 ~ - B G# M- f7 P 7 O/ J: W! W/ K* R0 b. _( o, O 程序都编译通过后,直接下载到发射端和接收端来验证吧。。 实体图片是必须要有的。。。。 7 F) U$ M7 T2 N5 c0 J% b' { ! f/ C8 W( ` D$ h 3 l U+ O, I: j1 b , |: D @, ^8 m1 D0 n - y( q: x" w( k 3 ?; X) j0 o% _5 M- k # d8 @: O- v, [: E 好了。。。。亮点在这。、。 8 T3 O7 u3 J( C. m Q# _$ M 8 }2 l3 ?2 D% u' S 4 h; d x2 a1 A0 E1 M$ A 9 v# J, W) U7 o6 N6 e( e' x# u 好了这个项目就差不多完成了。。。 T) {. Z, L) E- s 0 ]- |' y( O/ m- k4 g* J 总结下:/ A' b6 {+ o" ~" P: J 这个项目功能比较简单,不过还是比较实用的。。。可改进的地方(例如:添加TFT显示提升主机的体验,有条件的可以给主控再添加PM2.5,温湿度等 外设更丰富这个项目的功能整合。)也可以添加Wifi 实现远程IOT控制等等。。。- I% _. ]& r& s: T% ? 因为工作比较忙,这个项目弄的比较零散,不过整体框架基本完成。。软件调试也完成的大部分。。APP基本可以用了。等有时间继续优化。。。5 a2 H" `3 b0 [: R5 T- h* w . a* x/ k7 }& }0 z ) r6 t* Y, S3 a: O- j+ A% L 希望大伙会喜欢。。。。。。- Y: l; |9 A' h$ C2 S# H , w9 T* w9 Q6 q5 | u+ B0 j |
基于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里面还可以通过图形界面来进行控件布局,也是挺方便的/ Q# j* T8 {8 r4 Q" V2 \& r+ I
纯 C 语言 + 控件 编写估计是没有。。。
多谢多谢
手机APP不会是用 Java 写的吧?& O+ m6 H4 Q- t4 ]6 J
有没有简单点的编译器,如像 LabWindows CVI 这种的,纯 C 语言 + 控件 编写,不需要在学习新的 语言 的 语法
LabWindows CVI 就是的,不过只能在 Windows 系统上运行,很期待 像他这样的能在 安卓 上运行的
那都有你啊。。。
thx