简介
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
引脚说明
标号 | 名称 | 功能描述 |
---|---|---|
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模式下的无线网络配置过程,总共有三种方式:
- SmartLink Android App一键接入WiFi
- 通过AT指令配置无线网络参数
- 通过Arduino UNO 代码配置无线网络参数
LED状态指示:
LED状态 | 模式 |
---|---|
1秒2次 | boot模式,smartlink模式 |
1秒1次 | 运行模式,还没连上路由器 |
2秒1次 | 运行模式,已经连上路由器 |
长亮 | 配置中,稍等片刻 |
SmartLink Android App一键接入WiFi
- android手机安装 DFRobot IoT Manager
-
使用SmartLink功能将模块连入wifi网络
- 将手机连入你想要的WiFi网络内,这边的WiFi名称是ouki
- 打开DFRobot IoT Manager,选择SSID为ouki,输入对应的WiFi密码
- 点击 Start Connection
-
等待一段时间,当led灯变为2秒闪烁一次的慢速闪烁状态后,即为已经连入了WiFi网络,新连入的设备将出现在上图设备列表中
-
由于篇幅有限,更多APP操作请参考 进阶使用指南
通过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模式。
- 选择 no line ending,波特率 115200bps, 8/n/1 ,输入“+++”进入AT模式
- 数据返回 OK
- 选择 Both NL & CR,输入AT指令 AT+SSID=你的路由器SSID(WiFi的名字)
- 命令正确,数据返回 OK
- 输入AT指令 AT+PASSWORD=你的WiFi密码(WiFi的密码)
- 命令正确,数据返回 OK
- 输入AT指令 AT+CONNECT(WiFi热链接)
- 命令正确,数据返回 OK
重启模块(按Reset,插拔电源都可以),等待一段时间后,当led灯变为2秒闪烁一次的慢速闪烁状态后,即为已经连入了WiFi网络。见上图,WiFiBee分配到的IP地址为 192.168.1.3 (由于网络环境的不同,分配的IP地址也不同)
更多AT指令请参考下方章节 《WiFiBee AT指令》
通过Arduino UNO 代码配置无线网络参数
准备
- 硬件
- Arduino Uno x1
- IO传感器扩展板 x1
- WifiBee-MT7681 x1
- 软件
- Arduino IDE 点击下载 Arduino IDE
实验过程
- 将下面的代码下载到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“端。
实验结果
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 |
断开连接 |
**注意:**除了“+++”外,其他指令都需要添加回车
更多指令集,请参考AT指令表下载
串口无线透传实验
本教程实现局域网内串口到PC机的无线透传
准备
- 硬件
- USB转Xbee适配器,或者Leonardo with xbee 主板,(能实现USB转TTL的其他工具同样可行) x1
- WifiBee-MT7681 x1
- 软件
- Arduino IDE 点击下载Arduino IDE
步骤及过程
- 将WiFiBee插到适配器上(如果插在 Leonardo上需要烧录最面那个调试代码)
- 下一个Putty或者类似的网络调试助手(这边以Putty举例)
- 配置网络参数:"WiFiBee的IP地址",端口号"1000"。(端口1000 是WiFiBee内置默认的服务器端口号,作为Client客户端时,需要另外设置远程服务器的端口号,参见AT指令表)
- 设置完毕,点击 "Open",打开端口
- 配置Putty参数
- Putty
- 串口
无线烧录实验
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
- 软件
- Arduino IDE 点击下载Arduino IDE
步骤及过程
- 将WiFiBee模块插入UNO或MEGA2560扩展板的xbee插槽中(注意COM0口支持无线下载)
- 下载无线烧录软件WiFiBee-MT7681 Wireless BurnTool(Windows)
- 打开下载工具,软件会自动搜索局域网内的设备,选择 "Use Default File"缓存文件夹,这里会存储您最后一次编译的Hex文件。当然也可以选择手动导入指定的Hex文件,"Manual Assign File",选择HEX文件(如果不知道如何让Arduino IDE导出HEX文件的童鞋,请点这里:Arduino IDE 导出HEX文件(选自:百度文库))
- 打开arduino IDE,选择一个代码,点击“Verify(编译)”,编译一个代码,这里假设是blink.
- 选择要下载的平台,UNO或者MEGA2560,或者M0,点击Update
- 下载过程中Progress栏会出现下载百分百,下载完成显示Success,下载失败显示Fail
- 注意:WiFiBee必须要选择115200 bps,其他波特率无法支持无线下载
结果
观看板子的 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,如图所示:
-
这样就可以对WifiBee进行操作控制,关于如何使用DFRobot-IoT手机app控制WifiBee,请参见快速入门。
-
AP模式下如何使用arduino控制WifiBee
-
在AP模式下,arduino控制WifiBee与在STA模式下的方式是一致的。请参见**(SKU: TEL0107) WiFiBee 进阶使用指南**
-
AP模式下如何使用arduino控制WifiBee
-
无线烧录等其他操作和STA模式相同
串口更新MT7681固件教程
当MT7681固件需要更新的时候,用户可以自行更新,使用DF提供的最新功能。
准备
- 硬件
- Leonardo x1
- WifiBee x1
- Micro USB线 x1
- 软件
- Arduino IDE 点击下载Arduino IDE
步骤及过程
- 将WiFiBee插到适配器上(如果插在 Leonardo上需要烧录最面那个调试代码)
- 打开MT7681 Update Tool
- 打开要升级的最新固件
- 选中串口,点击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?
- 答: 支持
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!