Esp01 + Esp8266继电器模块 + 220v转5v变压器实现微信小程序控制学习灯开关
发布时间:2021-09-24 09:13:46作者:顺晟科技点击:
材料准备:
1.220v转5v变压器
2.Esp8266继电器模块(一定要是带光耦的,上面印有三条白杠的,如下图)
3.Esp01
4.220v家用交流电,5v学习灯,esp01烧录器和少量杜邦线
实物图:
具体接线:
(1)220v变压器上面有标的,三头插头有两种颜色的为地线,接变压器地线,零线火线不分,都可以
(2)继电器接线
继电器工作电源
1.VCC 接 变压器5v正极
2.GND 接 变压器5v负极
继电器控制的电源
1.COM 接 变压器 5v正极
2.NO或NC 接 学习灯正极
学习灯负极 接 变压器5v负极
烧录代码:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
int deng = 0; //IO14(D5)
const char* ssid = "WIFI名称";
const char* password = "WIFI密码";
const char* mqtt_server = "IP地址"; // 使用HIVEMQ 的信息中转服务
const char* TOPIC = "主题"; // 订阅信息主题
const char* client_id = "编号"; // 标识当前设备的客户端编号
WiFiClient espClient; // 定义wifiClient实例
PubSubClient client(espClient); // 定义PubSubClient的实例
long lastMsg = 0; // 记录上一次发送信息的时长
void setup() {
pinMode(deng, OUTPUT); // 定义板载LED灯为输出方式
Serial.begin(115200);
setup_wifi(); //执行Wifi初始化,下文有具体描述
client.setServer(mqtt_server, 1883); //设定MQTT服务器与使用的端口,1883是默认的MQTT端口
client.setCallback(callback); //设定回调方式,当ESP8266收到订阅消息时会调用此方法
}
void setup_wifi() {
delay(10);
// 板子通电后要启动,稍微等待一下让板子点亮
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.mode(WIFI_STA);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic); // 打印主题信息
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]); // 打印主题内容
}
Serial.println();
if ((char)payload[0] == \'0\') {
digitalWrite(deng, 0); // 亮灯
Serial.println("已开灯");
} else {
digitalWrite(deng, 1); // 熄灯
Serial.println("已关灯");
}
}
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect(client_id)) {
Serial.println("connected");
// 连接成功时订阅主题
client.subscribe(TOPIC);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
long now = millis();
if (now - lastMsg > 2000) {
lastMsg = now;
client.publish("home/status/", "{device:client_id,\'status\':\'on\'}");
}
}
烧录成功后将Esp01插在继电器模块上即可通电用微信小程序控制(微信小程序代码请查看我的其他博文)
- 上一篇 : 微信小程序开发--页面结构
- 下一篇 : 微信小程序客户端文件上传到服务器以及Java代码


