arduino+ESP8266模块使用AT指令设置wifi

原文链接:https://dsx2016.com/?p=1510

公众号:大师兄2016

前言

本文使用ESP8266模块结合arduino设置wifi通信

设备

ESP8066-01模块

ESP8266 是一款超低功耗的 UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗

技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到 Wi-Fi 无线网络上,进行互联网

或局域网通信,实现联网功能。

ESP8266 封装方式多样,天线可支持板载 PCB 天线,IPEX 接口和邮票孔接口三种形式;

ESP8266 可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域

电路图

注意引脚的位置,不要把线路设置反了

参考1

img

参考2

img

arduino接线

使用esp8266只要5个针脚就可以了,分别是 GND、VCC、TX、RX、CH_PD

特别注意,电源接的是 3.3V;否则会烧坏WiFi 模块!

特别注意,电源接的是 3.3V;否则会烧坏WiFi 模块!

特别注意,电源接的是 3.3V;否则会烧坏WiFi 模块!

如下图所示

其中CH_PD和VCC这两根红线都是接3.3v电源,具体方法看下文arduino实物图

img

参数说明

Arduino UNO R3 板 ESP8266 WiFi 模块
GND GND
3.3V 3.3V
RX(3) TX
TX(2) RX
3.3V EN

arduino线路

先关闭电源或者抽离usb线,避免电路接线错误,如插入5.5v导致ESP8266烧毁等

建议等接线完毕再尝试接通arduino电源

具体线路

  • 蓝色和黄色线别分为ESP8266的TX和RX,连接arduino数字串口2和3

  • 黑色线接arduino GND引脚,然后接面包板(绿色线接ESP8266 GND引脚,然后接面包板和黑色线一组的引脚)

  • 红色线接arduino 3.3V引脚,然后接面包板(红色线接ESP8266 3.3V,然后接面包板和红色线一组的引脚)

  • 橙色线接ESP8266 CH_PD口,然后接入串联电阻的的另一端,面包板(红色线和橙色线之间建议串连一个10K的电阻,这样CH_PD和VCC也就是上图的两根红色的作用就实现了)

至此,5个引脚都设置好了

注意如果线路正常,则下图的ESP8266会先是蓝灯闪烁,然后红灯闪亮,表示进入wifi搜索模式

如果通电后,灯不亮,或者蓝灯以及红灯一直亮等,同时AT指令不生效,那么就要再次排查电路是否正确

arduino代码

保存,编辑,并上传到arduino

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2); // RX, TX 配置 3、2 为软串口
void setup()
{
  Serial.begin(9600);
  Serial.println("ESP8266 WIFI Test");
  while (!Serial) {
    ;
  }
  Serial.println("hardware serial!");
  mySerial.begin(115200);
  mySerial.println("software seria");
}
void loop()
{
  if (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}
?

串口监视器

依照上述的代码,如果ESP8266正常运行,则会打印3句或者4句话

img

如果只有以下两句,则ESP8266未能正常启用

1
2
17:46:25.518 -> ESP8266 WIFI Test
17:46:25.518 -> hardware serial!

AT指令

状态查询

如果在串口监视器输入AT,点击发送

结果如下图,说明ESP8266启用成功

img

如果输入AT后没反应,那么也要和上面描述的一样,再次检测接线,是否连接正确

同时还要注意

  • USB采用扩展板,可能会影响电源供能,所以请直接连接主机usb再次尝试

  • 连接主机usb的时候,如果还是不行,建议连接主机的usb3.0接口,或者主机机箱的后面的USB接口,原因还是电源供能问题

  • 上述问题如果还是不行,可以采用其他独立的电源方案,确保电源为3.3v,包括使用完稳压器之类配件

设置波特率

在 WiFi 模块发送给 arduino UNO 板的打印信息出现了乱码,是因为软串口(i/o 模拟出来)所能支持的波特率有限,最大支持 9600

通过 AT 指令设置为 9600,指令为:AT+UART=9600,8,1,0,0

如下图

img

所以要再把之前的代码中的

1
mySerial.begin(115200);

改为

1
mySerial.begin(9600);

然后保存,编辑,重新上传到arduino

使用 AT 指令配置 WIFI 模块为 STA+AP 模式

1. 打开串口监视器,波特率设置为 9600,结束符为 NR 和 CR;

img

2.配置 ESP8266 模块为 AP+STA 模式,开启 wifi 热点

1
AT+CWMODE=3

3.重启模块使 AP 模式生效

1
AT+RST

4.设置模块的 AP

SSID 为 EM-ESP8266,密 码为 12345678,通道号为 1,加密方式为:WPA_WPA2_PSK

1
AT+CWSAP="EM -ESP8266","12345678",1,4

5.加入 WIFI 热点

wifi热点名称:wifiname,密码为:123456 (当前wifi的密码,这里只是演示)

注意,此 WiFi是你所在的区域内 WiFi(也就是路由器的wifi,不是esp8266的wifi)

1
AT+CWJAP="wifiname","123456"

6.启动多连接

ESP8266 作为服务器做多支持 5 个客户端的链接,id 分配顺序是 0-4

1
AT+CIPMUX=1

7.模块开启服务器模式

端口号 8080

1
AT+CIPSERVER=1,8080

8.设置服务器超时时间

超时时间1200s

1
AT+CIPSTO=1200

9.查看ESP8266 的 IP

1
AT+CIFSR

以上内容gif演示

wifi通信

此处使用pc电脑端的wifi测试

软件连接

  • 链接:https://pan.baidu.com/s/1nv4AAbSAMA7b72dy5N0wIw

  • 提取码:8266

1.创建客户端连接

img

2.连接参数

ip和端口为AT+CIFSR指令查询到的,和设置的端口

参数AT上述的设置

img

3.连接wifi

选中之前创建的wifi连接,点击点击连接按钮

img

4.PC WIFI发送数据给ESP8266

在发送区输入字符串,点击发送,可以看到串口监视器,收到了数据

img

5.ESP8266 使用AT发送数据

先输入 AT+CIPSEND=clientid,length

说明:先发送准备发送的命令,再发需要发送的数据

  • 参数 client:是连接序号(0-4)

  • 参数 data:发送的数据长度

如果要发送数据 abcd 的话,在串口监视器进行以下操作

先输入AT指令

1
AT+CIPSEND=0,4

再发 abcd

1
abcd

以下为演示过程

至此,esp8266和电脑wifi的双向通信就完成了

总结

本文演示了arduino使用ESP8266模块设置wifi双向通信

重点回顾

  • ESP8266的线路描述,使用前一定要确保接线正确(这一点非常重要)

  • 如果AT指令无响应或者ESP8266指示灯异常,则一定要排除电源的干扰因素,保证电源稳定

  • 使用 AT 指令配置 WIFI 模块为 STA+AP 模式

  • 使用PC调试软件,测试wifi双向通信

其他AT指令请参考网上的资料

END.