基于stm32 ESP8266WiFi模块的基本通信
创始人
2024-04-02 06:32:30
0

文章目录

  • 前言
  • 一、什么是ESP8266?
  • 二、ESP8266常用指令集
  • 三、模块的配置 及 指令的使用
  • 四、程序设计


前言

本篇涉及到的模块与工具为:
1. ATK-ESP8266wifi模块
2. USB-UART模块
3. 串口调试助手
提取链接:https://pan.baidu.com/s/17xRlpnjp8j-VvyD2VDxNXw?pwd=ufms
提取码:ufms
4. 网络调试助手
提取链接:https://pan.baidu.com/s/10spxZmwMGI70USlzkOzdxg?pwd=fmxe
提取码:fmxe

一、什么是ESP8266?

简介:
ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。

ESP8266是一个完整且自成体系的Wi-Fi网络解决方案,能够搭载软件应用,或通过另一个应用处理器卸载所有Wi-Fi网络功能。在搭载应用并作为设备中唯一的应用处理器时,能够直接从外接闪存中启动。内置的高速缓冲存储器有利于提高系统性能,并减少内存需求。


我这里以正点原子团队开发的ATK-ESP-01 模块为例进行介绍。

ATK-ESP8266 模块采用串口(LVTTL)与 MCU(或其他串口设备)通信,内置 TCP/IP
协议栈,能够实现串口与 WIFI 之间的转换。通过 ATK-ESP8266 模块,传统的串口设备只是需要简单的串口配置,即可通过网络(WIFI)传输自己的数据。

ATK-ESP8266 模块支持 LVTTL 串口,兼容 3.3V 和 5V 单片机系统。模块支持串口转 WIFI STA、串口转 AP 和 WIFI STA+WIFI AP 的模式,从而快速构建串口-WIFI 数据传输方案,方便设备使用互联网传输数据。ATK-ESP8266 模块非常小巧(29mm*19mm),模块通过 6 个 2.54mm 间距的排针与外部连接,模块外观如下图所示:
在这里插入图片描述
由上可知,该模块分布有6个引脚:VCC、GND、TXD、RXD、RST、IO_0,其中RST和IO_0一般可不用

引脚说明:

名称说明
VCC电源(3.3V~5V)
GND电源地
TXD模块串口发送脚(TTL 电平,不能直接接 RS232 电平!),可接单片机的 RXD
RXD模块串口接收脚(TTL 电平,不能直接接 RS232 电平!),可接单片机的 TXD
RST复位(低电平有效)
IO_0用于进入固件烧写模式,低电平是烧写模式,高电平是运行模式(默认状态)

原理图:
在这里插入图片描述
产品参数:
在这里插入图片描述

二、ESP8266常用指令集

指令说明
AT测试AT启动
AT+RST重启模块
AT+RESTORE恢复出厂设置
AT+CWLIF查看已接入设备的 IP
AT+CIFSR查看本模块的 IP 地址
AT+CWMODE?查看本机配置模式
AT+CIPMUX=1开启多连接模式
AT+CIPSTO?查询本模块的服务器超时时间
ATE开关回显功能ATE关闭回显,ATE开启回显
AT+GMR查看版本信息
AT+UART设置串口配置
AT+CWJAP加入AP
AT+CWQAP退出与AP的连接
AT+CWSMARTSTART启动智能连接
AT+CWSMARTSTOP停止智能连接

三、模块的配置 及 指令的使用

AT+CWMODE=mode

  • mode=1:Station模式(接收模式,做客户端 连接别人的wifi(热点))
  • mode=2:AP模式(发送模式,做服务器 自己作为wifi 给别人连)
  • mode=3:AP+Station模式 (混合模式)

指令的使用
模块使用分为俩种情况,服务端和客服端,其中客户端最为常用

  • (一)作为服务端时
  1. 设置模式为AP模式:AT+CWMODE=2
  2. 重启模块:AT+RST
  3. AT+CWSAP=“wifi名称”,“wifi密码”,6,4 创建热点(“6”为通道号,“4”为加密等级)
  4. 查看模块的ip地址:命令: AT+CIFSR
  5. AT+CIPMUX=1 设置为多连接模式,启动模块
  6. AT+CIPSERVER=1,8080 服务器的设置端口(8080为默认端口,可根据自己意向设置)时
  • (二)作为客户端时
  1. AT+CWMODE=1 配置STA模式
  2. AT+RST 重启生效
  3. AT+CWJAP=“wifi名称”,“WiFi密码” 连接WIFI
  4. AT+CIPMUX=0 设置单路连接模式,=1为多路连接
  5. AT+CIPSTART=“TCP”,“服务器ip地址”,端口号 连接服务器
  6. AT+CIPMODE=1 开启透传模式
  7. AT+CIPSEND 开始透传

由于时间原因,关于ESP8266 网络调试助手串口调试助手的通信使用,可私信在线教学

四、程序设计

我这里以做客户端为例进行展开设计
1. 发送指令

//向ESP8266发送命令
//cmd:发送的命令字符串;ack:期待的应答结果,如果为空,则表示不需要等待应答;waittime:等待时间(单位:10ms)
//返回值:0,发送成功(得到了期待的应答结果);1,发送失败
u8 esp8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{u8 res=0; USART3_RX_STA=0;u3_printf("%s\r\n",cmd);	//发送命令if(ack&&waittime)		//需要等待应答{while(--waittime)	//等待倒计时{delay_ms(10);if(USART3_RX_STA&0X8000)//接收到期待的应答结果{if(esp8266_check_cmd(ack)){printf("ack:%s\r\n",(u8*)ack);break;//得到有效数据 }USART3_RX_STA=0;} }if(waittime==0)res=1; }return res;
} 

2. 发送数据

//向ESP8266发送数据
//cmd:发送的命令字符串;waittime:等待时间(单位:10ms)
//返回值:发送数据后,服务器的返回验证码
u8* esp8266_send_data(u8 *cmd,u16 waittime)
{char temp[5];char *ack=temp;USART3_RX_STA=0;u3_printf("%s",cmd);	//发送命令if(waittime)		//需要等待应答{while(--waittime)	//等待倒计时{delay_ms(10);if(USART3_RX_STA&0X8000)//接收到期待的应答结果{USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加结束符ack=(char*)USART3_RX_BUF;printf("ack:%s\r\n",(u8*)ack);USART3_RX_STA=0;break;//得到有效数据 } }}return (u8*)ack;
} 

3. 接收应答

//ESP8266发送命令后,检测接收到的应答
//str:期待的应答结果
//返回值:0,没有得到期待的应答结果;其他,期待应答结果的位置(str的位置)
u8* esp8266_check_cmd(u8 *str)
{char *strx=0;if(USART3_RX_STA&0X8000)		//接收到一次数据了{ USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加结束符strx=strstr((const char*)USART3_RX_BUF,(const char*)str);} return (u8*)strx;
}

4. 退出透传

//ESP8266退出透传模式   返回值:0,退出成功;1,退出失败
//配置wifi模块,通过想wifi模块连续发送3个+(每个+号之间 超过10ms,这样认为是连续三次发送+)
u8 esp8266_quit_trans(void)
{u8 result=1;u3_printf("+++");delay_ms(1000);					//等待500ms太少 要1000ms才可以退出result=esp8266_send_cmd("AT","OK",20);//退出透传判断.if(result)printf("quit_trans failed!");elseprintf("quit_trans success!");return result;
}

5. 模块配置(初始化)

void esp8266_start_trans(void)
{//设置工作模式 1:station模式   2:AP模式  3:兼容 AP+station模式esp8266_send_cmd("AT+CWMODE=1","OK",50);//让Wifi模块重启的命令esp8266_send_cmd("AT+RST","ready",20);delay_ms(1000);         //延时3S等待重启成功delay_ms(1000);delay_ms(1000);delay_ms(1000);//让模块连接上自己的路由while(esp8266_send_cmd("AT+CWJAP=\"xxxx\",\"xxxx\"","WIFI GOT IP",600));//=0:单路连接模式     =1:多路连接模式esp8266_send_cmd("AT+CIPMUX=0","OK",20);//建立TCP连接  这四项分别代表了 要连接的ID号0~4   连接类型  远程服务器IP地址   远程服务器端口号while(esp8266_send_cmd("AT+CIPSTART=\"TCP\",\"xxx.xxx.xxx.xxx\",xxxx","CONNECT",200));//是否开启透传模式  0:表示关闭 1:表示开启透传esp8266_send_cmd("AT+CIPMODE=1","OK",200);//透传模式下 开始发送数据的指令 这个指令之后就可以直接发数据了esp8266_send_cmd("AT+CIPSEND","OK",50);
}

6. main函数

int main(void){		delay_init();	    	 			//延时函数初始化	  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 			//设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);	 				//串口初始化为115200usart3_init(115200);	 				//串口初始化为115200esp8266_start_trans();							//esp8266进行初始化esp8266_send_data("12",50);esp8266_quit_trans();while(1){}}

若需程序源码 可留言评论区或直接私信即可

相关内容

热门资讯

公公73岁寿宴上,儿媳哽咽感谢... 近日,陕西西安的毛女士在公公73岁寿宴上哽咽致谢,感谢老人主动帮忙带娃,该视频引发热议。 毛女士对记...
巴拿马总统府下令:立即在原址修... 来源:红星新闻 据新华社巴拿马城12月28日电 巴拿马总统府28日发布公告,明确反对拆毁位于巴拿马运...
中指·政策要闻丨住建部部署20... 获取最新政策解读报告 ☞ 戳这里,加入地产/物业/投拓/产城 摘要: 全国住建工作会议召开,部署2...
专业文章丨跨境投资中对东道国法... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 (本文转载自北京市京师郑州律师事...
刚见完特朗普,泽连斯基称他将与... 【环球网报道】据美国哥伦比亚广播公司(CBS)等媒体报道,乌克兰总统泽连斯基与美国总统特朗普会晤后表...
亚特兰大0-1小胜国米,赛后评... 在意甲联赛第17轮的较量中,国际米兰在客场以1-0小胜亚特兰大,继续稳居积分榜首位。然而,赛后的评分...
詹姆斯24+5东契奇34+5+... 【搜狐体育战报】北京时间12月29日NBA常规赛,主场作战的湖人以125-101击败国王。艾顿11分...
原创 挑... 高市早苗政府近期对中国发起的一系列挑衅,似乎是一场注定要失败的豪赌。自从她11月7日发表了一些极具争...
最高法:助力完善破产制度,畅通... 最高人民法院12月29日发布7件人民法院惩治逃废债典型案例。据介绍,此次发布的典型案例覆盖面广,扩大...
黑龙江妇幼健康惠民政策再升级 人民网哈尔滨12月29日电 (记者张齐)近年来,黑龙江省卫生健康委员会扎实推进妇女儿童健康保障工作,...