Standard SDK: [RTL8195AM] 透传 - 使用 Ameba 当作 Wi-Fi 透传

准备

此教学中使用到的工具及程式码:

Ameba 透传

透传即是透明传输,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理。 使用Ameba实现AT透传,大致可分为两步实现:建立连接,发送/接收数据。
  • Ameba UART 透传 主MCU通过UART连接Ameba,使用AT 指令让Ameba连接到服务器,完成数据的上传和接受服务器推送数据。 教程中,选用PC作为通过串口工具模拟主MCU UART发送数据。
  • 开发板/模块开机测试 (注:这里的开发板/模块并不针对某一款开发板或模块,方法对所有Ameba开发板或模块有效) 通过Ameba LOG UART测试Ameba是否正常开机。 Ameba有一组LOG UART用于接收用户输入和系统信息输出,其引脚为GPIOB_0(LOG_UART_OUT)、GPIOB_1(LOG_UART_IN).
    • Ameba 开发板 如果使用开发板(一般开发板会配置USB转串口芯片,连接micro USB到LOG UART),使用一根micro USB 线连接开发板到PC。 开发板一般使用micro USB供电,具体情况,依据开发板说明。否则需要在VCC引脚供电,Ameba使用3.3V供电。
    • Ameba Wi-Fi 模块 如果使用模块(一般只会引出Ameba的PIN),这时候需要用杜邦线连接PC串口TX和RX分别到模块的GPIOB_1和GPIOB_0. 并且在VCC引脚供电,Ameba使用3.3V供电。 Ameba LOG UART默认配置为:波特率38400,数据位8,校验None,停止位1,无流控。 在PC上使用串口调试助手(推荐使用SecureCRT)打开对应串口,默认设置如下: 1 连接串口之后,输入“help”,串口打印信息如下,如未打印如下信息: 1. 检查供电是否正常 2. 请检查串口是否连接正常(TX,RX是否反接) 3. 出现乱码,检查串口设置是否正确 2
  • 升级AT固件 1. 使用image tool下载完整固件(RTL871xAF_AT_v2.2.1.bin)到开发板 2. 使用OTA升级到最新AT固件v2.2.x.(RTL871xAF_AT_v2.2.1_OTA.bin) 检查开发板AT指令版本,在串口中输入“AT”,如果响应unknown command ‘AT’,那么对应AT版本为V1,否则为V2.
    • AT V1升级 1. 连接Ameba到AP, 并确保PC和Ameba处在同一个网络下 假设AP: SSID=test, PASSWORD=12345678 连接到AP方法如下: ATW0=test ATW1=12345678 ATWC 2. 在PC 端进入OTA 升级服务器的目录DownloadServer(../SDK/ tools/DownloadServer),根据readme.txt修改并运行:start.bat(如果出现权限问题,点击右键使用管理员权限运行) 3. 在串口中端输入升级命令,等待升级完成,系统会重启 ATWO=192.168.0.1,8080(ex: PC 端的地址为:192.168.0.1,端口为8080)
    • AT V2升级 1. 设置Ameba为STA模式,连接Ameba到AP, 并确保PC和Ameba处在同一个网络下。 假设AP: SSID=test, PASSWORD=12345678 连接到AP方法如下: ATPW=1 ATPN=test,12345678 2. 在PC 端进入OTA 升级服务器的目录DownloadServer(../SDK/ tools/DownloadServer),根据readme.txt修改并运行:start.bat(如果出现权限问题,点击右键使用管理员权限运行) 3. 在串口中端输入升级命令,等待升级完成,系统会重启 ATSO=192.168.0.1,8080(ex: PC 端的地址为:192.168.0.1,端口为8080)
    • AT V2 UART连接 V2固件使用一组独立的AT UART(RX: GPIOA_0/TX: GPIOA_4)作AT command的输入和响应,使用杜邦线连接开发板与PC串口TX和RX分别到Ameba GPIOA_0和GPIOA_4。 测试固件升级成功,通过AT UART确认AT固件版本号为v2.2.x. AT指令参照:AT command 说明 3

TCP/UDP服务器配置

本教程使用TCP/UDP测试工具sokit 1.3,建立TCP/UDP服务器,通过Ameba透传数据到服务器。 4 服务器配置方法: 1. 服务器配置在局域网 服务器(TCP/UDP)和客户端需要搭建在同一网络中(要么同时搭在路由器上要么同时搭载模块上(AP mode)). 2. 服务器配置在广域网 服务器可以搭建在具有公网IP的主机上,此时需要Ameba能够接入internet,实现远程连接。

多链接指令传输

Ameba支持多路socket连接,Host MCU可以同时和多个服务器或者设备通信。为了区分多个socket链路,会在串口传输指令中附带socket的链路id。

TCP指令传输

使用sokit建立TCP服务器,端口号设定为5000。 1. 使用”ATPW”设置Ameba为STA,执行”ATPN”让Ameba连接到一个没有加密的AP(SSID:iot_tplink) 5 2. 使用”ATPC”让Ameba创建TCP客户端并且连接到TCP服务器,并保持连接 6 3. 使用”ATPK”设置自动接收数据 7 开启自动接收,Ameba会主动推送数据给HOST MCU。如果没有开启自动接收,HOST MCU需要通过“ATPR”访问Ameba的接收缓存。 4. 使用”ATPT”发送数据到服务器 8 该命令通过Ameba向服务器发送17字节的信息“Hello,TCP server.”,在服务器端,可以看到TCP链路信息和接收到的信息: 9 5. 服务器向客户端发送数据 在服务器界面选中当前TCP链路,连续两次分别发送信息“Hello, Ameba”,“This is TCP server”。HOST MCU也会同步的收到两次推送。 10 HOST 端串口打印信息如下: 11 6. 使用“ATPD”关闭指定的TCP的连接,释放socket资源 12

UDP指令传输

使用sokit建立UDP服务器,端口号设定为5000。 1. 使用”ATPW”设置Ameba为STA,执行”ATPN”让Ameba连接到一个没有加密的AP(SSID:iot_tplink) 13 2. 使用”ATPC”让Ameba创建UDP客户端,并记录服务器ip和port 14 Ameba创建UDP 之后,内部会占用一个socket通道,返回“OK”以及connection id(此connection id并不是指一个实际的链接,只是绑定到UDP socket),此id会用作发送数据的参数。 3. 使用”ATPK”设置自动接收数据 15 开启自动接收,Ameba会主动推送数据给HOST MCU。如果没有开启自动接收,HOST MCU需要通过“ATPR”访问Ameba的接收缓存。 4. 使用”ATPT”发送数据到服务器 16 该命令通过Ameba向服务器发送17字节的信息“Hello,UDP server.”,在服务器端,可以看到UDP链路信息和接收到的信息。 17 5. 服务器向客户端发送数据 选中Ameba和服务器的UDP链路(sokit会保留UDP client信息(ip,port)一段时间,需要在信息失效前,向客户端发送信息),连续两次分别发送信息“Hello, Ameba”,“This is UDP server”。HOST MCU也会同步的收到两次推送。 18 HOST 端串口打印信息如下: 19 6. 使用“ATPD”关闭指定的UDP的连接,释放socket资源 20

单链接纯数据透传(TT模式)

在纯数据透传模式下,串口输入不需要带任何协议或指令,仅支持单一连接,TCP和UDP类似,所有串口输入将会被发送到目标地址。 Ameba在接收字符后,如果在20ms内没接收到新的字符,将触发一次发送。

TCP纯数据透传

使用sokit建立TCP服务器,端口号设定为5000。 1. 使用”ATPW”设置Ameba为STA,执行”ATPN”让Ameba连接到一个没有加密的AP(SSID:iot_tplink) 1 2. 使用”ATPC”让Ameba创建TCP客户端并且连接到TCP服务器,并保持连接 2 Ameba创建TCP连接之后,会返回“OK”以及connection id (此id绑定TCP链路信息)。 3. 使用”ATPU”设置进入数据透传模式 3 成功返回’>’后进入透传模式之后,此时,任何串口输入将被发送到TCP服务器,并且串口窗口不会有任何回显。连续两个字符需要在20ms内传送,否则Ameba将分成多次传送。 通过串口发送“Hello, TCP Server”,可以在服务器端看到如下消息: 4 4. 服务器向客户端发送数据 在服务器界面选中当前TCP链路,连续两次分别发送信息“Hello, Ameba”,“This is TCP server”。 5 HOST MCU也会同步的收到两次推送。 6 5. 使用”—-”发送数据到服务器 7 连续在串口输入4个 ’-’,Ameba将退出数据透传模式,回到常规模式。此时串口中端将会回显一个‘#’符号。 此时TCP连接任然保持。

UDP纯数据透传

方法与TCP透传类似,参考前一章节。

Arduino + Ameba UDP 指令传输实例

使用Arduino UNO配置Ameba实现UDP透传,硬件连接如下: 21 使用sokit建立UDP服务器,端口号5000. 22 在Arduino IDE中打开 Rtl871xAF_Example.ino (下载: 透传范例程式码), 根据实际情况修改一下参数,编译下载程式。 23 等待约10秒,Arduino会一直向UDP服务器发送“Hello Server”,服务器端可以看到如下消息。 24
请先确认已安装QQ通讯软体