bigfanofloT 发表于 2017-5-2 13:39:19

使用ESP8266驱动WS2812B型RGB LED简单3步打造智能灯

本帖最后由 bigfanofloT 于 2017-5-4 18:05 编辑

前言:本文描述了如何仅使用一片ESP8266的1个GPIO驱动WS2812B型全彩RGB LED,底层驱动参考了https://github.com/cnlohr/ws2812esp8266,驱动程序还移植Adafruit_NeoPixel的应用库,可实现多种常用特效。在此基础上还连接到了机智云物联网平台,利用其强大的代码自动生成工具,简单三步即完成了一个智能灯的开发。视频:http://player.youku.com/player.php/sid/XMjc0MDM3NTE4MA==/v.swfStep1:在开发者中心新建产品;Step2:添加数据点,可使用微信宠物屋Demo模板导入,删除不需要的即可;Step3:在MCU开发栏目选择SoC方案生成代码SDK;Step4: 下载通用版本调试APP,支持安卓和IOS:
http://dev.gizwits.com/zh-cn/developer/resource/demo_app?protoc=WIFIStep5:把下载的SDK改个名字,原来的有点长,不方便,我这里改为SoC_ESP8266_WS2812B_SmartLEDs然后添加WS2812B型RGB LED的驱动文件(可在附件源码中找到这2个驱动文件):把Adafruit_NeoPixel.c文件放到SoC_ESP8266_WS2812B_SmartLEDs\app\driver下
把Adafruit_NeoPixel.h文件放到SoC_ESP8266_WS2812B_SmartLEDs\app\include\driver下本驱动提供如下功能:
Step6:用文本编辑器如notepad++、SubelimeText等打开目录SoC_ESP8266_WS2812B_SmartLEDs\app\user下的user_main.c文件,然后做如下修改;
首先添加头文件:我们此次使用的是Gokit3SoC开发板,由于驱动LED的GPIO是GPIO0(Gokit3 SoC开发板上对应D6),而生成的代码包默认使用了GPIO0连接到了Gokit3 SoC版的按键key1,因此把按键1相关删除,一般不需要使用产测功能,若自己使用esp8266-12f搭建最小系统,可保留此功能:然后在主函数里面调用LED的初始化:Step7:打开目录SoC_ESP8266_WS2812B_SmartLEDs\app\Gizwits下的gizwits_product.c文件;
首先添加头文件:然后在有userhandle注释的地方添加用户代码:
如下是ESP8266接收到手机APP指令后执行的动作;
源码开发环境搭建,固件烧录教程查看:http://docs.gizwits.com/zh-cn/deviceDev/WiFiSOC/GoKit3S%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91.html工程源码:**** Hidden Message *****本文PDF:WS2812B数据手册:

bigfanofloT 发表于 2017-5-4 13:04:17

SmartKing 发表于 2017-5-3 23:34
望楼主能提供硬件连接方式,十分感谢

说了啊,ws2812b型LED就3根线,电源VCC接5V,GND接地,数据线接ESP8266的GPIO0,在Gokit3 SoC上是D6

LegendiCC 发表于 2019-5-20 22:46:12

楼主,请问枚举类型在product.c里面      case EVENT_location:
            currentDataPoint.valuelocation = dataPointPtr->valuelocation;
            GIZWITS_LOG("Evt: EVENT_location %d\n", currentDataPoint.valuelocation);
                    uart0_sendStr("####please please please location!!!!!!!: \r\n");
            switch(currentDataPoint.valuelocation)
            {
            case location_VALUE0:
                    uart0_sendStr("####Choose beijing location: \r\n");
                    statu=1;//user handle
                    currentDataPoint.valuelocation = 0;
                break;
            case location_VALUE1:
                    uart0_sendStr("####Choose xi'an location: \r\n");
                    statu=1;//user handle
                    currentDataPoint.valuelocation = 1;

                break;

为啥在手机上选择了第一个或者第二个,串口没打印,灯也没变化,程序测试串口和灯用着布尔型数据点没问题。求解

彩色笔 发表于 2017-5-7 14:41:36

本帖最后由 彩色笔 于 2017-5-7 19:16 编辑

bigfanofloT 发表于 2017-5-7 11:54
你这是nodemcu吗?它的flash是1MB的,无法使用的哦,使用ESP8622-12F模块,4MB Flash的,如何修改GPIO参 ...
就的,我用的是安信可公司的NodeMCU,根据官方网址上提供的,是说有4M闪存空间的。 一会我再询问下客服确认下。
   客服确认了,是4M闪存的。

      看了程序,发现在Adafruit_NeoPixel.h 文件内有一行代码可以改变输出端口。请版主帮忙确认下,是不是我这里改成我需要的端口就行了。其它地方还要改吗?
      
   比如我想GPIO5口连接LED,将#define WSGPIO 0 改为#define WSGPIO 5 是不是就可以了?   其它地方还要修改吗?   
   还有个问题,下面那行代码 #define PIXEL_MAX 16 //the total numbers of LEDs you are used in your project   设定了连接的LED总数,这个总数的数值是可以随意调的吗?
   

郭庆帅 发表于 2017-5-2 13:55:30

一楼我要了

全城贯注 发表于 2017-5-2 14:24:47

本帖最后由 Genius 于 2017-5-2 14:44 编辑

亲测WS2812 RGB彩灯MCU和SOC方案实现http://club.gizwits.com/thread-5436-1-1.html

maijie 发表于 2017-5-2 14:37:51

正好在做这个

卢克大叔 发表于 2017-5-2 15:21:19

首先,先赞一个

clide2000 发表于 2017-5-2 17:12:28

感谢分享!刚好在研究这个,有现成的库调用,就方便了。

maomaodemao 发表于 2017-5-2 21:06:23

炫啊:victory:

molo 发表于 2017-5-2 21:12:10

看看,谢谢分享!

clide2000 发表于 2017-5-3 20:35:44

本帖最后由 clide2000 于 2017-5-3 22:12 编辑

其他朋友,有没有遇到初始化以后,总是亮着一个绿灯。
然后在调色时,有时候也会出一个灯颜色不正常。
有时全部关闭后,还是亮一个绿灯的情况?
我这测试了12颗灯的灯板。有这样的情况。

和作者沟通过了。应该是我调用的方法有问题。
大家不要被我误导了。

bigfanofloT 发表于 2017-5-3 21:16:28

clide2000 发表于 2017-5-3 20:35
其他朋友,有没有遇到初始化以后,总是亮着一个绿灯。
然后在调色时,有时候也会出一个灯颜色不正常。
有时 ...

你用的什么?

SmartKing 发表于 2017-5-3 23:34:30

望楼主能提供硬件连接方式,十分感谢

peter58 发表于 2017-5-3 23:55:01

学习学习

peter58 发表于 2017-5-4 17:12:12

已解决

本帖最后由 peter58 于 2017-5-4 17:33 编辑

我的怎么用你的源码和我自已的数据点编译报错,好像库文件有问题;在MIAN.C里屏蔽了#include "driver/Adafruit_NeoPixel.h"可以通过。

在main.c 里lZ在初始化 是用的小写ws2812B_Init();改为:WS2812B_Init();编译通过,我当时是COPY   LZ的,所以报错。

SmartKing 发表于 2017-5-4 19:50:26

bigfanofloT 发表于 2017-5-4 13:04
说了啊,ws2812b型LED就3根线,电源VCC接5V,GND接地,数据线接ESP8266的GPIO0,在Gokit3 SoC上是D6 ...

十分感谢,我试一试,:lol

晕船海盗 发表于 2017-5-4 22:02:51

厉害 ,谢谢分享

卢克大叔 发表于 2017-5-5 00:31:39

正在尝试,感谢分享

SmartKing 发表于 2017-5-5 12:07:43

楼主你好,感谢您的热心,有直接做好的SOC.bin固件吗?自己制作固件方式比较复杂,不太会使用linux操作系统,求固件:'(

bigfanofloT 发表于 2017-5-5 12:24:29

SmartKing 发表于 2017-5-5 12:07
楼主你好,感谢您的热心,有直接做好的SOC.bin固件吗?自己制作固件方式比较复杂,不太会使用linux ...

有啊,你在源码里面的bin文件夹下找

彩色笔 发表于 2017-5-5 15:30:36

我在学习中,刚会烧录,一脑袋浆糊
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 使用ESP8266驱动WS2812B型RGB LED简单3步打造智能灯