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通訊軟體