Esp8266 mqtt ws2812无线 多模式氛围灯

使用的是 ws2812数字灯珠 + esp826601s +mqtt 使用arduino IDE开发
能够实现使用mqtt控制多种彩灯模式

效果演示:
链接

ws2812数字灯珠

Esp8266 mqtt ws2812无线 多模式氛围灯_第1张图片
有信号的输入和输出
有信号的输入和输出

DO是信号输出 DI是信号输入
将多个RGB灯串联,信号进行传输然后实现灯带。
Esp8266 mqtt ws2812无线 多模式氛围灯_第2张图片

有很多种 我使用是这种来充当led灯
Esp8266 mqtt ws2812无线 多模式氛围灯_第3张图片

联合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接地
这里推荐使用 这种模块 方便简单
Esp8266 mqtt ws2812无线 多模式氛围灯_第4张图片

接线省事很多
Esp8266 mqtt ws2812无线 多模式氛围灯_第5张图片

Adafruit_NeoPixel库

用于控制基于单线的LED像素和条带

安装

IDE内安装:

  • 在arduino IDE中 项目—》加载库----》管理库
  • 然后使用搜索栏搜索Neopixel strip。
  • 选择版本进行安装

源码安装:

  • 找到源码 GitHub链接下载下来
  • 下载后,将文件夹重命名为“ Adafruit_NeoPixel”并安装在Arduino Libraries文件夹中
  • 重新启动Arduino IDE,打开示例 找到这个库的示例代码
支持的芯片

Esp8266 mqtt ws2812无线 多模式氛围灯_第6张图片

使用

有两种创建灯带形式

  • 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显示相应的彩灯模式

项目参考代码链接

GitHub地址

更多学习教程

ESP开发学习基础知识

基础知识包括对esp模块的认识与了解 mqtt协议的了解,arduino IDE运用代码编写等等。

  1. arduino基础学习
  2. esp系列模块的介绍
  3. mqtt协议的介绍与使用
  4. 利用mqtt esp模块 基于arduino IDE开发方法
  5. esp模块的AT指令 刷固件
  6. esp模块睡眠模式使用
  7. esp8266-01s介绍与使用
  8. esp8266-12f介绍与使用
  9. NodeMcu介绍与使用
esp开发IOT应用

基于esp8266的模块以及其他模块根据实际的应用场景与需求制作的物联网应用

  1. 基于FRID arduino 继电器 电磁锁开发的FRID门禁系统
  2. esp32-cam获取视频流图像处理
  3. 基于步进电机 esp8266 mqtt开发的自动窗帘控制
  4. 基于DHT11 Esp8266 mqtt获取室内温湿度
  5. 基于CCS811 esp8266 mqtt 获取室内空气质量
  6. 基于红外模块 esp8266 mqtt开发的智能遥控控制
  7. 基于ws2812 esp8266 mqtt开发的智能多级照明灯
  8. 基于ws2812 esp8266 mqtt开发的智能多模式氛围灯
  9. 基于mp3player esp8266 mqtt开发的智能语音播报系统
  10. IOT综合应用之智慧教室项目开发

你可能感兴趣的:(IOT应用)