ESP8266-01+Arduino控制使用入门
本帖最后由 visionsl 于 2016-2-1 17:33 编辑最近有朋友被ESP8266模块所困扰, 所以有了此文, 以帮助还不太会用Wifi模块的伙伴们
前言
因为本例中ESP8266(新模块初始波特率是115200)与Arduino是用软串口方式连接, 而Arduino软串口最高波特率只支持38400, 因此在与Arduino搭配使用前, 需要先手工把ESP8266做一下初始化配置, 我常用的波特率是9600.所需元件:
- Arduino UNO(或DFRobot Leonardo & Xbee R3)
- TTL转USB工具
- ESP8266-01
- 面包板+面包板专用电源ESP8266-01
DFRobot Arduino FTDI Basic FIO/pro/mini/lilypad 程序下载器
第一步. 在PC上设置ESP8266-01模块
ESP8266-01 TTL-USB
UTXD TXD
URXD RXIESP8266-01 面包板
3.3V 3.3V
CH_PD 3.3V
GND GNDTTL-USB 面包板
GND GND
注意TTL-USB要与面包板共地
接好后, 依次先把TTL-USB接到PC的USB上, 并打开SSCOM串口调试软件接通, 然后再给面包板通电(顺序一定不能错!顺序一定不能错!顺序一定不能错! 重要的事情说三遍)
TTL-USB接到PC后, 应能看到此串口(看不到的请装相应驱动)
在SSCOM中选择正确的串口号, 以及正确的波特率, 并"打开串口"(串口号右侧的按钮)
然后再给面包板通电
通电顺序没错的话, 应该就能看到上图
通电后, ESP8266-01亮红灯, 且蓝灯会闪烁几次后熄灭视为工作正常
试试指令: AT+RST, 检查是否与上图的结果类似
成功后, 也可以试一下AT指令
然后按顺序执行初始化指令
初始化指令:
AT 返回OK的话证明接线和供电正确, 可以继续执行后面的指令
ATE0 关闭回显功能
AT+CWMODE=1 设为Station模式
AT+CWJAP="wifi-ssid","wifi-password" 加入你自己的Wifi名称和密码
AT+CWAUTOCONN=1 设置开机自动连入Wifi
AT+CIPMUX=1 设置单连接
AT+RST 重启模块, 如果能获取到IP则证明设置完成重启后, 能看到以下信息证明模块初始化基本完成, 能自动连上你的WIFI:
WIFI CONNECTED
WIFI GOT IP
如果此处不成功, 请检查你的路由是否限制了新设备接入
最后最重要一步, 修改ESP8266-01的波特率
指令:AT+CIOBAUD=9600
成功后请用新的波特率连入, 测试一下AT指令
在9600波特率下测试指令
见到红框内容证明新波特率成功
至此, 模块初始化完成, 接下来可以与Arduino接线写程序了!
第二步. ESP8266-01模块与Arduino搭配ESP8266-01 UNO
TX 8
RX 9
3.3V 3.3V
CH_PD 3.3V
GND GND先做一个模拟SSCOM串口调试的程序样例, 这样当ESP8266-01与Arduino接上的时候, 也能把Arduino当串口助手一样使用先上效果图
注意设置波特率是9600, 然后ESP8266的AT指令全都能用, 是不是很爽
接线实物图
<font color="rgb(51, 51, 51)">
#include <SoftwareSerial.h>
#define WIFI_TX 9
#define WIFI_RX 8
SoftwareSerial wifi(WIFI_RX, WIFI_TX); //RX, TX
String _comdata_wifi = ""; //for incoming wifi serial data
void setup() {
Serial.begin(9600);
wifi.begin(9600);
Serial.println("system is ready!");
}
void loop() {
getWifiSerialData();
if(Serial.available()){
String order = "";
while (Serial.available()){
char cc = (char)Serial.read();
order += cc;
delay(2);
}
order.trim();
wifi.println(order);
}
if(_comdata_wifi!=""){
Serial.println(_comdata_wifi);
_comdata_wifi = String("");
}
}
void getWifiSerialData(){
while (wifi.available() > 0){
_comdata_wifi += char(wifi.read()); //get wifi data
delay(4);
}
}</font>
有案例应用吗?给提供个学习。 hnyzcj 发表于 2016-2-1 18:32
有案例应用吗?给提供个学习。
有啊, 之前有个扫码的应用 visionsl 发表于 2016-2-1 18:52
有啊, 之前有个扫码的应用
没仔细看,嗯,回头我来找下 来膜拜 学习 正好需要这个 dsweiliang 发表于 2016-2-2 08:08
正好需要这个
能用上就好{:5_165:} 顶顶顶!
不过尼,似乎用那个softserial的库,可以支持115200的波特率。
还有, esp本身不贵,但那个ftdi芯片好贵啊! svw 发表于 2016-6-26 10:01
顶顶顶!
不过尼,似乎用那个softserial的库,可以支持115200的波特率。
softserial的库最高只支持38400, 你用115200的话应该跑不起来的(我试过)
地府的FTDI是小贵, 不过它是个工具,可以一直使用, 建议买好一点的; 实在觉得贵可以上X宝, 上面有便宜的喔(不过我没用过) visionsl 发表于 2016-6-27 16:24
softserial的库最高只支持38400, 你用115200的话应该跑不起来的(我试过)
地府的FTDI是小贵, 不过它是个工 ...
可以的,就用coolterm,地府的例程,我试过的。 学习了
赞一下大神 不错。我这里接线时,RX-TX要交叉接,才可以通讯。 melzg 发表于 2017-3-3 22:44
不错。我这里接线时,RX-TX要交叉接,才可以通讯。
可能是新版修改过了 直接用USB转TTL上面带的3.3V电源连接可以不。。 ::D:D感谢分享! 到UNO 里显示system is ready!
输入AT也没有反应了 BH1NLT 发表于 2017-6-29 22:48
到UNO 里显示system is ready!
输入AT也没有反应了
设置115200都正常了 BH1NLT 发表于 2017-6-29 23:54
设置115200都正常了
想问下是8266的波特也要设置成115200吗?
我之前设置成9600,都没反应,调回115200后也是不识别,求指导
页:
[1]