原文链接:https://dsx2016.com/?p=1510
公众号:大师兄2016
本文使用ESP8266模块结合arduino设置wifi通信
ESP8066-01模块
ESP8266 是一款超低功耗的 UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗
技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到 Wi-Fi 无线网络上,进行互联网
或局域网通信,实现联网功能。
ESP8266 封装方式多样,天线可支持板载 PCB 天线,IPEX 接口和邮票孔接口三种形式;
ESP8266 可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域
注意引脚的位置,不要把线路设置反了
参考1
参考2
使用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
#include
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未能正常启用
17:46:25.518 -> ESP8266 WIFI Test
17:46:25.518 -> hardware serial!
状态查询
如果在串口监视器输入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
如下图
所以要再把之前的代码中的
mySerial.begin(115200);
改为
mySerial.begin(9600);
然后保存,编辑,重新上传到arduino
使用 AT 指令配置 WIFI 模块为 STA+AP 模式
1. 打开串口监视器,波特率设置为 9600,结束符为 NR 和 CR;
2.配置 ESP8266 模块为 AP+STA 模式,开启 wifi 热点
AT+CWMODE=3
3.重启模块使 AP 模式生效
AT+RST
4.设置模块的 AP
SSID 为 EM-ESP8266,密 码为 12345678,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CWSAP="EM -ESP8266","12345678",1,4
5.加入 WIFI 热点
wifi热点名称:wifiname,密码为:123456 (当前wifi的密码,这里只是演示)
注意,此 WiFi是你所在的区域内 WiFi(也就是路由器的wifi,不是esp8266的wifi)
AT+CWJAP="wifiname","123456"
6.启动多连接
ESP8266 作为服务器做多支持 5 个客户端的链接,id 分配顺序是 0-4
AT+CIPMUX=1
7.模块开启服务器模式
端口号 8080
AT+CIPSERVER=1,8080
8.设置服务器超时时间
超时时间1200s
AT+CIPSTO=1200
9.查看ESP8266 的 IP
AT+CIFSR
以上内容gif演示
此处使用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指令
AT+CIPSEND=0,4
再发 abcd
abcd
以下为演示过程
至此,esp8266和电脑wifi的双向通信就完成了
本文演示了arduino使用ESP8266模块设置wifi双向通信
重点回顾
ESP8266的线路描述,使用前一定要确保接线正确(这一点非常重要)
如果AT指令无响应或者ESP8266指示灯异常,则一定要排除电源的干扰因素,保证电源稳定
使用 AT 指令配置 WIFI 模块为 STA+AP 模式
使用PC调试软件,测试wifi双向通信
其他AT指令请参考网上的资料
END.