开发环境搭建好了,下面开始一个简单的测试实验,最简单的就是IO口实验测试了。
把原来的main文件里面的内容 全部替换成以下的代码
#include "device.h"
#include "gpio_api.h" // mbed
#include "main.h"
#define GPIO_LED_PIN PC_5
#define GPIO_PUSHBT_PIN PC_4
void main(void)
{
gpio_t gpio_led;
gpio_t gpio_btn;
// 初始化ILED管脚
gpio_init(&gpio_led, GPIO_LED_PIN);
gpio_dir(&gpio_led, PIN_OUTPUT); // Direction: Output
gpio_mode(&gpio_led, PullNone); // No pull
// 初始化按键管脚
gpio_init(&gpio_btn, GPIO_PUSHBT_PIN);
gpio_dir(&gpio_btn,PIN_INPUT); // Direction: Input
gpio_mode(&gpio_btn, PullUp); // Pull-High
while(1){
if(gpio_read(&gpio_btn)) {
// LED灭
gpio_write(&gpio_led, 0);
}
else {
// LED亮
gpio_write(&gpio_led, 1);
}
}
}
然后进行编译,编译完成后,使用工具栏的如下图的图标进行下载和调试,板子上没有按键和可以直接控制的LED,时间太紧了,现实中我使用两条线短接当开关用,随着线的短路与断开, PC_5会呈现出相对应的电平变化。
来到正题,与中移动的物联网平台onenet进行连接,并实现数据的上传与控制。
onenet是中国移动的物联网云平台,与阿里云,机智云, 亚马孙云等是同一个意思。
OneNET很多产品的协议都是公开的,依托于中国移动这个大平台,提供丰富的产品试用功能。
第一步我们首先创建一个设备(设备的创建过程就不细说了,有兴趣的同学可以登录官网注册个账号,官方有详细的说明),拿到物联网云平台连接的三个参数------设备ID,鉴权信息,用户ID(此参数跟另外两个不在同一个页面),如下:
指令说明 TableLamp:0 (台灯关闭) TableLamp:1 (台灯打开) 命令的下发如下图
应用命令填写方式:
TableLamp:{V}, 开关灯:开关开值1,开关关值0
到此,云端平台就搭建好了,下面开始在RTL8195AM上构建与它的网络通信,以达到通过网络控制灯的目的。
首先,启动官方SDK的MQTT例程, 在platform_opts.h头文件里面打开MQTT的例子,如下,把CONFIG_EXAMPLE_MQTT设置为1
/* For WIFI GET BEACON FRAME example */
#defineCONFIG_EXAMPLE_GET_BEACON_FRAME 0
/* For WIFI MAC MONITOR example */
#defineCONFIG_EXAMPLE_WIFI_MAC_MONITOR 0
/* For HTTP CLIENT example */
#define CONFIG_EXAMPLE_HTTP_CLIENT 0
/* For MQTT example */
#define CONFIG_EXAMPLE_MQTT 1
/* For mDNS example */
#define CONFIG_EXAMPLE_MDNS 0
/* For multicast example */
#define CONFIG_EXAMPLE_MCAST 0
然后再把lwip的可选配置头文件lwipopts.h头文件的
#defineLWIP_TCP_KEEPALIVE 1 激活,因为mqqt要一直有保持心跳的连接,所以要打开这个开关。
接着再添加 onenet的两个驱动文件如下
在 onenet.c 文件里把 下面宏定义的xxx 替换为上面在onenet平台创建设备的时候所生成的 产品ID,设备ID,鉴权信息。
#define PROID "xxx"
#define AUTH_INFO "xxx"
#define DEVID "xxx"
编译完成后,把程序下到RTL8195AM板子上。 然后使用AT命令先把板子连上路由器,如下所显示
再输入命令 ATWC后 连接成功后最后如下所示,获得了IP地址。
连接上网后,自动连接,或者使用按键控制连接到onenet云平台,平台连接上后的状态如下所示,设备状态 在线(绿色文字所示)
然后通过平台就可以下发命令来对板子进行控制 开灯命令下发如下
至此,项目任务就完成了,本次经验是本着授人以鱼不如授人以渔的目的,主要讲述的都是云平台与控制板连接的方法。
``