STM32与ESP8266连接机智云的配置步骤详解
前言
笔者最近做项目需要用到云端,于是就了解了一下目前的云。首先是阿里云,但是新用户不给用公共实例了,然后了解到了机智云,发现还自带APP能用,所以就开始用机智云搭建系统。
硬件方面,笔者准备的的是C8T6小蓝板和ESP8266模块(OLED旁边就是了)。
机智云搭建步骤
首先进入机智云官网注册 ,完成后进入开发者中心
进入后在智能产品中点击创建
往下找,找到其他
这里输入产品名称,可以为中文。数据传输笔者用的是定长,至于二者有什么区别,笔者没有深入研究过,这里就不再讨论了。
创建完成后会显示如下界面。
点击标准数据点下方的去编辑。标识名只能用英文字符,显示名称可以为中文,其他选项按需设置即可。
这里笔者创建了一个温度数据点,分辨率为0.1,所以该数据是浮点型数据。
点击确定,可以看到创建成功 。
点击左侧菜单栏中的虚拟设备,可以看到一个二维码。可以用机智云APP扫码绑定,绑定失败的试一下先注册或者换之前的版本。绑定之后可以在手机APP看到相关数据,点击上报即可更改当前的数据,这里不再演示。
再新建一个LED开关量
代码移植
下面演示STM32的代码移植。点击左侧菜单栏中的MCU开发。 选择其他平台,下方的PS码是菜单栏上方的PS,输入登录密码后复制PS码粘贴进去。然后点击生成代码包。之所以选择其他平台是因为直接选择STM32的话,生成的是HAL库下的程序包,选则其他平台生成的是通用的代码包,生成完成后下载。
解压之后,可以看到如下文件。PDF是用户指南,有详细的移植教程。
我们主要用到Gizwits和Utils文件夹中的文件。接下来我们要准备好一份STM32的工程代码,最好是已经实现了数据读取的功能 ,方便后续通讯测试。这里笔者已经准备了一份读取温湿度并在OLED显示的程序。
下面把生成的代码包中的 Gizwits和Utils文件夹复制的工程文件中,并加入头文件包含目录。接着在keil中创建两个同名的文件夹,把对应c文件添加进去
然后打开用户指导文件开始移植程序。移植前面的内如这里不再讨论,有兴趣的读者可以自行研究。笔者这里串口不够用了,就把程序中的所有打印信息函数都屏蔽了。
串口接收
在串口接收中断函数中加入这一函数即可,注意要 #include "gizwits_protocol.h" 头文件加上。具体是串口几要根据自己的项目定。笔者这里是串口1。
串口发送
在gizwits_product.c文件中找到 int32_t uartWrite(uint8_t *buf, uint32_t len)函数,在该函数中加入串口发送函数(要包含自己串口头文件)。根据自己实际工程修改。
定时器
机智云需要1ms运行一次时间戳函数(类似心跳函数)
我们要配置一个1ms中断的定时器,并在中断函数中加入 gizTimerMs() 该函数,笔者这里用的是TIM3。记得包含 #include "gizwits_product.h" 头文件。不过笔者注意到该函数在头文件中并没有声明,包含之后编译会有警告,所以我手动在头文件中添加了函数声明。
芯片复位
机智云用户指南中描述如下:
我们在 gizwits_product.c 文件中找到 void mcuRestart(void) 函数添加文档中的代码即可。(注:不同平台的复位指令可能不一样,请以自己实际使用的为准)
串口打印
这里是运行过程中打印相关的信息,在数据通讯成功前最好还是加一个串口进行日志打印,通讯成功后可以在添加的c文件中搜索 GIZWITS_LOG ,然后屏蔽即可。
在common.h头文件中可以看到GIZWITS_LOG 就是printf函数,如果已经配置了printf函数可以不用管,如果没有配置,但要用到GIZWITS_LOG日志输出的话,需要先配置printf函数。
机智云初始化
在生成的代码包中的User文件夹中右一个main.c文件,打开后可以看到机智云初始化需要使用两个函数,然后在主循环中需要执行两个Handle函数。
将上面的初始化函数和Handle函数添加到我们的工程中,进入userInit函数后可以看到数据点初始化赋值,把注释取消掉给值即可,笔者这里初始化直接赋0了。gizwitsInit 函数这里不用处理。
进入userHandle函数,这里是上报我们系统采集到的数据。把我们采集到的数据在上方声明后,加入即可。
进入gizwitsHandle函数,找到 gizwitsEventProcess部分
这个是事件处理函数,进入之后可以看到LED相关的事件,这里直接设置为开关灯。
实现配网
配网前要先给ESP8266刷入机智云的固件,固件下载地址 。笔者使用的是第二个固件。使用ESPFlashDownloadTool工具烧写固件,这里不再赘述。
固件烧写成功后,可以看到用户指南中关于配网的模式。 最好用按键切换模式,比较方便。若没有按键,可以在程序主循环上面加入选择模式的代码(只需第一次配网用到,配网成功后自动保存)。
为了方便演示,笔者直接在主循环上方加入了设置配网模式函数,这里使用的是AirLink模式。然后编译,没有报错的话烧录程序,有报错的话,根据提示修改。
接着打开机智云APP。点击添加设备。
选择AirLink配网。
选择待连接的wifi,注意名称不能有中文,而且必须是2.4G频段。
直接确认即可
这里需要把设备设置为AirLink模式后再进行下一步,因为上面我们直接把设置模式函数放在了程序中,这里我们只需重新上电即可。重新上电后,看到ESP8266模组的指示灯开始闪烁后,点击完成上述操作。接着就会开始自动配网。
配置成功后会显示当前的设备信息(这里笔者是用另一个项目展示的,步骤都是一样的。如果进去读不到数据,就返回设备页面下拉刷新)。
可以进行控制,配置完成。
作者:keyan_