我是靠谱客的博主 悦耳盼望,最近开发中收集的这篇文章主要介绍完结篇:STM32与阿里云平台梦幻联动概述:1.阿里云平台:2.esp8266模块:3. 编译测试:结束语:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

概述:

前两篇章已经把esp8266通信部分调试完成,此篇章着力于通过MQTT协议连接阿里云物联网平台。

开篇:STM32F767igt6 + RT-Thread + ESP8266

第二篇:STM32F767igt6 + RT-Thread + ESP8266

本篇张代码:代码地址

1.阿里云平台:

1.1 初识阿里云物联网平台:

阿里云物联网平台提供了一站式的设备接入、设备管理、监控运维、数据流转、数据存储等服务。常见的物联网平台有腾讯云、中国移动的OneNET、原子云等。

        初次使用阿里云平台时,首先需要注册一个自己的账号,可以直接使用某宝账号登录;

1.2 创建产品实例:

        登录后,进入到物联网控制台创建实例产品和设备,具体操作步骤请移步到产品文档中,里面有详细的介绍;

        创建好产品设备之后,MQTT连接参数是我们后面软件开发需要用到的信息;

                自定义topic主题,权限为订阅、发布,软件测试需用到。

        以上的步骤处理完后,由于还没有写测试软件,可以先使用MQTT.fx测试接入,按操作文档指引操作,说的很详细。按照自己创建的产品设备信息填好即可连接上,连接上后,设备状态会跳变成在线状态。 

   

1.3 定义物模型:

        产品创建完成后,可以自定义一个物模型,用于建立设备与物模型的通信连接,物模型创建步骤;这里我创建了一个数据上报的物模型,其中温度的属性,标识符后面需要用到。

1.4 设备模拟器调试:

        使用设备模拟器进行上、下行数据的调试,使用模拟器的前提是 产品创建时设置的数据格式是ICA 标准数据格式(Alink JSON),透传格式不可以使用模拟器调试。

        模块选择自定义创建的“数据上报”,然后设置发布卧室温度的值,发布成功后跳转查看云端日志,查看发布的具体内容,后面编写软件使用AT+MQTTPUB发布数据时就按照该内容的格式发送即可。

2.esp8266模块:

2.1 烧录MQTT固件:

        这里使用的是ESP8266系列,到安信可固件下载对应的AT固件即可,我们需要的是带MQTT协议的固件,相应的固件版本有使用说明,方便查看AT指令,一定要看说明,不同版本有些指令参数是不同的。

        详细烧录步骤不做说明,烧录完成之后,可以先使用串口调试助手测试AT指令是否正常,以确保固件烧录成功。

        特别说明下,开发中完成的每一个步骤都去测试一下正确性、可行性,别全部问题堆到一起最后再测试,到时一头雾水,很难找到问题点。

2.2 MQTT协议初识:

        目前,MQTT协议最新版本为5.0版,MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域;由于esp模块烧录了MQTT协议固件,所以对MQTT协议细节部分可以不用特别去了解,会使用AT指令就行;作为常用通信协议多去熟悉也是不亏的,这里附上MQTT协议中文链接。

2.3 编写软件连接阿里云:

        由于之前调通了esp8266通信部分,现在直接使用AT指令配置即可。

①AT+CWMODE 配置模块的工作模式,不要配置成AP模式即可,需要能连接WiFi上网;

②AT+RST  配置模式后一般需要重启模块;

③AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com"  开启SNTP服务器,8时域,SNTP服务器为阿里云域名;

④AT+CWJAP 连接WiFi;

⑤AT+MQTTUSERCFG  配置用户参数,指令参数如下

AT+MQTTUSERCFG=<LinkID>,<scheme>,<"client_id">,<"username">,<"password">,
<cert_key_ID>,<CA_ID>,<"path">    ;

⑥AT+MQTTCONNCFG 配置连接参数,参数如下

AT+MQTTCONNCFG=<LinkID>,<keepalive>,<disable_clean_session>,<"lwt_topic">,
<"lwt_msg">,<lwt_qos>,<lwt_retain>    ;
⑦AT+MQTTCONN 连接阿里云,参数如下
AT+MQTTCONN=<LinkID>,<"host">,<port>,<reconnect>   ;

⑧连接上后即可进行发布、订阅了。

/************************************************
 * Fuction:MQTT取消订阅topic
 * *********************************************/
void mqtt_unsub_topic(char * Topic)
{
    char *pt = (char *)rt_malloc(100);
    sprintf(pt, "AT+MQTTUNSUB=0,"%s"",Topic);
    esp8266_at_cmd_send(pt, "OK" , 100);

    if(pt != RT_NULL){
		rt_free((void *)pt);
	}
}



/************************************************
 * Fuction:MQTT发布topic
 * *********************************************/
void mqtt_publish_topic(char * Topic ,char * Data)
{
    char *pt = (char *)rt_malloc(164);
    sprintf(pt,"AT+MQTTPUB=0,"%s","{\"id\":135789\,\"params\":{\"aliyun_qmttdata:RoomTemp\":%s}\,%s\,%s}",1,0",Topic,Data,VERSION,METHOD);
    esp8266_at_cmd_send(pt, "OK" , 300);

    if(pt != RT_NULL){
		rt_free((void *)pt);
	}
}

3. 编译测试:

3.1 测试概述:

        f7水星版中有三个按键,这里创建一个按键线程,控制KEY_UP进行MQTT的连接与断开,KEY_0进行发布Topic数据,KEY_1进行订阅Topic。

        如下代码为按键处理函数逻辑:

#ifdef  MQTT_THREAD
    if(key_pin == KEY_UP){
		if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == GPIO_PIN_SET){
			mqtt_connect_aliyun(HOST_URL,PORT,CLIENT_ID,USER_NAME,PASSWORD);
			LED_0(0);
		}
		else{
			mqtt_close_connect();
			LED_0(1);
		}
         
    }
    else if(key_pin == KEY_0){
		mqtt_publish_topic(PUB_TOPIC,"21.7");
    }
    else if(key_pin == KEY_1){
		mqtt_sub_topic(SUB_TOPIC);      
    }
    key_pin = 0 ;
#endif

3.2 测试结果:

        阿里云中开启在线调试,设备端按KEY_UP按键连接上阿里云后,按KEY_0键发布数据,然后使用在线调试功能获取相应模块的数据,验证成功。

结束语:

        本系列篇章,重在记录从0到1实现设备与云端的通信的过程,其中还有很多细节的问题不够完善,希望这些能给新手读者带来帮助。

最后

以上就是悦耳盼望为你收集整理的完结篇:STM32与阿里云平台梦幻联动概述:1.阿里云平台:2.esp8266模块:3. 编译测试:结束语:的全部内容,希望文章能够帮你解决完结篇:STM32与阿里云平台梦幻联动概述:1.阿里云平台:2.esp8266模块:3. 编译测试:结束语:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部