完结篇:STM32与阿里云平台梦幻联动

2023-11-27 16:30

本文主要是介绍完结篇:STM32与阿里云平台梦幻联动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述:

前两篇章已经把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_THREADif(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与阿里云平台梦幻联动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/428002

相关文章

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法

《springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法》:本文主要介绍springboot整合阿里云百炼DeepSeek实现sse流式打印,本文给大家介绍的非常详细,对大... 目录1.开通阿里云百炼,获取到key2.新建SpringBoot项目3.工具类4.启动类5.测试类6.测

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短