快速入门

本教程的目的是快速教会用户如何使用MT7681-IoT手机app实现对WiFiBee基本操作

准备

SmartLink智能连接及控制

Iot_appmanager1_v2.jpg

Iot_appmanagdevice.png

点击Basic按钮进入基本操作界面

‘Basic’ 按钮的作用是为WiFiBee 启动一个基本操作的界面,在这个界面中我们主要操控 GPIO pwm,界面如下图所示:

Basic.jpg 1. 控制GPIO输入/输出

2. 控制GPIO的pwm输出

点击AT按钮进入AT指令发送界面

1. AT指令控制GPIO0输出高电平

ATmode.png

2. AT控制WiFiBee连接其他无线路由器

AT+SSID=jansion; AT+PASSWORD=12345678; AT+CONNECT.

- 此时WiFiBee就会连接上这个无线路由器上, 把手机wifi也切换到该无线路由上后,就又可以通过手机app控制WiFiBee了。 当然还有更多AT指令可用参考《WiFiBee AT指令一览表》

点击Uart按钮进入数据透传操作界面

在该界面中,您可以把数据发送到WiFiBee的串口上,WiFiBee的数据也可以发送到该界面中。比如在UART输入框中输入hello world,然后点击send按钮此时"hello world"就会立即传输到WiFiBee,WiFiBee在通过uart的Tx脚发送出去。如果此时把电脑和WiFiBee通过串口连接起来,打开串口助手就可以看到如下图所示的内容: Uart_2.jpg Uart_1.png

注意:默认波特率为115200,UART的波特率可以通过AT+BAUDRTATE=?查看。

Arduino通过WiFiBee与远程tcp客服端进行无线通讯

在这一节中我们将把WiFiBee从远程tcp客服端的数据转发给UART,或者UART把数据通过WiFiBee转发到远程tcp客服端。

1. 环境搭建

2. 配置WiFiBee

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);
  }
}

4. 实验现象

AT指令模式.png.lnk.png Uart_3.png

WiFiBee 工作方式详解

本节全面的介绍WiFiBee的工作方式,当然对于初级用户,可以不用了解这些。下面是工作框图: Work_mean.png 下面是对上图的详细说明:

  1. 每次WiFiBee启动后,UART默认处于串口回环模式即WiFiBee接收到的串口数据立刻通过串口转发回去。
  2. 在这个框图中,蓝色箭头表示的是通过串口发送AT指令的控制模型,黑色箭头表示的是通过wifi发送AT指令的控制模型.
  3. 红色箭头表示数据传输模型,该模型中数据通过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 AP模式

WiFiBee既可以工作在STA模式也可以工作在AP模式。当工作在AP模式时,用户可以用wifi设备连接WiFiBee,这样就组成局域网。在AP模式下,WiFiBee的控制和数据转发功能和STA模式下是一样的。不同的是AP模式下WiFiBee的IP地址固定为:192.168.81.1。

AP模式下的一些AT指令

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指令一览表》。

AP模式下手机APP控制WiFiBee

假设WiFiBee工作在AP模式,且WiFiBee的SSID是jansion1,密码是a12345678。打开手机wifi设置,将手机连接到WiFiBee上。等连接成功后,打开手机app,此时app界面会出现一个设备,该你设备的IP地址就是192.168.81.1,如图所示:

Ap.jpg

疑难解答

问: 看到led以各种频率闪烁,WiFiBee的启动流程是什么样子的?

答:首先,mt7681会先进入bootloader(此时以4HZ左右的频率闪烁4s)。然后mt7681启动,连接之前设置的ssid,此时以1HZ的频率闪烁。如果连接不上,芯片进入smartlink模式,芯片以5HZ左右的频率快闪,当你使用手机发送smartlink广播后,芯片连接到了路由器,此时芯片以0.25HZ的速度超慢闪烁。

问: 如何让芯片进入smartlink模式?

 答:使用at指令,将需要连接的ssid名字设置为一个不存在的名字(例如:AT+SSID=jfasdjfasde)。然后重启,芯片3次寻找jfasdjfasde这个ssid找不到或连不上,就自动进入了smartlink模式。

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!

更多