极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 102946|回复: 22

《博哥玩Arduino》-WIFI小车-基础篇

[复制链接]
发表于 2016-11-18 22:22:02 | 显示全部楼层 |阅读模式
本帖最后由 单片机菜鸟 于 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>,<&#64258;ow control> (设置波特率)
          参数说明:   <baudrate>  UART 波特率
                             <databits>  数据位           
                                                            5:5 bit 数据位         
                                                            6:6 bit 数据位           
                                                            7:7 bit 数据位           
                                                            8:8 bit 数据位
                             <stopbits>  停&#12108;止位           
                                                            1:1 bit 停&#12108;止位           
                                                            2:1.5 bit 停&#12108;止位           
                                                            3:2 bit 停&#12108;止位
                             <parity>  校验位           
                                                            0:None           
                                                            1:Odd           
                                                            2:EVEN
                             <&#64258;ow 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  (出处: 极客工坊)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2016-11-18 22:55:25 | 显示全部楼层
自己做第一个冷板凳
回复 支持 反对

使用道具 举报

发表于 2016-11-19 08:44:22 | 显示全部楼层
不错,赞一个,手里板子放了好久了,没想好怎么玩
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-19 09:53:01 | 显示全部楼层
Hackerpro 发表于 2016-11-19 08:44
不错,赞一个,手里板子放了好久了,没想好怎么玩

有空还是可以玩一下的
回复 支持 反对

使用道具 举报

发表于 2016-11-19 11:09:48 | 显示全部楼层
谢谢楼主,学习了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-19 17:29:05 | 显示全部楼层
独行者 发表于 2016-11-19 11:09
谢谢楼主,学习了!

车子因为电池原因没有做出来,不过基本都是调通的  仅供参考
回复 支持 反对

使用道具 举报

发表于 2016-11-22 12:41:20 | 显示全部楼层
就是修改波特率不行,其它的测试了都可以?怎么解???
ERROR
AT+GMR

AT version:0.21.0.0
SDK version:0.9.5

OK
AT+UART_DEF=19200,8,1,0,0


ERROR
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-22 12:49:59 | 显示全部楼层
万马奔腾 发表于 2016-11-22 12:41
就是修改波特率不行,其它的测试了都可以?怎么解???
ERROR
AT+GMR

试试修改成其他波特率看看  你的是ESP8266-01?
回复 支持 反对

使用道具 举报

发表于 2016-11-22 14:32:58 | 显示全部楼层
是ESP8266-1
改其它波特率也不行,会不会是指令不对,因为这个模块是一年前左右买的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-22 15:14:59 | 显示全部楼层
万马奔腾 发表于 2016-11-22 14:32
是ESP8266-1
改其它波特率也不行,会不会是指令不对,因为这个模块是一年前左右买的

那就试试这一条  AT+UART=19200,8,1,0,0   按道理来说应该不会说一年后就改了指令
回复 支持 反对

使用道具 举报

发表于 2016-11-25 22:12:32 | 显示全部楼层
用USB转TTL串口和电脑连接,显示无法识别的USB设备,电脑--管理--设备管理器也没有com口
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-25 22:14:44 | 显示全部楼层
ILLUSION 发表于 2016-11-25 22:12
用USB转TTL串口和电脑连接,显示无法识别的USB设备,电脑--管理--设备管理器也没有com口

看看是不是驱动没有安装
回复 支持 反对

使用道具 举报

发表于 2016-12-6 20:55:17 | 显示全部楼层
ILLUSION 发表于 2016-11-25 22:12
用USB转TTL串口和电脑连接,显示无法识别的USB设备,电脑--管理--设备管理器也没有com口

8266很耗电,如果USB线不好也会。最好用外部供电,好的USB线,还有8266坏也有可能,我就遇到过一块坏的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-10 08:43:19 | 显示全部楼层
coolcxm 发表于 2016-12-6 20:55
8266很耗电,如果USB线不好也会。最好用外部供电,好的USB线,还有8266坏也有可能,我就遇到过一块坏的。 ...

嗯嗯  的确是很耗电  我用蓝牙模块做的就很稳定 但是wifi模块发热大
回复 支持 反对

使用道具 举报

发表于 2016-12-10 11:50:12 | 显示全部楼层
8266无线模块是3.3V供电的,发热不怎么大啊,除非你用5V
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 18:23 , Processed in 0.044142 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表