智能家居曾经是科幻小说里出现的情境,现在已经走进了平常百姓人家,淘宝上20元左右的智能插座比比皆是,今天教大家低成本几元钱就能打造以属于自己的智能电器——插座,该插座无论你身在何处,只要能上网都可以远程遥控其开与关,也可以给定时间开关,如上午8点半通电,10点断电,满足你的各项需求。教程分二部分,一部分是硬件,第二部分是软件。
一、硬件部分
必需的硬件有:ESP8266-01S+ WIFI继电器套装,降压模块220V转5V,ESP8266烧录器,其它部件:导线若干,电烙铁等,家里使用的多用插座(至少5孔)一个。
ESP8266-01S模块,具有WIFI信号,能通过家里的路由器联网,从而实现我们可以在任何有网络的地方控制它。淘宝上买回来的不能直接使用,必须连上家的路由并选择合适的物联网平台连接上后才能实现上面的功能。
1.检测所有的硬件功能正常后,准备组装。将多用插座外壳拆开,去掉其中一个插孔位,留出空位安装智能模块。各模块的连接图如下:
2.硬件连接按上图连接即可,关键在软件了。
二、软件部分
1.手机操作部分:
在点灯科技官网https://www.diandeng.tech/dev,下载移动端blinkerApp,安装后打开APP,添加独立设备,选择网络接入,复制KEY,等会电脑端编程序要用。
默认情况下可用电脑端ArduinoIDE编程软件中的Blinker示例“Hello WIFI”进行测试。
2.电脑操作部分:
(1)搭建好编程环境。下载编程软件ArduinoIDE,安装esp8266_package_3.0.1_arduino.cn包,下载点灯科技官网下载ESP8266库blinker-library-0.3.10230510.zip,在ArduinoIDE中导入这个库。
(2)将ESP8266烧录器插上ESP8266后再插入电脑USB口,在ArduinoIDE中选择开发板类型为:Generic ESP8266 Module,串口端口:COM7(每台电脑可能不同),波特率:115200,编程环境搭建完毕。
(3)现在可以打开ArduinoIDE编程软件中的Blinker示例“Hello WIFI”进行测试了。需要注意的是要把程序中的这三个地方修改下,如下图:
附远程遥控插座源码:
#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "XXXXXXXXXX";
char ssid[] = "XXXXX";
char pswd[] = "XXXXXXXXXXXX";
// 新建组件对象
BlinkerButton Button1("开关");//这里需要根据自己在BLINKER里面设置的名字进行更改
String button_state="off";//记录开关状态为off关闭,on打开
int GPIO=0;//定义GPIO口用于控制继电器
// 按下按键即会执行该函数
void button1_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
button_state = state;//状态记录到自己变量
//digitalWrite(GPIO,!digitalRead(GPIO));
if(state == "on")
{
Button1.color("#ff9999");//红色
Button1.text("已打开");
Button1.print("on");
digitalWrite(GPIO,LOW);
Blinker.vibrate();
}
else if(state == "off")
{
Button1.color("#808080");//灰色
Button1.text("已关闭");
Button1.print("off");
digitalWrite(GPIO,HIGH);
}
// digitalWrite(LED_BUILTIN,1);//关闭板上的LED
Blinker.vibrate();
}
// 心跳包函数改写
void heartbeat( )
{//button1的状态反馈
button1_callback(button_state);
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
Blinker.attachHeartbeat(heartbeat);//注册心跳包
// 初始化有LED的IO
pinMode(GPIO, OUTPUT);
digitalWrite(GPIO, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
}
void loop() {
Blinker.run();
}
手机端APP不需要的组件都可删除,但要添加一下按钮控制开关,组件名要与电脑端程序中BlinkerButton Button1("开关")这个相同。
要想定时控制这个插座,可在手机APP该组件的设置里选择【动作配置】-【自动生成】-【保存配置】,再在定时任务的设置时间和任务。至此,远程自动控制插座完成。