ESP8266接入小愛同學—智能LED檯燈或風扇(利用繼電器)

ESP8266接入小愛同學—智能LED檯燈或風扇

上週用esp8266做了一個語音智能檯燈,也參考了很多網上的教程,也不難,挺簡單的,在這裏分享一下。

首先我用的是arduino IDE對esp8266進行的編譯,arduino對8266編譯環境的具體配置可參考
太極創客網站arduino配置esp8266

大家如果想學習esp8266的知識,推薦太極創客網站,講解的很好。

先說一下本次預期想要實現的功能:
1.利用WiFiManager庫實現自動配網,亦能夠滿足在不同WiFi下可以不用更改程序即可鏈接不同的WiFi
2.利用esp8266 OTA功能實現應用程序在局域網內升級,解除數據線限制
3.通過MQTT協議實現擺脫局域網限制的遠程控制,實現遠程控制燈的亮和滅
4.接入自己小米手機的米家軟件,實現小愛同學語音控制
5.利用另一個機械開關實現網絡和機械雙控制,以應對網絡不穩定情況的發生
6.利用繼電器進行控制,實際上可以不用,但因爲自己沒用過,所以藉此機會應用一下,瞭解一下
7.另外還想利用一下esp8266多任務處理的Ticker庫,因爲感覺只用幾個引腳控制一個燈有點大材小用,比如可以再連接溫溼度傳感器或者0.96寸oled屏幕之類的






但是後面實際做的時候由於時間不充足,所以砍掉了幾項功能

完成的有:
基本電路連接、點燈、手機app控制、小愛同學語音控制、單獨機械開關控制 (檯燈在app和小愛語音端處於開狀態時,便可單獨用機械開關控制,看到後面就懂了)

硬件準備:(完全可以從淘寶購買到)
ESP8266-2102開發板一塊
5V繼電器一個
檯燈或燈管一個(帶供電線,有開關更好)
母對母杜邦線三根




數據線(micro usb接口)一根
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述



首先我們要用到繼電器(可淘寶購買),先說一下繼電器的原理及用法:

在這裏插入圖片描述
電磁繼電器的作用:使用來用弱電控制強電,保證人們不會在高壓電路中因爲某種因爲發生危險

先看右端三個腳的作用:(右端三個腳接8266開發板(我們直接採用8266的引腳供電)):
VCC就是電源正極,GND就是電源負極,IN是通斷信號的輸入引腳。

再看左端三個腳的作用:
NC即常閉端(normal close),COM即公共端,NO即常開端(即斷路狀態),也就是說,在沒有任何上電之類的動作時,NC和COM端相當於已經連通而NO和COM是斷開的。
當8266引腳向右面三個腳中的IN端輸入控制信號時,NC和COM斷開,而COM和NO連接,IN失電時,恢復爲NC和COM連通,NO和COM斷開。

我們將利用繼電器的上述特性來控制燈的亮滅:
當8266引腳向右面三個腳中的IN端輸入信號時,NC和COM將斷開,而NO和COM將連接。

8266和繼電器具體接法看下圖(用D4引腳控制):
在這裏插入圖片描述
繼電器和燈的供電線的連接見下圖:
在這裏插入圖片描述
即燈(或風扇)的兩條電路中的一條穿過NO、COM端,然後正常連接電源。
在這裏插入圖片描述
剩下的就是程序了,我們需要用到點燈科技平臺,直接百度搜索就可以了。然後點擊進入官網.具體操作即步驟順序見下圖:
在這裏插入圖片描述
1.手機端下載blinker app並安裝及註冊完成。
2.電腦端arduino IDE安裝好上圖中5號步驟中的庫。(安裝步驟可參考下圖)

在這裏插入圖片描述
然後在彈出頁面中選擇下載的庫文件,不用解壓縮,直接選中點擊確認即可。









手機APP端設置
1.打開後點擊右上角加號,點擊獨立設備,點擊網絡接入,點擊阿里雲(因爲點燈科技雲暫時不支持小愛同學)。然後複製KEY備用。(放入電腦端程序用以匹配設備)。
2.返回後點擊添加的設備,再點擊右上角編輯符號,添加一個按鈕,注意數據鍵名,此名稱要與你的電腦端程序中一致(此示例程序中命名爲bin)。
在這裏插入圖片描述
確認線路接線無誤爲ESP8266燒入程序
usb數據線連接esp8266開發板到電腦,打開arduino IDE寫入以下程序,然後上傳到開發板。




#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
#include <Blinker.h>

int LIGHT = D4;
char auth[] = "你複製的KEY";
char ssid[] = "你的無線網(或熱點)名稱";
char pswd[] = "無線網密碼";

// 新建組件對象
BlinkerButton Button1("bin");//你的按鈕名稱
BlinkerNumber Number1("num-abc");

int counter = 0;

void miotPowerState(const String & state)
{
   
   
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {
   
   
        digitalWrite(LIGHT, LOW);

        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_OFF) {
   
   
        digitalWrite(LIGHT, HIGH);

        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();
    }
}
// 按下按鍵即會執行該函數
void button1_callback(const String & state) {
   
   
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LIGHT, !digitalRead(LIGHT));
}

// 如果未綁定的組件被觸發,則會執行其中內容
void dataRead(const String & data)
{
   
   
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}

void setup() {
   
   
    // 初始化串口
    Serial.begin(115200);

    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif

    // 初始化有LED的IO
    pinMode(LIGHT, OUTPUT);
    digitalWrite(LIGHT, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
    BlinkerMIOT.attachPowerState(miotPowerState);
}

void loop() {
   
   
    Blinker.run();
}

然後便可使用blinker app控制燈或風扇的開關了。

接入小愛同學

下載米家app並打開點擊我的,點擊其他平臺設備,找到點燈科技,輸入你的點燈科技註冊賬號。然後試一試語音叫小愛同學開關燈試試。有時一次可能添加不成功,多試幾次看看是不是哪裏出了問題。
(還有一個問題就是你的設備名稱,這個可以在blinker app中點擊你的設備,但後點擊右上角的三個點圖標,修改設備名就可以了,還可以設置定時任務等)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章