假如你没有床头灯,而灯的开关在离床有一段距离的地方,但是你已经挂上蚊帐,外界天气甚凉,如果可以在床上控制灯的亮灭那就好了,于是就想到了用手机蓝牙控制日光灯了~~~
上面是题外话哈,做了一个蓝牙无线控制装置,全过程都很简单,初学者一学就会(我就是个初学者),就利用这轻薄的单片机知识做了个简单的控制。下面介绍下材料哈。
继电器(5V)、三极管(8550)、二极管、LED*2
5V小型开关电源(手机充电器里边拆吧,我就是这么干的)
蓝牙无线串口(我这里用的是HC-05一般20元一块、可重复利用)
单片机(型号不限,我这里用的是8脚的STC15f104e~好坑的单片机~)
1K欧姆电阻*2
开始玩的时候是打算用单片机的串口接受数据来判断灯的亮灭的,这个无疑很明智,但是! 该单片机(15F104e)并不带有硬件串口,有点费解,好吧没有硬件串口就自己模拟串口通信呗,有突发了奇怪的事情,该单片机的外部中断有BUG(时行时不行),因为开始不知道~~~后来的后来我就知道了,对该单片机说了句呵呵(我将程序烧入几片都是这个情况),那没办法了,手头上只有这一个8脚单片机,想想吧,反正我只用来控制开关用的,那就这样办吧,于是有了下面的程序~~~写的烂,大婶们跳过就好
#include //写了该单片机要用到的地址。 sbit rxd=P3^0; //串口接收 sbit deng=P3^2; //控制继电器 unsigned int d; //d延时,因为没有用模拟串口通性 unsigned char a; //a控制灯的关与闭,占空比 void main() { //小程序,本来打算用串口通信弄完的,结果单片机不如意,就简便简便吧 while(1) { if(a==1) deng=0; else if(a==0) deng=1; else if(a>1) a=0; while(!rxd) { for(d=0;d<10000;d++); //因为波特率发送的是10位码,这里延时一段时间过渡一下 a++; //加一 rxd=1; //将rxd拉高,避免重码。 } } }
是不是很短。比硬件串口控制都短,就是不太完美,想加个呼吸灯都不能加了,控制路数可以通过变量a的大小来控制I/O的输出。
下面说说我是如何连接的。
这是单片机的管脚
连接图,画的好欠抽,求大家原谅,图中三极管不带限流电阻是因为,带了电阻电压拉的不够低,单片机问题(好可悲的单片机哦),
图中的RXD连接蓝牙串口的TXD,因为没有用到蓝牙数据接收,所以空置不用吧,
只用到了3个口,因为手头上没有转接口所以自己做了一个,急中生智
首先你要准备好这三样材料
大概是放在这个位置,然后用钳子把尾部钳好,
用焊锡焊好,保证牢固,再把后面的塑料下了
这就是做好了的样子,如果要直角的,就用尖嘴钳沿着底部弯曲就好了。
然后的然后就是焊接了,因为过程有点享受,就没拍相片了,大家YY一下就懂。直接上图。
居
高
临
下
来一发
正面证件照来一发
侧面也不错,能看~~~
还过意的去~~~
最后嘛,当然是要上机工作啦,刚好三色灯,挺唯美(审美观偏低)
后面嘛当然是说如何控制的事情了,容我细细道来
首先你要在手机安装一个蓝牙串口助手的APP
打开后,是需要扫描和输入蓝牙密码的,我因为输入过所以跳过了,HC-05的初始密码是1234
,
点击需要连接的蓝牙设备,进入后会要求连接
点击“连接设备”就好了
进入后选择通信的工作方式,选择键盘模式就可以了
进入后,配置键盘值,像我这个程序什么值都无所谓啦,哈哈
然后你按一下就开,再按一下就关,多简单哦,
偷懒成功,其实我床离开关确实挺远的~~~
总结:程序比较简单,但想加个别的程序都不行,归根于该单片机坑,电路上比较简单,一眼就望光了,电源是手机充电器上拆的,做工还是不错,电路功耗还是有些大,静态功耗在100MA左右,加上继电器就到了400MA了,比较大,开关在门口处,继电器和原来的开关并联,不影响原来的使用,
能借着偷懒学点东西,挺好
——————————————————————————————-————————
————————谢谢观赏