_SKU__TEL0107__WiFiBee_进阶使用指南 - jimaobian/DFRobotWikiCn GitHub Wiki
本教程的目的是快速教会用户如何使用MT7681-IoT手机app实现对WiFiBee基本操作
-
硬件
- WiFiBee x1
- usb转Xbee适配器 x1
- micro usb线 x1
- 软件
- 将WiFiBee插在xbee适配器上,此时WiFiBee指示灯会不停闪烁,然后将安卓手机连接至指定wifi路由,打开手机app,界面如图所示:
- 在ssid下拉框中选择您期望将WiFiBee连接至的ssid,并在Password输入框中输入正确的wifi密码,点击Start Connection按钮,这样WiFiBee会进入智能连接状态。
- 如果WiFiBee连接到了指定的无线路由器,那么此时MT7681-IOT软件界面会显示该WiFiBee的ip地址信息以及一些可用操作按钮,这您就可以对WiFiBee进行操作。如图所示:
‘’’Basic’’’ 按钮的作用是为WiFiBee 启动一个基本操作的界面,在这个界面中我们主要操控 GPIO pwm,界面如下图所示:
- 蓝色矩形框用于输出WiFiBee 传过来的反馈信息。
- 黄色矩形框内有个输入框和一个Send按钮,这个主要用于给WiFiBee的uart外设写数据。
- 红色矩形框中是用于控制GPIO输入/输出以及PWM 输出控制。
- 控制GPIO输入/输出
- 在这个界面可以控制3个GPIO输入/输出高低电平,譬如点击GPIO0对应的High按钮这样WiFiBee对应的GPIO0就会被设置为高电平,同时app上的该按钮编程了Low按钮,当用户点击一下GPIO0对应的Low按钮时,GPIO0输出低电平。
- 用户如果想配置GPIO0为输入模式,那么点击GPIO0对应的input按钮即可,并且WiFiBee的GPIO0管脚的高低状态也反应到了这个input按钮上,如果此时显示的是input/High表示此时GPIO0当前输入一个高电平,
- 如果为input/Low,则表示GPIO0当前输入一个低电平。其他同理。
2. 控制GPIO的pwm输出
- 在这个界面里可以控制3个GPIO输出pwm波形,但由于它的pwm只能输出低频率的pwm波形,频率范围为1~500Hz。建议不超过100Hz,步进为10%。
- 比如我将GPIO2配置为输出100Hz,占空比为%60的pwm波形。那么只需要在PWM2所对应的第一个输入框输入100Hz,第二个输入框输入60然后点击SET按钮即可。其他同理。
1. AT指令控制GPIO0输出高电平
- 当进入该界面时app会打印出connect server successful,表示用户可以对WiFiBee发送AT指令了。在AT Cmd输入框中输入AT+GPIO0=1,然后点击send按钮,此时WiFiBee会返回OK,表示GPIO0已经配置为输出模式且输出高电平。
2. AT控制WiFiBee连接其他无线路由器
- 比如用户想让WiFiBee连接到SSID为jansion,password为12345678的无线路由器上,用户只需要一次发送以下指令即可:
AT+SSID=jansion;
AT+PASSWORD=12345678;
AT+CONNECT.
- 此时WiFiBee就会连接上这个无线路由器上, 把手机wifi也切换到该无线路由上后,就又可以通过手机app控制WiFiBee了。 当然还有更多AT指令可用参考《WiFiBee AT指令一览表》
在该界面中,您可以把数据发送到WiFiBee的串口上,WiFiBee的数据也可以发送到该界面中。比如在UART输入框中输入hello world,然后点击send按钮此时"hello world"就会立即传输到WiFiBee,WiFiBee在通过uart的Tx脚发送出去。如果此时把电脑和WiFiBee通过串口连接起来,打开串口助手就可以看到如下图所示的内容:
注意:默认波特率为115200,UART的波特率可以通过AT+BAUDRTATE=?查看。
在这一节中我们将把WiFiBee从远程tcp客服端的数据转发给UART,或者UART把数据通过WiFiBee转发到远程tcp客服端。 1. 环境搭建
- 先进入DFRobot_IoT的Uart数据传输界面(如果不知道如何进入该界面可以参考'''快速入门中的相关描述),并把WiFiBee与Uno串口连接好即可。
2. 配置WiFiBee
- 我们需要达到的配置效果是:Uno可以通过uart从WiFiBee获取到DFRobot_IoT发送过来的数据;Uno也可以通过uart发送数据到DFRobot_IoT界面中。由于DFRobot_IoT在连接WiFiBee过程中已经对WiFiBee进行了配置,因此不需要Uno对它进行任何配置。
3. 编程实现
/*
*description:
*this demo shows how Uno to get the data from the remote tcp server var WiFiBee and send the data back immediately when data received by Uno.
*author: jansion
*date:2015.11.16
*version:1.0.0
*note:
*detail desciption:*/
//define a buffer name info for receiving the data for WiFiBee.
const short info_size = 256;
char info[info_size];
int readlen = 0;
void setup() {
//set Serial for communication with the WiFiBee
Serial.begin(115200);
}
void loop() {
//loop read the data wich received by WiFiBee from the DFRobot_IOT .
if ((readlen = Serial.available()) > 0){
Serial.readBytes(info, readlen);
//output the data read form WiFiBee to
Serial.print(info);
}
}
- 实验现象
本节全面的介绍WiFiBee的工作方式,当然对于初级用户,可以不用了解这些。下面是工作框图: 下面是对上图的详细说明:
- 每次WiFiBee启动后,UART默认处于串口回环模式即WiFiBee接收到的串口数据立刻通过串口转发回去。
- 在这个框图中,蓝色箭头表示的是通过串口发送AT指令的控制模型,黑色箭头表示的是通过wifi发送AT指令的控制模型.
- 红色箭头表示数据传输模型,该模型中数据通过WiFiBee转发,让arduino具有访问远程tcp 服务器或客服端能力。数据通路可以是1<-->2, 1<-->3。
- a、假设用户刚刚启动WiFiBee且接入无线路由器成功。用户想将WiFiBee接收到的数据发送到远程客服端,那么用户只需要让远程客服端连接到WiFiBee的1000端口,此时WiFiBee会将接收到的串口数据转发到远程客服端。断开连接后,接收到的串口数据通过串口发送出去。 b、假设用户刚刚启动WiFiBee且接入无线路由器成功。用户想将WiFiBee接收到的数据发送到远程服务器,那么用户只需要只用AT+TCPCLICONN指令将WiFiBee的连接到远程服务器,如果连接成功,此时WiFiBee会将接收到的串口数据转发到远程服务器。 c、假设用户刚刚启动WiFiBee且接入无线路由器成功,且此时WiFiBee同时连接了远程客服端和服务器。当用户想将串口数据发送到远程客服端或者服务器时,用户需要手动使用AT+U2W=SERVER或者AT+U2W=CLIENT指定数据流向。(注意:如果不使用AT指定的话,默认原则 是哪个谁先建立连接就转发给谁。)当任意一个连接断开时WiFiBee会自动将数据转发到未断开连接的远程客服端或者服务器。当两个连接都断开后,接收到的串口数据通过串口发送出去。
4. 当WiFiBee的1000端口与远程tcp客服端连接或者WiFiBee连接了一个远程的tcp服务器时。UART会配置为纯数据模式,此时WiFiBee会自动将接收到的串口数据转发到远程的tcp客服端或者远程的tcp服务器,
-
且WiFiBee将自动把接收到的远程tcp客服端或者远程tcp服务器的数据通过UART转发出去。
在上面的应用场景中,如果想让WiFiBee把接收到的数据串口数据马上通过UART转发出去而不是转发到远程tcp客服端或者远程tcp服务器。那么可以通过AT+U2U指令配置WiFiBee达到此目的。
此时想再次希望WiFiBee把接收到的串口数据发送到远程tcp客服端或者远程tcp服务器,那么用户必须显示地使用AT+U2W指定WiFiBee的数据到底转发到何处。
5. 当WiFiBee的1000端口与远程tcp客服端相连并且WiFiBee连接了一个远程的tcp服务器时。这时候uart的数据流流向必须用过AT+U2W指令来显式指定。当然也可以通过AT+U2U指令配置WiFiBee已达到
- 将UART接收到的数据再通过UART发送出去。
6. UART使用的AT指令和TCP使用的AT指令均来自《WiFiBee AT指令一览表》格式有点细小的差别。比如UART发送AT指令之前,必须先发+++(没有’\r’,’\n’)进入AT模式,然后发送具体的AT指令,
- 比如”AT+GPIO0=1\r\n”(必须要\r\n)以拉高WiFiBee 第0脚)。发送AT+EXITAT退出AT指令模式,进入纯数据模式(此时WiFiBee接收到的串口数据会马上通过UART转发出去)。 而TCP方式下可以直接发送具体的AT指令,比如”AT+GPIO0=1”(不用实现发送+++,也不用发送”\r\n”)。
WiFiBee既可以工作在STA模式也可以工作在AP模式。当工作在AP模式时,用户可以用wifi设备连接WiFiBee,这样就组成局域网。在AP模式下,WiFiBee的控制和数据转发功能和STA模式下是一样的。不同的是AP模式下WiFiBee的IP地址固定为:192.168.81.1。
1. STA切换到AP模式:
-
发送AT+ROLE=ROLE_AP ----\>如果配置成功则返回OK。
发送AT+REBOOT ----\>重启WiFiBee后进入AP模式。
2. AP切换到STA模式:
-
发送AT+ROLE=ROLE_STA ----\>如果配置成功则返回OK。
发送AT+REBOOT ----\>重启WiFiBee后进入STA模式。
3. 查询或设置当前AP模式下的SSID和密码:
-
发送AT+SOFTAPCONF=? ----\>返回当前WiFiBee的热点名称和密码。
AT+SOFTAPCONF=jansion1,a12345678 ----\>把AP的SSID和密码分别配置为了jansion1和a12345678。
其他的AT指令请参见《WiFiBee AT指令一览表》。
-
假设WiFiBee工作在AP模式,且WiFiBee的SSID是jansion1,密码是a12345678。打开手机wifi设置,将手机连接到WiFiBee上。等连接成功后,打开手机app,此时app界面会出现一个设备,该你设备的IP地址就是192.168.81.1,如图所示:
| 问: 看到led以各种频率闪烁,WiFiBee的启动流程是什么样子的 |
- 答: 首先,mt7681会先进入bootloader(此时以4HZ左右的频率闪烁4s)。然后mt7681启动,连接之前设置的ssid,此时以1HZ的频率闪烁。如果连接不上,芯片进入smartlink模式,芯片以5HZ左右的频率快闪,当你使用手机发送smartlink广播后,芯片连接到了路由器,此时芯片以0.25HZ的速度超慢闪烁。
| 问: 如何让芯片进入smartlink模式 |
- 答: 使用at指令,将需要连接的ssid名字设置为一个不存在的名字(例如:AT+SSID=jfasdjfasde)。然后重启,芯片3次寻找jfasdjfasde这个ssid找不到或连不上,就自动进入了smartlink模式。
| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖! |