材料准備:
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插在繼電器模塊上即可通電用微信小程序控制(微信小程序代碼請查看我的其他博文)