STM32发送数据ESP8266固件烧录MQTT和AT指令调试与链接OneNET

这篇具有很好参考价值的文章主要介绍了STM32发送数据ESP8266固件烧录MQTT和AT指令调试与链接OneNET。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提要

STM32连接ESP8266发送数据到OneNET平台

0.文章所需要的均可点击上方的资源包免费下载

1.硬件型号:ESP8266-01s 和 USBTTL转接口模块
2.固件:1471_esp8266-at_mqtt-1m(MQTT透传AT固件(固件号:1471))
3.固件烧录工具:flash_download_tool_3.9.4
固件下载和烧录工具均可在安信可官网下载安信可AT固件下载
本文章使用的是XCOM V2.6 串口助手
4.OneNET平台创建MQTT——WIFI直连
5.AT指令调试

6.可能遇到的问题

ESP8266驱动代码如下 ||可以在资源包里下载(免费)

这里代码是学习B站江科大stm32教程写的串口2
B站江科大stm32串口学习
ESP8266驱动则是参考B站up“彼岸有光我们有船”
ESP8266驱动代码视频
资源包里也有

//单片机头文件
#include "stm32f10x.h"                  // Device header
//C语言标准库函数
#include <string.h>
#include <stdio.h>
//驱动
#include "USART.h"
#include "Delay.h"
#include "OLED.h"
//ESP8266驱动
#include "ESP8266.h"

#define REV_WAIT 1

#define REV_OK 0
//连接WIFI
#define ESP8266_WIFI_INFO		"AT+CWJAP=\"WIFI名字\",\"WIFI密码\"\r\n" 
//连接服务器
#define ESP8266_ONENET_INFO		"AT+MQTTCONN=0,\"mqtts.heclouds.com\",1883,1\r\n"
//写你自己的Token
#define ESP8266_USERCFG_INFO  "AT+MQTTUSERCFG=0,1,\"设备名称\",\"设备ID\",\"Token\",0,0,\"\"\r\n"

const char* pubtopic="$sys/设备id/设备名称/thing/property/post";

unsigned char ESP8266_Buffer[256];

unsigned short ESP8266_cnt = 0, ESP8266_cntPre = 0;
uint8_t RxData;
//==========================================================
//	函数名称:	ESP8266_Clear
//
//	函数功能:	清空缓存
//
//	入口参数:	无
//
//	返回参数:	无
//
//	说明:		
//==========================================================
void ESP8266_Clear()
{
	memset(ESP8266_Buffer, 0, sizeof(ESP8266_Buffer));
	ESP8266_cnt = 0;
}
//==========================================================
//	函数名称:	ESP8266_WaitRecive
//
//	函数功能:	等待接收完成
//
//	入口参数:	无
//
//	返回参数:	REV_OK-接收完成		REV_WAIT-接收超时未完成
//
//	说明:		循环调用检测是否接收完成
//==========================================================
uint8_t ESP8266_WaitRecive(void)
{

	if(ESP8266_cnt == 0) 							//如果接收计数为0 则说明没有处于接收数据中,所以直接跳出,结束函数
		return REV_WAIT;
		
	if(ESP8266_cnt == ESP8266_cntPre)				//如果上一次的值和这次相同,则说明接收完毕
	{
		ESP8266_cnt = 0;							//清0接收计数
		return REV_OK;								//返回接收完成标志
	}
		
	ESP8266_cntPre = ESP8266_cnt;					//置为相同
	
	return REV_WAIT;								//返回接收未完成标志

}
//==========================================================
//	函数名称:	ESP8266_SendCmd
//
//	函数功能:	发送命令
//
//	入口参数:	cmd:命令
//				res:需要检查的返回指令
//
//	返回参数:	0-成功	1-失败
//
//	说明:		
//==========================================================
uint8_t ESP8266_SendCmd(char *cmd, char *res)
{
	
	unsigned char timeOut = 200;

	Serial_SendString(cmd); 

	while(timeOut--)
	{
		if(ESP8266_WaitRecive() == REV_OK)							//如果收到数据
		{
			if(strstr((const char *)ESP8266_Buffer, res) != NULL)		//如果检索到关键词
			{
				ESP8266_Clear();									//清空缓存
				
				return 0;
			}
		}
		
		Delay_ms(10);
	}
	
	return 1;

}

//==========================================================
//	函数名称:	ESP8266_Init
//
//	函数功能:	初始化ESP8266
//
//	入口参数:	无
//
//	返回参数:	无
//
//	说明:		
//==========================================================
void ESP8266_Init()
{
	ESP8266_Clear();
	OLED_ShowString(2,1,"0");
	//printf("0. AT\r\n");
	while(ESP8266_SendCmd("AT\r\n", "OK"))
		Delay_ms(500);
	OLED_ShowString(2,1,"1");
	//printf("1. AT+RST\r\n");
	while(ESP8266_SendCmd("AT+RST\r\n", ""))
		Delay_ms(500);
	
	OLED_ShowString(2,1,"2");
	//printf("2. CWMODE\r\n");
	while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK"))
		Delay_ms(500);
	OLED_ShowString(2,1,"3");
	//printf( "3. AT+CWDHCP\r\n");
	while(ESP8266_SendCmd("AT+CWDHCP=1,1\r\n", "OK"))
		Delay_ms(500);
	OLED_ShowString(2,1,"4");
	//printf("4. CWJAP\r\n");
	while(ESP8266_SendCmd(ESP8266_WIFI_INFO, "GOT IP"))
		Delay_ms(500);
	OLED_ShowString(2,1,"5");
	//printf( "5. MQTTUSERCFG\r\n");
	while(ESP8266_SendCmd(ESP8266_USERCFG_INFO, "OK"))
		Delay_ms(1000);

	OLED_ShowString(2,1,"6");
	//printf( "6. MQTTCONN\r\n");
	while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "OK"))
		Delay_ms(500);
	OLED_ShowString(2,1,"7");
	//printf("7. ESP8266 Init OK\r\n");
}
//==========================================================
//	函数名称:	ESP8266_SendData
//
//	函数功能:	发送数据
//
//	入口参数:	temp:温度值
//				humi:湿度值
//				adcx:光照度
//
//	返回参数:	无
//
//	说明:		
//==========================================================
void ESP8266_SendData(double temp,double humi,double adcx)
{
	char cmdBuf[512];
	
	ESP8266_Clear();								//清空接收缓存
	
	//先发送要发送数据的指令做准备
	
	sprintf(cmdBuf, "AT+MQTTPUB=0,\"%s\",\"{\\\"id\\\":\\\"123\\\"\\,\\\"params\\\":{\\\"temp\\\":{\\\"value\\\":%lf\\}\\,\\\"humi\\\":{\\\"value\\\":%lf\\}\\,\\\"adcx\\\":{\\\"value\\\":%lf\\}}}\",0,0\r\n",pubtopic,temp,humi,adcx);		//发送命令
	while(ESP8266_SendCmd(cmdBuf, "OK"))
		Delay_ms(500);
	OLED_ShowString(3,1,"8");
	memset(cmdBuf,0,sizeof(cmdBuf));
		Delay_ms(100);
}
//==========================================================
//	函数名称:	USART2_IRQHandler
//
//	函数功能:	串口2收发中断
//
//	入口参数:	无
//
//	返回参数:	无
//
//	说明:		
//==========================================================
void USART2_IRQHandler()
{
	
	if(USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
	{
		RxData = USART_ReceiveData(USART2);
		if(ESP8266_cnt >= sizeof(ESP8266_Buffer))	ESP8266_cnt = 0; //防止串口被刷爆
		ESP8266_Buffer[ESP8266_cnt++] = RxData;
		USART_ClearITPendingBit(USART2,USART_IT_RXNE);
	}
}

硬件图片

接法

直接插在电脑的USB接口
下面的黑色按钮是复位键

mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

ESP8266 图片为:

mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

USB转接头

mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

固件下载

固件下载地址
烧录软件和串口工具下载地址
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

烧录步骤

1.找到你下载好的固件和烧录软件,打开你的烧录软件
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

烧录成功后

烧录成功后会显示完成,直接关闭即可,随后打开一个串口助手
将你的硬件插上你的设备,然后打开串口(对应的端口)再按下硬件黑色的复位键
如果开始是乱码,但最后有显示ready就是烧录成功
发送AT指令

AT指令测试ESP8266

先是测试AT指令是否正常发送
记得最后换行发送哦

1.AT    //发送测试指令,如果ESP8266收到则会回应一个“OK”

2.AT+RST  //发送复位指令,相当于按下了复位键
 
3.AT+CWMODE=1      //设置为模式一,还有=2,=3两种模式,我们目前只用这一种
 
4.AT+CWDHCP=1,1    //启动DHCP
 
5.AT+CWJAP="ESP","123456789"  //连接你的WiFi,前面为名称,后面为密码
注意WIFI必须是2.4G模式的

mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

发送AT指令如果如上图所示,则代表可以正常使用了

在OneNET上创建MQTT(示例)

1.登录或注册
OneNET登录网站
2.登陆后点击右上角的开发者中心
3.点击左上角的产品开发
4.点击右边的创建产品
5.产品品类选择智慧城市->环境感知->温湿度检测
6.智能化方式选择设备接入
7.创建如图
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算
8.创建后下面列表出现了你的产品,随后点击右边产品开发
9.设置物模型(可以创建多个)
10.在中间找到添加自定义功能点后如图
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算
11.新增后然后记得点鸡保存
12.Token生成,回到OneNET官网开始界面,点击“开发者中心”旁边的文档
然后如图所示找到Token生成工具,里面也有其他的具体内容
Token生成器下载地址
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算
13.下载完成后打开一个时间戳转换网址,我就在浏览器随便找一个了
时间戳转换地址
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算
14.打开刚刚的Token转换工具
mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

连接MQTT

 6.//设置MQTT服务器属性
  AT+MQTTUSERCFG=0,1,"设备名称","设备id","粘贴刚刚生成后的Token",0,0,""
  
7//连接服务器
    AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1
    
8//选定物模型
    AT+MQTTSUB=0,"$sys/设备id/设备名称/thing/property/post/reply",1
 
9//修改物模型数据并上传
     AT+MQTTPUB=0,"$sys/设备id/设备名称/thing/property/post","{\"id\":\"123\"\,\"params\":{\"物模型标识符\":{\"value\":数据\}}}",0,0

如果发送成功则最后会显示success,如下图所示

mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

下面是我发送的数据,在设备详细的属性里面可以看到

mqtt协议at指令的固件,单片机,物联网,stm32,嵌入式硬件,云计算

可能遇到的问题

1.WIFI连接不上

在烧录固件后可能连不上WIFI
可能的解决方法:1.先保证手机的热点或家庭WIFI是2.4G的,可以通过手机WIFI查看
2.如果2.4G连接后失败返回的是

+CWJAP 4
ERROR

则尝试几遍,如果还是不行则使用那招
1.先把手机热点的密码关闭并复位ESP8266
2.发送AT指令AT+CWSAP?
它会回复+CWSAP:"名称","",1,0,4,0
回复错误则复位多发送几次可能就连上了
3.发送AT+CWSAP="WIFI名称","",1,0,4,0
如果回复“OK”则可以继续
4.可以把你的WIFI设置密码发送

AT+CWJAP="WIFI名称","密码"

就可以了
5.如果还不行那么就自己查资料把,我搜了很久就找到这个奇怪的不知道原理的方法,因为我就是遇到这个问题并弄好了

连接MQTT服务器时一直说错误

  AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1

就这一句发不出去
可能的解决方法:下载另一个固件并测试AT指令,然后再下载回来这个固件,多次尝试即可,至少我是这么解决的,网上也搜不到可靠的办法,发送出去是会返回“OK”的

总结

1.后续更新基于stm32F103c8t6的MQTT发送数据代码
2.可能还会由很多问题不知道怎么解决,能做的就是去网上查资料和排列组合去查找问题了
3.还有其他的问题可以在评论区询问或者私信文章来源地址https://www.toymoban.com/news/detail-764401.html

到了这里,关于STM32发送数据ESP8266固件烧录MQTT和AT指令调试与链接OneNET的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP8266+STM32+阿里云保姆级教程(AT指令+MQTT)

    前言:在开发过程中,几乎踩便了所有大坑小坑总结出的文章,我是把坑踩满了,帮助更过小白快速上手,如有错误之处,还麻烦各位大佬帮忙指正、 目录 一、ESP-01s介绍         1、ESP-01s管脚功能:                 模组启动模式说明:         2、初始配置和

    2024年02月19日
    浏览(34)
  • esp8266(MQTT固件)通过at指令连接阿里云平台

    实验: esp8266 连接阿里云。 准备工作: esp8266 wifi模组 固件烧录工具 串口调试助手 阿里云账号及物联网设备申请 某宝随便买个,多的是: usb连接到电脑上之后,可以识别到串口,说明有固件。 由于新买的模组,芯片内的固件可能并不是我们想要的,此时可自行官网下载固

    2024年01月19日
    浏览(51)
  • ESP8266+STM32+MQTT发送数据到阿里云服务器(三、配置ESP8266模块并测试连接)

    1、固件烧录器 2、固件 3、串口工具 4、ESP866模块 5、USB转TTL模块 (以上软件工具文末分享的链接有,硬件请淘宝自行购买) 硬件如下图: 1、按照下面对照关系进行接线 USB转TTL ESP8266 3.3V 3V3 GND GND RX TX TX RX IO0 GND 2、打开固件烧录工具图标 3、点击“ OK ” 4、在出现的界面中,

    2024年03月23日
    浏览(42)
  • 【ESP系列】ESP8266的AT固件烧录

      这几天突然想用ESP01的AT指令玩玩,但是那模块突然坏了。只能利用手头上的ESP8266-12F模块,来使用AT指令,因为是第一次用ESP8266-12F的AT指令,不知道它的AT指令固件有没有和版本之类的,所以就重新刷AT固件的进去,和记录下文章。   需要使用的工具和材料有:一块E

    2024年02月10日
    浏览(39)
  • ESP8266-01s MQTT固件烧录

    记录ESP8266-01s 固件烧录过程。 usb-ttl 固件:⑦、MQTT透传AT固件(固件号:1471) 安可信科技-固件汇总 USB-TTL esp8266-01s VCC 3V3 RX TX TX RX GND IO0 GND GND 启动软件 点击 - ESP8266 DownloadTool 配置 ESP8266各模块属性参数 下载中… 下载完成 将ESP8266-01s的引脚IO0拉高(不接GND/置空)。 ESP8266-

    2023年04月11日
    浏览(35)
  • STM32+ESP8266(AT固件)连接阿里云物联网 保姆级教学(附代码)--4. Web数据可视化

    提示:这里是从实际应用如何使用教学配置,未从原理讲解,适合小白从零开始到成功,比较有成就感 STM32+ESP8266(AT固件)连接阿里云物联网系列保姆级教学 1. 创建产品和设备 2. 设置产品Topic数据和功能定义设备物模型数据显示 3. 硬件连接+代码修改 4. Web数据可视化 5.功能

    2024年04月10日
    浏览(45)
  • STM32 ESP8266模块的探索&AT指令介绍

    这是本文的配套资料,最终工程请参考 新_ESP8266资料stm32f103成功移植的项目 【免费】stm32f103c8t6esp8266资料资源-CSDN文库 我使用的是ai-thinker的esp8266-01s,以下为产品规格书 引脚定义:   依据引脚定义,GND接GND,VCC接3.3V,TX接USB转TTL的Rx, Rx 接USB转TTL的RX,之后尝试多次,都只

    2024年04月23日
    浏览(31)
  • 阿里云 MQTT协议 AT指令 ESP8266-01S 数据上下传输

    printf重定义资料来自江科大自动化协---stm32入门教程---串口发送+接收一节视频讲解 细节请看b站这个up主的视频阿里云+ESP8266+STM32远程点灯(流程讲解) 阿里云平台配置细节请看10分钟玩转阿里云物联网平台设备接入、管理、运维 这里只记录一下大概内容,方便日后调试。 1、

    2023年04月26日
    浏览(46)
  • ESP8266-01 MQTT固件烧录并连接阿里云服务器

    1、烧录工具:flash_download_tool :   链接:https://pan.baidu.com/s/1jJJ07G56jNJ3SrOwstPzVA?pwd=8i93  提取码:8i93 2、串口调试助手:串口调试助手 3、阿里云配置生成工具: 链接:https://pan.baidu.com/s/13tjpFwGMeR0juS5OSEBiJQ?pwd=61me  提取码:61me 4、USB TO TTL 5、esp8266 01s 6、AT固件:下载   向esp8266烧

    2024年02月06日
    浏览(58)
  • STM32+ESP8266(AT固件)连接阿里云物联网 保姆级教学(附代码)--2. 设置产品Topic数据和功能定义设备物模型数据显示

    提示:这里是从实际应用如何使用教学配置,未从原理讲解,适合小白从零开始到成功,比较有成就感 STM32+ESP8266(AT固件)连接阿里云物联网系列保姆级教学 1. 创建产品和设备 2. 设置产品Topic数据和功能定义设备物模型数据显示 3. 硬件连接+代码修改 4. Web数据可视化 5.功能

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包