IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP8266 -> 正文阅读

[嵌入式]ESP8266


“掌握esp8266使用可实现真正的万物互联”
掌握RS232通信协议 SPI通信协议 esp8266的配置就可以基本搞定WiFi模块的使用

RS232通信协议

广泛用于DCE(Data Communication Equipment)和DTE(Data Terminal Equipment)之间的连接
DCE数据通信端 DTE终端

接口形态

以九针RS232接口为主流接口形态
公头(Male):在这里插入图片描述
母座(Female):
在这里插入图片描述

接口定义

公头九针RS232接口详细定义
在这里插入图片描述
DTR/DSR 和RTS/CTS用于硬件流控
DTR/DSR表明DTE DCE可用 开始数据传输 需要RTS/CTS流控信号
如A发送数据给B
1.A设置RTS为1 表示要发送数据给B
2.B检测到RTS为1 若已准备好设置CTS为1表示可以接收
若没有准备好 先处理数据 完毕后再设置CTS为1
3.A发现CTS置1 将数据通过TXD信号线发送出去
4.A每发送一次数据 重复上面的步骤
5.A发送完数据后将RTS置1 表示数据发送完毕

硬件连接

9线连接
在这里插入图片描述
5线式连接:
在这里插入图片描述

3线式连接:
在这里插入图片描述
3线连接不能实现流控功能 在大量数据传输应用中 建议使用5线 9线连接方式

电平时序

负逻辑电平
在这里插入图片描述
RS232接口按照UART串口协议进行传输
在这里插入图片描述

ESP8266配置

ESP8266

在这里插入图片描述

超低功耗 USRT—WiFi透传模块
可将物理设备连接到WIFI无线网络上进行互联网或局域网通信 实现联网

引脚
在这里插入图片描述

原理

在这里插入图片描述

特点

支持STA/AP/STA+AP三种工作模式
内置TCP/IP 协议栈 支持多路TCP Client连接
支持UART/GPIO数据通信接口
支持Smart Link智能联网功能
内置32位MCU 可兼作应用处理器
3.3V单电源供电
支持Socket AT指令

AT指令

进行系统参数配置的指令

AT+<COMMAND>=<VALUE>\r\n

ATK-ESP8266支持的指令列
在这里插入图片描述

工作模式

STA模式

串口无线 STA(COM-STA)模式,模块作为无线 WIFI STA,用于连接到无线网络,实
现串口与其他设备之间的无线(WIFI)数据转换互传。

串口无线 STA 模式,TCP 服务器配置
在这里插入图片描述
串口无线 STA 模式,TCP 客户端配置
在这里插入图片描述
在这里插入图片描述

串口无线 STA 模式,UDP 配置
在这里插入图片描述

AP模式

串口无线 WIFI(COM-AP)模式,模块作为无线 WIFI 热点,允许其他 WIFI 设备连接
到本模块,实现串口与其他设备之间的无线(WIFI)数据转换互传。

串口无线 WIFI AP 模式,TCP 服务器配置
在这里插入图片描述
串口无线 WIFI AP 模式,TCP 客户端配置
在这里插入图片描述
串口无线 WIFI AP 模式,UDP 配置
在这里插入图片描述

STA+AP模式

串口无线 AP+STA(COM-AP+STA)模式,模块既作无线 WIFI AP,又作无线 STA,
其他 WIFI 设备可以连接到该模块,模块也可以连接到其他无线网络,实现串口与其他设备
之间的无线(WIFI)数据转换互传。

串口无线 AP+STA 模式,AP 作 TCP 服务器,STA 做 TCP 服务器的配置
在这里插入图片描述
串口无线 AP+STA 模式,AP 作 TCP 服务器,STA 作 TCP 客户端的配置
在这里插入图片描述
串口无线 AP+STA 模式,AP 作 TCP 服务器,STA 作 UDP 的配置
在这里插入图片描述

硬件连接

在这里插入图片描述
探索者F407只需要用跳线帽短接P10的USART3_RX和GBC_TX以及USART3_TX
和 GBC_RX 即可。
在这里插入图片描述

代码

//向 ATK-ESP8266 发送命令 即发送AT指令
//cmd:发送的命令字符串
//ack:期待的应答结果,如果为空,则表示不需要等待应答
//waittime:等待时间(单位:10ms)
//返回值:0,发送成功(得到了期待的应答结果)
// 1,发送失败
u8 atk_8266_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(atk_8266_check_cmd(ack))
{
printf("ack:%s\r\n",(u8*)ack);
break; //得到有效数据
}
USART3_RX_STA=0;
} 
}
if(waittime==0)res=1; 
}
return res;
}

//ATK-ESP8266 退出透传模式
//返回值:0,退出成功;
// 1,退出失败

u8 atk_8266_quit_trans(void)
{
while((USART3->SR&0X40)==0); //等待发送空
USART3->DR='+'; 
delay_ms(15); //大于串口组帧时间(10ms)
while((USART3->SR&0X40)==0); //等待发送空
USART3->DR='+'; 
delay_ms(15); //大于串口组帧时间(10ms)
while((USART3->SR&0X40)==0); //等待发送空
USART3->DR='+'; 
delay_ms(500); //等待 500ms
return atk_8266_send_cmd("AT","OK",20);//退出透传判断.
}


三个查询函数

//获取 ATK-ESP8266 模块的连接状态
//返回值:0,未连接;1,连接成功.
u8 atk_8266_consta_check(void)
{
u8 *p;
u8 res;
if(atk_8266_quit_trans())return 0; //退出透传
atk_8266_send_cmd("AT+CIPSTATUS",":",50);
//发送 AT+CIPSTATUS 指令,查询连接状态
p=atk_8266_check_cmd("+CIPSTATUS:"); 
res=*p; //得到连接状态
return res;
}
//获取 STA 或者 AP 模式下的 ip 地址
//ipbuf:ip 地址输出缓存区
void atk_8266_get_wanip(u8* ipbuf)
{
u8 *p,*p1;
if(atk_8266_send_cmd("AT+CIFSR","OK",50)) //获取 WAN IP 地址失败
{
ipbuf[0]=0;
return;
}
p=atk_8266_check_cmd("\"");
p1=(u8*)strstr((const char*)(p+1),"\"");

*p1=0;
sprintf((char*)ipbuf,"%s",p+1);
}
//获取 AP+STA ip 地址并在指定位置显示
//ipbuf:ip 地址输出缓存区
void atk_8266_get_ip(u8 x,u8 y)
{
u8 *p;
u8 *p1;
u8 *p2;
u8 *ipbuf;
u8 *buf;
p=mymalloc(SRAMIN,32); //申请 32 字节内存
p1=mymalloc(SRAMIN,32); //申请 32 字节内存
p2=mymalloc(SRAMIN,32); //申请 32 字节内存
 ipbuf=mymalloc(SRAMIN,32); //申请 32 字节内存
buf=mymalloc(SRAMIN,32); //申请 32 字节内存
if(atk_8266_send_cmd("AT+CIFSR","OK",50)) //获取 WAN IP 地址失败
{ 
*ipbuf=0;
}
else
{
p=atk_8266_check_cmd("APIP,\"");
p1=(u8*)strstr((const char*)(p+6),"\"");
p2=p1;
*p1=0;
ipbuf=p+6;
sprintf((char*)buf,"AP IP:%s 端口:%s",ipbuf,(u8*)portnum);
Show_Str(x,y,200,12,buf,12,0);
//显示 AP 模式的 IP 地址和端口
p=(u8*)strstr((const char*)(p2+1),"STAIP,\"");
p1=(u8*)strstr((const char*)(p+7),"\"");
*p1=0;
ipbuf=p+7;
sprintf((char*)buf,"STA IP:%s 端口:%s",ipbuf,(u8*)portnum);
Show_Str(x,y+15,200,12,buf,12,0);
//显示 STA 模式的 IP 地址和端口
myfree(SRAMIN,p); //释放内存
myfree(SRAMIN,p1); //释放内存
myfree(SRAMIN,p2); //释放内存
myfree(SRAMIN,ipbuf); //释放内存
myfree(SRAMIN,buf); //释放内存
}
}

测试主函数

void atk_8266_test(void)
{
u8 key;
u8 timex;
POINT_COLOR=RED;
Show_Str_Mid(0,30,"ATK-ESP8266 WIFI 模块测试",16,240); 
while(atk_8266_send_cmd("AT","OK",20))//检查 WIFI 模块是否在线
{
atk_8266_quit_trans();//退出透传
atk_8266_send_cmd("AT+CIPMODE=0","OK",200); //关闭透传模式
Show_Str(40,55,200,16,"未检测到模块!!!",16,0);
delay_ms(800);
LCD_Fill(40,55,200,55+16,WHITE);
Show_Str(40,55,200,16,"尝试连接模块...",16,0); 
} 
while(atk_8266_send_cmd("ATE0","OK",20));//关闭回显
atk_8266_mtest_ui(32,30);
while(1)
{
delay_ms(10); 
atk_8266_at_response(1);
//检查 ATK-ESP8266 模块发送过来的数据,及时上传给电脑
key=KEY_Scan(0); 
if(key)
{
LCD_Clear(WHITE);
POINT_COLOR=RED;
switch(key)
{
case 1: //KEY0
Show_Str_Mid(0,30,"ATK-ESP WIFI-AP+STA 测试",16,240);
Show_Str_Mid(0,50,"正在配置 ATK-ESP8266 模块,请稍
等...",12,240);
atk_8266_apsta_test(); //AP+STA 测试
break;
case 2: //KEY1
Show_Str_Mid(0,30,"ATK-ESP WIFI-STA 测试",16,240);
Show_Str_Mid(0,50,"正在配置 ATK-ESP8266 模块,请稍
等...",12,240);
atk_8266_wifista_test(); //WIFI STA 测试
break;
case 4: //WK_UP
atk_8266_wifiap_test(); //WIFI AP 测试
break;
}
atk_8266_mtest_ui(32,30);
timex=0;
} 
if((timex%20)==0)LED0=!LED0;//200ms 闪烁
timex++;
} 
}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-15 16:02:04  更:2021-11-15 16:02:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:43:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码