开源智能插座/zh
概述
智能插座主要由控制模块和电路部分组成,用户可以使用手机连接蓝牙模块(Microduino-BT/zh)并发送命令、接收电路状态,核心控制模块(Microduino-Core/zh)对数据进行分析之后控制继电器对电路进行控制。 材料清单
实验原理
智能插座的电源控制分为两部分,分别是电压转换和继电器控制两部分。 首先介绍一下电压转换部分,由于家庭中的电源多为220伏特的交流电,而Microduino-Core工作在5伏特的直流电压环境下,这部分的功能就如同一个变压器,像手机的充电插头一样转换了电压。 另一部分是继电器控制,继电器是当输入电压的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。由于Microduino-Core核心控制引脚输出的电压很小,不能直接给电器供电,因此需要通过控制继电器从而间接控制家庭电源。
本套件使用了蓝牙无线通信模块Microduino-BT,由于Microduino的蓝牙模块很好的屏蔽了底层的协议,所以关于蓝牙协议这里不再赘述,使用它只需确认蓝牙串口的接法,默认是D2,D3。,给出一张蓝牙通讯所使用的串口图,所有的串口连接方法都涵盖在该图中:
文档百度盘地址:http://pan.baidu.com/s/1jGjOrR4 提取码:hk0i 调试过程
将Microduino Core、Microduino USBTTL堆叠在一起.用数据线将写好的程序通过Microduino USBTTL上传到Microduino Core上。 注意:最好不要将所有模块堆叠在一起之后再上传程序 打开Aroduino IDE,若电脑中没有安装,则参照附录中的安装方法,先安装Aicroduino IDE。点击左上【文件】选项→点击【打开】。 在弹出的对话框中找到MicroduinoBluControlOutlet.ino并双击打开 之后点击左上角的"√"进行编译,点击上边栏的工具,确认板卡(Microduino-Core)处理器(Atmega328P@16M,5V)和端口号(COMX)。三项都如图确认无误之后点击"→"按钮下载程序到开发板上
先使用三个4mm螺丝将电路板固定在底壳上 将Microduino-BT与Microduino-Core插接好并插接在智能插座的底板上 将智能插座外壳扣入底壳并使用8mm长螺丝旋入,固定上下外壳,至此智能插座部分搭建完成 将智能插座插入家中的插座。手机充电器插在智能插座上,并按下开关钮,可以看到指示灯亮起,手机开始充电。调试智能插座。图中: ①为开关按钮 ②是上电指示灯 ③是智能插座通断指示灯
首先使用手机扫描二维码,下载蓝牙App,下载完成后打开 点击SCAN,搜索周围蓝牙设备,发现并点击Microduino 等待1-2秒,待屏幕上出现ready字样可以开始操作智能插座 点击屏幕中间的按钮开关就可以控制智能插座的通断了,同时插座上的按键也可以控制插座的通断,手机APP上可以实时同步开关的状态 注意问题
程序说明
void loop()
{
// 如果串口有数据就读取串口中的数据,串口每次传输一个字符,因此要进行转换
while (my_Serial.available() > 0)
{
tmp += char(my_Serial.read());
delay(2);
}
//如果从串口中读取的内容不为空,进行状态判断
if (tmp.length() > 0)
{
if(tmp == "on") //如果收到的内容为on
{
Serial.println("power on"); //串口显示:上电
digitalWrite(outletPin, HIGH); //将开关指示灯点亮
swith = true;
}
else if(tmp == "off") //如果收到的内容为off
{
digitalWrite(outletPin, LOW); //关闭开关指示灯
Serial.println("power off");//串口显示:关闭
swith = false;
}
tmp = "";
}
if(key_get(Button_Pin, 0)) //用于物理按钮,当每次按键按下并松开后
{
delay(300);
swith = !swith; //翻转开关状态
}
if(change != swith) //如果开关状态有变化
{
change = swith; //用change记录本次操作的开关状态
if(swith) //如果是开状态
{
digitalWrite(outletPin, HIGH); //点亮指示灯
my_Serial.println("ON"); //告知蓝牙模块开启智能插座
}
else
{
digitalWrite(outletPin, LOW); //关闭指示灯
my_Serial.println("OFF"); //告知蓝牙模块关闭智能插座
}
}
}
视频 |