当前位置: 首页 > news >正文

STM32使用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)

3 AT指令

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

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

4 阿里云配置

4.1 打开阿里云

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

4.2 创建产品

4.3 添加设备

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

5 STM32配置

5.1 基础参数

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

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

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

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

5.2 功能定义

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

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

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

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

6 STM32代码

6.1 main.c


#include "string.h"
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"#define PubTopic "/sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post"   // 发布
#define SubTopic "/sys/a1cRrS9qC4K/ESP8266010/thing/service/property/set"  // 订阅/*******************************************************************************
* 函 数 名         : main
* 函数功能		   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
int main()
{char buf[256];int buf_len;SysTick_Init(72);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组LED_Init();USART1_Init(115200);               // 串口波特率115200GPIO_ResetBits(LED_PORT,LED_PIN);	 //LED=0 亮delay_ms(1000);				           	 // 延迟printf("AT\r\n");									 // 第一步		ATdelay_ms(2000);										 // 延迟printf("AT+GMR\r\n");							 // 第一步		版本号delay_ms(2000);										 // 延迟printf("AT+CWJAP=\"%s\",\"%s\"\r\n", "HONORL", "12345Lz.");		// 第四步 wifi热点delay_ms(5000);					//延迟delay_ms(5000);					//延迟delay_ms(5000);					//延迟	delay_ms(5000);					//延迟GPIO_SetBits(LED_PORT,LED_PIN);		// LED=1	灭printf("AT+CIPSNTPCFG=1,8,\"ntp1.aliyun.com\"\r\n");		// 第三步delay_ms(3000);					//延迟printf("AT+MQTTUSERCFG=0,1,\"NULL\",\"ESP8266010&a1cRrS9qC4K\",\"c9c3585b4841be49f67dc4da6d9e894074dd7fc956c429515bcf247a4bee7541\",0,0,\"\"\r\n");		//第五步delay_ms(3000);					//延迟			printf("AT+MQTTCLIENTID=0,\"a1cRrS9qC4K.ESP8266010|securemode=2\\,signmethod=hmacsha256\\,timestamp=1720315990667|\"\r\n");		//第六步delay_ms(3000);					//延迟	printf("AT+MQTTCONN=0,\"a1cRrS9qC4K.iot-as-mqtt.cn-shanghai.aliyuncs.com\",1883,1\r\n");		// 第七步delay_ms(3000);					//延迟GPIO_ResetBits(LED_PORT,LED_PIN);	//LED=0 亮//连接阿里云,让设备在线//---------------------------------------------------------//订阅发布指令// printf("AT+MQTTSUB=0,%s,1\r\n",SubTopic);		//订阅指令printf("AT+MQTTSUB=0,\"%s\",1\r\n", "/sys/a1cRrS9qC4K/ESP8266010/thing/service/property/set");		//订阅指令delay_ms(5000);			//延迟GPIO_SetBits(LED_PORT,LED_PIN);		//LED=1	灭// 发布命令——测试使用printf("AT+MQTTPUB=0,\"/sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post\",\"{\\\"test\\\"}\",1,0\r\n");	delay_ms(3000);	printf("AT+MQTTPUB=0,\"%s\",\"%s\",1,0\r\n", "/sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post", "{params:{LedState:1}}");		//发数据{"LED":1}// 发数据{"LED":0}delay_ms(5000);	printf("AT+MQTTPUB=0,\"%s\", {\"LedState\":0},1,0\r\n", PubTopic);GPIO_ResetBits(LED_PORT,LED_PIN);	//LED=0 亮
//---------------------------------------------------------	while(1){if(USART_RX_STA&0x8000) // 判断接收到完整的字符串  完成{					   			if(strstr((const char*)USART_RX_BUF,"on"))//判断阿里云发下来的数据里是否有on{GPIO_ResetBits(LED_PORT,LED_PIN);	//LED=0 亮}if(strstr((const char*)USART_RX_BUF,"off"))//判断阿里云发下来的数据里是否有off{GPIO_SetBits(LED_PORT,LED_PIN);		//LED=1	灭}	memset(USART_RX_BUF,0,600);         //将接收区清0USART_RX_STA=0;}}
}

完整工程:

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

相关文章:

STM32使用Wifi连接阿里云

目录 1 实现功能 2 器件 3 AT指令 4 阿里云配置 4.1 打开阿里云 4.2 创建产品 4.3 添加设备 5 STM32配置 5.1 基础参数 5.2 功能定义 6 STM32代码 本文主要是记述一下,如何使用阿里云物联网平台,创建一个简单的远程控制小灯示例。 完整工程&a…...

2024.7.16日 最新版 docker cuda container tookit下载!

nvidia官方指导 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html 其实就是这几个命令,但是有墙: curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/shar…...

打印室预约小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,附近打印店管理,文件打印管理,当前预约管理,预约历史管理,打印记录管理 开发系统:Windows 架构模式:SSM JD…...

Android音视频—OpenGL 与OpenGL ES简述,渲染视频到界面基本流程

文章目录 OpenGL 简述特点和功能主要组件OpenGL ES当前状态 OpenGL ES 在 Android 上进行视频帧渲染总体流程 OpenGL 简述 OpenGL(Open Graphics Library)是一个跨平台的、语言无关的应用程序编程接口(API),用于开发生…...

Vscode中Github copilot插件无法使用(出现感叹号)解决方案

1、击扩展或ctrl shift x ​​​​​​​ 2、搜索查询或翻找到Github compilot 3、点击插件并再左侧点击登录github 点击Sign up for a ... 4、跳转至github登录页,输入令牌完成登陆后返回VScode 5、插件可以正常使用...

Spring-cloud-openfeign-@FeignClient中的configuration属性

FeignClient注解中的configuration属性就是设置相关配置,但是这个属性写的非常的不好,而且在它的注释中也没有写全,所以本文记录一下,当我们的代码如下时: FeignClient(name "xxx", configuration Abc.cl…...

实验七:图像的复原处理

一、实验目的 熟悉常见的噪声及其概率密度函数。熟悉在实际应用中比较重要的图像复原技术,会对退化图像进行复原处理。二、实验原理 1. 图像复原技术,说简单点,同图像增强那样,是为了以某种预定义的方式来改进图像。在具体操作过程中用流程图表示,其过程就如下面所示: 2…...

前端面试题日常练-day94 【Less】

题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末 在Less中,以下哪个功能用于处理文本换行? a) wrap-text() b) word-wrap() c) text-wrap() d) line-break() Less中的Variables是用来做什么的? a) 控制元素位置 b)…...

c 语言 中 是否有 unsigned 安;这种写法?

你提到的结构体定义使用了unsigned这种没有完全限定类型的写法,在C语言中,这种语法通常会被解释为unsigned int。这是因为在C语言中,unsigned是unsigned int的缩写形式。 下面是你的结构体定义以及解释: struct exec {unsigned …...

Hive第三天

1. 后台启动HIVE的JDBC连接 0 表示标准输入 1 表示标准输出 2 表示标准错误输出 nohup 表示挂起 最后的 & 表示 后台启动 nohup hive -service hiveserver2 > /usr/local/soft/hive-3.1.2/log/hiveserver2.log 2>&1 & jps 查看 Runj…...

【C++】模版初阶以及STL的简介

个人主页~ 模版及STL 一、模版初阶1、泛型编程2、函数模版(1)概念(2)函数模版格式(3)函数模版的原理(4)函数模版的实例化①显式实例化②隐式实例化 (5)模版参…...

51单片机学习(4)

一、串口通信 1.串口通信介绍 写完串口函数时进行模块化编程,模块化编程之后要对其进行注释,以便之后使用模块化函数,对模块化.c文件中的每一个函数进行注释。 注意:一个函数不能既在主函数又在中断函数中 模式1最常用&#xf…...

3D问界—MAYA制作铁丝栅栏(透明贴图法)

当然,如果想通过建立模型法来实现铁丝栅栏的效果,也不是不行,可以找一下栅栏建模教程。本篇文章主要是记录一下如何使用透明贴图来实现创建铁丝栅栏,主要应用于场景建模,比如游戏场景、建筑场景等大环境,不…...

编译器对C++23的支持程度

详见这里...

k8s核心操作_存储抽象_K8S中使用Secret功能来存储密码_使用免密拉取镜像_k8s核心实战总结---分布式云原生部署架构搭建033

注意在看的时候一定要把 dxxxx中的xxxx换成--o----c----k----e----r 然后我们再来看一个k8s中的secret的功能,这个功能 用来存储密码的,configMap是用来存配置的 比如我们有个pod,他的镜像,如果是需要密码的,那么 我们现在是从公共仓库拉取的,如果我们从私有仓库拉取,有密码…...

21集 ESP32-IDF开发教程-《MCU嵌入式AI开发笔记》

21集 ESP32-IDF开发教程-《MCU嵌入式AI开发笔记》 之前我们用了windows系统搭建了ESP-IDF的开发环境, 我们还是参考这个官方文档https://docs.espressif.com/projects/esp-idf/zh_CN/release-v5.1/esp32s3/get-started/index.html 同时我们也参考之前讲到的&#…...

《大数据基础》相关知识点及考点,例题

1.6大数据计算模式 1、MapReduce可以并行执行大规模数据处理任务,用于大规模数据集(大于1TB)的并行运算。MapReduce 极大地方便了分布式编程工作,它将复杂的、运行于大规模集群上的并行计算过程高度地抽象为两个函数一一Map和Redu…...

网络通信介绍

一、 简介 网络通信,简而言之,就是通过各种物理链路和协议,实现不同地理位置的计算机或其他电子设备之间信息交换的过程。这些信息可以是文本、图像、音频、视频等多种格式,通过网络传输至目标设备,从而实现远程通信、…...

16、Python之容器:元组与列表、推导式与生成式,差之毫厘谬以千里

引言 从上一篇文章开始了对Python中容器的介绍,已经对列表的简单使用做了一些介绍,今天这篇文章,打算首先简单介绍一下元组,同时比较一下元组、列表的异同,然后就列表、元组的一些比较实用的用法,做一些补…...

HTTP协议——请求头和请求体详情

HTTP协议-请求头和请求体 请求头 请求头(Request Header)是在HTTP协议中用于描述一个HTTP请求的元数据。它是客户端发送给服务器的一部分请求信息,包含了客户端的相关配置和要求。 请求头通常包含以下几个部分: 1. 请求方法(Req…...

编程中的智慧之设计模式二

设计模式:深度解析与实战应用 在上一篇文章中,我们探讨了创建型模式、结构型模式和行为模式中的一些常用模式及其Java实现。本篇将继续深入探讨设计模式,重点介绍更多的行为模式以及架构模式在实际开发中的应用。 行为模式 责任链模式&…...

基于python的百度资讯爬虫的设计与实现

研究背景 随着互联网和信息技术的飞速发展,网络已经成为人们获取信息的主要来源之一。特别是搜索引擎,作为信息检索的核心工具,极大地改变了人们获取信息的方式。其中,百度作为中国最受欢迎的搜索引擎之一,其新闻搜索…...

用 WireShark 抓住 TCP

Wireshark 是帮助我们分析网络请求的利器,建议每个同学都装一个。我们先用 Wireshark 抓取一个完整的连接建立、发送数据、断开连接的过程。 简单的介绍一下操作流程。 1、首先打开 Wireshark,在欢迎界面会列出当前机器上的所有网口、虚机网口等可以抓取…...

Lua基础知识入门

1 基础知识 标识符:标识符的定义和 C语言相同:字母和下划线_ 开头, 下划线_ 大写字母一般是lua保留字, 如_VERSION 全局变量:默认情况下,变量总是认为是全局的,不需要申明,给一个变…...

【机器学习实战】Datawhale夏令营2:深度学习回顾

#DataWhale夏令营 #ai夏令营 文章目录 1. 深度学习的定义1.1 深度学习&图神经网络1.2 机器学习和深度学习的关系 2. 深度学习的训练流程2.1 数学基础2.1.1 梯度下降法基本原理数学表达步骤学习率 α梯度下降的变体 2.1.2 神经网络与矩阵网络结构表示前向传播激活函数…...

开发扫地机器人系统时无法兼容手机解决方案

在开发扫地机器人系统时,遇到无法兼容手机的问题,可以从以下几个方面寻求解决方案: 一、了解兼容性问题根源 ① 操作系统差异:不同手机可能运行不同的操作系统(如iOS、Android),且即使是同一操…...

Elasticsearch 角色和权限管理

在大数据和云计算日益普及的今天,Elasticsearch 作为一款强大的开源搜索引擎和数据分析引擎,被广泛应用于日志分析、全文搜索、实时监控等领域。随着业务规模的扩大和数据敏感性的增加,对 Elasticsearch 的访问控制和权限管理也变得越来越重要…...

华为HCIP Datacom H12-821 卷42

42.填空题 如图所示,MSTP网络中SW1为总根,请将以下交换机与IST域根和主桥配对。 参考答案:主桥1468 既是IST域根又是主桥468 既不是又不是就是25 解析: 主桥1468 既是IST域根又是主桥468 既不是又不是就是25 43.填空题 网络有…...

【精品资料】物业行业BI大数据解决方案(43页PPT)

引言:物业行业BI(Business Intelligence,商业智能)大数据解决方案是专为物业管理公司设计的一套综合性数据分析与决策支持系统。该解决方案旨在通过集成、处理、分析及可视化海量数据,帮助物业企业提升运营效率、优化资…...

推荐一款处理TCP数据的架构--EasyTcp4Net

EasyTcp4Net是一个基于c# Pipe,ReadonlySequence的高性能Tcp通信库,旨在提供稳定,高效,可靠的tcp通讯服务。 基础的消息通讯 重试机制 超时机制 SSL加密通信支持 KeepAlive 流量背压控制 粘包和断包处理 (支持固定头处理,固定长度处理,固定字符处理) 日志支持Pipe &…...