设为首页收藏本站

[基础教程] ESP8266-01+Arduino控制使用入门

visionsl 发表于 2016-2-1 17:13:43 | 显示全部楼层 [复制链接]
18 20354
本帖最后由 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

ESP8266-01

ESP8266-01

DFRobot Arduino FTDI Basic FIO/pro/mini/lilypad 程序下载器

DFRobot Arduino FTDI Basic FIO/pro/mini/lilypad 程序下载器

DFRobot Arduino FTDI Basic FIO/pro/mini/lilypad 程序下载器

第一步. 在PC上设置ESP8266-01模块​
ESP8266-01     TTL-USB
​UTXD               TXD
​​URXD               RXI

ESP8266-01     面包板
​3.3V                 3.3V
CH_PD             3.3V
GND                GND

​TTL-USB          面包板
GND                GND

注意TTL-USB要与面包板共地

注意TTL-USB要与面包板共地

注意TTL-USB要与面包板共地

接好后, 依次先把TTL-USB接到PC的USB上, 并打开SSCOM串口调试软件接通, 然后再给面包板通电(顺序一定不能错!顺序一定不能错!顺序一定不能错! 重要的事情说三遍)

TTL-USB接到PC后, 应能看到此串口(看不到的请装相应驱动)

TTL-USB接到PC后, 应能看到此串口(看不到的请装相应驱动)

TTL-USB接到PC后, 应能看到此串口(看不到的请装相应驱动)

在SSCOM中选择正确的串口号, 以及正确的波特率, 并"打开串口"(串口号右侧的按钮)
然后再给面包板通电

通电顺序没错的话, 应该就能看到上图

通电顺序没错的话, 应该就能看到上图

通电顺序没错的话, 应该就能看到上图

通电后, ESP8266-01亮红灯, 且蓝灯会闪烁几次后熄灭视为工作正常

通电后, ESP8266-01亮红灯, 且蓝灯会闪烁几次后熄灭视为工作正常

通电后, ESP8266-01亮红灯, 且蓝灯会闪烁几次后熄灭视为工作正常

试试指令: AT+RST, 检查是否与上图的结果类似

试试指令: AT+RST, 检查是否与上图的结果类似

试试指令: AT+RST, 检查是否与上图的结果类似

成功后, 也可以试一下AT指令

成功后, 也可以试一下AT指令

成功后, 也可以试一下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的波特率

最后最重要一步, 修改ESP8266-01的波特率

最后最重要一步, 修改ESP8266-01的波特率

指令:AT+CIOBAUD=9600
成功后请用新的波特率连入, 测试一下AT指令

在9600波特率下测试指令

在9600波特率下测试指令

在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指令全都能用, 是不是很爽

注意设置波特率是9600, 然后ESP8266的AT指令全都能用, 是不是很爽

注意设置波特率是9600, 然后ESP8266的AT指令全都能用, 是不是很爽

2-02.jpg
接线实物图

  1. <font color="rgb(51, 51, 51)">
  2. #include <SoftwareSerial.h>

  3. #define WIFI_TX       9
  4. #define WIFI_RX       8
  5. SoftwareSerial wifi(WIFI_RX, WIFI_TX);   //RX, TX

  6. String _comdata_wifi = "";             //for incoming wifi serial data

  7. void setup() {
  8.   Serial.begin(9600);
  9.   wifi.begin(9600);
  10.   Serial.println("system is ready!");
  11. }

  12. void loop() {
  13.   getWifiSerialData();
  14.   if(Serial.available()){
  15.     String order = "";
  16.     while (Serial.available()){
  17.       char cc = (char)Serial.read();
  18.       order += cc;
  19.       delay(2);
  20.     }
  21.     order.trim();
  22.     wifi.println(order);
  23.   }
  24.   if(_comdata_wifi!=""){
  25.     Serial.println(_comdata_wifi);
  26.     _comdata_wifi = String("");
  27.   }
  28. }

  29. void getWifiSerialData(){
  30.   while (wifi.available() > 0){
  31.     _comdata_wifi += char(wifi.read());   //get wifi data
  32.     delay(4);
  33.   }
  34. }</font>
复制代码




发表于 2016-2-1 18:32:18 | 显示全部楼层
有案例应用吗?给提供个学习。
回复 支持 反对

使用道具 举报

发表于 2016-2-1 18:52:01 | 显示全部楼层
hnyzcj 发表于 2016-2-1 18:32
有案例应用吗?给提供个学习。

有啊, 之前有个扫码的应用
回复 支持 反对

使用道具 举报

发表于 2016-2-1 19:23:35 | 显示全部楼层
visionsl 发表于 2016-2-1 18:52
有啊, 之前有个扫码的应用

没仔细看,嗯,回头我来找下
回复 支持 反对

使用道具 举报

发表于 2016-2-1 21:00:59 | 显示全部楼层
来膜拜 学习

点评

大神又来谦虚了  发表于 2016-2-2 09:16
回复 支持 反对

使用道具 举报

发表于 2016-2-2 08:08:04 | 显示全部楼层
正好需要这个
回复 支持 反对

使用道具 举报

发表于 2016-2-2 09:16:50 | 显示全部楼层

能用上就好
回复 支持 反对

使用道具 举报

发表于 2016-6-26 10:01:55 | 显示全部楼层
顶顶顶!

不过尼,似乎用那个softserial的库,可以支持115200的波特率。

还有, esp本身不贵,但那个ftdi芯片好贵啊!
回复 支持 反对

使用道具 举报

发表于 2016-6-27 16:24:15 | 显示全部楼层
svw 发表于 2016-6-26 10:01
顶顶顶!

不过尼,似乎用那个softserial的库,可以支持115200的波特率。

softserial的库最高只支持38400, 你用115200的话应该跑不起来的(我试过)
地府的FTDI是小贵, 不过它是个工具,可以一直使用, 建议买好一点的; 实在觉得贵可以上X宝, 上面有便宜的喔(不过我没用过)
回复 支持 反对

使用道具 举报

发表于 2016-6-28 19:02:50 | 显示全部楼层
visionsl 发表于 2016-6-27 16:24
softserial的库最高只支持38400, 你用115200的话应该跑不起来的(我试过)
地府的FTDI是小贵, 不过它是个工 ...

可以的,就用coolterm,地府的例程,我试过的。
回复 支持 反对

使用道具 举报

发表于 2017-2-3 13:48:30 | 显示全部楼层
学习了

赞一下大神
回复 支持 反对

使用道具 举报

发表于 2017-3-3 22:44:25 | 显示全部楼层
不错。我这里接线时,RX-TX要交叉接,才可以通讯。
回复 支持 反对

使用道具 举报

发表于 2017-3-16 18:43:30 | 显示全部楼层
melzg 发表于 2017-3-3 22:44
不错。我这里接线时,RX-TX要交叉接,才可以通讯。

可能是新版修改过了
回复 支持 反对

使用道具 举报

发表于 2017-3-19 22:40:17 | 显示全部楼层
直接用USB转TTL上面带的3.3V电源连接可以不。。

点评

你可以试试, 功率够的话应该可以的  发表于 2017-4-18 10:06
回复 支持 反对

使用道具 举报

发表于 2017-4-14 21:59:12 | 显示全部楼层
::D:D感谢分享!
回复 支持 反对

使用道具 举报

发表于 2017-6-29 22:48:41 | 显示全部楼层
到UNO 里显示system is ready!
输入AT也没有反应了
回复 支持 反对

使用道具 举报

发表于 2017-6-29 23:54:56 | 显示全部楼层
BH1NLT 发表于 2017-6-29 22:48
到UNO 里显示system is ready!
输入AT也没有反应了

设置115200都正常了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则 允许回帖同步到新浪微博  

推荐阅读

精华导读




公司简介| 联系我们| 小黑屋| 加入我们| 微博| 优酷| 英文网站| DF创客社区 ( 沪ICP备09038501号-4  
友情链接| 硬创邦| 花生壳社区| 模友之吧| 电子发烧友社区| 创客星球| 云汉电子社区| 电子工程网| 与非网| Arduino中文社区| 南极熊3D打印网| OneNET|

上海智位机器人有限公司  沪ICP备09038501号-4   

Powered by Discuz! X3.1

Licensed Comsenz Inc.

返回顶部 返回列表