[APM32F072]基于RT-Thread Studio环境使用APM32F091+ESP8266模块实现联网

最近需要评估下极海的 APM32F091 型号做一个物联网项目,然后发现 RT-Thread Studio 已经支持了极海的 APM32F0 系列的开发了。想着基于RT-Thread系统丰富的组件,可以很快把项目所需功能使用起来,我们只要专注于业务逻辑的开发即可。

下面,分享一下自己在 RT-Thread Studio 环境下,使用 APM32F091VCT6+ESP8266 模块,把联网功能使用起来。


1. 新建APM32F091VC的工程
1.1 安装APM32F0系列SDK包

我们打开RT-Thread StudioSDK包管理窗口,然后找到Geehy厂商的软件支持包,安装我们所需要的APM32F0系列的支持包,如下图:

1.2 新建APM32F091的项目工程

1、点击创建RT-Thread项目

2、然后结合自己的硬件板子,选择合适的配置,创建项目即可。

2. 编译下载生成的基本工程

下载完成之后,我们编译刚创建完成的工程,然后再下载到我们的硬件板子运行。

可以看到,编译完成,没有任何的警告和错误。

然后下载到板子运行,刚创建好的工程,main函数时不断想串口输出字符串的,打开串口终端打印信息如下:

串口可以正常打印字符以及接收串口输入的命令,说明工程已经正常运行起来了。

3. 添加ESP8266软件包

RT-Thread Studio有非常丰富的组件可以使用,其中就包括ESP8266的软件包。我们可以在配置界面,直接点击使能ESP8266软件包就可以使用了。

所以说,在RT-Thread上使用ESP8266非常的简单,主要是人家帮我们把ESP8266的驱动,AT命令解析等代码都写好了。

1、双击 RT-Thread Settings 文件,打开配置界面,然后找到软件包 -> IoT物联网 -> AT设备... ,如下图:

2、使能AT客户端,以及配置相关选项。

实际上,我们开启了ESP8266软件包之后,会自动帮我们使能AT客户端组件的,因为ESP8266软件包要依赖该组件。如下图:

4. 使能UART2以及添加使能ESP8266的引脚初始化代码
4.1 使能UART2

上面我们使能了ESP8266软件包,然后就可以编译下载到板子,看看运行情况了。

这个时候,是可以正常编译通过的。下载到板子的运行情况如下:

很明显提示说,没有开启UART2设备,这是因为我们上一步配置时,使用的是串口2连接ESP8266模块,但是我们却没有使能串口2,所以才有这样的报错。下面使能串口2

其实很简单,只要在board.h定义串口2的宏,即可使能串口2。不过我看了APM32的串口驱动代码,串口引脚的初始化代码是要用户编写的(当然如果做的更完善的话,串口引脚的初始化代码都不需要用户编写)。

但是没关系,只是串口引脚的初始化代码而已,我们在drv_common.c文件中,厂商提供的驱动函数中,已经初始化了UART1UART2的串口引脚了,如下图:

也就是说我们使用这两个串口的话,那就不用我们自己写引脚的初始化代码了。当然如果你使用的是其他的串口,根据这里的示例代码,自己对着编写一下也没什么。

4.2 添加使能ESP8266引脚的初始化代码

我所使用的ESP8266模块,还需要向该模块的使能引脚输出高电平,ESP8266模块才能正常工作。这个引脚使用普通的GPIO口即可,我的引脚板子连接到模块的是PA0,所以初始化代码如下:

void ESP8266_EN_GPIO_Init(void)

{

    GPIO_Config_T GPIO_ConfigStruct;



    RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);



    GPIO_ConfigStruct.mode = GPIO_MODE_OUT;

    GPIO_ConfigStruct.pin = GPIO_PIN_0;

    GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;

    GPIO_ConfigStruct.outtype = GPIO_OUT_TYPE_PP;

    GPIO_ConfigStruct.pupd = GPIO_PUPD_NO;

    GPIO_Config(GPIOA, &GPIO_ConfigStruct);

        

    /* PA0 = 1, enable esp8266 */

    GPIO_SetBit(GPIOA, GPIO_PIN_0);

}

 

我们把该函数编写到drv_common.c文件中,然后在该文件的 hw_board_init 函数中调用该函数,如下图:

5. 验证测试

使能了UART2,以及添加了ESP8266模块使能引脚拉高的代码之后,这个时候再次编译下载,就可以正常运行了。可以看到AT Client初始化成功,然后把ESP8266模块的版本信息给打印出来,如下图:

当然,我们可以看到一个错误,说一行数据溢出了。关于这个问题,我看了很多网上的说法是ESP8266模块在启动的时候,有一个复位命令,该命令会返回一串很长的字符串,从而导致有这个错误,但是我们可以忽略该错误,因为不影响我们使用。

如果我们填写的WIFI名称和密码正确的话,那么可以正常连上WIFI的,如下图:

我们可以使用ifconfig命令查看IP地址:

如果我们的路由器能正常上网,那么我们使用ping命令,就可以正常平台百度的网址,如下图:

可以看到有数据返回,说明ESP8266模块已经能正常联网了。

以上就是在RT-Thread Studio环境下,使用APM32F091芯片 + ESP8266模块实现联网的过程了,当然我们使用其他系列的MCU过程还是差不多的。总体来说还是很简单的,当然这主要是因为RT-Thread提供的组件。

6. 挖坑

我们使用了APM32F091+ESP8266实现了联网之后,其实可以做很多事情了。

比如使用MQTT协议,上传物联网设备监控到的数据到云服务器,然后我们通过手机查看该数据,从而实现远程监控。又或者我们通过手机等设备,发送控制命令到云服务器,然后云服务器再转发到具体的物联网设备,实现远程控制,比如智能台灯,智能浇灌设备等等。

MQTT协议在物联网设备中经常使用,我们基于RT-Thread系统,可以很容易就把该协议使用起来,如下图是RT-Thread支持的一些物联网云服务平台:

OneNet、阿里云、腾讯云等平台。在RT-Thread系统下,很容易就能把我们的设备接入这些云平台。

这里挖个坑,后面我再介绍下,使用ESP8266模块,如何接入这些云平台。
---------------------
作者:luobeihai
链接:https://bbs.21ic.com/icview-3287480-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值