找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 41703|回复: 51
收起左侧

极客DIY:自制诡异的人体红外感应灯

  [复制链接]
ID:99556 发表于 2015-12-19 18:34 | 显示全部楼层 |阅读模式
放假回家了,基本上都是一个人在家,晚上除了自己的房间有光,其他房间都是黑漆漆的,每当要去客厅接水喝,走到门口时都有种恐怖的感觉……

于是想到很久以前用89C52做的人体红外感应灯,从柜子里翻出来看了看,LED什么的都拆了,但是人体红外感应模 块还在,89C52的最小系统也是完整的,反正51单片机现在不用以后也用不到了,于是就开干,把这个人体红外感应等做完整,正好也复习(学习)一下51单片机的玩法。

第一部分 原理图设计

这就是板子原本的样子。其实这是我当年自己焊的第一块板子,背后太难看就不拍了。

然后这就是STM89C52,注意方向哦,认真看图能发现上面是有个半圆弧的缺口的,他朝上。

然后基于目前的板子来设计电路图吧。

首先我们要知道89C52封装后的引脚和原理图中标的是不同的,所以看89C52的引脚图。

结合图看到我们人体红外传感器离P2.0这个IO口很近,于是决定把P2.0口作为输入口。

51单片机需要最小系统才能正确运行,所以我们是来了解一下,虽然板子上已经焊好了。

打开Proteus,开始设计原理图。

这就是最基本的电路了。XTAL1和XTAL2这一部分是时钟电路,RST接出去的就是复位电路。

复位电路很好理解,就是按一下就复位嘛,51单片机是高电平复位,所以平时应该要通过下拉电阻下拉,保证平时是低电平,那个10K的电阻一头接地一头接RST,所以他就是下拉电阻了。

可能没玩过51单片机的同学不清楚时钟电路是什么回事,时钟电路就是产生象时钟一样准确的振荡电路。震荡电路就相当于我们的心脏,他要按一定的频率跳动我们才能活。另外时钟电路就像是我们做广播体操一样,需要提供一个节拍,我们每个人跟着节拍做才能做整齐,而这个节拍就是单片机心脏跳动的频率。

我们平时玩Arduino时并不用关心振荡电路或者复位电路,因为板子上已经都设计好了,比如我的UNO就是16MHz的晶振,并且AVR单片机可以使用内部的晶振。而51单片机没有内部晶振,必须要使用外部晶振。

另外可以看到图上EA口接了高电平,EA为片外程序存储器选择输入端,低电平时,使用片外程序存储器;高电平时,使用片内程序存储器。当然我们就是使用片内程序存储器咯。

这样连接好单片机最基本的电路就完成了,烧上程序供电就能运行了。

在我们编程之前,先把电路设计完整。

这里我们加了2部分。

第一部分就是P2.0的输入,由于没有人体红外传感器的仿真模块,就用一个按钮来代替。我们的人体红外传感器使用的是HC-SR501,根据文档我们可以知道当感应到有人时,OUT引脚是置为高电平3.3V的。在51中,或者Arduino中,单片机系统使用5V作为高电平时,3.3V也是算作高电平的。

第二部分就是LED啦。电阻是作为限流用的,防止电流过大烧坏LED或者单片机,我这里使用了玩Arduino都陪的220欧电阻,当然可以小一点,也可以大一点,只不过太小了起不到限流的作用,太大了虽然对硬件没有损坏但是亮度就太小了。

第二部分 程序设计

直接上程序。


这样就是最简易的代码了,大家应该都有C语言基础就不用讲太细了。P1,P2都是“reg51.h”里面定义了的,直接拿来用就行了。sbit是位定义,我们定义了“in”为P2.0这个引脚。P1我们没有单独定义每个引脚,因为我们可以直接将所有P1的端口置0或者置1。延时函数大家都能理解嘛,执行空循环浪费时间就行了。而while(1){}就相当于Arduino的loop(){}。

这里我们只要判断,P2.0口如果是高电平,那么就把P1口设置为0,即低电平,延时1000毫秒,再将P1口设置为1,即高电平。当然,真正使用时延时1秒肯定不够,我最后设置的是60秒。

第三部分 仿真

Proteus有仿真功能,加载Keil C生成的HEX文件,然后点击左下角的运行仿真即可。

这样就开始仿真了,然后点击P2.0口的按钮。

按下按钮后对比发现LED亮了,并且延时约1秒后又熄灭了,说明程序正确执行了。

第四部分 动手开工

先来把程序烧录上。记得把延时程序改成60秒哦。

通过USB2TTL,RX,TX反接。

按通常的烧录方法就行了。

然后上电烙铁,对照原理图设计电路图。因为这个原理图很简单,直接在大脑里就能画出电路图。如果复杂了,还是先把电路图设计好再焊接。

我一直记得我有白光LED,但是找来找去都没有找到,翻了翻淘宝发现真的是我记错了,于是我就用2个红色LED和2个蓝色LED来代替了。

注意LED的导线,由于要安装在不同的位置所以导线也不一样长,这个要根据自身情况而定。

要说的就是我把面包版的电源模块拿来用了,又可以用电池又可以通过USB用移动电源。

然后开始部署,我是用透明胶固定导线。想到拆的时候会留胶,所以没粘很多,看起来不太美观。

正好我门口对面就有个平台可以放。然后需要调节下传感器的感知距离,我调到最低的,反正完全够用了。

第五部分 使用测试

好不容易等到了晚上,可以测试了。

先打开电源,单片机运行,感受到了我的人体红外,灯亮。于是我进房间,留下一条门缝,一分钟左右灯熄灭了,于是我拉开门,灯又一下亮了起来。程序是没问题,单片机能正确运行。蛋似!光线真的太弱了。虽然我们看得到,但是本来就弱的光线,还是红色和蓝色的,这氛围更加诡异了……

这是什么!瞬间有种进了鬼屋的感觉啊!吓死本宝宝了!

我觉得还是早睡早起好!

第六部分 总结

如果真的要做的话,还是卖个大功率白光LED吧,有条件的同学还可以继电器加电灯。

最后附上所有资料的下载。

*本文作者:zhangtory

人体红外感应灯.zip

42.91 KB, 下载次数: 379, 下载积分: 黑币 -5

回复

使用道具 举报

ID:79544 发表于 2015-12-20 13:41 | 显示全部楼层
好的创意加上喇叭做防盗用也行。
回复

使用道具 举报

ID:118397 发表于 2016-5-4 17:31 | 显示全部楼层
楼主写的很详细
回复

使用道具 举报

ID:120517 发表于 2016-5-17 19:03 | 显示全部楼层
感谢分享!!!
回复

使用道具 举报

ID:123916 发表于 2016-5-30 12:32 | 显示全部楼层
非常有用,论坛下载了几个都是广告
回复

使用道具 举报

ID:123916 发表于 2016-5-30 12:33 | 显示全部楼层
黑币不够。。。好尴尬
回复

使用道具 举报

ID:125140 发表于 2016-6-4 23:06 | 显示全部楼层
楼主,用你那个程序  输入在P2.0口为什么灯会感应亮了灭了后会自己又亮一次?
回复

使用道具 举报

ID:117047 发表于 2016-6-5 09:20 | 显示全部楼层
不错的分享,支持!!
回复

使用道具 举报

ID:43600 发表于 2016-6-25 23:01 | 显示全部楼层
那个 PIR 模组本身就有调整延长时间的VR,不必用MCU来处理,板主做法似乎杀鸡用牛刀。
回复

使用道具 举报

ID:140711 发表于 2016-9-28 09:33 | 显示全部楼层
传感器那部分怎么处理?
回复

使用道具 举报

ID:140711 发表于 2016-9-28 09:39 | 显示全部楼层
黑币不够,新人怎么获取黑币?
回复

使用道具 举报

ID:171205 发表于 2017-3-16 13:40 来自手机 | 显示全部楼层
可是我也按照你写的程序写了呀,怎么实现不了,我的灯是常亮的
回复

使用道具 举报

ID:171205 发表于 2017-3-16 13:41 来自手机 | 显示全部楼层
这是我的连接图,我用的是stc89c52的
回复

使用道具 举报

ID:183041 发表于 2017-3-24 12:28 | 显示全部楼层
好好看下,谢谢分享
回复

使用道具 举报

ID:174491 发表于 2017-3-26 10:29 | 显示全部楼层
谢谢分享!!!!
回复

使用道具 举报

ID:195138 发表于 2017-4-30 23:41 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

ID:195898 发表于 2017-5-3 18:58 | 显示全部楼层
很详细,就是蓝光直看刺眼
回复

使用道具 举报

ID:184914 发表于 2017-5-6 18:19 | 显示全部楼层
可以可以
回复

使用道具 举报

ID:212149 发表于 2017-7-1 15:00 | 显示全部楼层
感谢分享正好用到
回复

使用道具 举报

ID:91691 发表于 2017-7-1 15:55 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

ID:98122 发表于 2017-7-16 12:15 | 显示全部楼层
人体红外感应器外加三极管直接就可以驱动继电器,LED了,
回复

使用道具 举报

ID:260637 发表于 2017-12-19 11:10 | 显示全部楼层
用单片机控制a/d采样人体红外信号该怎么实现呢?
回复

使用道具 举报

ID:264326 发表于 2017-12-20 16:51 | 显示全部楼层
楼主你的proteus汉化版哪里下的
回复

使用道具 举报

ID:227460 发表于 2018-1-4 22:46 | 显示全部楼层
怎么我仿真的时候没有反应?
回复

使用道具 举报

ID:253767 发表于 2018-1-5 07:28 | 显示全部楼层
为新手周到服务,赞一个
回复

使用道具 举报

ID:272625 发表于 2018-1-20 22:13 | 显示全部楼层
编译有一个错误不通过,如图所示:还有楼主仿真图里的R7是干吗用的?
有在一个错误.jpg
回复

使用道具 举报

ID:251714 发表于 2018-2-4 23:03 | 显示全部楼层
程序里没  有传感器的部分吧
回复

使用道具 举报

ID:225105 发表于 2018-2-28 10:57 来自手机 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

ID:206424 发表于 2018-3-11 23:30 | 显示全部楼层
楼主写的很详细,受益匪浅呀
回复

使用道具 举报

ID:101105 发表于 2018-3-12 14:38 来自手机 | 显示全部楼层
hclin 发表于 2016-6-25 23:01
那个 PIR 模组本身就有调整延长时间的VR,不必用MCU来处理,板主做法似乎杀鸡用牛刀。

同意,用单片机和没用单片都一样的功能
回复

使用道具 举报

ID:272796 发表于 2018-4-1 21:36 | 显示全部楼层
楼主我按照你说的做了一遍仿真,发现达不到和你一样的效果,一运行程序仿真灯就亮,按下按钮没反应,检查好多次了,没错误呀!
回复

使用道具 举报

ID:272796 发表于 2018-4-1 22:10 | 显示全部楼层
为什么运行程序仿真灯就亮了,都还没按按钮,而且按了按钮也没什么反应,没达到楼主说的功能,我是下载你的程序烧入的
回复

使用道具 举报

ID:314921 发表于 2018-4-25 17:14 来自手机 | 显示全部楼层
827254237 发表于 2016-6-4 23:06
**** 作者被禁止或删除 内容自动屏蔽 ****

为什么?
回复

使用道具 举报

ID:314921 发表于 2018-4-25 17:16 来自手机 | 显示全部楼层
为什么烧好程序后,连接电源,灯一亮一灭?
回复

使用道具 举报

ID:314921 发表于 2018-4-26 17:48 来自手机 | 显示全部楼层
wodecuo 发表于 2018-4-25 17:16
为什么烧好程序后,连接电源,灯一亮一灭?

EA没接高电平;在EA接完高电平后,再次测试成功了。
回复

使用道具 举报

ID:455251 发表于 2018-12-28 08:50 | 显示全部楼层
受教了,非常感谢楼主!
回复

使用道具 举报

ID:456618 发表于 2018-12-28 10:19 | 显示全部楼层
仿真是有问题的
回复

使用道具 举报

ID:456618 发表于 2018-12-28 10:40 | 显示全部楼层
1677844682 发表于 2018-4-1 21:36
楼主我按照你说的做了一遍仿真,发现达不到和你一样的效果,一运行程序仿真灯就亮,按下按钮没反应,检查好 ...

我的也是,应该是楼主代码问题
回复

使用道具 举报

ID:285732 发表于 2019-1-28 16:19 | 显示全部楼层

好好看下,谢谢分享
回复

使用道具 举报

ID:285175 发表于 2019-2-14 13:21 | 显示全部楼层
都市郎 发表于 2018-1-20 22:13
编译有一个错误不通过,如图所示:还有楼主仿真图里的R7是干吗用的?

延时函数最后一句少了个;分号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表