| 产品名称(300px)

简介

- WiFiIO是WifiBee-MT7681的底板,用于引出该模块的IO。该模块是一款面向物联网,智能家居等无线控制领域的产品。WiFiIO具有3个gpio口,3个软件pwm和一个uart口,用户可以使用这些外部资源轻松地实现无线控制灯的亮灭,低速电机的旋转,串口输出等。当然WiFiIO既可以工作在STA模式下,也可以工作在AP模式下(默认为STA模式),这两种模式下都具有TCP/IP通信能力。我们为WifiIO提供了多种控制方案,其中包括android app,网络AT指令、uart串口AT指令。用户只要将手机和WifiIO连接起来就可以通过app随心所欲的控制WiFiIO的所有资源了。

产品参数

引脚说明

name

快速入门

-

  -
    本教程的目的是快速教会用户如何使用MT7681-IoT手机app实现对WifiIO基本操作,当然要想完全使用WifiIO的功能还需要补充后面章节的知识。

准备

智能连接及控制

-

  -
    用micro USB 线给WifiIO通电,此时WifiIO指示灯会不停闪烁,然后将安卓手机连接至wifi路由,打开MT7681-IoT安卓手机app,界面如图所示:

Iot_appmanager1_v2.jpg

-

  -
    在ssid下拉框中选择您期望将WifiIO连接至的ssid,并在Password输入框中输入正确的wifi密码,点击Start Connection按钮,这样WifiIO会进入智能连接状态。
    如果WifiIO连接到了指定的无线路由器,那么此时MT7681-IOT软件界面会显示该WifiIO的ip地址信息以及一些可用操作按钮,这您就可以对WifiIO进行操作。如图所示:

Iot_appmanagdevice.png 一、点击Basic按钮进入基本操作界面

-

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

Basic.jpg 1、控制gpio输入/输出

- 在这个界面可以控制3个gpio输入/输出高低电平,譬如点击GPIO0对应的High按钮这样WifiIO对应的gpio0就会被设置为高电平,同时app上的该按钮编程了Low按钮,当用户点击一下gpio0对应的Low按钮时,gpio0输出低电平。 用户如果想配置gpio0为输入模式,那么点击gpio0对应的input按钮即可,并且WifiIO的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按钮即可。其他同理。

二、点击At按钮AT指令发送界面 1、AT指令控制gpio0输出高电平 ATmode.png

- 当进入该界面时app会打印出connect server successful,表示用户可以对WifiIO发送AT指令了。在AT Cmd输入框中输入AT+GPIO0=1,然后点击send按钮,此时WifiIO会返回OK,表示gpio0已经配置为输出模式且输出高电平。

2、AT控制WifiIO连接其他无线路由器

- 比如用户想让WifiIO连接到SSID为jansion,password为12345678的无线路由器上,用户只需要一次发送以下指令即可: - AT+SSID=jansion; AT+PASSWORD=12345678; AT+CONNECT. 此时WifiIO就会连接上这个无线路由器上, 把手机wifi也切换到该无线路由上后,就又可以通过手机app控制WifiIO了。 当然还有更多AT指令可用《WifiIO AT指令一览表》下载地址(位于Instruction目录)

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

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

Uart_2.jpg Uart_1.png

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

Arduino控制WifiIO

- 在上一章中简单介绍了如何通过手机app快速控制WifiIO的gpio,pwm,数据透传功能。那么在这一章中将详细介绍如何使用Uno控制WifiIO的gpio等基础资源、Uno如何通过WifiIO获取远程网络数据。

用Uno控制WifiIO的gpio等基础资源

1、Uno与WifiIO接线

-

  -
    把Uno的Serial的Rx与WifiIO的Tx相连接,把Uno的Serial的Tx与WifiIO的Rx相连接,把Uno的GND和WifiIO的GND相连接。值得注意的时,应该在arduino IDE中把Uno的串口波特率设置为115200,这样Uno的波特率就和WifiIO的一致了。

如果不知道当前WifiIO的波特率可以通过DFRobot_IoT手机app的AT控制界面发送AT+BAUDRATE=?就可以查询得到。

2、配置wifiIO

-

  -
    Uno控制WifiIO的GPIO口的本质是Uno通过Uart发送AT指令给WifiIO,WifiIO根据不同的AT指令做出不同的反应。比如控制WifiIO的gpio0输出低电平,那么您需要Uno通过串口发送如下指令:

第一步:发送+++使WifiIO进入串口AT指令模式。 第二步:周期性的发送AT指令拉高和拉低D0口即可,而用到的AT指令就是AT+GPIO0=1(拉高)和AT+GPIO0=0(拉低),AT指令说明请参考《WifiIO AT指令一览表》。 3、编程实现

/*
*description:
*This demo shows how to control the WifiIO gpio0 blink through arduino such as Uno,Bluno and so on.
*author: jansion
*date:2015.11.16
*version:1.0.0
*note:
*detail desciption:
*when the program is running, the D0 of WifiIO will last high state for 2s and low state for 2s.
*/

//define a buffer name info for receiving the data for WifiIO. const short info_size = 256; char info[info_size];

void setup() {
 //set Serial for communication with the WifiIO
 Serial.begin(115200);
 delay(300);
 //send the AT command +++ to WifiIO for force the WifiIO into AT command mode
 Serial.print("+++");
 //delay 1s for WifiIO dealing
 delay(1000);
}

void loop() {
     //pull up the pin of WifiIO D0 to high.
     Serial.println("AT+GPIO0=1");
     //last high state for 2s
     delay(2000);
     //draw down the pin of WifiIO D0 to low.
     Serial.println("AT+GPIO0=0");
     //last low state for 2s
     delay(2000);
}

4、实验现象

-

  -
    把程序download到Uno中运行,这样可以看到WifiIO的gpio0每隔2S亮灭一次。

5、扩展

-

  -
    如果想控制GPIO0输出50Hz、占空比40%的话,可以发送AT+PWM0=F50D40即可。当然WifiIO有很多AT指令可用,具体参见《WifiIO AT指令一览表》

用Uno通过WifiIO与远程tcp客服端进行无线传输

-

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

1、环境搭建

-

  -
    先进入DFRobot_IoT的Uart数据传输界面(如果不知道如何进入该界面可以参考**快速入门**中的相关描述),并把WifiIO与Uno串口连接好即可。

2、配置WifiIO

-

  -
    我们需要达到的配置效果是:Uno可以通过uart从WifiIO获取到DFRobot_IoT发送过来的数据;Uno也可以通过uart发送数据到DFRobot_IoT界面中。由于DFRobot_IoT在连接WifiIO过程中已经对WifiIO进行了配置,因此不需要Uno对它进行任何配置。

3、编程实现

/*
*description:
*this demo shows how Uno to get the data from the remote tcp server var WifiIO 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 WifiIO.
const short info_size = 256;
char info[info_size];
int  readlen = 0;

void setup() {
  //set Serial for communication with the WifiIO
  Serial.begin(115200);
}

void loop() {
   //loop read the data wich received by WifiIO from the DFRobot_IOT .
  if ((readlen = Serial.available()) > 0){
      Serial.readBytes(info, readlen);
      //output the data read form WifiIO to
      Serial.print(info);
  }
}

4、实验现象 AT指令模式.png.lnk.png Uart_3.png

WifiIO 工作方式详解

-

  -
    本节全面的介绍WifiIO的工作方式,当然对于初级用户,可以不用了解这些。下面是工作框图:

Work_mean.png 下面是对上图的详细说明: 1、每次WifiIO启动后,UART默认处于串口回环模式即WifiIO接收到的串口数据立刻通过串口转发回去。 2、在这个框图中,蓝色箭头表示的是通过串口发送AT指令的控制模型,黑色箭头表示的是通过wifi发送AT指令的控制模型. 3、红色箭头表示数据传输模型,该模型中数据通过WifiIO转发,让arduino具有访问远程tcp 服务器或客服端能力。数据通路可以是1<-->2, 1<-->3。

- a、假设用户刚刚启动WifiIO且接入无线路由器成功。用户想将wifiIO接收到的数据发送到远程客服端,那么用户只需要让远程客服端连接到WifiIO的1000端口,此时WifiIO会将接收到的串口数据转发到远程客服端。断开连接后,接收到的串口数据通过串口发送出去。 b、假设用户刚刚启动WifiIO且接入无线路由器成功。用户想将wifiIO接收到的数据发送到远程服务器,那么用户只需要只用AT+TCPCLICONN指令将WifiIO的连接到远程服务器,如果连接成功,此时WifiIO会将接收到的串口数据转发到远程服务器。 c、假设用户刚刚启动WifiIO且接入无线路由器成功,且此时WifiIO同时连接了远程客服端和服务器。当用户想将串口数据发送到远程客服端或者服务器时,用户需要手动使用AT+U2W=SERVER或者AT+U2W=CLIENT指定数据流向。(注意:如果不使用AT指定的话,默认原则 是哪个谁先建立连接就转发给谁。)当任意一个连接断开时WifiIO会自动将数据转发到未断开连接的远程客服端或者服务器。当两个连接都断开后,接收到的串口数据通过串口发送出去。

4、当WifiIO的1000端口与远程tcp客服端连接或者WifiIO连接了一个远程的tcp服务器时。UART会配置为纯数据模式,此时WifiIO会自动将接收到的串口数据转发到远程的tcp客服端或者远程的tcp服务器,

- 且WifiIO将自动把接收到的远程tcp客服端或者远程tcp服务器的数据通过UART转发出去。

在上面的应用场景中,如果想让WifiIO把接收到的数据串口数据马上通过UART转发出去而不是转发到远程tcp客服端或者远程tcp服务器。那么可以通过AT+U2U指令配置WifiIO达到此目的。

此时想再次希望WifiIO把接收到的串口数据发送到远程tcp客服端或者远程tcp服务器,那么用户必须显示地使用AT+U2W指定WifiIO的数据到底转发到何处。

5、当WifiIO的1000端口与远程tcp客服端相连并且WifiIO连接了一个远程的tcp服务器时。这时候uart的数据流流向必须用过AT+U2W指令来显式指定。当然也可以通过AT+U2U指令配置WifiIO已达到

- 将UART接收到的数据再通过UART发送出去。

6、UART使用的AT指令和TCP使用的AT指令均来自《WifiIO AT指令一览表》格式有点细小的差别。比如UART发送AT指令之前,必须先发+++(没有’\r’,’\n’)进入AT模式,然后发送具体的AT指令,

- 比如”AT+GPIO0=1\r\n”(必须要\r\n)以拉高WifiIO 第0脚)。发送AT+EXITAT退出AT指令模式,进入纯数据模式(此时WifiIO接收到的串口数据会马上通过UART转发出去)。 而TCP方式下可以直接发送具体的AT指令,比如”AT+GPIO0=1”(不用实现发送+++,也不用发送”\r\n”)。

WifiIO AP模式

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

-

  -
    发送AT+ROLE=ROLE_AP ----\>如果配置成功则返回OK。
    发送AT+REBOOT ----\>重启WifiIO后进入AP模式。

2、AP切换到STA模式:

-

  -
    发送AT+ROLE=ROLE_STA ----\>如果配置成功则返回OK。
    发送AT+REBOOT ----\>重启WifiIO后进入STA模式。

3、查询或设置当前AP模式下的SSID和密码:

-

  -
    发送AT+SOFTAPCONF=? ----\>返回当前WifiIO的热点名称和密码。
    AT+SOFTAPCONF=jansion1,a12345678 ----\>把AP的SSID和密码分别配置为了jansion1和a12345678。


其他的AT指令请参见《WifiIO AT指令一览表》。

二、AP模式下手机APP控制WifiIO

-

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

Ap.jpg

-

  -
    这样就可以对WifiIO进行操作控制,关于如何使用DFRobot-IoT手机app控制WifiIO,请参见[快速入门](https://wiki.dfrobot.com.cn/index.php?title=_SKU:TEL0103_WifiIO-MT7681%E6%A8%A1%E5%9D%97#.E5.BF.AB.E9.80.9F.E5.85.A5.E9.97.A8)。

三、AP模式下如何使用arduino控制WifiIO

-

  -
    在AP模式下,arduino控制WifiIO与在STA模式下的方式是一致的。请参见[Arduino控制WifiIO](https://wiki.dfrobot.com.cn/index.php?title=_SKU:TEL0103_WifiIO-MT7681%E6%A8%A1%E5%9D%97#Arduino.E6.8E.A7.E5.88.B6WifiIO)

WifiIO固件升级

- 此升级软件只能对APP进行升级,工具包中有详细的升级说明。下载地址

疑难解答

|}

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

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

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

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

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

更多

shopping_car.png [Link DFRobot商城购买链接] |}