_SKU_TEL0107__WifiBee MT7681_无线模块 - jimaobian/DFRobotWikiCn GitHub Wiki

| WifiBee-MT7681

简介

WiFiBee-MT7681是一块基于MT7681开发的串口WiFi模块,兼容Xbee通用接口,支持Arduino Wi-Fi无线下载程序,是一块面向物联网(IOT),智能家居等无线控制领域的产品。 WiFiBee支持主流的IEEE802.11b/g/n协议标准,2.4G WiFi频段,拥有14个信道。支持WEP/WPA-PSK/WPA2-PSK/TKIP/AES多种加密协议,兼容主流路由器,拥有STA和AP两种工作模式,可自由切换,并且都支持TCP/IP通信。此外WiFiBee还支持SmartLink智能联网功能,无需繁琐的操作步骤,只要通过手机APP (Android),就可以直连无线路由器。 WiFiBee兼容Xbee接口,可直插在任意支持Xbee的设备上,让其拥有联网功能。对于Arduino UNO和Arduino Mega2560,WiFiBee还可以作为无线下载器,不需要数据线,直接通过WiFi,完成无线下载。这在调试机器人或者移动平台时就显得非常方便了。此外模块外扩了3个IO口,可以通过WiFi实现远程控制,每个IO支持软件PWM输出。可以通过串口AT指令去配置参数。

产品参数

  • 微控制器:MT7681
  • 协议标准:IEEE802.11b/g/n
  • Wi-Fi半径:180m(环境情况不同,传输的距离不同)
  • 信道数:1-14
  • 频率范围:2.4-2.4835G
  • 发射功率:15-18dbm
  • 加密方式:WEP/WPA-PSK/WPA2-PSK/TKIP/AES
  • 工作模式:STA模式/AP模式(不支持STA & AP混合模式,AP模式下只能连接一台设备)
  • 支持SmartLink智能联网功能,可以用APP控制模块连接普通无线路由器
  • TCP 1000端口:TCP<->UART 数据透传端口
  • TCP 1001端口:AT指令端口
  • UDP 3333端口:广播端口
  • 工作电压:3.3V
  • 推荐输入电压:3.3V
  • 功耗:75 mA
  • UART串口:1个
  • 波特率:9600bps、14400、19200、38400、57600、115200bps(默认)
  • 尺寸:32 * 24 mm
  • 重量:3.5g

引脚说明

| | | | ------------------------------------------------------ | | | | | | name | |

标号 名称 功能描述
VCC3.3V 电源正 只能接3.3V
IO0 通用IO0 可用过软件控制,控制方详见AT指令表和手机软件控制部分
IO1 通用IO1 可用过软件控制,控制方详见AT指令表和手机软件控制部分
IO2 通用IO2 可用过软件控制,控制方详见AT指令表和手机软件控制部分
GND GND 接地
RESET RESET 为Arduino提供复位功能,与IO0复用,中间通过电容引到RESET
WifiReset WifiReset 只复位WifiBee

WiFiBee 无线网络配置过程

WiFiBee-MT7681支持AP与STA模式两种模式,这边先介绍STA模式下的无线网络配置过程,总共有三种方式:

  1. SmartLink Android App一键接入WiFi
  2. 通过AT指令配置无线网络参数
  3. 通过Arduino UNO 代码配置无线网络参数

LED状态指示:

| ! LED状态 | 模式 | | 1秒2次 | boot模式,smartlink模式 | | 1秒1次 | 运行模式,还没连上路由器 | | 2秒1次 | 运行模式,已经连上路由器 | | 长亮 | 配置中,稍等片刻 |

SmartLink Android App一键接入WiFi

mt7681_smartlink_0.png

  • 使用SmartLink功能将模块连入wifi网络

image:mt7681_smartlink_1.png|第一步 将手机连入你想要的WiFi网络内,这边的WiFi名称是ouki image:mt7681_smartlink_2.png|第二步 打开DFRobot IoT Manager,选择SSID为ouki,输入对应的WiFi密码 image:mt7681_smartlink_3.png|第三步 点击 Start Connection

  • 等待一段时间,当led灯变为2秒闪烁一次的慢速闪烁状态后,即为已经连入了WiFi网络,新连入的设备将出现在上图设备列表中
  • 由于篇幅有限,更多APP操作请参考 (SKU: TEL0107) WiFiBee 进阶使用指南

通过AT指令配置无线网络参数

除了上述通过APP去设置网络参数外,还可以使用AT命令的方式去设置网络参数,您可以使用USB转Xbee适配器连接WiFiBee;如果您手上有我们的 DFRduino Leonardo with Xbee主板,也可以通过烧录以下代码来实现板载调试。(注:由于Uno只有一个串口,所以并不支持这种方式,但可以参考下一章节)

|


//功能描述:交换Serial和Serial1收到数据
void setup() {  // put your setup code here, to run once:
    Serial.begin(115200);
    Serial1.begin(115200);
    while(!Serial);
 }
void loop() {   // put your main code here, to run repeatedly:
    while(Serial.available())
        Serial1.write(Serial.read());
    while(Serial1.available())
        Serial.write(Serial1.read());
 }

|}

插上WiFiBee后,打开Arduino IDE 串口监视器(串口调试助手),输入“+++”,进入AT模式。

image:mt7681+++.png|第一步 选择 no line ending,波特率 115200bps, 8/n/1 ,输入“+++”进入AT模式 image:mt7681+++ok.png|数据返回 OK

image:mt7681_at+ssid.png|第二步 选择 Both NL & CR,输入AT指令 AT+SSID=你的路由器SSID(WiFi的名字) image:mt7681_at+ssidok.png|命令正确,数据返回 OK

image:mt7681_at+passowrd.png|第三步 输入AT指令 AT+PASSWORD=你的WiFi密码(WiFi的密码) image:mt7681_at+passowrdok.png|命令正确,数据返回 OK

image:AT_Config_7.png|第四步 输入AT指令 AT+CONNECT(WiFi热链接) image:AT_Config_8.png|命令正确,数据返回 OK

重启模块(按Reset,插拔电源都可以),等待一段时间后,当led灯变为2秒闪烁一次的慢速闪烁状态后,即为已经连入了WiFi网络。见上图,WiFiBee分配到的IP地址为 192.168.1.3 (由于网络环境的不同,分配的IP地址也不同) 更多AT指令请参考下方章节 《WiFiBee AT指令》

通过Arduino UNO 代码配置无线网络参数

准备

实验过程

  • 将下面的代码下载到uno中

|

const char ssid[]={
  "AT+SSID=ouki"};   // WiFi 名称
const char passwd[]={
  "AT+PASSWORD=88888888"}; // WiFi 密码

void setup()
{
  Serial.begin(115200);

  delay(100);
  while(!Serial);
  Serial.print("+++");
  delay(1000);
  Serial.println(ssid);
  delay(100);
  Serial.println(passwd);
  delay(100);
  Serial.println("AT+REBOOT");
  delay(100);
}

void loop()
{
  while(Serial.available())
  {
    Serial.write(Serial.read());
  }
}

|}

  • 将WiFiBee-MT7681插到IO扩展板上,将IO扩展板插在UNO上,调节IO扩展板开关至 "RUN"上。
  • 为UNO上电,打开串口监视器,观察LED灯变化

| **注意:**扩展板的开关是串口开关,当使用USB下载时,需要调节到”PROG“端,当使用无线下载时,需要调节到”RUN“端。 |

实验结果

串口监视器打印设备IP地址

AT指令

AT指令即Attention指令,AT指令一般应用于终端设备与PC应用之间的连接与通信。在这里,我们采用AT指令的方式配置网络参数。

使用AT指令配置模块

| ! AT 指令 | 描述 | | +++ | 进入AT模式 | | AT+SSID | AT+SSID=? 查询SSID名称 AT+SSID=SSIDName 设置SSID名称 | | AT+PASSWORD | AT+PASSWORD=? 查询当前已存储的WiFi密码 AT+PASSWORD=PASSWORD 设置WiFi密码 | | AT+CONNECT | 连接WiFi(热连接状态下) | | AT+DISCONNECT | 断开连接 |

| **注意:**除了“+++”外,其他指令都需要添加回车与换行符号,所以在上一章节中,输入"+++"时需要切换到 "no line ending",而输入其他命令时需要切换到 "both CR & LF"。 |

更多指令集,请参考AT指令表下载

串口无线透传实验

本教程实现局域网内串口到PC机的无线透�

准备

  • 硬件
    • USB转Xbee适配器,或者Leonardo with xbee 主板,(能实现USB转TTL的其他工具同样可行) x1
    • WifiBee-MT7681 x1
  • 软件

步骤及过程

  1. 将WiFiBee插到适配器上(如果插在 Leonardo上需要烧录最面那个调试代码)
  2. 下一个Putty或者类似的网络调试助手(这边以Putty举例)
  3. 配置网络参数:"WiFiBee的IP地址",端口号"1000"。(端口1000 是WiFiBee内置默认的服务器端口号,作为Client客户端时,需要另外设置远程服务器的端口号,参见AT指令表)
  4. 设置完毕,点击 "Open",打开端口

image:WiFiBee_Putty_configuration.png|配置Putty参数 image:WiFiBee_Putty_communication.png|Putty image:WiFiBee_Serial.png|串口

无线烧录实验

WiFIBee支持通过WiFi实现无线烧录功能,只需要把WiFiBee接入PC的网络中,即可实现下载烧录。当前支持Arduino UNO, Mega2560, DFRduino M0。

准备

  • 硬件
    • UNO或者Mega2560 x1(这里使用的是Mega2560,UNO同理)
    • WifBee-MT7681 x1
    • IO扩展板V7.1 x1
    • MEGA Sensor Shield V2.4
  • 软件

步骤及过程

  • 将WiFiBee模块插入UNO或MEGA2560扩展板的xbee插槽中(注意COM0口支持无线下载)

wifibee_mt7681_mega2560_connect.png

WiFiBee-MT7681 Wireless BurnTool

  • 打开下载工具,软件会自动搜索局域网内的设备,选择 "Use Default File"缓存文件夹,这里会存储您最后一次编译的Hex文件。当然也可以选择手动导入指定的Hex文件,"Manual Assign File",选择HEX文件(如果不知道如何让Arduino IDE导出HEX文件的童鞋,请点这里:Arduino IDE 导出HEX文件(选自:百度文库))

Arduino IDE

  • 打开arduino IDE,选择一个代码,点击“Verify(编译)”,编译一个代码,这里假设是blink.
  • 选择要下载的平台,UNO或者MEGA2560,或者M0,点击Update
  • 下载过程中Progress栏会出现下载百分百,下载完成显示Success,下载失败显示Fail
  • 注意:WiFiBee必须要选择115200 bps,其他波特率无法支持无线下载

wifibee_mt7681_mega2560_upload_success.png

结果

观看板子的 D13 管脚的LED灯,在以1秒一次的频率闪烁

WifiBee AP模式

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

  • AP模式下的一些AT指令

1_ STA切换到AP模式:

| ! AT指令 | 描述 | | AT+ROLE=ROLE_AP | 如果配置成功则返回OK | | AT+REBOOT | 重启WifiBee后进入AP模式 |

2_ AP切换到STA模式:

| ! AT指令 | 描述 | | AT+ROLE=ROLE_STA | 如果配置成功则返回OK | | AT+REBOOT | 重启WifiBee后进入STA模式 |

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

| ! AT指令 | 描述 | | AT+SOFTAPCONF=? | 返回当前WifiBee的热点名称和密码 | | AT+SOFTAPCONF=jansion1,a12345678 | 把AP的SSID和密码分别配置为了jansion1和a12345678。 |

  • 其他的AT指令请参见《WifiIO AT指令一览表》。
  • AP模式下手机APP控制WifiBee
  -
    假设WifiBee工作在AP模式,且WifiBee的SSID是jansion1,密码是a12345678。打开手机wifi设置,将手机连接到WifiBee上。等连接成功后,打开手机app,此时app界面会出现一个设备,该你设备的IP地址就是192.168.81.1,如图所示:

Ap.jpg

  -
    这样就可以对WifiBee进行操作控制,关于如何使用DFRobot-IoT手机app控制WifiBee,请参见[快速入门](http://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控制WifiBee
  -
    在AP模式下,arduino控制WifiBee与在STA模式下的方式是一致的。请参见<big>**[(SKU: TEL0107) WiFiBee 进阶使用指南](_SKU__TEL0107__WiFiBee_进阶使用指南 "wikilink")**</big>
  • AP模式下如何使用arduino控制WifiBee
  -
    无线烧录等其他操作和STA模式相同

串口更新MT7681固件教程

当MT7681固件需要更新的时候,用户可以自行更新,使用DF提供的最新功能。

准备

步骤及过程

  • 将WiFiBee插到适配器上(如果插在 Leonardo上需要烧录最面那个调试代码)

image:mt7681_update_tool_open.png|第一步:打开MT7681 Update Tool image:mt7681_update_tool_select_file.png|第二步:打开要升级的最新固件 image:mt7681_update_tool_uploading.png|第三步:选中串口,点击Update按钮

  • 升级过程中对应的串口下面会出现已完成百分比
  • 当百分比达到100%时,升级完成

第四步:升级完成

疑难解答

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

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

| 问: LED指示灯,上电没有闪烁,比较暗淡 |

  • 答: 请尝试按一下板载的 WiFiRST LED应当进入快速闪烁状态。倘若工作过一段时间后,依旧出现这个问题,请尝试重新插拔WiFiBee,以免出现接触不良导致供电不足的问题(WiFiBee的功耗较大)。

| 问: 上位机无法下载代码,怎么办? |

  • 答: 由于Arduino UNO 和 Mega2560下载程序时的波特率是115200,请确保保持这一波特率不变

| 问: 如何实现通过外网控制WiFIBee的GPIO引脚? |

  • 答: 局域网内通过端口1001就可以实现无线控制,网外可以尝试用路由器端口映射来达到远程控制的效果,但是当前不支持主动连接外网端口

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

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

| 问: smartlink软件无法配置连接到网络 |

  • 答: 可能是使用环境电磁环境太复杂或路由器不支持,可使用at指令设置ssid和password进行连接,如果还不行可升级最新固件

| 问: 手机开的wifi热点是否支持smartlink? |

  • 答: 支持

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

更多

DFshopping_car1.png DFRobot商城购买链接 |}

⚠️ **GitHub.com Fallback** ⚠️