Standard SDK: [RTL8195] 透传 – 使用 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