
本帖最后由 Paderboy 于 2016-11-18 23:40 编辑 7 H3 I" q; s% X( D 这个是基于NUCLEO STM32L432KC作为主控的 小范围家用无线报警系统项目 ! b+ G# j" q9 d! x & j" t/ w. z* k+ X( J1 ?4 s) ~9 e% E ![]() $ B! u7 r, j, r1 ^! [ 5 q% y7 N# D' |9 z2 t3 g/ K# j 整体的使用成本,还是很低的。。。用的模块都是市场上常见的产品。。1 e* v, `- ?9 B( [3 }9 Z0 ? ) E9 O: W: u% @- o4 V" @ 1.NUCLEO STM32L432KC作为主控 也就是接收端(接收无线数据),这里用到了市场广泛使用的NRF24L01模块作为发射和接收无线数据 9 ]5 K/ y( K l/ }' q 2.因为手头有NUCLEO STM32F031的开发板,(也可以使用其他STM32F0系列的或者STM8等等。。。) 所以这个项目就用了这个板子作为无线发射端5 @+ c1 j; O, \5 C8 @ 3.使用HC-SR501人体红外传感器模块(有进口和台产的,这个小项目用的是进口的,测试后效果不错,灵敏度很高),2 S2 p9 J! @1 O2 x2 C0 b 使用HC-SR501的输出高电平去开启单片机供电回路,这样检测到有人的时间,模块默认发送报警信息。。 ) w) e6 q* k, ^ 4.当STM32L432KC主控接收到无线报警信息后,自己判断是那个发射端的报警信息。。处理后,启动报警设备的同时,5 v/ Z+ ~7 `" n 通过串口发送给蓝牙设备报警信息。。' m4 j+ y3 A/ E; R4 p 2 Q1 S! k* [0 v) ?, ` 5.如果手机APP端默认开启报警功能,这时就会通过震动和声音提示,有外人闯入设定的报警范围。。 同时可以通过手机APP查询报警区域8 J, L1 L( \- C6 b. p (例如.车库..)非常方便,可配置多发射端,只需要修改下不同发送端的识别ID就可以了。。 # ~2 d- i8 B1 }0 m 6.可以通过APP解除报警(可关闭报警系统)和一个在主控的手动按键来解除报警状态。。 D) l; i& n# e5 Z9 z* ?% r$ ~ 好的先介绍下主要的设备: 1.STM32L432KC 开发板 2.STM32F031K6 开发板4 U' T+ _* L! c% X4 s6 Q( v) e 3.2xNRF24L01 无线模块 4.人体红外传感器HC-SR501 5.有源蜂鸣器# v" c: ~3 @ V' y9 M5 U 6.少许杜邦线 7.蓝牙模块2.1 8.发射端电源和触发电路 & Q K' q: i: v* l+ P2 ^ 以下就是这个项目的流程图4 T, N6 ^/ n6 k8 s- \9 p ![]() 开发平台: CubeMx+Keil5 不得不说,CubeMx用了以后会依赖啊。。变懒了。。 ![]() 7 x. N( M$ J# S& I0 E 测试工具: 串口助手(主要用于测试程序和调试的反馈)7 Y* j& N. u8 ` N8 z 安卓手机一台(用于APP功能测试)+ W+ r% O5 L/ `& K6 b 接下来就上图吧!!6 `* ?+ p" H- {2 J1 V $ Z2 o0 L/ j8 o. I/ Z6 c& @ 这是发射端STM32F031K6 配置SPI和串口输出,方便调试 h7 o8 t% N* c! d: A/ v. W ![]() 使用内部晶振# |5 w1 w0 ^8 A5 k" u$ P, l ![]() SPI配置: L# I" d( B7 |& _! w, X ![]() 串口配置* s7 \) f8 J( U$ J: p% z1 I ![]() 发射端实物图片 ![]() $ y9 y/ [1 ]4 G: N7 C% S3 C 人体红外+2片串联的铁锂电池作为发射端的供电测试电源+一个LDO稳压电路(丑陋的转接板请忽悠了 ![]() ![]() ![]() 使用HC-SR501的输出端去开关发射端的供电,可以提高电池使用时间。如果人体红外传感器没被触发,发射机是断电状态。。。非常省电。。2 |( J F5 z' z0 e8 ^/ b4 W; [ ![]() ; K1 q, ^+ u$ _) C0 ]( n3 K. V5 n$ [ 好了接下来是主角STM32L432KC 接收端的配置截图如下: 0 B1 C4 [6 b; `6 J u 用到了SPI3+串口1+串口2 还有输出GPIO开关蜂鸣器 ![]() . k$ z) M! X% n- Q) |" K 使用内部晶振 ![]() SPI3 配置$ [& h1 ]1 R- w6 g- Z8 @ ![]() 串口1配置 DMA IDLE 接收和发送数据给蓝牙模块 ![]() ![]() 5 B! J/ \ z# A/ X+ }. ^$ @ 串口2用于调试直接输出测试数据到电脑上2 [4 Q& q' j( g* Y: `0 ~ ![]() ![]() 好了,工程建好了,就开始调试程序。。。 NRF24L01 是非常普通的无线模块了。。这里就不再多介绍了。。。 以下是调试过程的截图片段: ~: \ I# f& I ![]() ![]() # _9 m. ]# U$ f4 i! Q ![]() ![]() 4 x2 k5 i, q0 \4 z% ?6 l- D; Z+ R 程序都编译通过后,直接下载到发射端和接收端来验证吧。。 实体图片是必须要有的。。。。$ x) c/ Z. ]* d( R; d* s+ L ![]() ![]() . M/ k" i0 a3 H ![]() $ V4 ]/ U* c+ q$ F4 `) ^ ![]() " ~, C9 ]- W: P3 ~" W ![]() ![]() " m, G W8 ^% C1 e" K3 } ![]() ![]() , ~ g8 ~' [$ G( i& l) P" y ( P) t( v( ?# r; L& U( C) ` 好了。。。。亮点在这。、。 ' M% m) B( b8 ~6 d z/ t 6 t# S& C. j5 W$ [ ![]() ![]() z5 F4 C& s* M ![]() 好了这个项目就差不多完成了。。。5 ^ a: p) }& T 9 i O; W) M, v$ i, Z. r. T# ]2 V 总结下:7 x2 J" Y" f: F, H+ x 这个项目功能比较简单,不过还是比较实用的。。。可改进的地方(例如:添加TFT显示提升主机的体验,有条件的可以给主控再添加PM2.5,温湿度等9 y0 d+ {8 k1 B0 ^0 T% O4 V5 _ 外设更丰富这个项目的功能整合。)也可以添加Wifi 实现远程IOT控制等等。。。( A9 _" x) W, r5 w 因为工作比较忙,这个项目弄的比较零散,不过整体框架基本完成。。软件调试也完成的大部分。。APP基本可以用了。等有时间继续优化。。。 ^% P! b( J( g8 ^ , B$ E/ ?8 _4 T" ~% v6 b 希望大伙会喜欢。。。。。。1 ?" x/ H7 u6 P5 M4 ]+ O( s |
STM32如何分配原理图IO
【实测教程】STM32CubeMX-STM32L4之研究(ADC)
【STWINKT1B评测】2.初步测试IIS3DWB振动传感器
【圣诞专享活动】使用TouchGFX做GUI显示:圣诞快乐&Merry Christmas!
串口通信波特率异常的解决办法
【STWINKT1B 评测】6. NanoEdge AI 音频分类器 (2)
【STWINKT1B 评测】5. NanoEdge AI 音频分类器 (1)
STWINKT1B评测】4.测试板载ISM330DHCX(6轴)
【STWINKT1B评测】-03-CoreMark跑分测试
【STWINKT1B评测】-02-串口-定时器LED灯测试
安卓手机APP就是用Java语言,这个其实也不难,做一些简单的,我现在就是会点皮毛
而且IDE里面还可以通过图形界面来进行控件布局,也是挺方便的% w( n6 Q& J* Q
纯 C 语言 + 控件 编写估计是没有。。。
手机APP不会是用 Java 写的吧?0 I, x7 T$ j" Y! R/ T& v7 B
有没有简单点的编译器,如像 LabWindows CVI 这种的,纯 C 语言 + 控件 编写,不需要在学习新的 语言 的 语法
LabWindows CVI 就是的,不过只能在 Windows 系统上运行,很期待 像他这样的能在 安卓 上运行的