关闭视频

借助机智云物联网平台用esp8266做一个商业化的七彩RGB灯泡可调方案,炫彩夺目高大尚

发表于:2019年12月24日 15:40更新于:2020年05月29日 14:45

都说智能灯泡是物联网入门项目,制作成本低,原理简单,今天我不想做智能灯泡,来做智能灯带吧,毕竟功能方面可能会更炫酷一点,而且制作成本也很低、支持APP遥控调光、Wifi智能场景.......等功能。

原理和实现方式也比较简单,毕竟现在有很多的物联网云平台提供服务,其中,我最喜欢用机智云物联网平台的MCU和APP在线自动生成代码功能,免费好用,不需要太多基础,也能做一个美观的智能设备和APP出来。

换句话说,服务圆盘的取色可以直接同步到右边的灯带哦!

 

二、制作准备材料

 

2.1 材料:

  • 机智云 物联网开发平台 账号一个,请自行注册:dev.gizwits.com

  • AndroidStudio开发环境,请自行搭建!

  • esp8266 nonos sdk开发环境准备,请自行搭建!

  • 硬件准备:esp8266模组,ws2812b灯珠,以及杜邦线若干条!

 

2.2 我的硬件:

2.3 电路图:

三、机智云平台注册产品。

 

为什么选择机智云物联网开发平台,因为我个人比较喜欢它的自动生成代码工程的功能!包括上位机和mcu代码,非常方便!

 

至于整个注册账号流程我不多说了,下面主要列下数据点:

那么我们开始生成 esp8266代码啦!我们选择 32Mbit的,soc方案;应用配置我们选择 安卓就好了!

四、ws2812 灯珠认识

 

关于这个灯珠的资料网上多的是,我总的概述:

  • 1、每颗灯珠内置一个驱动芯片,我们只需要和这个驱动芯片通讯就可以达成调光的目的了!所以,我们不需要用 pwm 调节!!!

  • 2、其的管脚引出有四个,2个是供电用 的!还有2个是通讯的,DIN是输入,DOUT是输出!以及其是 5v 电压供电!切记!

  • 3、根据不同的厂商生产不同,驱动的方式有所不一样!下面发送数据顺序是:green -- Red -- Blue ,或者还有一种是 Red --- green -- blue , 如果发现你想调节红色变成看绿色,但是蓝色没变化!说明驱动问题!

4.1 机智云物联网社区提供的esp8266驱动ws2812下载:

机智云物联网社区社区下载传送门:club.gizwits.com/thread-6116-1-1.html

 

咳咳!这个机智云物联网社区发现的这个驱动一个缺点是:只能是 gpio0来和灯珠通讯!之后,我和群里的一个小伙伴彭工细聊了下,发现驱动写得有问题,之后,我们整理下,也就兼容全部 io 了。除了 gpio16!!

 

4.2 整理过后的驱动适配:

根据自己的硬件连接在 ws2812.h适配修改,以下面的gpio12为例!

  • // gpio口配置

  • #define WS2812_PIN 12

  • #define WS2812_FUN FUNC_GPIO12

  • #define WS2812_MUX PERIPHS_IO_MUX_MTDI_U

  • #define PIXEL_MAX   24  //灯珠个数

 

上面提到 不同的厂商驱动的方式顺序有所不一样,如果发现不正确,请修改 ws2812.c下面的宏定义:

  • #if 0

  • #define RGB_TO_GRB(c)   (uint32)((c&0x000000ff)|((c>>8)&0x0000ff00)|((c<<8)&0x00ff0000))

  • #else

  • #define RGB_TO_GRB(c)   c

  • #endif

 

具体的修改内容我就不贴了!看源码把!

五、esp8266 工程概述

 

5.1 程序入口:

  • 因为我喜欢用波特率74880来看信息打印,所以去掉了机智云的串口方式!注意我们要把 初始化灯珠的代码放在这里!基本如下了!

void ICACHE_FLASH_ATTR user_init(void)

{

    uint32_t system_free_size = 0;

    wifi_station_set_auto_connect(1); //设置自动连接

    wifi_set_sleep_type(NONE_SLEEP_T);//不允许睡眠

    espconn_tcp_set_max_con(10);

    GIZWITS_LOG( "---------------SDK version:%s--------------\n", system_get_sdk_version());

    WS2812_Init();

    gizwitsInit();

}

 

5.2 业务处理:

  • 其实整个业务处理是在 gizwits_product.c文件进行的!这里面的 gizwitsEventProcess()方法是处理从机智云 app下发的数据处理,这些数据定义都在服务器定义相约好的!有枚举、调色!

代码长注释又多

扫码查看

原理图还有一个按键,我这里 的业务是 长按是 配网模式 ,短按是切换颜色,代码如下:

代码长注释又多

扫码查看

六、安卓工程概述

此章节读懂更需要一定的安卓基础,您可以从机智云自动生成应用下载自动生成的安卓工程,当然了,也可以直接从我打开工程!

 

官网提供的那个自动生成的安卓工程的控制界面是简陋的,我们需要去修改下控制界面,达到我们的需求!

 

这个七彩控件的制作博文,请到我这个博文:http://club.gizwits.com/thread-8164-1-1.html

 

集成进去的流程需要安卓基础,如果不懂集成流程,可以留言问我!下面是集成好的截图!

其中 GosDeviceControlActivity.java是我们主控制代码。只要你学过安卓基础,这个非常容易上手!下面我只贴这个七彩控件下发的代码:

  • mMSeekBarColorPicker.setGizwitLight(true);

  •          //设置点击事件回调

  •         mMSeekBarColorPicker.setSeekBarColorPickerChangeListener(new SeekBarColorPicker.SeekBarColorPickerChangeListener() {

  •             @Override

  •             public void onProgressChange(SeekBarColorPicker seekBarColorPicker, int color, String htmlColor) {

  •                 data_LED_R = Color.red(color);

  •                 data_LED_G = Color.green(color);

  •                 data_LED_B = Color.blue(color);

  •                 sendRgbCmd(KEY_LED_R, data_LED_R, KEY_LED_G, data_LED_G, KEY_LED_B, data_LED_B);

  •             }

  •         });

 

编译后,界面就这样了:

当然,如果想让这个智能灯带实现Echo、Google Home等智能音箱控制,也是可以实现的。在机智云物联网开发平台的文档中心查找Echo或Google Home的文档,即可获知语音控制的详情。

 

文章由 物联网平台 机智云 www.gizwits.com 整理发布