本帖最后由 单片机菜鸟 于 2016-11-27 21:19 编辑
1.前言
上个星期做了蓝牙小车,见到WIFI模块8266 挺便宜,所以就上网买了两块8266,准备把蓝牙小车改成WIFI小车。(原因:蓝牙的传输距离还是有点短,估计距离稍微远点(大于10M)就连不上小车了,所以就考虑8266,据说空旷地带能达到400M,具体的数据并没有去测试过,对于我的WIFI小车来说,50M内可靠传输就可以满足我的要求了)。
由于我的小车是基于蓝牙小车开发的,所以很多关于小车的介绍我就不重复说明了,想了解具体设置的可以去看看这两篇文章。
《博哥玩Arduino》-蓝牙小车-基础篇
http://www.geek-workshop.com/thread-27767-1-1.html (出处: 极客工坊)
《博哥玩Arduino》-蓝牙小车-实操篇
http://www.geek-workshop.com/thread-27777-1-1.html (出处: 极客工坊)
我的习惯,先说原理,再说调试过程,所以WIFI小车也分为两个部分,基础篇以及实操篇。
2.设计原理
概念流程如下:
1.ESP8266连接到Arduino UNO R3的串口(前期测试AT指令可以用软串口),8266作为AP模块
2.手机端安装 wifi小车 app,然后WIFI热点上寻找 8266 AP,连接上它。
3.打开app,点击连接到小车(其实就是连接到8266),之后就可以两者通信了,把前进后退左转右转的编码发给8266,8266通过串口发给Arduino,Arduino处理指令,控制电机。8266模块只接收数据,不发生数据。
顺便来个草图:
3.材料
配件如下:
ARDUINO UNO 开发板 1块
ESP8266 WIFI模块 1个
安卓手机 1部
车模 1个
蓄电池及充电线 1套
L298N驱动模块 1个
杜邦线 若干
4.具体过程
废话少说,这里只是测试ESP8266,另外的模块请到蓝牙小车介绍去看:
4.1 ESP8266 引脚图
引脚说明 :
引脚名 接线说明 与Arduino UNO上相连接的引脚
UTXD 接单片机RX 10(软串口RX)
URXD 接单片机TX 11(软串口TX)
CH_PD 接3.3V 3.3V
VCC 电源 3.3V
GND 地 GND
先共享两份资料,我就不详细介绍8266,只关注测试过程:
串口调试助手:
在这里我们暂时不用UNO板子来测试8266模块,我们直接用USB转TTL串口线来连接8266模块,然后通过串口调试助手来给8266发送AT指令。
ESP8266可以配置成station 、AP、station+AP三种模式,就是说模块可以当成一个设备(client)连接区域网内的路由,也可以设置成是一个路由(sever),也可以既作为局域网里面的client同时又是其他client的sever。
我自己的话就用到AP模式,那么就需要了解以下几个指令(注意:有些命令是可以写入ESP8266模块的flash里面的,意味着掉电重启也是有效的,既然这样,那意味着我们可以用串口调试助手先做好基本配置,然后其他的配置可以通过Arduino板子来配置),其他的指令可以自行查阅手册:
1. AT+RST 重新启动模块
返回:OK 以及一堆乱码,忽略乱码
2. AT+CWMODE=2 设置AP模式(重启后生效(AT+RST))(测试发现会写入flash)
返回:OK
3. AT+CWSAP=”WifiCar”,”123456123456”,1,3 配置AP参数 指令:AT+ CWSAP=<ssid>,<pwd>,<chl>, <ecn>(测试发现会写入flash)
说明:指令只有在AP模式开启后有效
<ssid>:字符串参数,接入点名称
<pwd>:字符串参数,密码最长64字节,ASCII
<chl>:通道号
< ecn >:0-OPEN,1-WEP,2-WPA_PSK,3-WPA2_PSK,4-WPA_WPA2_PSK (这样就意味着别人连接可能需要密码,除非是OPEN直接连接)
返回:OK 此时手机WLAN列表中会找到ESP8266的热点(可能需要等一会),点击连接
4. AT+CIFSR 查看模块IP地址命令
返回一个IP地址,这个要记住,手机连接会用到(假设这里是192.168.4.1)
5. AT+CIPMUX=1 开启多连接模式命令(掉电需要重新设置,Arduino写入)
6. AT+CIPSERVER=1,8080 开启服务器模式 8080为端口号,手机连接时会用到(手机连接就会用192.168.4.1/8080)(掉电需要重新设置,Arduino写入)
7.AT+UART_DEF=<baudrate>, <databits>,<stopbits>, <parity>,<flow control> (设置波特率)
参数说明: <baudrate> UART 波特率
<databits> 数据位
5:5 bit 数据位
6:6 bit 数据位
7:7 bit 数据位
8:8 bit 数据位
<stopbits> 停⽌止位
1:1 bit 停⽌止位
2:1.5 bit 停⽌止位
3:2 bit 停⽌止位
<parity> 校验位
0:None
1:Odd
2:EVEN
<flow control> 流控
0:不使能流控
1:使能 RTS
2:使能 CTS
3:同时使能 RTS 和 CTS
注意,非常重要:有个地方需要注意一下,ESP8266模块默认的波特率是115200,由于我们用到软串口调试,可能软串口波特率达不到115200,只能到19200,所以我就干脆都用9600波特率。所以我拿到8266模块之后的第一个任务就是修改波特率。执行以下两个命令:
AT+RST
AT+UART_DEF=9600,8,1,0,0
修改完之后,记住需要重新设置串口调试助手的波特率。(注意:在串口调试软件中每个指令都需要回车后再发送)
所以总结如下:
首先,通过串口调试助手和USB转串口线先给8266模块进行基本设置,顺序执行以下命令:
一、重新设置波特率
AT+RST
AT+UART_DEF=9600,8,1,0,0 (会写入Flash)
二、进行基本设置
第一步: AT+RST
第二步: AT+CWMODE=2 以及 AT+RST (会写入Flash)
第三步: AT+CWSAP=”WifiCar”,”123456123456”,1,3 (会写入Flash)
第四步: AT+CIPMUX=1 (不会写入Flash,掉电需要重新设置)
第五步: AT+CIPSERVER=1,8080(不会写入Flash,掉电需要重新设置)
第六步: AT+CIFSR (手机端App需要用到这个,记录一下)
这样,通过串口线就进行完基本设置了,剩下的就是Arduino 代码以及 App,这个在实操篇讲解。
附上简单的AT指令:
AT+GMR 查看版本号
AT+RST 重启
AT+CWMODE=2 设置工作模式(1客户端,2服务器,3)
AT+CWMODE? 查询工作模式
AT+CWLIF 查看接入的客户端IP
AT+CWLAP 返回AP列表
AT+CWJAP="ssid","87654321" 加入AP
AT+CIFSR 获取本模块ip
AT+CIPSTART="TCP","121.9.25.1",9800 连接服务器
AT+CIPMODE? 查询模块传输模式 1透传,0不透传
AT+CIPMODE=1 设置模块传输模式
AT+CIPSEND 进入透传模式
每次重启后需要重新执行一条连接服务器指令
//服务器模式
AT+CIPMUX=1 0单路连接模式,1多路连接模式
AT+CIPMUX? 查询连接模式
AT+CIPSERVER=1,8080 配置为服务器
AT+ CIPSTATUS 返回当前模块的连接状态和连接参数
其他的请自行查阅上面的pdf文档。
如果没有什么意外的情况,应该就可以在手机端看到这个WifiCar wifi热点,然后点击连接上它,会提示你输入密码,就输入上面设置的123456123456。
当手机给wifi模块 8266发控制命令时,就会通过串口发到Arduino,接下来就是Arduino的事情了。
原理讲到这里,晚点把实操篇补上。
实操篇链接补上:
《博哥玩Arduino》-WIFI小车-调试实操篇
http://www.geek-workshop.com/thread-27853-1-1.html(出处: 极客工坊)
博哥系列文章:
《博哥玩Arduino》-蓝牙小车-基础篇
http://www.geek-workshop.com/thread-27767-1-1.html (出处: 极客工坊)
《博哥玩Arduino》-蓝牙小车-实操篇
http://www.geek-workshop.com/thread-27777-1-1.html (出处: 极客工坊)
《博哥玩Arduino》-Arduino语法手册
http://www.geek-workshop.com/thread-27843-1-1.html (出处: 极客工坊)
《博哥玩Arduino》-WIFI小车-基础篇
http://www.geek-workshop.com/thread-27850-1-1.html (出处: 极客工坊)
《博哥玩Arduino》-WIFI小车-调试实操篇
http://www.geek-workshop.com/thread-27853-1-1.html (出处: 极客工坊)
《博哥玩Arduino》- 蓝牙模块HC06 重命名
http://www.geek-workshop.com/thread-27897-1-1.html (出处: 极客工坊)
《博哥玩Arduino》- 蓝牙RGB灯
http://www.geek-workshop.com/thread-27892-1-1.html (出处: 极客工坊) |