自学内容网 自学内容网

基于STM32连接阿里云物联网平台

目录

前言(资料下载):

一、mqttfx充当单片机连接

1.1、创建产品

1.2、创建设备

1.3、mqttfx连接阿里云物联网平台

1.4、查看是否连接成功

1.5、mqttfx订阅主题

1.6、使用平台向mqttfx发送已经订阅的主题信息

1.7、使用mqttfx发送数据给阿里云

二、使用串口助手连接阿里云平台

2.1、准备工作

2.2、设置模式3(AP与Sta模式共存)

2.3、连接网络

2.4、填写MQTT的账号密码

2.5、填写ID

2.6、填写域名

2.7、检查是否连接成功

2.8、使用串口发送数据给阿里云

2.9、订阅消息

2.10、完整过程展示

三、使用STM32连接阿里云


前言(资料下载):

资料下载:

通过网盘分享的文件:连接阿里云无敌资料
链接: https://pan.baidu.com/s/10bUW0Ansi_-dF8tTsPlWCg?pwd=9cux 提取码: 9cux 
--来自百度网盘超级会员v3的分享

一、mqttfx充当单片机连接

本次需要下载的应用程序就是mqttfx,这里先详细介绍物联网平台的创建设备和设备的创建,首先可以打开阿里云平台:阿里云平台,完成注册和身份认证后,搜索物联网平台:

然后点击公共示例试用:

1.1、创建产品

进去后创建产品:

产品创建细节:

创建功能:

创建细节(自定义功能):

最后确认无误后发布上线即可:

1.2、创建设备

细节:

然后查看我们创建好的设备,查看mqtt连接参数:

mqtt连接参数(每个人都不一样的):

到这里就几乎配置好了,就可以打开mqttfx了:

1.3、mqttfx连接阿里云物联网平台

填写mqttfx连接参数:

具体细节填写:

然后点击apply即可,退出后点击连接:

1.4、查看是否连接成功

看到自己创建的设备显示在线即可

1.5、mqttfx订阅主题

/k28qf2znI9a/${deviceName}/user/get

其中${deviceName}需要替换成设备名称(前面我有提及到,我起名为test,如果和我不一样就去看自己的设备名称)

将这个替换后,复制到mqttfx:

1.6、使用平台向mqttfx发送已经订阅的主题信息

这里我随便发送了个666

然后去mqttfx查看我们就可以看到我们发送的信息了:

1.7、使用mqttfx发送数据给阿里云

复制下来,还是老样子,替换掉设备名:

/sys/k28qf2znI9a/${deviceName}/thing/event/property/post

其中${deviceName}需要替换成设备名称(前面我有提及到,我起名为test,如果和我不一样就去看自己的设备名称)

替换后,打开mqttfx:

发送信息的格式要求:

{"params":{"temperature":20}}

{"params":{"  ":  }}是一个规定的,空白的地方填我们的信息即可:

20:需要发送的温度数据(后面使用STM32连接就可以发送测得的温度数据,这里使用手动模拟温度数据)

temperature:

点击发送数据后,我们就可以再电脑上查看了:

这里我在上报一个温度为40的数据:

{"params":{"temperature":40}}

查看:

到这里我们就基本熟悉了基本功能!后面我会使用STM32板子进行连接阿里云的!

二、使用串口助手连接阿里云平台

前言:在使用这个串口助手连接阿里云平台可能会出现连接一直出现发送某些指令反馈一直是error

比如:

很有可能是因为固件的原因,我们需要烧写这个固件:

可以先下载文件:

通过网盘分享的文件:CSDN_esp8266烧写
链接: https://pan.baidu.com/s/1Tu5xXNi5qLmPinihgPn9dw?pwd=msh3 提取码: msh3 
--来自百度网盘超级会员v3的分享

文件内容:

烧固件教程:

esp8266接线还要多接一条线:

打开后:

然后就拔插一下3V3即可开始下载,等待下载完成即可!

2.1、准备工作

将esp8266模块与CH340EUSB转TTL接好

(由于电流不太够,所以需要将esp8266的3V3引脚接在5V上面)

AT+RST//复位

使用复位指令复位一下esp8266

2.2、设置模式3(AP与Sta模式共存)

现在开始连接:

AT+CWMODE=3//设置模式3(AP与Sta模式共存)

2.3、连接网络

AT+CWJAP="USER_E191B0","98599714"     //用户名   密码

2.4、填写MQTT的账号密码

MQTT的账号密码在阿里云平台设备里面可以看到:

AT+MQTTUSERCFG=0,1,"NULL","username","password",0,0,""

使用示例:AT+MQTTUSERCFG=0,1,"NULL","test&k28qfTAtkBg","d7c3b27a5d8ca954487de1e1946a4a08439a2c2508242268e9d90ce178178f39",0,0,""

注意别有多余的符号(特别是空格)

2.5、填写ID

AT+MQTTCLIENTID=0,"CLIENTID"//设置

使用示例:

注意:","属于特殊符号,需要转义,在前面加\即可

AT+MQTTCLIENTID=0,"k28qfTAtkBg.test|securemode=2\,signmethod=hmacsha256\,timestamp=1736673123047|"

2.6、填写域名

AT+MQTTCONN=0,"域名",端口号,1//设置域名

使用示例:

AT+MQTTCONN=0,"iot-06z00fj5kcoes6j.mqtt.iothub.aliyuncs.com",1883,1

2.7、检查是否连接成功

打开阿里云平台,检查即可(显示在线就是连接成功了):

2.8、使用串口发送数据给阿里云

AT+MQTTPUBRAW=0,"topic",字节大小,1,0//发布消息

注意:字节数,一定要看准

topic:在阿里云产品里面可以看到:

使用示例:

AT+MQTTPUBRAW=0,"/sys/k28qfTAtkBg/test/thing/event/property/post",30,1,0

发送的信息:{"params":{"temperature":43}}

阿里云平台显示:

2.9、订阅消息

AT+MQTTSUB=0,"topic",1//订阅消息

topic;也是在阿里云平台里面看的

使用示例:

AT+MQTTSUB=0,"/k28qfTAtkBg/test/user/get",1

然后在阿里云发送数据,我们就可以在串口助手看到了:

这里我发送666:

过去串口助手查看:

2.10、完整过程展示

三、使用STM32连接阿里云

这里就直接给代码就好了,就不过多赘述了:
注意:

#define CLIENTID   "k28qfTAtkBg.test|securemode=2\\,signmethod=hmacsha256\\,timestamp=1736673123047|" //设备名称

 这里需要使用双斜杠"\\"进行转义,不同的可以查看一下C语言的转义这个知识点!

#define USERNAME   "test&k28qfTAtkBg" //用户名
//                 "test&k28qfTAtkBg"
#define PASSWORD   "d7c3b27a5d8ca954487de1e1946a4a08439a2c2508242268e9d90ce178178f39" //密码
//                 "d7c3b27a5d8ca954487de1e1946a4a08439a2c2508242268e9d90ce178178f39"
#define CLIENTID   "k28qfTAtkBg.test|securemode=2\\,signmethod=hmacsha256\\,timestamp=1736673123047|" //设备名称
//                 "k28qfTAtkBg.test|securemode=2\\,signmethod=hmacsha256\\,timestamp=1736673123047|"
#define PRODUCTID  "k28qfTAtkBg" //产品ID
//                 "k28qfTAtkBg"
#define DOMAINNAME "iot-06z00fj5kcoes6j.mqtt.iothub.aliyuncs.com" //域名
//                 "iot-06z00fj5kcoes6j.mqtt.iothub.aliyuncs.com"
#define DEVICENAME "test"




//重定义printf函数
unsigned char ch[20] = {0};
int fputc(int ch, FILE *f)
{
unsigned char temp[1]={ch};
HAL_UART_Transmit(&huart1,temp,1,0xfffff);
return ch;
}





//WiFi连接函数
void Wifi_Connect()
{
printf("AT\r\n");//避免报错
HAL_Delay(500);

printf("AT+RESTORE\r\n");//恢复出厂
HAL_Delay(5000);


//printf("AT+RST\r\n");//复位
//HAL_Delay(5000);
printf("ATE0\r\n");//关闭回显
HAL_Delay(5000);
printf("AT+CWMODE=3\r\n");//设置双模式
HAL_Delay(5000);
printf("AT+CWJAP=\"USER_E191B0\",\"98599714\"\r\n");//设置WIFI密码和账号
HAL_Delay(5000);
printf("AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"\r\n",USERNAME,PASSWORD);//设置MQTT的username和password
HAL_Delay(5000);
printf("AT+MQTTCLIENTID=0,\"%s\"\r\n",CLIENTID);//设置CLIENTID
HAL_Delay(5000);
printf("AT+MQTTCONN=0,\"%s\",1883,1\r\n",DOMAINNAME);//设置域名
}






原文地址:https://blog.csdn.net/2302_80169672/article/details/145074065

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!