51单片机ESP8266

这篇具有很好参考价值的文章主要介绍了51单片机ESP8266。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、MQTT透传AT固件

安信可提供的烧录WiFi固件工具:
链接: https://docs.ai-thinker.com/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B72

安信可提供的固件库链接: https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB

51单片机ESP8266,51单片机,mysql,数据库
经过测试,选择这个不可以,因为是4MB 的,上述用到的两款 ESP8266 是 1MB(8Mbit)flash的模组,应该使用

51单片机ESP8266,51单片机,mysql,数据库

二、如何刷固件

手头有的 ESP8266:
51单片机ESP8266,51单片机,mysql,数据库
51单片机ESP8266,51单片机,mysql,数据库
烧录工具
51单片机ESP8266,51单片机,mysql,数据库
可直接连接使用(ESP-01S 和 ESP-01均可使用)

51单片机ESP8266,51单片机,mysql,数据库
需要注意这个模块仅仅只是转接口,而不能实现向上面那个烧录模块一样完成烧录(ESP-01S 和 ESP-01均可使用)。

TTL 转 USB 下载器,

51单片机ESP8266,51单片机,mysql,数据库

可以使用,但是,经过测试,(测试接线方法如下)

51单片机ESP8266,51单片机,mysql,数据库

我只完成了对 ESP-01S 的烧写(烧录过程中需要上电提示时,需要将 3.3V 重插拔),对 ESP-01 操作无效。

后查阅资料后,还需要将 EN 接 3.3 V,即:

51单片机ESP8266,51单片机,mysql,数据库
烧录软件设置:

51单片机ESP8266,51单片机,mysql,数据库

烧录好之后的测试连接:

对于ESP-01S ,只需要将 IO0 那根线去掉,即四根线:

51单片机ESP8266,51单片机,mysql,数据库

对于ESP-01 ,需要将 IO0 那根线去掉,EN 还需要加上,即五根线:
51单片机ESP8266,51单片机,mysql,数据库
AT 测试使用串口助手即可。(已上传 CSDN)。

51单片机ESP8266,51单片机,mysql,数据库
上图中的软件也不是那么好用,不推荐了。。。。

三、MQTT服务器

MQTT服务器测试链接: https://www.emqx.com/zh/mqtt/public-mqtt5-broker


51单片机ESP8266,51单片机,mysql,数据库
将域名:broker.emqx.io放到网址转 IP 地址链接: https://ip138.com/中解析出 ip 地址,方便在代码中进行使用。

解析结果如下:

51单片机ESP8266,51单片机,mysql,数据库
用第一个 ip 地址就可行(不好用,用然也物联的 test.ranye-iot.net(47.92.129.18))。

需要下载证书并安装。

四、AT 指令

程序中涉及到的 AT 指令

AT\r\n
AT+RESTORE\r\n
ATE0\r\n
AT+MQTTUSERCFG=0,1,"clientld","admin","admin",0,0,""\r\n
AT+MQTTCONN=0,"3.82.39.163",1883,0\r\n
AT+MQTTSUB=0,"esp8266_rxd",1\r\n
AT+MQTTPUB=0,"esp8266_txd","{\"LAMP\":\"OFF\"}",0,0\r\n
AT+CWMODE=1\r\n   

乐鑫 Espressif 官方提供的 AT 指令使用手册和说明的链接: https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/AT_Command_Set/index.html

知识点

Station 模式 和 SoftAP 模式
51单片机ESP8266,51单片机,mysql,数据库

五、程序

安信可提供的基于 STM32 AT指令开发的链接: https://docs.ai-thinker.com/esp8266/examples/at_demo

51单片机ESP8266,51单片机,mysql,数据库

视频教程作者就是根据上面的示例代码进行修改,然后在 STC12C5A60S2 + ESP8266 上实现了。

下面是总结的思路流程(这里作为程序1):

程序1 的流程是:

1、发送恢复出厂默认设置指令将模块恢复成出厂设置:AT+RESTORE

2、关闭回显:ATE0

3、选择 ESP8266 的工作模式:AT+CWMODE=1

4、ESP8266 连接外部的 WiFi,AT+CWJAP= “pSSID”,“pPassWord”

5、MQTT配置用户属性 AT+MQTTUSERCFG=0,1,“clientld”,“admin”,“admin”,0,0,“”

6、连接 MQTT 服务器:AT+MQTTCONN=0,“3.82.39.163”,1883,0

7、订阅指定连接的 MQTT 主题,可重复多次订阅不同的 topic:AT+MQTTSUB=0,“esp8266_rxd”,1

8、while 主循环中实现定时发布:如果连接上了MQTT服务器,就定时发布信息:AT+MQTTPUB=0,“esp8266_txd”,“{“LAMP”:“OFF”}”,0,0

程序配网

此外,还有智能配网的操作演示,有两种方式:ESP-Touch 和 Airkiss,

51单片机ESP8266,51单片机,mysql,数据库
使用串口助手直接操作 ESP8266 模块,可用。

此外,根据自身的开发经验,有下面的使用体会:

操作过机智云平台的基于 ESP8266 的项目(远程宠物室),可以使用两种方式进行配网,通过按键(长按和短按),不同配网方式,有指示灯提示。由于此种印象,就有了使用按键进行配网的想法。而在示例代码中,要么是在初始化部分将网给配好,要么是使用多个 while(1) 循环的方式(配置联网成功后才接着执行最后的 while(1) 函数体),并没有结合按键的配网方式。因此,如果要想使用按键来进行配网,则不太清楚如何操作了。

因此,暂缓按键结合配网的实现方式,而是仍然通过串口命令的方式来进行(也就是在示例程序的基础上进行修改)。

程序2 的流程是:

1、模块复位:AT+RST

2、关闭回显:ATE0

3、选择ESP8266的工作模式:AT+CWMODE=1

4、查询WIFI连接状态:AT+CWJAP?
如果返回结果是 +CWJAP: 或者 WIFI GOT IP,说明连接成功。
否则,尝试连接在程序中设置好的 WiFi ,如果连接成功就退出。否则,就尝试配网的方式。

5、配网部分程序如下:

	while(esp8266_GetWifi_Stat("AT+CWJAP?\r\n", "+CWJAP:", "WIFI GOT IP")== 0)
	{
		printf("Connecting to WiFi...\r\n");
		//说明没有连接上网络,先尝试连接在程序中设置好的WiFi
		if(esp8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD))
		{
			printf("1-Join AP OK.\r\n");
		}
		else
		{
				esp8266_SetSmartMode();
			
				if(esp8266_Net_Mode_Choose(STA))
				{
						printf("2-SET STA OK.\r\n");
						if(esp8266_Send_AT_Cmd("AT+CWAUTOCONN=1\r\n", "OK"))
						{
								printf("3-AT+CWAUTOCONN=1 OK.\r\n");
								if(esp8266_Send_AT_Cmd("AT+CWSTARTSMART=3\r\n", "OK"))
								{
									printf("4-AT+CWSTARTSMART=3 OK.\r\n");
									
									if(esp8266_WiteConnect("smartconfig connected wifi"))
									{
										if(esp8266_Send_AT_Cmd("AT+CWSTOPSMART\r\n", "OK"))
										{
											printf("5-AT+CWSTOPSMART OK.\r\n");
										}
										else
										{
											printf("6-AT+CWSTOPSMART Fail.\r\n");
											goto start;
										}
								}
						}
				}
		}
	}
}
	
	printf("WiFi Connection Successful.\r\n");
bit esp8266_WiteConnect(char *ack1)
{
		bit ack = 0;
		unsigned int config_Delay = 5;
		
		do
		{
				if(recv_flag)
				{
						recv_flag = 0;
						if(strstr((const char*)recv_buf,ack1))
						{
							ack = 1;
							printf("Wite Connect Success.\r\n");
							recv_buf[recv_cnt] = '\0';
							printf("%s\r\n", recv_buf);
							memset(recv_buf, 0, recv_cnt);
							recv_cnt = 0;
							break;
						}
						else
						{
							recv_buf[recv_cnt] = '\0';
							printf("%s\r\n", recv_buf);
							memset(recv_buf, 0, recv_cnt);
							recv_cnt = 0;
						}
							
				}
				Delay_Xms(1000);
		}while(config_Delay--);
		
		return ack;
}
/**************************查询 WiFi 连接状态***************************/
bit esp8266_GetWifi_Stat(char *cmd, char *ack1, char *ack2)
{
		bit ack = 0;
		unsigned int config_Delay = 3;
		uart2_SendString(cmd);
		printf("Detecting WiFi status...\r\n");
		
		do
		{
				if(recv_flag)
				{
						recv_flag = 0;
						if(strstr((const char*)recv_buf,ack1)|| strstr((const char*)recv_buf,ack2))
						{
							ack = 1;
							recv_buf[recv_cnt] = '\0';
							printf("%s\r\n", recv_buf);
							memset(recv_buf, 0, recv_cnt);
							recv_cnt = 0;
							break;
						}
						else
						{
							printf("WIFI DISCONNECT.\r\n");
							memset(recv_buf, 0, recv_cnt);
							recv_cnt = 0;
						}
				}
				Delay_Xms(1000);
		}while(config_Delay--);
		
		return ack;
}

6、MQTT配置用户属性 AT+MQTTUSERCFG=0,1,“clientld”,“admin”,“admin”,0,0,“”

7、连接 MQTT 服务器:AT+MQTTCONN=0,“3.82.39.163”,1883,0

8、订阅指定连接的 MQTT 主题,可重复多次订阅不同的 topic:AT+MQTTSUB=0,“esp8266_rxd”,1

9、while 主循环中实现定时发布:如果连接上了MQTT服务器,就定时发布信息:AT+MQTTPUB=0,“esp8266_txd”,“{“LAMP”:“OFF”}”,0,0

程序中有个地方:

if(esp8266_Send_AT_Cmd("AT+RESTORE\r\n", "OK"))
{
		printf("RESTORE OK\r\n");
}

RESTORE是恢复出厂设置,应该改成复位(RST)

if(esp8266_Send_AT_Cmd("AT+RST\r\n", "OK"))
{
		printf("RST OK\r\n");
}

在 MQTT 客户端软件中的操作如下:
51单片机ESP8266,51单片机,mysql,数据库
MQTT服务器如上图所示。程序中的 client_id 是 clientID,所以不能再用这个了,我就另外起了个名字:MQTT_FX_Client 。
51单片机ESP8266,51单片机,mysql,数据库

在程序中,订阅了 esp8266_rxd,

51单片机ESP8266,51单片机,mysql,数据库
因此,点击 Publish 后,串口能够接收到:

51单片机ESP8266,51单片机,mysql,数据库
与此同时,程序还会向 esp8266_txd 每隔一段时间发送数据,

51单片机ESP8266,51单片机,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-824525.html

到了这里,关于51单片机ESP8266的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • (pc端)/单片机连接ESP8266

    硬件:ESP8266模块,USB转TTL 连接方式 : esp8266的TX接转串口的RX,RX接TX 安装阿信可的esp8266调试工具 [ESP8266网络调试工具]ESP8266网络调试工具 提取码:djsz AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电

    2024年02月09日
    浏览(46)
  • 单片机项目分享 单片机(stm32)远程智能宠物喂养系统 - 物联网 esp8266

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(67)
  • STM32+esp8266实现单片机与服务器的WiFi通信

             源码已上传至gitee: stm32: 一些stm32模块使用经验记录 - Gitee.com https://gitee.com/lrf1125962926/stm32/tree/esp8266wifi%E9%80%9A%E4%BF%A1/         本实验采用STM32F1系列+esp8266 01s模块,采用HAL库开发。主控芯片哪个系列和型号都可以,只要有两个串口(UART或者USART,以下统称串口)

    2024年02月07日
    浏览(61)
  • 嵌入式项目分享 单片机(stm32)远程智能宠物喂养系统 - 物联网 esp8266

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(168)
  • 单片机设计_语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)

    想要更多项目私wo!!!         离线语音识别识别垃圾种类并且垃圾桶自动翻盖: 说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。

    2024年02月06日
    浏览(53)
  • 【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信

    承接上文WIFI上位机部分:【上位机】通过WIFI上位机与网络调试助手通信绘制曲线,现阶段实现了STM32单片机与ESP8266WIFI模块作为下位机与WIFI上位机通信。 ATK-ESP8266 是 ALIENTEK 推出的一款高性能的 UART-WiFi(串口-无线)模块,此处使用的是正点原子团队自主开发的ATK-ESP-01模块。

    2024年02月05日
    浏览(176)
  • 毕业设计 单片机语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)

    离线语音识别识别垃圾种类并且垃圾桶自动翻盖: 说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。其中翻盖功能是通过STM32端控制舵

    2024年04月26日
    浏览(71)
  • 单片机设计_室内环境智能监测系统(STM32 OLED ESP8266 DHT11 MQ-2 加湿器)

    想要更多项目私wo!!! 室内环境智能监测系统 主要功能:         1.检测空气温湿度         2.检测光照强度         3.检测烟雾浓度         4.数据显示在手机端和设备OLED屏幕上         5.当空气温度高于设定的阈值时,风扇开启         6.当空气湿度低于

    2024年02月09日
    浏览(69)
  • 51系列单片机---ESP-01S无线WiFi模块的开发(路由服务器模式)

    记录一下基于STC89C52RC单片机对ESP-01S无线WiFi模块的开发(路由服务器模式)。 ESP-01S模块的路由服务器模式和设备模式开发思路相似,开发之前对ESP-01S模块的测试和波特率修改是一样的,差别只在于AT指令的不同。 记录一下代码编写的逻辑和过程: 1、用到的AT指令(发送AT指

    2024年04月11日
    浏览(39)
  • ESP8266-01s入门:上报和下发数据控制单片机 AT指令讲解和上云 烧录AT固件与OneNET MQTT通信教程包含MQTT.fx1.7.1教程(微信小程序通信单片机前置任务)

    本项目教程总共分为四节 1.创建OneNET新版MQTT设备:为微信小程序与单片机通信打基础(微信小程序通信单片机前置任务) 2.(当前文章)ESP8266-01s入门:烧录AT固件与OneNET MQTT通信教程包含MQTT.fx1.7.1教程(微信小程序通信单片机前置任务) 3.物联网实践教程:微信小程序结合

    2024年02月04日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包