智慧燈改造計劃
寫在前面
-
由於最近購買了一個天貓精靈,於是就想著能不能自己DIY一個智慧燈出來,看看身邊的工具,唯一能激起我改造動力的就是身邊的這個氛圍燈了,因為平時使用它的頻率最高,晚上使用也不會刺眼睛,所以它就成了我的不二之選;其實這個燈買回來的時候也挺好的,能紅外線控制,調節燈光顏色亮度,以及定時關閉的,但冬天來了,你懂得。。。
-
其實對於電子技術這一塊其實我一直是保持瞭解的狀態,真正動手去學的時間幾乎沒有,在經過百度、b站的調教下讓我瞭解到了esp8266這個開發板和arduino,於是經過一番摸索之後,就這樣開啟了我的改造之旅。
硬體部分
- 必須: 電烙鐵、esp826601s開發板(體積小,NodeMcu也行)、esp8266-01的燒錄器、WS2812B燈、電池充放模組、18650鋰電池、杜邦線、DC口(其他電源輸入口也行)。
- 非必須: pcb電路板、電阻、單排母座、帶線頭子、天貓精靈(其他語音助手也行)、燈罩(推薦使用鹽燈, 配合全綵燈帶效果驚豔)
- 改裝成品展示
- 鹽燈示意圖:(圖來源自網路)
實現原理
- 天貓精靈>MQTT伺服器>blinker硬體(esp8266)>家居裝置
實現功能
- 廣域網中可以通過手機遠端控制,來調節燈光顏色並控制開關
- 區域網中可以通過天貓精靈語音助手進行控制(其他語音助手需要修改程式碼)
改造過程
-
首先當然是搞破壞啦,先把燈給拆了,這是燈原來的樣子
-
焊接充放模組,還原氛圍燈移動電源的功能。
-
這是燈和esp01s(由於不會PCB設計只有買成品,燈剛好是圓形的,12顆燈珠 )
-
這是連線好的樣子
-
開始組裝
軟體部分
開發環境
- IDE:arduino
- 語言:C++
- 物聯網接入平臺:Blinker
- 使用到的函式庫:FastLED、Adafruit_NeoPixel(WS2812系列燈珠庫)、Blinker
開發步驟
-
安裝整合開發環境arduino,提取碼: ARDU
-
esp8266開發板安裝
- 首先選擇開發板管理網址,輸入http://arduino.esp8266.com/stable/package_esp8266com_index.json
- 首先選擇開發板管理網址,輸入http://arduino.esp8266.com/stable/package_esp8266com_index.json
- 搜尋esp8266選擇安裝
注: 如果網路安裝不了,請下載離線版本進行安裝。提取碼:8266
-
匯入Blinker庫以及其他庫檔案,提取碼:BLIN,壓縮包解壓縮後放入。
] -
選擇com口和WIFIunio開發板
] -
編譯程式碼
-
上傳程式碼
] -
匯入Blinker介面配置,並在進行除錯,介面配置如下
{¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨light¨¨background¨{¨img¨¨assets/img/bg/1.jpg¨}}¨dashboard¨|{¨type¨¨btn¨¨ico¨¨iconfont icon-n1¨¨mode¨Ê¨t0¨¨1日常色¨¨t1¨¨文字2¨¨bg¨Ì¨cols¨Ë¨rows¨Ë¨key¨¨ButtonKey1¨´x´Ë´y´Ì¨speech¨|÷¨lstyle¨Ê¨clr¨¨#EA0909¨}{ß9ßAßB¨iconfont icon-n2¨ßDÊßE¨2溫馨色¨ßGßHßIÌßJËßKËßL¨ButtonKey2¨´x´É´y´ÌßN|÷ßOÊßP¨#00A90C¨}{ß9ßAßB¨iconfont icon-n3¨ßDÊßE¨3跑馬燈¨ßGßHßIÌßJËßKËßL¨ButtonKey3¨´x´É´y´ÎßN|÷ßOÊßPßU}{ß9ßAßB¨iconfont icon-n4¨ßDÊßE¨4呼吸燈¨ßGßHßIÌßJËßKËßL¨ButtonKey4¨´x´É´y´ÐßN|¦¨act¨¨cmd¨‡¨on¨¨電腦¨ßd´´—÷ßOÊßPßU}{ß9ßAßB¨iconfont icon-n5¨ßDÊßE¨5旋轉燈¨ßGßHßIÌßJËßKËßL¨ButtonKey5¨´x´É´y´ÒßN|÷ßOÊßPßU}{ß9¨ran¨ßE¨燈光頻率¨ßPßQ¨max¨¤y¨min¨¤FßIÊßJÑßKËßL¨SliderKey¨´x´É´y´¤BßN|÷ßOÉ}{ß9¨col¨ßE¨顏色拾取¨ßP¨#389BEE¨ßIÉßJÏßKÏßL¨RGBKey¨´x´Ë´y´ÎßN|÷ßOÉ}{ß9¨deb¨ßDÉßIÉßJÑßKÌßL¨debug¨´x´É´y´¤DßN|÷}÷¨actions¨|÷¨triggers¨|÷}
部分程式碼說明
-
數字訊號傳輸引腳說明,esp01s建議選擇RXD即PIN為3,不然容易報一些未知的錯誤,比如我之前選擇的TXD作為訊號傳輸的引腳,插上訊號線會導致esp01s無法開機。esp8266 NodeMCU版建議選擇GPIO14,即D5引腳。
-
esp01s對應引腳功能說明
-
esp8266 NodeMCU引腳說明
-
程式碼部分
#define PIN 14 //esp8266 輸出引腳號(NodeMCU版,D5)
#define NUMPIXELS 12 //ws2812 燈數
- 修改該程式碼中的RGB,可以實現語音顏色的調節,由於官方預設的大紅大紫接受不了,所以我已經修改了RGB值,如果相關的通知想要修改引數,可自行百度RGB顏色表,進行修改。但喚醒口令仍不變。
//天貓顏色模式
void aliGenieColor(const String & color)
{
BLINKER_LOG("need set color: ", color);
if (color == "Red") {
colorR = 255; colorG = 62; colorB = 150;
}
else if (color == "Yellow") {
colorR = 255; colorG = 215; colorB = 0;
}
else if (color == "Blue") {
colorR = 0; colorG = 191; colorB = 255;
}
else if (color == "Green") {
colorR = 144; colorG = 238; colorB = 144;
}
else if (color == "White") {
colorR = 255; colorG = 255; colorB = 255;
}
else if (color == "Black") {
colorR = 0; colorG = 0; colorB = 0;
}
else if (color == "Cyan") {
colorR = 0; colorG = 255; colorB = 255;
}
else if (color == "Purple") {
colorR = 155; colorG = 48; colorB = 255;
}
else if (color == "Orange") {
colorR = 255; colorG = 165; colorB = 0;
}
if (wsState == false) {
wsState = true;
colorW = 255;
}
if (colorW == 0) {
colorW = 255;
}
pixelShow();
BlinkerAliGenie.color(color);
BlinkerAliGenie.print();
}
- 呼吸燈效果
void breath()//呼吸燈
{
wsState = true;
for (int brt = colorW; brt > 0; brt--) {
colorW = brt;
pixelShow();
if (active())
{
break;
}
delay(1);
}
for (int brt = colorW; brt <201 ; brt++) {
colorW = brt;
pixelShow();
if (active())
{
break;
}
delay(1);
}
}
- 其他效果請看原始檔
測試
- 通過語音改變顏色,天貓精靈現支援的控制顏色模式有
顏色 | 中文描述 |
---|---|
Red | 紅色 |
Yellow | 黃色 |
Blue | 藍色 |
Green | 綠色 |
White | 白色 |
Black | 黑色 |
Cyan | 青色 |
Purple | 紫色 |
Orange | 橙色 |
- 天貓精靈支援控制的模式表
模式 | 中文描述 |
---|---|
reading | 閱讀 |
movie | 影院 |
sleep | 睡眠 |
holiday | 假日 |
music | 音樂 |
common | 普通 |
- 測試過程中發現天貓精靈只支援顏色模式和閱讀與睡眠模式的調節,比如音樂模式等無法正常開啟,但是Blinker中可以正常開啟,導致這一現象的原因可能是天貓精靈官方改變了這些模式的介面,導致Blinker無法正常讀取。(如果您解決或者知道這一問題,煩請告知。)