所有设备到齐之后, 笔者第一时间开始跑起来。总的来说,Tuya OS 二次开发还是挺好上手的,由于它是专门针对宠物产品品类的SDK,功能相对齐全,demo也都包含了,可以节省不少开发时间。特别适合B端的用户,尤其从事宠物产品行业的公司,想加入物联网平台,打造差异化功能的产品,可以尝试该SDK开发。下面我带大家体验下整个开发流程:
一、产品创建
首先,在涂鸦IoT平台上完成创建宠物喂食器,因我做的是带视频功能的产品,所以选择“宠物喂食器(带IPC)”产品方案,“设备交互”这里选择相应的面板,注意要选择“TuyaOS“接入方式。这个SDK目前以白名单授权的形式对外开放,所以有需要的同仁可以联系涂鸦工作人员开通白名单。
二、固件获取及编译
1. 获取SDK
可联系涂鸦工作人员开通白名单(联系方式在文末)。
2. 搭建开发环境
可以参考链接:
https://developer.tuya.com/cn/docs/iot-device-dev/wifi-sdk-overview?id=Kaiuyfbaezlzt
3. 创建固件KEY以及上传固件
3.1新增自定义固件
3.2固件编译
sh:运行命令;build_app.sh: 编译脚本;ty_bk7252_pet_feed: 固件名称;1.0.0:固件版本
编译成功界面如下:
3.3固件上传
此时需要把编译出来的固件上传到IoT平台,上传的目的是获取对应的授权码。其中QIO_1.0.0.bin 为生产固件,UAA_1.0.0.bin 为用户去固件,UG_1.0.0.bin 为升级区固件。
三、固件烧录授权
1. 固件烧录
因拿到的是新板子,未烧录过任何程序,此时必须要通过SPI将QIO固件灌进去后才能使用串口烧录。(注意:擦除状态那里必须要选择擦除程序空间,如果选择的擦除全部空间会把RF标志位擦掉,需要重新校监RF)。
使用涂鸦配套的调试开发板,烧录接线方式如下:
SPI将生产固件烧录完毕后,后续调试就可以直接用串口工具通过串口烧录了。BK7252串口1和串口2都可以用来下载,将串口工具接在串口1或者串口2上即可。
(串口烧录固件如图所示:注意起始地址以及操作长度,如果烧录不进去可以尝试换一下通讯波特率,有的串口工具不支持这么高的波特率。)
2.固件授权
目前固件授权有两种方式:1、下单时选择生产凭证授权,此授权方法会检测PID是否和固件匹配,优点是比较简单,不需要走工单。2、下单时选择生产凭证授权-仅授权,此方法一般是针对不同PID的产品授权,生产凭证(Token)中不含固件信息,只用于授权激活。
2.1.生产凭证授权
涂鸦IoT平台下单授权码时,选择的是生产凭证,下单完毕后可以下载到授权码。拿到授权码,一般要先在涂鸦的生产管理系统中确认一下授权码:https://pms.tuya.com/ (如果没有账号要先注册一个账号)。如果没有生产凭证确定的选项,需要联系涂鸦工作人员开通白名单。如下图,前往下载授权软件:
下载安装完成后,登录涂鸦生产管理系统,选择云模组 。(注意:要用生产管理系统申请的账号登录,而不是IoT平台账号!!)
烧录平台打开之后,点击输入生产凭证—生产凭证—写入平台下载的授权码,烧录工位选择烧录授权(如图所示)。注意,波特率选择9600!因为不需要上位机烧录固件,所以下面选择“仅授权“即可:
目前BK7252 UART2做为log口,UART1做授权,所以用串口工具连接UART1,在烧录软件上选择对应COM口后点击“运行”,然后给开发板或者芯片重新上电,烧录成功如下图所示:
四、喂食器SDK架构代码
涂鸦对BK7252底层做了很多封装和平台的适配工作,我们进行的是在应用层开发,大可更多地关注在自己的业务逻辑。当然,开机流程必须熟悉,以方便排查问题。
这里的APP文件夹是本次主打宠物喂食控制相关的功能。注意:该SDK不建议用户自己更改太多的代码,特别是拉流这里。
1.这个是涂鸦提供的工程实例,开发者可以基于此实例添加个性化功能,或者直接使用该实例进行产品落地。
2.这个文件夹主要提供了一些硬件设备的驱动代码。比如一些电机驱动的代码,用户无需修改。
3.这里提供了TuyaOS的说明文档。
4.例程文件夹,主要提供两部分的demo例程,TuyaOS的应用例程和设备驱动的应用例程。
5.BK7252平台相关的代码,这部分代码是跟芯片相关的,包括工具链,以及TuyaOS的适配层,这部分代码不需要修改。
6.SDK文件夹主要是芯片跟涂鸦IoT平台进行连接以及通信时需要用的接口函数,这部分内容没有提供源代码,只提供了头文件和库,普通开发者学会使用即可。
当然在拿到设备的时候,我们最关心的是如何配网,目前设备端的配网方式是长按RESET键5S,下面为按键函数:
只需要改变配网按键,限位开关,电机控制等引脚可以直接在这里进行修改IO引脚号就可以配合硬件设备直接使用了。
BK7252平台支持两种播放方案,DAC方案 和 IIS播放方案;默认使能的DAC方案,在audio_config.h文件中进行配置。
#define DAC_ADC_PROJ_ENABLE 1 //DAC 播放方案使能
#define IIS_IIC_PROJ_ENABLE 0 //IIS 播放方案未使能
当前的BK7252开发板硬件是DAC方案的硬件,声卡是ns4150,所以无需更改配置,直接进行测试。
对于后期的OTA升级,宠物喂食器的SDK也提供了专门的接口供开发者调用,主要是MCU设备升级接口,OTA升级进度接口,用户可以很方便地对设备完成OTA升级操作,如下图所示。
在设备调试的时候,我们最常用的方法就是看模组log日志信息来定位问题。那如何看故障代码找问题呢?
将7171转化成十六进制是1c03,那么直接可以再tu_error_code.h中进行查看。
那就说明改芯片没有授权。
目前这边的喂食解决方案设计是通过一个减速电机进行带动齿轮转动达到喂食效果,通过限位开关记录齿轮转了多少圈,由此来计算为了多少粮。