当前位置:   article > 正文

STM32使用Wifi连接阿里云_大彩 串口屏 wifi 连接阿里云

大彩 串口屏 wifi 连接阿里云

目录

1 实现功能

2 器件

3 AT指令

4 阿里云配置

4.1 打开阿里云

4.2 创建产品

4.3 添加设备

5 STM32配置

5.1 基础参数

5.2 功能定义

6 STM32代码

本文主要是记述一下,如何使用阿里云物联网平台,创建一个简单的远程控制小灯示例。

 完整工程:

https://download.csdn.net/download/qq_51458770/89550617

1 实现功能

STM32通过ESP8266模块,采用MQTT连接阿里云平台,之后可以和阿里云平台进行通信,可以向平台发布小灯的状态(开\关),也可以接收平台控制小灯的指令(开\关)。

2 器件

  • 单片机:STM32f103c8t6
  • Wif模块:ESP8266-01s
  • 外设: 小灯(STM32最小核心板自带PC13)

AT指令

这里只是简单看下wifi连接阿里云的AT指令,不需要过于纠结,可以往下继续看:

  1. 1 基础指令
  2. 1)重置wifi模块
  3. AT+RST
  4. 2)设置模块为STA模式
  5. AT+CWMODE=1
  6. 3)使模块连接上wifi
  7. AT+CWJAP="WIFI名称","WIFI密码"
  8. 注意:若你的模块连接不上wifi,回复EEROR,首先先判断你的wifi是否是2.4G的频段,5G频道ESP8266不可用
  9. 4)检查IP地址,看看是否正确连上wifi
  10. AT+CIFSR
  11. 5)设置时区为:中国早上八点
  12. AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com"
  13. 到此,ESP8266的基本配置以及完成,下面就是MQTT协议连接上云平台的操作。
  14. 2 使用MQTT指令连接到云平台
  15. 需要先查看下阿里云的MQTT参数,在设备那里面有!!!
  16. 1) 设置MQTT的登陆用户名与密码
  17. AT+MQTTUSERCFG=0,1,"NULL","username","passwd",0,0,""
  18. 2) 设置MQTT的ClientID
  19. AT+MQTTCLIENTID=0,"clientId"
  20. 注意:在自己的clientId中,需要在每个逗号前面加一个\符号,串口数据才能正确发送识别,否则会一直回复EEROR
  21. 3)设置MQTT接入地址
  22. AT+MQTTCONN=0,"mqttHostUrl",port,1
  23. 完成以上三步,设备就连接到了云平台(设备更新为在线)
  24. 3. 订阅平台消息(设备上传/接收,平台接收/下发)
  25. 订阅Topic是指在一个订阅服务中,用户可以选择关注或订阅感兴趣的话题或主题。
  26. 通过订阅Topic,用户可以更加精准地获取自己的内容,提高信息的质量和效率。
  27. 3 订阅Topic
  28. 1)订阅平台消息
  29. AT+MQTTSUB=0,"subtopic",1
  30. 2)设备上报数据
  31. AT+MQTTPUB=0,"pubtopic","data",0,0
  32. Eg:
  33. AT+RST // 重置wifi模块
  34. AT+CWMODE=1 //
  35. AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com" // 设置时区为:中国早上八点
  36. AT+CWJAP="HONORL","12345Lz." // 使模块连接上wifi
  37. AT+MQTTUSERCFG=0,1,"NULL","ESP8266010&a1cRrS9qC4K","c9c3585b4841be49f67dc4da6d9e894074dd7fc956c429515bcf247a4bee7541",0,0,"" // 设置MQTT的登陆用户名与密码
  38. AT+MQTTCLIENTID=0,"a1cRrS9qC4K.ESP8266010|securemode=2\,signmethod=hmacsha256\,timestamp=1720315990667|" // 设置MQTT的ClientID
  39. AT+MQTTCONN=0,"a1cRrS9qC4K.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1 // 设置MQTT接入地址
  40. // AT+MQTTSUB=0,"topic",1
  41. AT+MQTTSUB=0,"/sys/a1cRrS9qC4K/ESP8266010/thing/service/property/set",1 // 订阅平台消息
  42. AT+MQTTPUB=0,"/sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post","{params:{\"LightSwitch\":1}}",1,0 // 设备上报数据
  43. // 注意发布部分写代码时容易出问题——格式问题

4 阿里云配置

4.1 打开阿里云

没有账号的话,注册登录下,之后搜索物联网平台,点击进去

4.2 创建产品

4.3 添加设备

也可以直接到设备列表创建设备

5 STM32配置

5.1 基础参数

关于wifi连接阿里云的一些参数,这些信息可以在MQTT连接参数里面找到:

  1. 需要先查看下阿里云的MQTT参数,在设备那里面有!!!
  2. 1) 设置MQTT的登陆用户名与密码
  3. AT+MQTTUSERCFG=0,1,"NULL","username","passwd",0,0,""
  4. 2) 设置MQTT的ClientID
  5. AT+MQTTCLIENTID=0,"clientId"
  6. 注意:在自己的clientId中,需要在每个逗号前面加一个\符号,串口数据才能正确发送识别,否则会一直回复EEROR
  7. 3)设置MQTT接入地址
  8. AT+MQTTCONN=0,"mqttHostUrl",port,1
  9. 完成以上三步,设备就连接到了云平台(设备更新为在线)

至于要订阅和发布的主题可以到产品里面去找:

以下以物模型通信topic为例说明。

5.2 功能定义

为了能够接收来自WiFi的数据(小灯状态),并显示小灯状态,需要创建一下功能定义:

为了更好的区分控制功能和显示功能,我们这里再创建一个控制的功能定义,用于下发控制信息:

注意要发布上线,之后去设备那里就可以看到了

以上完成后就可以编写代码连接云平台并实现数据的收发。

6 STM32代码

6.1 main.c

  1. #include "string.h"
  2. #include "system.h"
  3. #include "SysTick.h"
  4. #include "led.h"
  5. #include "usart.h"
  6. #define PubTopic "/sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post" // 发布
  7. #define SubTopic "/sys/a1cRrS9qC4K/ESP8266010/thing/service/property/set" // 订阅
  8. /*******************************************************************************
  9. * 函 数 名 : main
  10. * 函数功能 : 主函数
  11. * 输 入 : 无
  12. * 输 出 : 无
  13. *******************************************************************************/
  14. int main()
  15. {
  16. char buf[256];
  17. int buf_len;
  18. SysTick_Init(72);
  19. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
  20. LED_Init();
  21. USART1_Init(115200); // 串口波特率115200
  22. GPIO_ResetBits(LED_PORT,LED_PIN); //LED=0 亮
  23. delay_ms(1000); // 延迟
  24. printf("AT\r\n"); // 第一步 AT
  25. delay_ms(2000); // 延迟
  26. printf("AT+GMR\r\n"); // 第一步 版本号
  27. delay_ms(2000); // 延迟
  28. printf("AT+CWJAP=\"%s\",\"%s\"\r\n", "HONORL", "12345Lz."); // 第四步 wifi热点
  29. delay_ms(5000); //延迟
  30. delay_ms(5000); //延迟
  31. delay_ms(5000); //延迟
  32. delay_ms(5000); //延迟
  33. GPIO_SetBits(LED_PORT,LED_PIN); // LED=1 灭
  34. printf("AT+CIPSNTPCFG=1,8,\"ntp1.aliyun.com\"\r\n"); // 第三步
  35. delay_ms(3000); //延迟
  36. printf("AT+MQTTUSERCFG=0,1,\"NULL\",\"ESP8266010&a1cRrS9qC4K\",\"c9c3585b4841be49f67dc4da6d9e894074dd7fc956c429515bcf247a4bee7541\",0,0,\"\"\r\n"); //第五步
  37. delay_ms(3000); //延迟
  38. printf("AT+MQTTCLIENTID=0,\"a1cRrS9qC4K.ESP8266010|securemode=2\\,signmethod=hmacsha256\\,timestamp=1720315990667|\"\r\n"); //第六步
  39. delay_ms(3000); //延迟
  40. printf("AT+MQTTCONN=0,\"a1cRrS9qC4K.iot-as-mqtt.cn-shanghai.aliyuncs.com\",1883,1\r\n"); // 第七步
  41. delay_ms(3000); //延迟
  42. GPIO_ResetBits(LED_PORT,LED_PIN); //LED=0 亮
  43. //连接阿里云,让设备在线
  44. //---------------------------------------------------------
  45. //订阅发布指令
  46. // printf("AT+MQTTSUB=0,%s,1\r\n",SubTopic); //订阅指令
  47. printf("AT+MQTTSUB=0,\"%s\",1\r\n", "/sys/a1cRrS9qC4K/ESP8266010/thing/service/property/set"); //订阅指令
  48. delay_ms(5000); //延迟
  49. GPIO_SetBits(LED_PORT,LED_PIN); //LED=1 灭
  50. // 发布命令——测试使用
  51. printf("AT+MQTTPUB=0,\"/sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post\",\"{\\\"test\\\"}\",1,0\r\n");
  52. delay_ms(3000);
  53. printf("AT+MQTTPUB=0,\"%s\",\"%s\",1,0\r\n", "/sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post", "{params:{LedState:1}}"); //发数据{"LED":1}
  54. // 发数据{"LED":0}
  55. delay_ms(5000);
  56. printf("AT+MQTTPUB=0,\"%s\", {\"LedState\":0},1,0\r\n", PubTopic);
  57. GPIO_ResetBits(LED_PORT,LED_PIN); //LED=0 亮
  58. //---------------------------------------------------------
  59. while(1)
  60. {
  61. if(USART_RX_STA&0x8000) // 判断接收到完整的字符串 完成
  62. {
  63. if(strstr((const char*)USART_RX_BUF,"on"))//判断阿里云发下来的数据里是否有on
  64. {
  65. GPIO_ResetBits(LED_PORT,LED_PIN); //LED=0 亮
  66. }
  67. if(strstr((const char*)USART_RX_BUF,"off"))//判断阿里云发下来的数据里是否有off
  68. {
  69. GPIO_SetBits(LED_PORT,LED_PIN); //LED=1 灭
  70. }
  71. memset(USART_RX_BUF,0,600); //将接收区清0
  72. USART_RX_STA=0;
  73. }
  74. }
  75. }

完整工程:

https://download.csdn.net/download/qq_51458770/89550617

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/858367
推荐阅读
相关标签
  

闽ICP备14008679号