中文 英文 韩语 日语
硬件及硬件接线图
硬件列表:
- ESP8266 NodeMCU
- WS2812B 灯带(60颗)
- 杜邦线(母对母)3条
接线图

Arduino 配置
安装 ESP8266
扩展库不在这里说明了,可查看我另一篇博客 使用ESP8266开发板刷入Deauther用于WiFi攻击测试 。
1. 安装 blinker Arduino 库
- 点击 下载blinker Arduino库 ;
- 将下载好的blinker库解压到 我的电脑 > 文档 > Arduino > libraries 文件夹中;

2. 安装 Adafruit_NeoPixel 库
Github地址:Adafruit_NeoPixel
方法一(在线安装)
打开 Arduino
, 项目
-> 加载库
-> 管理库
,在搜索框中输入 “Neopixel strip”,单击 安装
即可;

方法二(离线安装)
- 访问
Adafruit_NeoPixel
Releases page; - 下载最新版本;
- 解压文件;
- 打开
Arduino
,项目
>加载库
>添加.ZIP库...
;
安装成功后在 Arduino
可看到已加载 Adafruit NeoPixel
库。

在App中添加设备,获取 Secret Key
- 进入App,点击右上角的 “+“ 号,然后选择 添加设备;
- 点击选择
Arduino
>WiFi接入
; - 选择要接入的服务商;
- 复制申请到的
Secret Key
;

编写 Arduino
程序
编码
打开 Arduino
,使用以下代码,代码来自:blinkerWS2812.ino ;
修改源码中 auth[]
的值为在App中获取到的 Secret Key
,其他配置可根据自身条件设置。
#define BLINKER_PRINT Serial #define BLINKER_MIOT_LIGHT #define BLINKER_WIFI #include <Blinker.h> #include <Adafruit_NeoPixel.h> // key,在点灯 App 中获取 char auth[] = "xxxxxxxxx"; // DIN PIN (GPIO15, D8) #define PIN 15 // 灯带 LED 数量 #define NUMPIXELS 60 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // 新建组件对象 BlinkerRGB RGB1("RGB"); // RGB和亮度 int LED_R=0,LED_G=0,LED_B=0,LED_Bright=180; bool WIFI_Status = true; void smartConfig()//配网函数 { WiFi.mode(WIFI_STA); Serial.println("\r\nWait for Smartconfig..."); // 等待手机端发出的用户名与密码 WiFi.beginSmartConfig(); while (1) { Serial.print("."); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); // 退出等待 if (WiFi.smartConfigDone()) { Serial.println("SmartConfig Success"); Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str()); Serial.printf("PSW:%s\r\n", WiFi.psk().c_str()); break; } } } void WIFI_Set()// { //Serial.println("\r\n正在连接"); int count = 0; while(WiFi.status()!=WL_CONNECTED) { if(WIFI_Status) { Serial.print("."); digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(500); count++; if(count>=5)//5s { WIFI_Status = false; Serial.println("WiFi连接失败,请用手机进行配网"); } } else { // 微信智能配网 smartConfig(); } } /* Serial.println("连接成功"); Serial.print("IP:"); Serial.println(WiFi.localIP());*/ } void SET_RGB(int R,int G,int B,int bright) { // 把灯条变色 for (uint16_t i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i,R,G,B); } // 设置亮度 pixels.setBrightness(bright); // 送出显示 pixels.show(); } //APP RGB颜色设置回调 void rgb1_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value) { //digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); BLINKER_LOG("R value: ", r_value); BLINKER_LOG("G value: ", g_value); BLINKER_LOG("B value: ", b_value); BLINKER_LOG("Rrightness value: ", bright_value); LED_Bright = bright_value; SET_RGB(r_value,g_value,b_value,LED_Bright); } void setup() { // 初始化串口 Serial.begin(115200); // WS2812初始化 pixels.begin(); pixels.show(); pinMode(LED_BUILTIN, OUTPUT); #if defined(BLINKER_PRINT) BLINKER_DEBUG.stream(BLINKER_PRINT); #endif WIFI_Set(); // 初始化blinker Blinker.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str()); // 注册调节颜色的回调函数 RGB1.attach(rgb1_callback); } void loop() { Blinker.run(); } |
源码中只实现单色显示,更多颜色或酷炫的效果显示请自己修改源码实现。
上传至 ESP8266
修改源码相关配置后,单击 Arduino
的 上传
按钮上传代码至 ESP8266
;

上传成功

App 配置连接
连接设备
打开点灯 App,点击 侧边栏按钮
-> 开发者
-> 开发工具
-> EspTouch/SmartConfig
,输入 WiFi
密码后单击 开始配置
;

配置成功

设备配置
- 返回
点灯 blinker
App 主页,可看到设备已在线,点击设备进入配置页面;

- 点击设备
编辑
按钮;
- 点击编辑按钮后会进入组件编辑状态,点击底部组件列表的
颜色
组件,添加到界面中,然后点击界面中新增的颜色
组件进入组件编辑界面,将数据键名
改为RGB
,点击保存
;

- 编辑完成后,点击右上角的
锁定
按钮完成编辑,然后就可以控制灯带了。


参考
叨叨几句... NOTHING