我们不仅销售产品,我们还传播知识
商品分类

使用ESP8266通过blinker控制WS2812灯带

硬件及硬件接线图

硬件列表:

  • ESP8266 NodeMCU
  • WS2812B 灯带(60颗)
  • 杜邦线(母对母)3条

接线图

接线

Arduino 配置

安装 ESP8266 扩展库不在这里说明了,可查看我另一篇博客 使用ESP8266开发板刷入Deauther用于WiFi攻击测试 。

1. 安装 blinker Arduino 库

  1. 点击 下载blinker Arduino库 ;
  2. 将下载好的blinker库解压到 我的电脑 > 文档 > Arduino > libraries 文件夹中;
libraries

2. 安装 Adafruit_NeoPixel 库

Github地址:Adafruit_NeoPixel

方法一(在线安装)

打开 Arduino, 项目 -> 加载库 -> 管理库,在搜索框中输入 “Neopixel strip”,单击 安装 即可;

搜索库

方法二(离线安装)

  1. 访问 Adafruit_NeoPixel Releases page
  2. 下载最新版本;
  3. 解压文件;
  4. 打开 Arduino, 项目 > 加载库 > 添加.ZIP库...

安装成功后在 Arduino 可看到已加载 Adafruit NeoPixel 库。

安装成功

在App中添加设备,获取 Secret Key

  1. 进入App,点击右上角的 “+“ 号,然后选择 添加设备
  2. 点击选择 Arduino > WiFi接入
  3. 选择要接入的服务商;
  4. 复制申请到的 Secret Key
获取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("rnWait 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:%srn", WiFi.SSID().c_str());
      Serial.printf("PSW:%srn", WiFi.psk().c_str());
      break;
    }
  }
}
void WIFI_Set()//
{
    //Serial.println("rn正在连接");
    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 密码后单击 开始配置

开发工具

配置成功

配置成功

设备配置

  1. 返回 点灯 blinker App 主页,可看到设备已在线,点击设备进入配置页面;
设备列表
  1. 点击设备 编辑 按钮;

设备编辑

  1. 点击编辑按钮后会进入组件编辑状态,点击底部组件列表的 颜色 组件,添加到界面中,然后点击界面中新增的 颜色 组件进入组件编辑界面,将 数据键名 改为 RGB,点击 保存
组件编辑
  1. 编辑完成后,点击右上角的 锁定 按钮完成编辑,然后就可以控制灯带了。
保存编辑
设备详情

转载:https://blog.lanweihong.com/posts/46057/

发表回复

登录后才能评论
微信群
微信群
联系我们

联系我们

微信:13823392571

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息

微信客服
微信客服
分享本页
返回顶部
目录