ESP8266-AT指令--透传--TCP-UDP
为什么要拿这个简单的模块来讲一下呢?因为根据本人最近嵌入式软件面试来看,对于我们嵌入式应届,面试官主要问我们简历上做过的项目,大多应届生应该都接触过ESP8266或者ESP32吧,他们经常会对我们使用过的模块进行深入的追问,我们很有必要将自己使用过的模块深入学习了解,这篇文章就能帮到你哦。
我们来先认识一下ESP8266模块:
ESP8266 是串口型 WIFI,速度比较低,不能用来传输图像或者视频这些大容量的数据,主要应用于数据量传输比较少的场合,比如温湿度信息,一些传感器的开关量等。
其他的电气特性,功耗特性我们就先不认识啦,我们在使用中也用不到这些。
模块实物图
资源介绍
原理图
功能介绍
无线组网
ESP8266 支持 softAP 模式,station 模式softAP + station 共存模式三种。 利用 ESP8266 可以实现十分灵活的组网方式和网络拓扑。
SoftAP:
即无线接入点,是一个无线网络的中心节点。通常使用的无线路由器就是一个无线接入点。
Station:
即无线终端,是一个无线网络的终端端。
SoftAP + station 共存模式
ESP8266 支持 softAP+station 共存的模式,用户设备、手机等可以作为station 连入 ESP8266 的 softAP 接口,同时,可以控制 ESP8266 的 station接口通过路由器(AP)连入 internet。
透传
透传,即透明传输功能。Host 通过 uart 将数据发给 ESP8266,ESP8266 再 通过无线网络将数据传出去;ESP8266 通过无线网络接收到的数据,同理通过uart 传到 Host。ESP8266 只负责将数据传到目标地址,不对数据进行处理,发送方和接收方的数据内容、长度完全一致,传输过程就好像透明一样。
透传需要先建立连接: ? 无线网络参数: ? 网络名称(SSID) ? 安全模式 ? 密钥(password) ? TCP 连接参数 ? 协议类型 ? 连接类型(client) ? 目的 IP 地址 ? 目的端口 ? 串口参数 ? 波特率 ? 数据位 ? 检验位 ? 停止位 ? 硬件流控
UART 成帧机制
我们讲一下USART传输因为我们ESP8266用来传输数据量较小,所以使用USART直接与单片机传输 。 判断 UART 传来的数据时间间隔,若时间间隔大于 20ms,则认为一帧结束;否则,一直接收数据到上限值 2KB,认为一帧结束。ESP8266 模块判断UART 来的数据一帧结束后,通过 WIFI 接口将数据转发出去。成帧时间间隔为 20ms,一帧上限值为 2KB。
WIFI加密
我们知道WIFI网络有很多种加密方式,下面简单介绍一下,此处不过多纠结,与我们研究的无关。
ESP8266 支持多种无线网络加密方式,包括: ? WEP (only station) ? WPA-PSK/TKIP ? WPA-PSK/AES ? WPA2-PSK/TKIP ? WPA2-PSK/AES
ESP8266模块的省电机制:
AT 指令说明
描述 Espressif ESP8266 模块 AT 指令集功能以及使用方法。
AT 指令集概述
指令集分为:基础 AT 命令、Wifi 功能 AT 命令、TCP/IP 工具箱 AT 命令等。 注意: 1)不是每条 AT 指令都具备上述 4 类命令。 2)后文指令中[ ]内数据为缺省值,不必填写或可能不显示。 3)波特率 115200。 4)参数为字符串的,需要加上双引号。例如: AT+CWSAP=“ESP_756190”,“20130826”,1,4
指令集
AT+CWMODE
AT+CWJAP
AT+CWLAP
AT+CWQAP
AT+ CWSAP
AT+CWLIF
AT+ CIPSTATUS
AT+CIPSTART
AT+CIPSEND
AT+CIPCLOSE
AT+CIFSR
AT+ CIPMUX
AT+ CIPSERVER
AT+ CIPMODE
AT+ CIPSTO
+IPD 接收到的网络数据
TCP/UDP/透传
TCP
TCP是一种面向连接的,提供可靠交付服务和全双工通信的,基于字节流的端到端的传输层通信协议。 TCP在传输数据之前必须先建立连接,数据传输结束后要释放连接。 每一条TCP连接提供的是端到端的服务,故TCP不提供广播或多播服务。 TCP提供可靠交付,有错误检查和数据重传机制。 TCP是面向字节流的。虽然应用进程和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字流。TCP并不知道所传输的字节流的含义。
UDP
UDP是一种无连接的,尽最大努力交付的,基于报文的端到端的传输层通信协议。 UDP,在发送数据之前不需要建立连接。 UDP不保证可靠交付,主机不需要位置复杂的连接状态。 UDP是面向报文的。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的的边界,即应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。在接收端,UDP一次交付一个完整的报文。 UDP没有拥塞控制,网络出现的拥塞不会使源主机的发送速率降低。 UDP支持一对一、一对多、多对一和多对多的交互通信。 UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。
TCP和UDP编程:
网络间通信要解决的是不同主机进程间的通信需要解决的首要问题是网络间进程标识问题以及多重协议的识别问题随着UNIX操作系统的广泛应用Socket成为最流行的网络通信应用程序的开发接口。
Socket是一种文件描述符,代表了一个通信管道的一个端点 在Socket类型的文件描述符上,可以完成建立连接,数据传输等操作
socket套接字分类
常用的Socket类型有两种: 1.流式Socket:SOCK_STREAM,提供面向连接的Socket 2.数据报式Socket:SOCK_DGRAM,提供面向无连接的
字节序的概念:指多字节数据的存储顺序
分类:
大端格式:将高位字节数据存储在低地址。 小端格式:将低位字节数据存储在低地址 网络协议制定了通讯字节序----大端 在主机内小端,因此我们进行网络通讯时要进行转换可以看看inet_ntop,inet_pton, htons htonl ntohs ntohl函数 我们在这里只放一下TCP和UDP的服务模型吧.
服务模型
|