收藏官网首页
查看: 14057|回复: 0

[求助] 方案推荐:借助机智云物联网平台 用esp8266做一个商业化的...

605

主题

651

帖子

3万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
32990
发表于 2019-12-24 16:46:38 | 显示全部楼层 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
方案推荐:借助机智云物联网平台esp8266做一个商业化的七彩RGB灯泡可调整体方案项目,炫彩夺目高大尚

时间如梭,大四选完毕设题之后,大学生的毕业季即将要来临了。很多人愁着做毕设找不到好的题材!我在这里分享一个比较简单而炫酷的智能灯带作品,具有低成本制作、APP遥控调光、Wifi智能场景.......等功能。

这是我昨天在一个商店看到的一个智能灯泡的截图。
1.jpg

首先给大家一个昨晚拍的diy图片,我想只有那个手机里面的界面吸住了你把?但是,我郑重告诉你,这个圆盘的取色可以直接同步到右边的灯带哦!咳咳!下面听我完整为大家详细阐述整个制作流程!我的键盘开始疯狂翘起来了!

2.jpg

二、制作准备材料

2.1 材料:
  • 机智云 账号一个,请自行注册:dev.gizwits.com
  • AndroidStudio开发环境,请自行搭建!
  • esp8266 nonos sdk开发环境准备,请自行搭建!
  • 硬件准备:esp8266模组,ws2812b灯珠,以及杜邦线若干条!


2.2 我的硬件: 3.jpg

2.3 电路图:
4.jpg
三、机智云物联网平台注册产品。
为什么选择机智云 ,因为我个人比较喜欢它的自动生成代码工程的功能!包括上位机和mcu代码,非常方便!

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

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

6.jpg

四、ws2812 灯珠认识

关于这个灯珠的资料网上多的是,我总的概述:
  • 1、每颗灯珠内置一个驱动芯片,我们只需要和这个驱动芯片通讯就可以达成调光的目的了!所以,我们不需要用 pwm 调节!!!
  • 2、其的管脚引出有四个,2个是供电用 的!还有2个是通讯的,DIN是输入,DOUT是输出!以及其是 5v 电压供电!切记!
  • 3、根据不同的厂商生产不同,驱动的方式有所不一样!下面发送数据顺序是:green -- Red -- Blue ,或者还有一种是 Red --- green -- blue , 如果发现你想调节红色变成看绿色,但是蓝色没变化!说明驱动问题!



7.jpg




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下发的数据处理,这些数据定义都在服务器定义相约好的!有枚举、调色!

代码长注释又多
扫码查看
8.jpg

原理图还有一个按键,我这里 的业务是 长按是 配网模式 ,短按是切换颜色,代码如下:
代码长注释又多
扫码查看
9.jpg

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

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

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

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

其中 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);
  •             }
  •         });


编译后,界面就这样了:
11.jpg
当然,如果想让这个智能灯带实现Echo、Google Home等智能音箱控制,也是可以实现的。
http://docs.gizwits.com/zh-cn/UserManual/Google_Home_gokit.html






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






您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表