智慧燈改造計劃

胡小白の成長發表於2020-12-09

智慧燈改造計劃

寫在前面

  • 由於最近購買了一個天貓精靈,於是就想著能不能自己DIY一個智慧燈出來,看看身邊的工具,唯一能激起我改造動力的就是身邊的這個氛圍燈了,因為平時使用它的頻率最高,晚上使用也不會刺眼睛,所以它就成了我的不二之選;其實這個燈買回來的時候也挺好的,能紅外線控制,調節燈光顏色亮度,以及定時關閉的,但冬天來了,你懂得。。。

  • 其實對於電子技術這一塊其實我一直是保持瞭解的狀態,真正動手去學的時間幾乎沒有,在經過百度、b站的調教下讓我瞭解到了esp8266這個開發板和arduino,於是經過一番摸索之後,就這樣開啟了我的改造之旅。

硬體部分

  • 必須: 電烙鐵、esp826601s開發板(體積小,NodeMcu也行)、esp8266-01的燒錄器、WS2812B燈、電池充放模組、18650鋰電池、杜邦線、DC口(其他電源輸入口也行)。
  • 非必須: pcb電路板、電阻、單排母座、帶線頭子、天貓精靈(其他語音助手也行)、燈罩(推薦使用鹽燈, 配合全綵燈帶效果驚豔)
  • 改裝成品展示
    rCbmA1.md.png
  • 鹽燈示意圖:(圖來源自網路)
    rCbVB9.png

實現原理

  • 天貓精靈>MQTT伺服器>blinker硬體(esp8266)>家居裝置

實現功能

  • 廣域網中可以通過手機遠端控制,來調節燈光顏色並控制開關
  • 區域網中可以通過天貓精靈語音助手進行控制(其他語音助手需要修改程式碼)

改造過程

  • 首先當然是搞破壞啦,先把燈給拆了,這是燈原來的樣子
    在這裡插入圖片描述

  • 焊接充放模組,還原氛圍燈移動電源的功能。
    在這裡插入圖片描述

  • 這是燈和esp01s(由於不會PCB設計只有買成品,燈剛好是圓形的,12顆燈珠 )
    rCbntx.md.png

  • 這是連線好的樣子
    rCbNNt.md.png

  • 開始組裝
    rCbGBd.md.png

軟體部分

開發環境

  • IDE:arduino
  • 語言:C++
  • 物聯網接入平臺:Blinker
  • 使用到的函式庫:FastLED、Adafruit_NeoPixel(WS2812系列燈珠庫)、Blinker

開發步驟

  1. 安裝整合開發環境arduino,提取碼: ARDU

  2. esp8266開發板安裝

    • 首先選擇開發板管理網址,輸入http://arduino.esp8266.com/stable/package_esp8266com_index.json
      rCbuh6.pngrCbM9K.md.png
      rCbQ1O.md.png
  • 搜尋esp8266選擇安裝
    rCb1je.md.png
    注: 如果網路安裝不了,請下載離線版本進行安裝。提取碼:8266
  1. 匯入Blinker庫以及其他庫檔案,提取碼:BLIN,壓縮包解壓縮後放入。
    rCb8nH.md.png]

  2. 選擇com口和WIFIunio開發板
    rCbU4P.md.png]

  3. 編譯程式碼
    rCbJHA.md.png

  4. 上傳程式碼
    rCbtAI.md.png]

  5. 匯入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¨|÷}

  • 配置好,介面如下圖
    rCbBjg.md.png

部分程式碼說明

  • 數字訊號傳輸引腳說明,esp01s建議選擇RXD即PIN為3,不然容易報一些未知的錯誤,比如我之前選擇的TXD作為訊號傳輸的引腳,插上訊號線會導致esp01s無法開機。esp8266 NodeMCU版建議選擇GPIO14,即D5引腳。

  • esp01s對應引腳功能說明
    rCbd9f.md.png

  • esp8266 NodeMCU引腳說明
    rCb0gS.md.png

  • 程式碼部分


#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無法正常讀取。(如果您解決或者知道這一問題,煩請告知。)

相關文章