使用的是 ws2812數字燈珠 + esp826601s +mqtt 使用arduino IDE開發
能夠實現使用mqtt控制多種彩燈模式
效果演示:
鏈接
ws2812數字燈珠
有信號的輸入和輸出
有信號的輸入和輸出
DO是信號輸出 DI是信號輸入
將多個RGB燈串聯,信號進行傳輸然後實現燈帶。
有很多種 我使用是這種來充當led燈
聯合esp826601s使用
只需要一個GPIO給ws2812 信號端就可以
因此考慮使用esp8266 -01s的GPIO2
對esp8266 mqtt 使用arduino開發沒有基礎的同學可以先看這幾篇文章
http://niehen.cn/esp8266/esp8266-mqtt-%e4%bd%bf%e7%94%a8arduino%e5%bc%80%e5%8f%91%e6%95%99%e7%a8%8b/
http://niehen.cn/esp8266/mqtt%e5%8d%8f%e8%ae%ae%e4%bb%8b%e7%bb%8d%e4%b8%8e%e5%ba%94%e7%94%a8/
http://niehen.cn/esp8266/esp8266-01s%e4%bb%8b%e7%bb%8d/
前期使用 fast led 庫 多次嘗試不成功,
查資料發現 由於ws2812 需要連續的掃描 頻率很大,而esp01s頻率不足所以在前期嘗試的時候都沒成功,但是使用ws2812只需要一個引腳 使用12f顯得浪費
查找了很多資料發現使用Adafruit_NeoPixel.h 可以實現
下面會講
只需要ws2812 的信號引腳接到 esp01s的GPIO2
5v接到電源5v
GND接地
這裏推薦使用 這種模塊 方便簡單
接線省事很多
Adafruit_NeoPixel庫
用於控制基於單線的LED像素和條帶
安裝
IDE內安裝:
- 在arduino IDE中 項目—》加載庫----》管理庫
- 然後使用搜索欄搜索Neopixel strip。
- 選擇版本進行安裝
源碼安裝:
- 找到源碼 GitHub鏈接下載下來
- 下載後,將文件夾重命名爲“ Adafruit_NeoPixel”並安裝在Arduino Libraries文件夾中
- 重新啓動Arduino IDE,打開示例 找到這個庫的示例代碼
支持的芯片
使用
有兩種創建燈帶形式
- GRB:綠紅藍三基色 值從0到255
- GRBW:在RGB的基礎上加上一種白光,增加亮度的作用。
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800); // 創建 GRB燈帶
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800); // 創建 GRBW燈帶
在使用時 顯示的形式不一樣
函數
- begin() 燈帶初始化
- setPixelColor() 設置燈帶的顏色(第一個參數是燈珠索引,第二個是顏色值(GRB或GRBW))
- setBrightness() 設置燈帶的亮度(第一個參數是燈珠索引,第二個是亮度值0-255)
- show() 顯示燈帶
…
這些函數控制對象 就是前面創建的燈帶對象(可以看下面的示例代碼)
在使用時可以根據自己需要顯示的樣子
編寫控制燈珠顏色 亮度變化的代碼
當然也可以使用這個庫提供的一些示例代碼 也是很有意思的
彩燈模式
彩虹燈
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< pixels.numPixels(); i++) {
pixels.setPixelColor(i, Wheel(((i * 256 / pixels.numPixels()) + j) & 255));
}
pixels.show();
delay(wait);
}
}
另一種彩虹燈
void rainbow(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256; j++) {
for(i=0; i<pixels.numPixels(); i++) {
pixels.setPixelColor(i, Wheel((i+j) & 255));
}
pixels.show();
delay(wait);
}
}
更多彩燈模式 可以到Adafruit_NeoPixel 庫的示例中進行查找 使用
代碼
通過mqtt發送指令 esp模塊收到指令 並控制ws2812顯示相應的彩燈模式
項目參考代碼鏈接
更多學習教程
ESP開發學習基礎知識
基礎知識包括對esp模塊的認識與瞭解 mqtt協議的瞭解,arduino IDE運用代碼編寫等等。
- arduino基礎學習
- esp系列模塊的介紹
- mqtt協議的介紹與使用
- 利用mqtt esp模塊 基於arduino IDE開發方法
- esp模塊的AT指令 刷固件
- esp模塊睡眠模式使用
- esp8266-01s介紹與使用
- esp8266-12f介紹與使用
- NodeMcu介紹與使用
esp開發IOT應用
基於esp8266的模塊以及其他模塊根據實際的應用場景與需求製作的物聯網應用