完结篇: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

相关文章

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

vue+elementUI下拉框联动显示

<el-row><el-col :span="12"><el-form-item label="主账号:" prop="partyAccountId" :rules="[ { required: true, message: '主账号不能为空'}]"><el-select v-model="detailForm.partyAccountId" filterable placeholder="

比较学习难度:Adobe Illustrator、Photoshop和新兴在线设计平台

从入门设计开始,几乎没有人不知道 Adobe 公司两大设计软件:Adobe Illustrator和 Photoshop。虽然AI和PS很有名,有一定设计经验的设计师可以在早期探索和使用后大致了解AI和PS的区别,但似乎很少有人会系统地比较AI和PS。目前,设计软件功能多样,轻量级和网页设计软件已成为许多设计师的需求。对于初学者来说,一篇有针对性的AI和PS比较总结文章具有非常重要的指导意义。毕竟

【新闻】AI程序员要来了吗?阿里云官宣

内容提要 6 月 21 日,在阿里云上海 AI 峰会上,阿里云宣布推出首个AI 程序员。 据介绍,这个AI程序员具备架构师、开发工程师、测试工程师等多种岗位的技能,能一站式自主完成任务分解、代码编写、测试、问题修复、代码提交整个过程,最快分钟级即可完成应用开发,大幅提升研发效率。 近段时间以来,有关AI的实践应用突破不断,全球开发者加速研发步伐。有业内人士坦言,随着大模型性能逐渐提升,AI应

智慧环保一体化平台登录

据悉,在当今这个数字化、智能化的时代,环境保护工作也需要与时俱进,不断创新。朗观视觉智慧环保一体化平台应运而生,它利用先进的信息技术手段,为环保工作提供了更加便捷、高效的管理方式,成为推动绿色发展的重要力量。 一、智慧环保一体化平台的诞生背景 随着工业化进程的加快,环境污染问题日益严重,传统的环保管理模式已经难以满足现代社会的需求。为了提高环保工作的效率和质量,智慧环保一体化平台应运而

基于Spring Boot构建淘客返利平台

基于Spring Boot构建淘客返利平台 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将讨论如何基于Spring Boot构建一个淘客返利平台。 淘客返利平台通过整合各种电商平台的商品信息,提供给用户查询和返利功能,从而实现流量变现。以下是实现一个简单的淘客返利平台的步骤。 1. 项目初始化 首先,使用Spri

IPD推行成功的核心要素(十一)技术规划与平台规划促进公司战略成功

随着外部大环境的影响,各企业仅有良好的愿望是不够的。预测并顺应新兴市场和技术的变化,变危机为转机,不断推出强大的产品才是一个公司持续繁荣的根本保障。而高效的产品开发往往是基于某些关键技术,针对市场推出的一个或几个产品系列,这些产品系列通常共用一些产品平台,共用一种或者几种关键技术。当一家企业进入了平稳发展期,已经建立了较为完善的管理制度和产品开发流程,但是依然认为竞争对手是那样强大,那样不可战胜。

一二三应用开发平台应用开发示例(4)——视图类型介绍以及新增、修改、查看视图配置

调整上级属性类型 前面为了快速展示平台的低代码配置功能,将实体文件夹的数据模型上级属性的数据类型暂时配置为文本类型,现在我们调整下,将其数据类型调整为实体,如下图所示: 数据类型需要选择实体,并在实体选择框中选择自身“文件夹” 这时候,再点击生成代码,平台会报错,提示“实体【文件夹】未设置主参照视图”。这是因为文件夹选择的功能页面,同样是基于配置产生的,因为视图我们还没有配置,所以会报错。

STM32单片机PWR电源控制详解

文章目录 1. PWR概述 2. 电源结构框图 3. 上电复位和掉电复位 4. 可编程电压监测器 5. 低功耗模式 6. 模式选择 6.1 睡眠模式 6.2 停止模式 6.3 待机模式 7. 代码示例 1. PWR概述 PWR(Power Control)电源控制,负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能。 可编程电压监测器