使用ESP8266通过blinker控制WS2812灯带
硬件及硬件接线图
硬件列表:
- 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
,其他配置可根据自身条件设置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122#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
,点击保存
;
- 编辑完成后,点击右上角的
锁定
按钮完成编辑,然后就可以控制灯带了。
参考
使用ESP8266接入“天猫精灵”控制七彩灯(WS2812)的颜色/亮度-开源
点灯科技-使用esp8266 & WiFi接入
以上是 使用ESP8266通过blinker控制WS2812灯带 的全部内容, 来源链接: utcz.com/a/130798.html