STM32_4:ESP8266-WIFI模块

ESP8266是实现wifi通讯的一个模块种类,有很多分类包含esp8266-12、esp8266 12E、ESP8266-01S、esp32等等。esp8266-01s由一颗esp8266作为主控再由一块flash作为存储芯片组成,带有板载芯片供电采用3.3V电压使用串口进行烧写程序和AT指令集调试,注意芯片一旦烧写了程序便不可使用AT指令集,需要重新刷回AT指令固件才可以使用 AT指令集。

WiFi通信的频段和蓝牙一样,都是2.4G免费频段。我们使用ESP8266-01S模块,这款 WiFi模块的芯片是乐鑫公司设计的,由安信可公司生产的模组。相当于ARM公司设计芯片,ST公司生产STM32单片机。ESP8266-01S是基于乐鑫ESP8266芯片制造的一款WiFi通信模组,其内部集成了802.11b/g/n协议栈和TCP/IP协议栈,具备完整的Wi-Fi和网络功能。但是多数人都喜欢拿它来做WiFi通信使用。ESP芯片的多款模组选型如下:

1.esp8266-01s的三种工作模式

1.1 STA模式(Station)

工作在STA模式下的ESP8266-01S模块就像你的手机一样,它可以接收你家无线路由器发出的WiFi信号,实现了ESP8266-01S模块通过接收路由器的信号而能够上网,跟手机连WiFi上网没区别,当然如果把ESP8266-01S模块按正确方式接在STM32单片机上,就可以实现STM32控制的比如灯、继电器、舵机等具有开关功能的远程控制。

1.2 AP模式(Wireless Access Point)

工作在AP模式下的ESP8266-01S模块就像是一个手机热点一样,也像你家的简易版无线路由器,你自己的手机、Pad、笔记本电脑等都可以连接到此"热点",从而实现了手机、 电脑等设备可以和ESP8266-01S模块进行局域网的无线通信。在AP模式下的ESP8266-01S 模块是一个无线网络的创建者,可以理解为此时ESP8266-01S模块是被别的设备连接,即此时的ESP8266-01S模块是一个服务器端,为被他人连接的模式。

1.3 STA+AP模式

两种模式共存,ESP8266-01S模块既可以通过路由器连接到互联网,也可以作为WiFi热点使其他设备连接到这个ESP8266-01S模块,实现广域网与局域网的无缝切换。

2.引脚接线图

电源供电不足会导致固件程序烧录失败。烧录固件的时候会出现一直在等待上电情况,建议采用外部专用电源,使用TTL转串口模块烧录时可以用万用表测试一下TTL转 USB模块的3.3V供电是不是达到了稳定的3.3V,如果没有的话需要把ESP8266-01S的VCC接到5V上。 该模块出厂时默认自带出厂固件的,但如果进行其他开发需要烧录固件,比如如果想用机智云结合ESP8266-01S开发就需要烧录机智云的固件(这个可 以在机智云网站找到),如果想用ESP8266-01S把STM32的数据传到阿里云上,就需要烧录MQTT的固件,因为传数据到阿里云上需要用到MQTT协议。

3.烧录固件

烧录固件引脚接线:

下载烧录固件软件以及烧录固件程序、烧录完成测试

测试固件烧录接线:

4.AT指令

  • CR(carriage return):表示回车 \r
  • LF(Line Feed):表示换行 \n
  1. DOS和windows采用回车+换行(CR+LF)表示下一行
  2. Unix/linux采用换行符(LF)表示下一行
  3. MAC OS系统采用回车符(CR)表示下一行

5.ESP8266-01S wifi功能介绍

6.透传

透传,即透明传输,指的是在通讯或数据传输过程中,不对传输的内容进行任何修改、处理或解释,而是将数据或信号原样传递、转发或传输到目的地址或设备。这种传输方式确保了数据的准确性和完整性,特别是在需要直接将数据传递给下游设备或系统时。

7.连接示例

1.单连接 TCP Client

  1. 配置 WiFi 模式(Command for Wireless 无线命令)

AT+CWMODE=3

2.连接路由器(Join Access Point 加入接入点)

AT+CWJAP="SSID","password"

  1. 查询 ESP8266 设备的 IP 地址

AT+CIFSR

4.PC与ESP8266设备连接同一路由器,在PC端使用网络调试工具,建立一个TCP服务器。

假设,PC创建的服务器IP地址为192.168.3.116,端口为8080。

  1. ESP8266 设备作为 TCP client 连接到上述服务器

AT+CIPSTART="TCP","192.168.3.116",8080

  1. ESP8266 设备向服务器发送数据

AT+CIPSEND=4

>test

注意:发送数据时,如果输入的字节数超过了了设置长度(n):

系统将提示 busy,并发送数据的前 n 个字节,发送完成后响应 SEND OK。

超出长度的部分数据被认为是无效数据,不被接受。

2.多连接 TCP Server

ESP8266 AT仅支持建立一个TCP服务器,且必须使能多连接,即允许连接多个TCP client.

以下为ESP8266作为softAP,建立TCP服务器的举例;如果是ESP8266作为station,可在连接路由后,同理建立服务器。

  1. 配置 WiFi 模式

AT+CWMODE=3

  1. 使能多连接(Multiplex /ˈmʌl.tɪ.pleks/ 多路复用,多重连接)

AT+CIPMUX=1

  1. 建立 TCP server

AT+CIPSERVER=1

  1. PC 连入 ESP8266 softAP

注:这里连接的时候使用的ESP8266的STAIP地址

5.在PC端使用网络调试工具,建立一个TCPclient,连接ESP8266的TCPserver。

注:TCPl连接ESP8266后,会提示0,CONNEXT,0是网络标号

注:ESP8266 作为TCP server有超时机制,如果连接建立后,一段时间内无数据来往,ESP8266 TCP server会将TCPclient踢掉。因此,请在PC TCPclient连上ESP8266 TCP server后建立一个2s的循环数据发送.用于保持连接。

  1. 发送数据

AT+CIPSEND=0, 4 // send 4 bytes to connection NO.0

>test

注:发送数据时,如果输入的字节数超过了设置长度(n):

系统将提示 busy,并发送数据的前n个字节,发送完成后响应 SEND OK。

超出长度的部分数据被认为是无效数据,不被接受。

  1. 断开 TCP传输

AT+CIPCLOSE=0

3.UDP 传输

UDP 传输不区分 server 或者 client ,由指令 AT+CIPSTART 建立传输。

  1. 配置 WiFi 模式(Command for Wireless 无线命令)

AT+CWMODE=3

2.连接路由器(Join Access Point 加入接入点)

AT+CWJAP="SSID","password"

  1. 查询 ESP8266 设备的 IP 地址

AT+CIFSR

4.PC与ESP8266设备连接同一路由器,在PC端使用网络调试工具,建立一个UDP传输。

假设,PC创建的服务器IP地址为192.168.101.116,端口为8080。

5.后文将基于前述步骤,介绍两种UDP通信的示例。

1. 固定远端的 UDP 通信

UDP通信的远端固定,由AT+CIPSTART指令的最后一个参数设置为O决定。系统将分配一个连接号给这个固定连接,UDP通信双方不会被其他设备替代。

  1. 使能多连接

AT+CIPMUX=1

UDP是远端的,要多连接。

  1. 创建 UDP 传输。例如,分配连接号为 4,指令如下:

AT+CIPSTART=4,"UDP","192.168.101.110",8080,1112,0

示例指令中的参数说明如下:

  • "192.168.101.110",8080为UDP传输的远端IP和端口,即前文步骤4中PC建立的UDP端口;

  • 1112为ESP8266本地的UDP端口,用户可自行设置,如不设置则为随机值;

  • 0表示当前UDP传输建立后,UDP远端不会被其他设备更改;即使有其他设备通过UDP协议发数据到ESP8266UDP端口1112,ESP8266的第4号UDP传输的远端也不会被替换,使用指令"AT+CIPSEND=4,X"发送数据,仍然是当前固定的PC端收到。

  1. 发送数据

AT+CIPSEND=4,7 // Send 7 bytes to transmission NO.4

>UDPtest

  1. 断开 UDP 传输

AT+CIPCLOSE=4

2.远端可变的 UDP 通信

当使用AT+CIPSTART指令创建UDP通信,将最后一个参数设置为2时,UDP通信的远端可改变。

  1. 创建 UDP 传输。

AT+CIPSTART="UDP","192.168.101.110",8080,1112,2

  1. 发送数据

AT+CIPSEND=7

>UDPtest

  1. 发送数据到其他指定远端。例如,发数据到 192.168.101.111, 端口 1000。

AT+CIPSEND=7,"192.168.101.111",1000

>UDPtest

  1. 断开 UDP 传输

AT+CIPCLOSE

4.透传

ESP8266AT默认仅在TCPclient单连接或UDP传输模式时,支持透传。

1.TCP Client 单连接透传

以下为ESP8266作为station实现TCPclient单连接透传的举例,ESP8266作为softAP可同理实现透传。

  1. 配置 WiFi 模式(Command for Wireless 无线命令)

AT+CWMODE=3

2.连接路由器(Join Access Point 加入接入点)

AT+CWJAP="SSID","password"

  1. 查询 ESP8266 设备的 IP 地址

AT+CIFSR

4.PC与ESP8266设备连接同一路由器,在PC端使用网络调试工具,建立一个TCP服务器。

假设,PC创建的服务器IP地址为192.168.3.116,端口为8080。

  1. ESP8266 设备作为 TCP client 连接到上述服务器

AT+CIPSTART="TCP","192.168.3.116",8080

  1. 使能透传模式

AT+CIPMODE=1

  1. ESP8266 设备向服务器器发送数据

AT+CIPSEND

>

发送数据时,如果输入的字节数超过了设置长度(n)

系统将提示 busy,并发送数据的前n个字节,发送完成后响应 SEND OK。

超出长度的部分数据被认为是无效数据,不被接受。

进入透传模式发送数据,每包最大2048字节,或者每包数据以20ms间隔区分。

8.退出发送数据:
在透传发送数据过程中,若识别到单独的一包数据"+++",则退出透传发送。
如果使用键盘打字输入"+++",可能耗时太,不被认为是连续的三个"+",建议使用串口工具一次性发送"+++",并请注意不要携带空格或换行符等不可见字符。之后,请至少间隔1秒,再发下一条AT指令。

注:"+++"退出透传发送数据,回到正常AT指令模式。此时,TCP连接仍然是保持的,可以再发AT+CIPSEND指令,重新开始透传。只是退出了发送数据。

  1. 退出透传模式

AT+CIPMODE=0

10.断开 TCP 连接

AT+CIPCLOSE

2.UDP 透传

以下为ESP8266作为softAP实现UDP透传的举例,ESP8266作为station可同理实现透传。

  1. 配置 WiFi 模式

AT+CWMODE=3

  1. PC 连入 ESP8266 softAP

3.在PC端使用网络调试工具,建立一个UDP传输。

假设,PC创建的UDP自身IP地址为192.168.4.2,端口为1001。

4.ESP8266与PC对应端口建立固定对端的UDP传输

AT+CIPSTART="UDP","192.168.4.2",1001,2233,0

  1. 使能透传模式

AT+CIPMODE=1

  1. ESP8266 设备向服务器器发送数据

AT+CIPSEND

>

8.退出发送数据:
在透传发送数据过程中,若识别到单独的一包数据"+++",则退出透传发送。
如果使用键盘打字输入"+++",可能耗时太,不被认为是连续的三个"+",建议使用串口工具一次性发送"+++",并请注意不要携带空格或换行符等不可见字符。之后,请至少间隔1秒,再发下一条AT指令。

注:"+++"退出透传发送数据,回到正常AT指令模式。此时,TCP连接仍然是保持的,可以再发AT+CIPSEND指令,重新开始透传。只是退出了发送数据。

  1. 退出透传模式

AT+CIPMODE=0

10.断开 UDP 连接

AT+CIPCLOSE

相关推荐
Moshow郑锴5 小时前
什么是 ACPI Bridge Device
stm32·单片机·嵌入式硬件
雨雨雨雨雨别下啦6 小时前
嵌入式stm32复习资料
stm32·单片机·嵌入式硬件
三佛科技-134163842126 小时前
智能逗狗神器方案开发,狗狗跳跳球MCU方案设计
单片机·嵌入式硬件·智能家居·pcb工艺
x县豆瓣酱7 小时前
STM32F1基于cursor搭建开发环境
stm32·单片机·嵌入式硬件
Q_21932764557 小时前
基于单片机的RFID门禁系统设计
单片机·嵌入式硬件·51单片机
就是蠢啊7 小时前
51单片机——LCD1602液晶显示
单片机·嵌入式硬件·51单片机
neardi临滴科技7 小时前
Neardi Pi 4-3588:开启 8K 极速智能,赋能企业级边缘计算新时代
人工智能·嵌入式硬件·边缘计算·rk3588·开发板
love530love7 小时前
【笔记】华硕 ROG MAXIMUS Z890 HERO 主板 BIOS 更新完整操作实录
运维·人工智能·windows·笔记·单片机·嵌入式硬件·bios
尼喃7 小时前
3.7V升压5V 1A芯片精选推荐,高效率低功耗,满足工程需求
单片机·嵌入式硬件