使用STM32、WIFI模组,亲手打造一款智能宠物喂食器一
1 前言
我从小就喜欢小动物,工作了之后养了一只可爱的小泰迪,取名叫COCO。白天,我上班把COCO独自锁在家中;晚上回家,COCO热情相迎,这种感觉很治愈。
有时候出短差,就把COCO自己锁在家中,也正是这个原因,很想自己做一个宠物喂食器,可以实现远程喂食和定时喂食的功能,无奈,不懂Android/IOS编程无法实现云端和客户端的功能,一直在搁浅。
幸好,最近我参与了一个调查问卷,以开发者的身份参与了涂鸦智能的开源项目,获得的了涂鸦智能所提供的开发套件,今天就和大家分享一下这个开源项目,并介绍一下参与开发的流程,有兴趣或者有时间想玩的朋友们可以扫描以下二维码报名参与,本次活动免费为你准备了模组以及元器件,还有直播培训教程,手把手教你开发一款宠物喂食器,还是相当不错的:
依托涂鸦的智能模组,可以“轻代码”编程,轻松实现客户端的配置,打通了云端、MCU端的“轻代码”甚至“零代码”开发。所用到的硬件资源和平台如下:
STM32F103C8T6最小系统板;
涂鸦wifi语音模组VWXR2;
涂鸦H-Bridge电机驱动板;
5V直流减速电机;
涂鸦IOT平台;
keil5编程环境;
所采用的模组为涂鸦VWXR2,可以轻松实现配网,还具有语音功能。该wifi语音模组的链接如下:
https://developer.tuya.com/cn/docs/iot/device-development/module/wifi-module/vwxr-series-module/vwxr2?id=K9eipxhzap92z
2 模组配网
对于WiFi模组而言,最重要的就是配网,所谓配网,就是让模组接入路由器,实现云端和模组的数据交互。通过USB/TTL将电脑和wifi模组连接。模组上用到的串口为TXD1和RXD1,需要和USB/TTL的串口交叉连接,如下图所示。
在配网的时候接上喇叭,可以发出相应的语音提示,非常的方便。
云串口助手的配网流程如链接所示:
https://developer.tuya.com/cn/docs/iot/device-development/embedded-software-development/mcu-development-access/access-mode-simmulator/module-debugging-assistant-instruction?id=K9hs0cj3lf0au
涂鸦提供了云串口调试助手,技能实现云端的模拟,又能实现MCU的模拟。配网时,选择MCU模拟,联网协议选择Wi-Fi通用协议。
功能点调试文件,需要选择IOT平台所生产的json文件,这一点在后面的IOT平台会说到。json文件加载成功后,会显示16为的PID字符串,点击“开始调试”后会交互数据流,数据流都在左侧,这些数据流可以帮助开发者很快的了解“串口通讯协议”。在界面下方的操作-基础功能中,点击重置,会开始配网流程。这时候,打开手机“涂鸦智能”APP,如下图所示。
注意,目前只支持2.4G的路由器,如果路由器是5G的,需要根据提示设置一下。
3 IOT平台搭建
涂鸦智能可以做到“轻代码”设置“零代码”开发,因为在涂鸦的IOT平台上都给开发者配置好了,平台可以根据所用的IOT模组生成代码,开发者只需要移植代码就可以了。下面介绍详细的开发步骤。
首先注册IOT平台,之后选择右上角的“IOT平台”,如下图所示。
选择“创建产品”:
选择“小家电”,拉到底部选择“宠物喂食器”:
填写产品名称、产品型号等信息,通讯协议选择WI-Fi
之后,可以根据平台提供的功能裁剪自己所需要的功能,如喂食计划、开关、小夜灯等。
之后配置APP的界面,IOT平台提供了很多公版面板可供用户选择
之后,可以打开“涂鸦智能”APP扫面二维码,就可以在手机端生成界面。
手机端生成的界面如下图所示。
4 硬件配置&下载固件
在“硬件开发”界面,选择硬件,这里的硬件指的就是所使用的IOT模组,我所选用的模组是VWXR2模组,带语音功能。
硬件选择好之后,平台会自动生成基于该硬件的资料文档和SDK代码,需要开发者下载
下载开发资料,里面包含需要移植的mcu_sdk代码、json配置文件、串口通讯协议文件、云串口调试助手等文件。
其中json文件,就是《2-模组配网》中云串口助手索要加载的“功能点调试文件”。
5 mcu_sdk移植
在移植之前,我们需要一套代码,该代码能跑通串口程序。我上手有STM8和STM32的最小系统板,刚开始用STM8移植的,移植完后代码的大小为9K,而我的STM8只有8K的空间。所以,最后换成了STM32,开发环境为Keil5。
首先,把mcu_sdk文件复制到keil的工程目录下
在左侧新建MCU_SDK工作组,并把mcu_sdk中的mcu_api.c、protocol.c以及system.c加载进去
在keil中,右键属性或者点击菜单栏的魔法棒,在C/C++下添加mcu_sdk的路径
之后按照开发者文档中MCU_SDK移植的操作流程进行移植,链接如下:
https://developer.tuya.com/cn/docs/iot/device-development/embedded-software-development/mcu-development-access/wifi-mcu-sdk-solution/overview-of-migrating-tuyas-mcu-sdk?id=K9hhi0xr5vll9
通过研究protocol.c中的代码可以知道,IOT平台把功能都做成了单独的函数,函数的命名方式为:
dp_download_xxx_handle(),xxx是不同的功能,如小夜灯为light,开关为switch。只需要在相应的函数下面添加操作就可以了,比如我的STM32最小系统板上有一个LED指示灯。我写的LED点亮函数为LED_Turn_ON(),LED熄灭函数为LED_Turn_OFF(),只需要把语句填上即可。
这时候,通过涂鸦智能APP就可以控制板子上灯的亮灭状态。
要实现宠物喂食器,还需要一个减速电机,减速电机还在购买中,没有到货。到货后继续。