Esp01 + Esp8266繼電器模塊 + 220v轉5v變壓器實現微信小程序控制學習燈開關


材料准備:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM