现在很多大学嵌入式毕设都要求云端控制,本文章就教一下大家如何使用esp8266去连接机智云的app去进行显示stm32的外设传感器数据啊,控制一些外设啊等。
因为本文章主要教大家如何移植机智云的代码到自己的工程,所以前面的一些准备工作(烧录esp8266的固件,机智云app的使用等)大家可以去其他博主那里参考一下(如果大家有需要可以评论区提出,需求多的话也可以给大家写出来),但是esp8266的烧录工具和固件我会放到文章最后的网盘链接中,大家自行点赞获取。
此次演示的机智云app如下:
这里给大家准备了机智云app的下载链接
机智云APP(下载链接:https://devdocs.gizwits.com/download.html#166419072635445)
大家可以在虚拟设备中用机智云手机app扫码查看自己创建的设备:
app准备好以后就可以到mcu开发里面去自动生成代码了,如下图所示:
接下来就到了最重要的环节:代码移植环节
1.将下载下来的代码里面的Gizwits和Utils两个文件复制粘贴到自己的工程文件中
(同时别忘记在自己的keil工程代码里把这两个文件的.c和.h文件添加到工程中)
2.接下来首先我们打开工程代码中的gizwits_product.c,因为我们用的是标准库函数,所以要把hal库的内容注释掉(如果最后按照我的步骤编译报错,检查一下是否有其它的hal库函数没注释干净)
3.接下来依然在这个代码里往下滑,替换一行代码并注释两个函数如下图所示:
NVIC_SystemReset();
4.继续往下滑,继续注释代码,如下图所示:
5.接下来继续往下滑,将hal库的串口代码注释掉换成自己的使用标准库串口代码(并不一定要和我一样用串口3):
USART_SendData(USART3,buf[i]);
while(USART_GetFlagStatus(USART3,USART_FLAG_TC) == RESET);
if(i>=2&&buf[i] == 0xFF)
{
USART_SendData(USART3,0x55);
while(USART_GetFlagStatus(USART3,USART_FLAG_TC) == RESET);
}
6.接下来gizwits_product.h要进行相应的修改,如下图所示
#include <stm32f10x.h>
7.接下来去你刚刚修改的串口中断函数里面添加相应的头文件和一段代码,如下所示
#include "gizwits_product.h"
gizPutData(&res, 1);
8.接下来开启一个1ms的定时器,在定时器中断函数里运行如下代码:
gizTimerMs();
9.接下来可以对gizwits_product.c内的userHandle( ) 函数进行赋值你想要上传到app的相应的传感器数据(下面会解释这个数据的来源):
10.接下来找到gizwits_product.c内的gizwitsEventProcess函数 ,下图圈出的地方可替换自己想控制的开关变量(这里我演示的是控制PA11口的高低电平,也就是控制一个led的亮灭)。
11.最后是主函数和while循环:初始化的代码中与esp8266通讯的串口是必须的,另一个串口是测试用的,会打印一些信息到上位机上(方便调试),1ms的定时器是必须的,此外下面的三个函数像我一样放着就行了。(图中圈出来的函数是必须的,其他的函数根据你自己的项目添加)
userInit();
gizwitsInit();
gizwitsSetMode(2);
12.然后是while循环:圈出来的函数是必须有的,此外xinlv和xunyang其实是获取超声波的距离,我懒得改变量名就直接用了。
userHandle();
gizwitsHandle((dataPoint_t *)¤tDataPoint);
13.至此,代码就移植完了,接下来就可以烧录程序到单片机了,然后用手机机智云app去连接esp8266,最重要的是手机和esp8266最好用同一个wifi且必须是2.4G的,没有的话可以用手机热点,手机热点一般是2.4G的,机智云连接流程如下:
14.一键配置后就是输入wifi账号和密码(再提示一下要用2.4G的!!!)
然后按下图所示点击即可,
15.点击完后根据页面提示点击我已完成上述操作即可,当进入配对页面后,我们可以盯着开热点的手机,如果他的热点多了一个用户,大概率就是esp8266连接上了,这时候如果配对还没结束你也可以不用等了,直接退出就可以看到一个局域网在线的设备,就是你的设备,点击进去即可。
16.最终显示的效果如图所示 ,高度1和高度2是两个超声波测的值,不过由于while循环的速度很快,手机app数据更新的速度很慢,经常会出现oled上面信息更新了,手机上的数据要过一会才会更新,此外,我也测试了蜂鸣器的开关也是正常的在这里就不给大家演示了 。
通过网盘分享的文件:esp8266烧录固件.zip
链接: https://pan.baidu.com/s/1ZWBkJq87xvhORIBU87RNBQ?pwd=0531 提取码: 0531
如果大家需要我的工程源码可以一件三连后私聊获取!