嵌入式物联网实战项目涂鸦幻彩灯带SDK商用项目

Posted 工程师进阶笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式物联网实战项目涂鸦幻彩灯带SDK商用项目相关的知识,希望对你有一定的参考价值。

最近,我在刷视频的时候,偶然间刷到一个很有趣的视频,是涂鸦智能发布的智能幻彩灯带控制方案。

https://www.bilibili.com/video/BV1vr4y1q7Sn?spm_id_from=333.999.0.0

作为一名Tuya Developer(自己给自己取的Title,哈哈哈),在经过一番了解之后,得知原来涂鸦的IoT产品生态里面,早已经推出幻彩灯带的零代码免开发方案,可以直接使用涂鸦提供的CBU模组,在涂鸦的IoT平台上直接创建产品,快速进行方案落地。

我以前也做过APP控制灯带的方案,是采用ESP32-WIFI模块,接收手机APP下发的指令,对5路灯带进行PWM控制,通过一定的调光算法,从而进行冷暖色温调节以及RGB-HSV颜色调节。

跟以前做的方案不同的是,涂鸦这个幻彩灯带的方案,采用的灯珠是类似于WS2812B这类型带控制IC的像素点灯珠,这种灯珠可以单个进行控制,而不像以前那些整路控制的RGB灯带。

视频里面有趣的地方在于,用户可以通过涂抹的方式,来决定灯带某个具体段落的颜色,以及可以设置灯带跟随音乐律动,呈现出不同的氛围效果。

作为一名热爱学习的工程师,我觉得直接采用涂鸦IoT平台提供的免开发方案,有很大的局限性,就是很多灯带的场景都是涂鸦设定好的,第三方用户或者方案商想进行一些个性化的定制,就会显得无从下手,很不灵活。

幻彩灯带SDK介绍

为了玩这个方案,我联系了一下涂鸦官方的工作人员,问了一下这个方案是否有独立的SDK提供给开发者,进行幻彩灯带自定义方案的开发,好家伙,没想到官方的回复是,有!

于是,我马上向涂鸦官方工作人员申请了这个幻彩灯带SDK的开发白名单,并且向官方申请了两块CBU核心板(BK7231N-Nano)作为灯带的主控制器,BK7231N是一款WiFi-BLE双模通讯芯片,可以使用该芯片进行二次开发。

据了解,涂鸦提供的幻彩灯带SDK,整个SDK的软件框架是基于涂鸦自己开发的操作系统TuyaOS进行调度的。因为TuyaOS提供了不少参考文档,所以,整个SDK上手起来没有什么难度。

BK7231N是深圳博芯科技提供的WiFi-BLE双模芯片,这款芯片极具性价比,而且能满足WiFi通信的同时,也能对一些硬件产品进行简单的控制,我们将要开发的幻彩灯带SDK,就是直接使用BK7231进行控制的,而不需要外挂一个MCU进行控制。

关于如何搭建BK7231N的开发环境,并且在BK7231N上面运行TuyaOS,涂鸦官方给出了很详细的Step by Step文档,文档的博客链接,如下所示。https://blog.csdn.net/sandwich_iot/category_11289915.htmlhttps://blog.csdn.net/sandwich_iot/category_11289915.html

基本上跟着文档的步骤进行,就可以搭建好BK7231N的开发环境,然后快速地在平台上创建产品,对模组进行授权和烧录操作,然后基于产品的SDK进行二次开发。

值得关注的是,涂鸦为了保证接入平台的设备的合法性,以及为了保护数据安全,所有接入IoT平台的硬件模块,都要进行授权操作,具体的授权步骤和方法,上面的博客链接会有详细的说明。(没有经过授权的设备,是接入不了涂鸦IoT后台的)

这个灯带SDK,是使用TuyaOS作为基础任务调度,在这个系统的基础上,添加了彩色灯带的控制能力,这个SDK兼容很多带控制IC的像素灯珠,如WS2812,YX1903,SK6812,等等。并且SDK已经适配了这些灯珠的驱动程序,开发者只需要简单的函数调用,就可以驱动一条幻彩灯带,并且为其配置各种演示场景。

SDK还提供了一个完整的工程实例,这个工程实例适配了涂鸦官方的APP面板,直接使用这个工程实例,就可以实现很丰富的灯带控制功能,甚至说,不用修改任何的代码,只需要填入产品的PID和灯带的长度以及灯珠的数量信息,即可完成灯带产品方案落地。

灯带SDK架构代码

接下来,我们来看一下涂鸦幻彩灯带SDK的代码架构,以及如何基于该SDK,实现像素灯带的控制。

如上图所示,整个幻彩灯带的SDK软件主要分为6大块内容:

1 - 这个是涂鸦提供的工程实例,开发者可以基于此实例添加个性化功能,或者直接使用该实例进行产品落地。

2 - 这个文件夹,里面主要是提供一些硬件设备的驱动代码,比如,按键和灯带,这些驱动代码是涂鸦根据实际的设备,已经定义好的,用户无需修改。

3 - 这个文件夹是提供TuyaOS和灯带相关的说明文档。

4 - 例程文件夹,主要提供两部分的demo例程,TuyaOS的应用例程和灯带的应用例程,我们的应用程序开发,可以基于灯带的应用例程。

5 - BK7231平台相关的代码,这部分代码是跟芯片强相关的,包括工具链,以及TuyaOS的适配层,这部分代码不需要修改。

6 - SDK文件夹主要是芯片跟涂鸦IoT平台进行连接以及通信时需要用的接口函数,这部分内容没有提供源代码,只提供了头文件和库,普通开发者学会使用即可。

以上,就是基于TuyaOS的幻彩灯带SDK源码框架,整个框架很简洁(个人觉得,相比起某米提供的SDK,简直不要简单太多),开发者只需要关注APP文件夹里面的内容,其他的操作,都是调用API,无非就是调用TuyaOS的API,或者调用灯带SDK的API,即可完成幻彩灯带产品的开发,实现自己想要的功能 。

灯带SDK开发步骤

为了让开发者更快速的开发出产品,这个SDK还提供了一系列的参考examples,有简单的像素灯珠点亮,也有复杂的音乐律动和场景展示,开发者可以在这些demo的基础上进行个性化定制和开发。

例如,我们基于leds_pixel_scene_sample这个例程,就可以开发出场景展示的灯带功能,以下是具体的开发步骤。

1、首先,在涂鸦IoT平台,采用自定义方案的方式(不要使用零代码开发方案)创建一个幻彩灯带的产品,如下图所示。

 2、产品创建完成后,涂鸦IoT平台就会为该产品生成PID,这个PID后面会填入到代码里面,还会生成一些默认的灯带DP点,这些DP点是后台跟设备端数据交互的基础。

 3、接下来就是APP的控制面板,为了方便开发者开发手机应用,涂鸦还提供了很丰富的APP面板给开发者选用,为了方便,我们直接采用经典的控制灯带控制面板就可以了,如下图所示。

 4、然后就是到了硬件开发阶段,我们选用的BK7231N芯片,是基于TuyaOS开发的,所以,云端接入方式选用TuyaOS,接入云端的硬件,选用CBU Wi-Fi & Bluetooth 模组,然后在下方下载正式版幻彩灯带SDK,(开发者提供IoT账号和产品PID给涂鸦工作人员开通白名单后,即可使用该SDK),如下图所示。

 5、以上三步完成后,一款基本的幻彩灯带功能就已经在云平台构建完成了,如果需要为产品添加一些特定的功能,比如固件升级,场景联动,多语言管理,等等。可以使用产品配置选项卡,我们先完成一款基本功能的灯带开发,后续再添加这些个性化的特定功能。

 6、我们可以基于leds_pixel_scene_sample这个例程,进行设备端的软件开发,把examples/tuya_category/leds_pixel_scene这个例程,复制到APP文件夹,并重新命名,然后在tuya_device.c文件填入之前申请的PID信息,如下图所示。

 7、源文件tuya_device.c主要是TuyaOS提供给用户进行初始化的系统文件接口,以及一些跟Tuya IoT平台进行通信的回调函数,对于初始化的接口函数,有一些初始化函数不一定会被使用,对于幻彩灯带设备的初始化,主要是 device_init()函数,如下图所示。

 8、对于leds_pixel_device_init()函数,这个函数主要用来初始化灯带的灯珠设备。因为SDK为了兼容不同的像素点灯珠,SDK支持了很多型号的灯珠,比如ws2812,WS2814,YX1903,SK6812等。在使用SDK之前,需要根据灯带实际的控制IC,进行设备驱动注册和启动,函数的具体内容,如下图所示。

 9、再来看看leds_pixel_scene_init函数,这个函数主要是用来给硬件灯带设备注册一些场景,根据不同的灯带段落,注册不同的场景,然后APP可以通过控制具体的段落,实现不同的场景控制。

10、如代码所示,目前SDK提供了很多的场景演示,比如:静态,渐变,跳变,呼吸,闪烁,流水,彩虹,流星,堆积,飘落,追光,飘动,闪现,反弹,穿梭,乱闪,开合。这些场景都提供了指定的控制函数,开发者只需要简单地调用函数,即可实现具体的场景演示。

 11、除了灯光场景演示,SDK还提供了很好玩的音乐律动功能,通过音乐律动功能,可以把生活中播放的音乐,转换为灯光频谱演示,这些好玩的功能,开发者只需要调用一个接口函数,即可实现。

 12、关于设备端如何与涂鸦IoT平台进行通信,SDK根据不同的数据功能点,提供了不同的数据接口,如设备端与IoT平台进行通信的是RAW数据类型,则开发者可以使用__soc_dev_raw_dp_cmd_cb函数接口,进行RAW数据解析,其他数据类型,如bool,int,string,enum等等,也提供了指定的数据接口__soc_dev_obj_dp_cmd_cb,如下图所示。

 13、基于数据类型的解析接口,这个接口是设备端解析涂鸦IoT平台数据的入口,主要是提取出不同的功能点(即DP点),然后根据不同的功能点设置灯带的状态,为了方便处理RAW型数据,我把DP点解析,放在了同一个函数leds_pixel_iot_raw_dp_handler进行处理,如下图所示。(其他类型的DP点数据,也放在同一个函数集中处理。)

 14、对于后期的OTA升级,灯带的SDK也提供了专门的接口供开发者调用,主要是SOC设备升级接口,OTA升级进度接口,OTA升级完成接口,基于这些接口,用户可以很方便地对设备完成OTA升级操作,如下图所示。

 15、至此,涂鸦幻彩灯带SDK已经介绍完毕,该幻彩灯带SDK的正式版本已经进行发布,开发者如果想使用该SDK进行产品开发,可以联系涂鸦官方工作人员,并向工作人员提交涂鸦IoT平台账号和产品PID,开通白名单,即可使用该SDK进行产品开发。

16、需要注意的是,这个SDK主要面向的是B端用户,需要企业有一定研发实力以及具体方案落地能力。如果有照明行业的公司,想加快接入物联网平台,更好地打造差异化产品,可以扫描二维码,联系涂鸦官方的工作人员,获取该SDK以及开发板。

以上是关于嵌入式物联网实战项目涂鸦幻彩灯带SDK商用项目的主要内容,如果未能解决你的问题,请参考以下文章

涂鸦Wi-Fi&BLE SoC开发幻彩灯带

涂鸦Wi-Fi&BLE SoC开发幻彩灯带

嵌入式物联网实战项目环境监测设备接入涂鸦IoT开发平台

嵌入式物联网实战项目环境监测设备接入涂鸦IoT开发平台

嵌入式实战项目环境监测设备接入涂鸦IoT开发平台

基于Arduino SDK 开发炫彩灯带(附送礼品)