夜深了,躺在床上,下床关灯简直就是一件折磨人的事,可是万事难不倒理工男。我可以用手机遥控宿舍的灯。说干就干,我手里有WiFi模块和蓝牙模块,想着仅仅是做一个遥控灯,就用蓝牙模块吧!1:准备工作
HC-05蓝牙模块(右边的是ESP8266WIFI模块,留着下次再用)
Arduino UNO R3电子积木
5V控制220V继电器模块
2:单片机代码编写
- int ledPin = 13; // LED is connected to digital pin 13
- char m;
- void setup()
- { Serial.begin(9600);
- pinMode(ledPin, OUTPUT); // 设置ledPin对应的管脚13为输出
- }
-
- void loop() // run over and over again
- { if(Serial.available() > 0)
- {
- m=Serial.read();
- if (m == '1')
- {digitalWrite(ledPin, HIGH); //点亮小灯
- Serial.println("LED IS OPENING");}
- else if (m == '2')
- {digitalWrite(ledPin, LOW); //点亮小灯
- Serial.println("LED IS CLOSED");}
- }
- }
-
复制代码
3:蓝牙模块调试
其中TXD连TXD;RXD连RXD。用USB转串口工具连接到电脑上
设置主从动模式,设置蓝牙名称和密码调试结果如上图;
4:将继电器和蓝牙模块连接到单片机上
5:手机APP的开发
用的E4A中文安卓编程,只学了一天就能做些简单的APP了;
下面是代码;
- 变量 编辑6 为 逻辑型
- 变量 文本6 为 文本型
- 变量 编辑7 为 逻辑型
- 变量 文本7 为 文本型
- 变量 编辑8 为 逻辑型
- 变量 文本8 为 文本型
- 变量 编辑9 为 逻辑型
- 变量 文本9 为 文本型
- 变量 编辑10 为 逻辑型
- 变量 文本10 为 文本型
- 变量 编辑11 为 逻辑型
- 变量 文本11 为 文本型
- 变量 编辑12 为 逻辑型
- 变量 文本12 为 文本型
- 变量 编辑13 为 逻辑型
- 变量 文本13 为 文本型
- 变量 编辑14 为 逻辑型
- 变量 文本14 为 文本型
- 变量 编辑15 为 逻辑型
- 变量 文本15 为 文本型
- 变量 编辑16 为 逻辑型
- 变量 文本16 为 文本型
- 变量 编辑17 为 逻辑型
- 变量 文本17 为 文本型
- 变量 编辑18 为 逻辑型
- 变量 文本18 为 文本型
- 变量 编辑19 为 逻辑型
- 变量 文本19 为 文本型
- 变量 编辑20 为 逻辑型
- 变量 文本20 为 文本型
- 变量 编辑21 为 逻辑型
- 变量 文本21 为 文本型
- 变量 编辑22 为 逻辑型
- 变量 文本22 为 文本型
- 变量 编辑23 为 逻辑型
- 变量 文本23 为 文本型
- 变量 临时文本 为 通用型
- 事件 按钮1.被单击()
- 高级列表框1.清空项目()
- 蓝牙1.搜索设备()
- 结束 事件
- 事件 蓝牙1.发现设备(名称 为 文本型,地址 为 文本型,是否已配对 为 逻辑型)
- 如果 是否已配对 则
- 高级列表框1.添加项目("",名称 & "(已配对)",地址,"","")
- 否则
- 高级列表框1.添加项目("",名称,地址,"","")
- 结束 如果
- 结束 事件
- 事件 高级列表框1.表项被单击(项目索引 为 整数型)
- 变量 地址 为 文本型
- 地址=高级列表框1.取项目信息(项目索引)
- 标签1.标题=地址
- 蓝牙1.停止搜索()
- 蓝牙1.连接设备(地址)
- 结束 事件
- 事件 按钮2.被单击()
- 蓝牙1.断开连接()
- 结束 事件
- 事件 按钮3.被单击()
- 变量 已配对设备 为 文本型(,)'已配对设备(n,0)=名称 已配对设备(n,1)=地址 n >= 0 < 取数组下标(已配对设备,1)
- 变量 i 为 整数型
- 高级列表框1.清空项目()
- '已配对设备=蓝牙1.取已配对设备()
- i=0
- 判断循环首 i<取数组下标(已配对设备,1)
- 高级列表框1.添加项目("",已配对设备(i,0) & "(已配对)",已配对设备(i,1),"","")
- i=i+1
- 判断循环尾
- 结束 事件
- 事件 按钮4.被单击()
- 如果 按钮4.标题="打开蓝牙" 则
- 蓝牙1.开启蓝牙()
- 如果 蓝牙1.是否已开启()=真 则
- 标签1.标题="蓝牙已经开启"
- 按钮4.标题="关闭蓝牙"
- 否则
- 结束 如果
- 否则
- 蓝牙1.关闭蓝牙()
- 如果 蓝牙1.是否已开启()=假 则
- 标签1.标题="蓝牙已经关闭"
- 按钮4.标题="打开蓝牙"
- 否则
- 结束 如果
- 结束 如果
- 结束 事件
- 事件 蓝牙1.收到数据(数据 为 字节型(),设备名称 为 文本型,设备地址 为 文本型)
- 标签1.标题 = 字节到文本(数据,"GBK")
- 结束 事件
- 事件 蓝牙1.连接完毕(连接结果 为 逻辑型,设备名称 为 文本型,设备地址 为 文本型,连接模式 为 整数型)
- 如果 连接结果=真 则
- 标签1.标题="连接成功"
- 否则
- 标签1.标题="连接失败"
- 结束 如果
- 结束 事件
- 事件 主窗口.创建完毕()
- 编辑6=假
- 编辑7=假
- 编辑8=假
- 编辑9=假
- 编辑10=假
- 编辑11=假
- 编辑12=假
- 编辑13=假
- 编辑14=假
- 编辑15=假
- 编辑16=假
- 编辑17=假
- 编辑18=假
- 编辑19=假
- 编辑20=假
- 编辑21=假
- 编辑22=假
- 编辑23=假
- 结束 事件
- 事件 按钮5.被单击()
- 如果 编辑6=真 则
- 按钮6.标题=编辑框1.内容
- 文本6=编辑框2.内容
- 编辑6=假
- 否则如果 编辑7=真 则
- 按钮7.标题=编辑框1.内容
- 文本7=编辑框2.内容
- 编辑7=假
- 否则如果 编辑8=真 则
- 按钮8.标题=编辑框1.内容
- 文本8=编辑框2.内容
- 编辑8=假
- 否则如果 编辑9=真 则
- 按钮9.标题=编辑框1.内容
- 文本9=编辑框2.内容
- 编辑9=假
- 否则如果 编辑10=真 则
- 按钮10.标题=编辑框1.内容
- 文本10=编辑框2.内容
- 编辑10=假
- 否则如果 编辑11=真 则
- 按钮11.标题=编辑框1.内容
- 文本11=编辑框2.内容
- 编辑11=假
- 否则如果 编辑12=真 则
- 按钮12.标题=编辑框1.内容
- 文本12=编辑框2.内容
- 编辑12=假
- 否则如果 编辑13=真 则
- 按钮13.标题=编辑框1.内容
- 文本13=编辑框2.内容
- 编辑13=假
- 否则如果 编辑14=真 则
- 按钮14.标题=编辑框1.内容
- 文本14=编辑框2.内容
- 编辑14=假
- 否则如果 编辑15=真 则
- 按钮15.标题=编辑框1.内容
- 文本15=编辑框2.内容
- 编辑15=假
- 否则如果 编辑16=真 则
- 按钮16.标题=编辑框1.内容
- 文本16=编辑框2.内容
- 编辑16=假
- 否则如果 编辑17=真 则
- 按钮17.标题=编辑框1.内容
- 文本17=编辑框2.内容
- 编辑17=假
- 否则如果 编辑18=真 则
- 按钮18.标题=编辑框1.内容
- 文本18=编辑框2.内容
- 编辑18=假
- 否则如果 编辑19=真 则
- 按钮19.标题=编辑框1.内容
- 文本19=编辑框2.内容
- 编辑19=假
- 否则如果 编辑20=真 则
- 按钮20.标题=编辑框1.内容
- 文本20=编辑框2.内容
- 编辑20=假
- 否则如果 编辑21=真 则
- 按钮21.标题=编辑框1.内容
- 文本21=编辑框2.内容
- 编辑21=假
- 否则如果 编辑22=真 则
- 按钮22.标题=编辑框1.内容
- 文本22=编辑框2.内容
- 编辑22=假
- 否则如果 编辑23=真 则
- 按钮23.标题=编辑框1.内容
- 文本23=编辑框2.内容
- 编辑23=假
- 结束 如果
- 编辑框1.内容=""
- 编辑框2.内容=""
- 标签1.标题=""
- 结束 事件
- 事件 按钮6.被单击()
- 蓝牙1.发送数据(文本到字节(文本6,"GBK"))
- 结束 事件
- 事件 按钮6.被长按()
- 手机1.振动(50)
- 编辑6=真
- 标签1.标题="按钮6现在可以被编辑"
- 结束 事件
- 事件 按钮7.被长按()
- 手机1.振动(50)
- 编辑7=真
- 标签1.标题="按钮7现在可以被编辑"
- 结束 事件
- 事件 按钮8.被长按()
- 手机1.振动(50)
- 编辑8=真
- 标签1.标题="按钮8现在可以被编辑"
- 结束 事件
- 事件 按钮9.被长按()
- 手机1.振动(50)
- 编辑9=真
- 标签1.标题="按钮9现在可以被编辑"
- 结束 事件
- 事件 按钮10.被长按()
- 手机1.振动(50)
- 编辑10=真
- 标签1.标题="按钮10现在可以被编辑"
- 结束 事件
- 事件 按钮11.被长按()
- 手机1.振动(50)
- 编辑11=真
- 标签1.标题="按钮11现在可以被编辑"
- 结束 事件
- 事件 按钮12.被长按()
- 手机1.振动(50)
- 编辑12=真
- 标签1.标题="按钮12现在可以被编辑"
- 结束 事件
- 事件 按钮13.被长按()
- 手机1.振动(50)
- 编辑13=真
- 标签1.标题="按钮13现在可以被编辑"
- 结束 事件
- 事件 按钮14.被长按()
- 手机1.振动(50)
- 编辑14=真
- 标签1.标题="按钮14现在可以被编辑"
- 结束 事件
- 事件 按钮15.被长按()
- 手机1.振动(50)
- 编辑15=真
- 标签1.标题="按钮15现在可以被编辑"
- 结束 事件
- 事件 按钮16.被长按()
- 手机1.振动(50)
- 编辑16=真
- 标签1.标题="按钮16现在可以被编辑"
- 结束 事件
- 事件 按钮17.被长按()
- 手机1.振动(50)
- 编辑17=真
- 标签1.标题="按钮17现在可以被编辑"
- 结束 事件
- 事件 按钮18.被长按()
- 手机1.振动(50)
- 编辑18=真
- 标签1.标题="按钮18现在可以被编辑"
- 结束 事件
- 事件 按钮19.被长按()
- 手机1.振动(50)
- 编辑19=真
- 标签1.标题="按钮19现在可以被编辑"
- 结束 事件
- 事件 按钮20.被长按()
- 手机1.振动(50)
- 编辑20=真
- 标签1.标题="按钮20现在可以被编辑"
- 结束 事件
- 事件 按钮21.被长按()
- 手机1.振动(50)
- 编辑21=真
- 标签1.标题="按钮21现在可以被编辑"
- 结束 事件
- 事件 按钮22.被长按()
- 手机1.振动(50)
- 编辑22=真
- 标签1.标题="按钮22现在可以被编辑"
- 结束 事件
- 事件 按钮23.被长按()
- 手机1.振动(50)
- 编辑23=真
- 标签1.标题="按钮23现在可以被编辑"
- 结束 事件
- 事件 按钮7.被单击()
- 蓝牙1.发送数据(文本到字节(文本7,"GBK"))
- 结束 事件
- 事件 按钮8.被单击()
- 蓝牙1.发送数据(文本到字节(文本8,"GBK"))
- 结束 事件
- 事件 按钮9.被单击()
- 蓝牙1.发送数据(文本到字节(文本9,"GBK"))
- 结束 事件
- 事件 按钮10.被单击()
- 蓝牙1.发送数据(文本到字节(文本10,"GBK"))
- 结束 事件
- 事件 按钮11.被单击()
- 蓝牙1.发送数据(文本到字节(文本11,"GBK"))
- 结束 事件
- 事件 按钮12.被单击()
- 蓝牙1.发送数据(文本到字节(文本12,"GBK"))
- 结束 事件
- 事件 按钮13.被单击()
- 蓝牙1.发送数据(文本到字节(文本13,"GBK"))
- 结束 事件
- 事件 按钮14.被单击()
- 蓝牙1.发送数据(文本到字节(文本14,"GBK"))
- 结束 事件
- 事件 按钮15.被单击()
- 蓝牙1.发送数据(文本到字节(文本15,"GBK"))
- 结束 事件
- 事件 按钮16.被单击()
- 蓝牙1.发送数据(文本到字节(文本16,"GBK"))
- 结束 事件
- 事件 按钮17.被单击()
- 蓝牙1.发送数据(文本到字节(文本17,"GBK"))
- 结束 事件
- 事件 按钮18.被单击()
- 蓝牙1.发送数据(文本到字节(文本18,"GBK"))
- 结束 事件
- 事件 按钮19.被单击()
- 蓝牙1.发送数据(文本到字节(文本19,"GBK"))
- 结束 事件
- 事件 按钮20.被单击()
- 蓝牙1.发送数据(文本到字节(文本20,"GBK"))
- 结束 事件
- 事件 按钮21.被单击()
- 蓝牙1.发送数据(文本到字节(文本21,"GBK"))
- 结束 事件
- 事件 按钮22.被单击()
- 蓝牙1.发送数据(文本到字节(文本22,"GBK"))
- 结束 事件
- 事件 按钮23.被单击()
- 蓝牙1.发送数据(文本到字节(文本23,"GBK"))
- 结束 事件
复制代码
6:手机APP控制继电器
按下按钮“开灯”继电器导通(信号灯亮)
按下“关灯”继电器断开(信号灯灭)
最后,将市电220V串联接在继电器常闭接口上,就能实现手机控制灯的开关了。本人亲自测试了一下,蓝牙有效控制距离50米左右,所以家里的所有电路都可以用手机控制了。看到这里,你是不是也想做一个?
可能这个工程里最难的部分要属安卓软件的编写和蓝牙的调试了。不过皇天不负有心人,只要你肯下功夫,你也可以做出来!
全部资料51hei下载地址:
Arduino连接HC-05模块控制继电器.rar
(5.56 MB, 下载次数: 324)
|