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中點擊你的設備,但后點擊右上角的三個點圖示,修改設備名就可以了,還可以設定定時任務等)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/243371.html
標籤:其他
下一篇:樂鑫Esp32學習之旅28 安信可 ESP32-Cam 攝像頭開發板二次開發 C SDK編程,實作MQTT遠程拍照傳輸到私有服務器。(附帶原始碼)
