BLE - V7RC 視頻串流
材料準備
- AmebaPro2 [ AMB82 MINI ] x 1
- Android / iOS 手機 x1
- L9110S 伺服馬達控制器 x1
- TT 馬達 x2
範例說明
介紹
在此範例中,我們將使用 Ameba Pro2 作為 BLE 外圍設備和伺服馬達控制器來與 V7RC 移動應用程序進行通信。視頻從板載鏡頭傳感器 (JXF37) 串流傳輸到 V7RC 行動應用程式。 V7RC是一款遙控器APP,提供兩種控制UI:第一種是2通道遙控的遙控車,另一種則是4通道遙控的坦克和推土機。
流程
1. 設置 RTSP 串流
打開範例 “Files” -> “Examples” -> “AmebaBLE” -> “BLEV7RC_CAR_VIDEO”:
由於視頻接收端是移動設備,因此在標記的代碼片段中,我們不使用默認的視頻設置,而是將視頻分辨率設置為VIDEO_D1(720×480)以限制視頻接收延遲。
在標記的代碼片段中,在“ssid”中填寫您的 WiFi 網絡 SSID,在“pass”中填寫網絡密碼。 由於視頻接收端是手機,我們建議使用5G網絡,因為它具有更低的延遲、更高的傳輸量和更大的頻寬,以提供更好的視頻傳輸品質。
編譯代碼並將其上傳到Ameba。 按下重置按鈕後,等待開發板連接到 Wi-Fi 網絡。 開發板的 IP 地址和網絡端口號將顯示在Serial Monitor中。
您可以從下面提供的連結下載V7RC APP。
• Android Users: https://play.google.com/store/apps/details?id=com.v7idea.v7rcliteandroidsdkversion&hl=en_US
• iPhone Users: https://apps.apple.com/nz/app/v7rc/id1390983964
APP安裝完成後,請確保您的手機與Ameba Pro2開發板連接到同一網絡進行串流。 打開V7RC APP,選擇“Control Centre”:
在NETWORK部分選擇“WIFI”,在CAMERA部分選擇“RTSP”。 由於使用 RTSP 作為串流協議,因此請在 CAMERA 部分下方的文本框中鍵入“rtsp://{IPaddress}:{port}”作為 V7RC 中的網絡 URL,將 {IPaddress} 替換為 Ameba Pro2 的 IP 地址、{port} 以及Serial Monitor中顯示的RTSP 端口。 默認 RTSP 端口號為 554。如果同時有兩個 RTSP 串流,則第二個端口號默認為 555。最後,單擊“Save”按鈕並返回主頁:
返回V7RC主頁,您可以在APP頂部查看Wi-Fi連接狀態。 單擊video按鈕(橙色)可實時監控視頻串流。
鏡頭的視頻串流將顯示在 V7RC APP 中。 同時,在您的Serial Monitor中,將出現消息“rtp started (UDP)”:
2. 建立 BLE 連線
打開 V7RC APP,選擇“Control Centre”:
在NETWORK部分下,選擇“BLE”:
單擊DEVICE,然後選擇AMEBA_BLE_DEV,然後單擊“LINK”按鈕連接到您的Ameba開發板:
打開Arduino serial monitor,您應該看到Ameba與手機成功連接的資訊:
返回V7RC主頁,您可以移動下圖所示的兩個控制器按鈕來接收數據。 數據接收成功,表明BLE連接已建立:
3. 設置伺服馬達
BLE 連接建立後,我們將使用兩組伺服馬達來控制小車的移動。 兩個伺服馬達將首先使用預定義的 MotoA_1A、MotoA_1B、MotoA_1B 和 MotoA_1B 引腳連接到 L9110S 控制器。
– 1A 引腳連接到 GPIO 引腳,用於控制馬達方向。
– 1B 引腳連接到 PWM 引腳,用於控制馬達速度。
#define MotoA_1A 16 // Control MotorA moving Forward(HIGH)/Backward(LOW)
#define MotoA_1B 7 // Control MotorA’s from speed 0~255, or stop (LOW)
#define MotoB_1A 17 // Control MotorB moving Forward(HIGH)/Backward(LOW)
#define MotoB_1B 8 // Control MotorB’s speed from 0~255, or stop (LOW)
在本例中,我們將使用 AMB82 MINI 作為示範。 詳細的連接引腳圖可以在下面找到。 連接建立後,用戶可以通過 V7RC App BLE 遠程控制伺服馬達。
程式碼說明
1. ParseCMDString(String cmd) 是一個自定義函數,它將字符串“cmd”作為輸入並對其進行處理。 目前,V7RC App 有 6 個可用命令,分別是:“SS2”、“SS4”、“SRT”、“SR2”和“SRV”。
2. 以下設置已經通過測試,以獲得更好的 V7RC RTSP 串流品質:
VideoSetting config(VIDEO_HD, CAM_FPS, VIDEO_H264, 0); // 1280x720
VideoSetting config(VIDEO_D1, CAM_FPS, VIDEO_H264, 0); // 720x480