原文链接:https://dsx2016.com/?p=1510
公众号:大师兄2016
前言
本文使用ESP8266模块结合arduino设置wifi通信
设备
ESP8066-01模块
ESP8266 是一款超低功耗的 UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗
技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到 Wi-Fi 无线网络上,进行互联网
或局域网通信,实现联网功能。
ESP8266 封装方式多样,天线可支持板载 PCB 天线,IPEX 接口和邮票孔接口三种形式;
ESP8266 可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域
电路图
注意引脚的位置,不要把线路设置反了
参考1
参考2
arduino接线
使用esp8266只要5个针脚就可以了,分别是 GND、VCC、TX、RX、CH_PD
特别注意,电源接的是 3.3V;否则会烧坏WiFi 模块!
特别注意,电源接的是 3.3V;否则会烧坏WiFi 模块!
特别注意,电源接的是 3.3V;否则会烧坏WiFi 模块!
如下图所示
其中CH_PD和VCC这两根红线都是接3.3v电源,具体方法看下文arduino实物图
参数说明
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句话
如果只有以下两句,则ESP8266未能正常启用
1 2 | 17:46:25.518 -> ESP8266 WIFI Test 17:46:25.518 -> hardware serial! |
AT指令
状态查询
如果在串口监视器输入AT,点击发送
结果如下图,说明ESP8266启用成功
如果输入AT后没反应,那么也要和上面描述的一样,再次检测接线,是否连接正确
同时还要注意
-
USB采用扩展板,可能会影响电源供能,所以请直接连接主机usb再次尝试
-
连接主机usb的时候,如果还是不行,建议连接主机的usb3.0接口,或者主机机箱的后面的USB接口,原因还是电源供能问题
-
上述问题如果还是不行,可以采用其他独立的电源方案,确保电源为3.3v,包括使用完稳压器之类配件
设置波特率
在 WiFi 模块发送给 arduino UNO 板的打印信息出现了乱码,是因为软串口(i/o 模拟出来)所能支持的波特率有限,最大支持 9600
通过 AT 指令设置为 9600,指令为:AT+UART=9600,8,1,0,0
如下图
所以要再把之前的代码中的
1 | mySerial.begin(115200); |
改为
1 | mySerial.begin(9600); |
然后保存,编辑,重新上传到arduino
使用 AT 指令配置 WIFI 模块为 STA+AP 模式
1. 打开串口监视器,波特率设置为 9600,结束符为 NR 和 CR;
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.创建客户端连接
2.连接参数
ip和端口为AT+CIFSR指令查询到的,和设置的端口
参数AT上述的设置
3.连接wifi
选中之前创建的wifi连接,点击点击连接按钮
4.PC WIFI发送数据给ESP8266
在发送区输入字符串,点击发送,可以看到串口监视器,收到了数据
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.