ESP8266/ESP32控制ws2812的几种方法

42 篇文章 20 订阅

ESP8266

ESP8266的GPIO有效翻转大约需要2.5us(0.4MHz),而ws2812的控制电平要求精度在百ns级别,所以直接控制GPIO比较难实现。
在网上搜索了一下各种可行的方案:

  1. Arduino配合ws2812库

  2. non_os SDK,配合 Adafruit_NeoPixel.c

  3. SPI驱动(使用GPIO13)。将SPI的时钟调整为8MHz,发送一个字节所需时间1.25us,等于ws2812一个位的时间,SPI总线发送11000000b即为向ws2812发送逻辑0,SPI总线发送11111100b即为向ws2812发送逻辑1。
    初始化控制禁用CS和MISO使能,只使用MOSI作为WS2812的输出引脚。同时必须需要设置spi的事件回调函数,即使它是空的。
    原博客参考链接:https://blog.csdn.net/gengyuchao/article/details/93239317

  4. 使用open_rtos_sdk的驱动 (使用GPIO3即UART0_RXD)
    esp8266-setup/ws2812_i2s: WS2812 LED library from open-rtos-sdk ported to esp8266-setup and the original RTOS SDK
    Using RAM for DMA buffer. 12 bytes per pixel.
    Can not change output PIN. Use I2S DATA output pin which is GPIO3(UART0_RXD).

  5. 使用这个库THKDev/NeoPixelBus_ESP8266_RTOS: Adafruit enhanced NeoPixel support library with ESP8266 RTOS support,但是example都是基于arduino的。内置了很多效果。这里是WIKI地址Home · Makuna/NeoPixelBus Wiki,这里是案例Examples · Makuna/NeoPixelBus Wiki

  6. 使用WS2812FX移植库THKDev/WS2812FX_ESP8266_RTOS: WS2812 FX Library for ESP8266 RTOS,需要同时安装NeoPixelBus库这里还有使用WS2812FX库的方法

  7. PabloCastellano/awesome-ws2812: A curated list of awesome resources for ws2812 LED strips and matrices 这个仓库收集了很多ws2812相关的资料和驱动库链接。

  8. 一个非常好的web控制案例:toblum/McLighting: The ESP8266 based multi-client lighting gadget

ESP32

相关资源:

  1. 视频-【IOT College】ESP-IDF 环境下使用ESP32 驱动LED WS2812
  2. esp-idf/examples/peripherals/rmt/led_strip at 1cb31e50943bb757966ca91ed7f4852692a5b0ed · espressif/esp-idf
  3. 安信可ESP32-C3模组阿里云远程控制WS2812RGB灯条(基于ESP-IDF的SDK)_安信可科技 -CSDN博客
  4. JSchaenzle/ESP32-NeoPixel-WS2812-RMT: NeoPixel (WS2812) Driver Example code using RMT peripheral
  5. DominikN/ESP32_ledstrip_webserver: Control WS2812 based LED strip using a web server hosted by ESP32.
  6. 使用spi协议的方式传输控制数据
  7. 使用i2s协议的方式传输控制数据(据说最多支持12个灯?)

其它可能的方法:
据说ESP8266 GPIO0翻转速度比其它IO要快,但是似乎这种方法不太稳定。

  • 9
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为您解答。首先,您需要准备以下材料: 1. ESP8266开发板 2. WS2812灯带 3. 电容(建议使用1000uf或以上) 4. 麦克风模块 接下来,您需要按照以下步骤进行操作: 1. 将ESP8266开发板连接到计算机,并打开Arduino IDE。 2. 在Arduino IDE中,选择正确的开发板和端口,并下载并安装ESP8266库。 3. 下载并安装Adafruit_NeoPixel库,这个库可以帮助我们控制WS2812灯带。 4. 连接WS2812灯带到ESP8266开发板。将灯带的VCC引脚连接到ESP8266的3.3V引脚,将灯带的GND引脚连接到ESP8266的GND引脚,将灯带的数据引脚连接到ESP8266的D2引脚。 5. 连接电容到ESP8266的3.3V和GND引脚之间,这可以帮助稳定电压。 6. 连接麦克风模块到ESP8266开发板。将麦克风模块的VCC引脚连接到ESP8266的3.3V引脚,将麦克风模块的GND引脚连接到ESP8266的GND引脚,将麦克风模块的输出引脚连接到ESP8266的A0引脚。 7. 在Arduino IDE中打开示例程序“File->Examples->Adafruit_NeoPixel->strandtest”。 8. 将程序中的灯带引脚修改为D2引脚,并上传程序到ESP8266开发板。 9. 在Arduino IDE中打开示例程序“File->Examples->ESP8266->FFT”,这个程序可以帮助我们对声音进行处理。 10. 将程序中的麦克风引脚修改为A0引脚,并上传程序到ESP8266开发板。 11. 现在,您可以尝试用声音来控制WS2812灯带了。例如,您可以尝试在程序中添加一些代码,使得当检测到声音时,灯带会闪烁或者变换颜色。 希望这些步骤能够帮助您成功实现用ESP8266控制WS2812灯带的声控灯。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值