网站首页 > 编程文章 正文
大家好,今天给大家介绍基于ESP8266的WIFI模块,下方附有本文涉及的全部资料和源代码的获取方式,可进群免费领取。
1、ESP8266简介
ESP8266是一款高性能的WIFI串口模块,内部集成MCU能实现单片机之间串口通信,是目前使用最广泛的一种WIFI模块之一。可以简单理解为一个WIFI转串口的设备,不用知道太多WIFI相关知识,只需要知道串口怎么使用就可以。
接线图:只需要将RXD、TXD、GND、VCC这4个引脚,分别和USB转TTL模块的TXD、RXD、GND、VCC相连接
需要注意,在USB转TTL模块上有3.3V和5V两个引脚可以作为VCC,但是一般选取5V作为VCC。若选取3.3V,可能会因为供电不足而引起不断的重启,从而不停的复位。
2、开发方式
ESP8266系列一般具有两种开发方式:AT指令开发和SDK开发。
AT指令:厂家出厂时预先在ESP8266芯片烧入好固件,封装好WiFi的协议栈,内部已经实现透传,而用户只需要使用一个USB转TTL的模块或者单片机的串口就能实现与WiFi模块的通信,发送AT指令来对WiFi模块进行控制。(和蓝牙透传模块类似)
SDK开发:由于ESP8266本身即是可编程的芯片,可以把它视为一个带有无线通信的单片机,而用户需要在专门的IDE中编写对应的程序,然后通过烧写固件的方式将程序写入到芯片中,因此,想要实现WiFi通信,需要自定义WiFi协议栈,对用户掌握的相关知识要求更高。
本篇主要是对AT指令开发的学习。
3、常用AT指令
AT指令不区分大小写,以回车、换行结尾。
4、应用模式
ESP266支撑单AP模式、单STA模式和混合模式(可以在两种模式下切换的状态。)
AP模式下,WiFi模块产生热点,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。该模式对应TCP传输协议中的服务端(TCP Server)。
STA模式下,WiFi模块为连接到无线网络的终端(站点),可以连接到AP,一般无线网卡工作在STA模式下。该模式对应TCP传输协议中的客户端(TCP Client)。
简单来说,AP模式可以将ESP8266作为热点,让其他的设备连接上它;STA模式可以连接上当前环境下的WIFI热点。
透传(透明传输),就是指不需要关心wifi协议是如何实现的,所需要做的就是A通过串口发数据,B通过串口收数据,整个过程中A串口和B串口就像是用导线直接连接起来了一样。使用者无需关心内部具体实现,模块对于使用者是“透明的”、似乎不存在的(因为可无视中间的实现原理)。
如果不开启透传模式,在每次发送数据前都必须先发送指令AT+CIPSEND=<param>。若开启了透传模式,就不需要在每次发送数据前都发送指令了,只需要发送一次AT+CIPSEND,之后发送的内容都会当成是数据。如果再次发送命令,要先退出透传模式(发送数据"+++"退出),否则会把命令了当成是数据发送过去。
ESP8266一般用于连接当前环境的热点,与服务器建立TCP连接,传输数据。大致流程如下:
AT+CWMODE=1:设置工作模式(STA模式)
AT+RST:模块重启(生效工作模式)
AT+CWJAP=“111”,“11111111”:连接当前环境的WIFI热点(热点名,密码)
AT+CIPMUX=0:设置单路连接模式
AT+CIPSTART=“TCP”,“xxx.xxx.xxx.xxx”,xxxx:建立TCP连接
AT+CIPMODE=1:开启透传模式
AT+CIPSEND:透传模式下,传输数据
+++:退出透传模式
5、主要代码
ESP8266的初始化包括以下函数:
ESP8266_TEST();//测试有无ESP8266
ESP8266_RESET();
ESP8266_SetMode();//设置模式
ESP8266_SetSAP();//设置热点
ESP8266_SetCIPMUX();//设置多路连接
ESP8266_SetCIPSERVER();//开启连接并设置端口号
void Clear_Buffer(void)//清空缓存
{
u16 i;
for(i=0;i<500;i++)
USART2_ReceiveData[i]=0;//缓存
USART2_ReceiveTims=0;
}
/*-------------------------------------------------
功能:测试有无ESP8266
返回值:0:无错误
1:等待发送数据超时
-------------------------------------------------*/
u8 ESP8266_TEST(void)
{
u8 timeout=5;
Clear_Buffer();
USART2_printf("AT\r\n");
while(timeout--)
{
Delay_10ms();
if(strstr((const char*)USART2_ReceiveData,(const char*)"OK")!=NULL)
{
Clear_Buffer();
return 0;
}
USART2_printf("AT\r\n");
}
return 1;
}
/*-------------------------------------------------
功能:测试有无ESP8266
返回值:0:无错误
1:等待发送数据超时
-------------------------------------------------*/
u8 ESP8266_RESET(void)
{
u8 timeout=50;
Clear_Buffer();
USART2_printf("AT+RST\r\n");
while(timeout--)
{
Delay_10ms();
if(strstr((const char*)USART2_ReceiveData,(const char*)"OK")!=NULL)
{
Clear_Buffer();
return 0;
}
USART2_printf("AT+RST\r\n");
}
return 1;
}
/*-------------------------------------------------
功能:设置模式 1-Station模式,2-AP模式(热点),3-AP兼Station模式
返回值:0:无错误
1:等待发送数据超时
-------------------------------------------------*/
u8 ESP8266_SetMode(void)
{
u8 timeout=50;
Clear_Buffer();
USART2_printf("AT+CWMODE=2\r\n");
while(timeout--)
{
Delay_100ms();
if(strstr((const char*)USART2_ReceiveData,(const char*)"OK")!=NULL)
{
Clear_Buffer();
return 0;
}
USART2_printf("AT+CWMODE=2\r\n");
}
return 1;
}
/*-------------------------------------------------
功能:设置热点,1 信道,3 加密方式
返回值:0:无错误
1:等待发送数据超时
-------------------------------------------------*/
u8 ESP8266_SetSAP(void)
{
u8 timeout=50;
Clear_Buffer();
USART2_printf("AT+CWSAP=\"ZZBB\",\"12345678\",1,3\r\n");
while(timeout--)
{
Delay_100ms();
if(strstr((const char*)USART2_ReceiveData,(const char*)"OK")!=NULL)
{
Clear_Buffer();
return 0;
}
USART2_printf("AT+CWSAP=\"ZZBB\",\"12345678\",1,3\r\n");
}
return 1;
}
/*-------------------------------------------------
功能:设置多路连接
返回值:0:无错误
1:等待发送数据超时
-------------------------------------------------*/
u8 ESP8266_SetCIPMUX(void)
{
u8 timeout=50;
Clear_Buffer();
USART2_printf("AT+CIPMUX=1\r\n");
while(timeout--)
{
Delay_100ms();
if(strstr((const char*)USART2_ReceiveData,(const char*)"OK")!=NULL)
{
Clear_Buffer();
return 0;
}
USART2_printf("AT+CIPMUX=1\r\n");
}
return 1;
}
/*-------------------------------------------------
功能:开启连接并设置端口号
返回值:0:无错误
1:等待发送数据超时
-------------------------------------------------*/
u8 ESP8266_SetCIPSERVER(void)
{
u8 timeout=50;
Clear_Buffer();
USART2_printf("AT+CIPSERVER=1,8080\r\n");
while(timeout--)
{
Delay_100ms();
if(strstr((const char*)USART2_ReceiveData,(const char*)"OK")!=NULL)
{
Clear_Buffer();
return 0;
}
USART2_printf("AT+CIPSERVER=1,8080\r\n");
}
return 1;
}
完整资料可进群免费领取!!!
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!
点击这里找小助理0元领取:扫码进群领资料
猜你喜欢
- 2024-10-21 NodeMCU使用AiThinkerIDE_V0.5开发小记
- 2024-10-21 你家的智能咖啡机可被轻松黑掉,阻止办法只有拔插头
- 2024-10-21 ESP8266自动下载电路分析(esp8266下载接线)
- 2024-10-21 ESP8266 ADC – 使用 Arduino IDE 读取模拟值
- 2024-10-21 esphome安装过程图文记录(esp homekit)
- 2024-10-21 FireBeetle ESP8266,专为物联网设计的低功耗开发套件,开发必备
- 2024-10-21 可用作Zigbee路由器的Sonoff ZBBridge网关
- 2024-10-21 ESP8266 天气小工具 V2.0(esp8266 oled天气)
- 2024-10-21 在ESP8266和树莓派4开发板上使用Qoitech Otii开发工具入门
- 2024-10-21 ESP-8266调试所需工具(esp8266调试工具v2.1)
你 发表评论:
欢迎- 05-09Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 05-09《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- 05-09MapStruct架构设计(mapstruct @mapping)
- 05-09分布式微服务架构组件(分布式微服务架构设计)
- 05-09Java Swing组件下的JButton实例(java swing 组件)
- 05-09java基础都在这了,小主们拿去吧(java基础是指什么)
- 05-09AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 05-09【Spring Boot】WebSocket 的 6 种集成方式
- 最近发表
-
- Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- MapStruct架构设计(mapstruct @mapping)
- 分布式微服务架构组件(分布式微服务架构设计)
- Java Swing组件下的JButton实例(java swing 组件)
- java基础都在这了,小主们拿去吧(java基础是指什么)
- AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 【Spring Boot】WebSocket 的 6 种集成方式
- Java 中五种最常见加密算法:原理、应用与代码实现
- 用注解进行参数校验,spring validation介绍、使用、实现原理分析
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)