借助机智云物联网平台用esp8266做一个商业化的七彩RGB灯泡可调方案,炫彩夺目高大尚
都说智能灯泡是物联网入门项目,制作成本低,原理简单,今天我不想做智能灯泡,来做智能灯带吧,毕竟功能方面可能会更炫酷一点,而且制作成本也很低、支持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 整理发布