介紹:傳輸距離遠、體積小、低功耗、低延時、重量輕,板載串口,方便與單片機等通訊。可作為飛碟、飛機、航模、DIY小車的遙控器。具有錄像、拍照、重力感覺控制、搖桿控制功能,通過wifi直連方式與安卓及蘋果手機或平板電腦連接,進行視頻觀看及命令控制。
1. 概述極控app用于與wifi602視頻模塊配套使用,可以實時觀看wifi602無線傳輸的流媒體,并且能把搖桿信號發送到wifi602視頻模塊上。Wifi602接收到的極控app遙控器信號通過串口發送到飛控板上,具體可見wifi602使用說明。以下說明,以安卓版本做為示例,蘋果版本操作類似。App版本仍在不斷更新,界面和功能都會有所變化,請視實際情況操作。
特性: l 支持android2.3~4.4版本 l 支持音頻播放 l 支持視頻播放 l 支持視頻圖像縮放功能 l 支持視頻錄像功能 l 支持視頻截圖功能
2. 應用領域l 智能家電 l 智能家居,比如智能插座、萬能遙控器等等 l 個人醫療、健康類產品 l 工業控制
3. 技術規格 名稱 |
參數
| |
3.7~5V
| 接口類型 |
UART
| 接口速率(bps) |
1120~2M
| |
54
| 啟動時間(s) |
15
| 休眠時功耗(mW) |
< 10
| 最大發送數據時功耗(mW) |
<350mW
| 接收數據時功耗(mW) |
< 200mW
| 存儲溫度(℃) |
-55 ~ +125
| 工作溫度(℃) |
-20~+70
| 尺寸(mm * mm) |
51 * 22
|
4. 模塊引腳圖
5. 引腳功能描述 Pin Number |
分組說明
|
引腳名稱
|
I/O
|
描述
| 1 |
保留
|
空
|
|
| 2 |
空
|
|
| 3 |
空
|
|
| 4 |
電源
|
DGND
|
P
|
電源負極
| 5 |
串口
|
RXD
|
I
|
串行數據輸入,接單片機的TXD
| 6 |
TXD
|
O
|
串行數據輸出。接單片機的RXD
| 7 |
保留
|
空
|
|
| 8 |
電源
|
VBAT_IN
|
P
|
電源正極,3.7~5V電壓
|
6. 引腳功能詳細說明6.1 保留位擴展功能預留端口
6.2 串口標準的TTL串口功能,默認串口參數:115200、8bit、無校驗、停止位1bit 手機遙控器app每間隔20ms發送一幀數據,幀長度為12個字節。 6.3 電源接口WIFI601模塊是3.7~5V 單電源供電
7. 硬件連接圖
與 USB串口模塊相連,USB 串口模塊的+5V,TXD,RXD,GND 接 Wifi602模塊的 VCC,RXD,TXD,GND。注意 TXD 和 RXD 的交叉:
與單片機相連,同樣注意TXD和RXD交叉相連:
8. 使用說明首先準備好wifi602視頻模塊,在設置->WLAN打開手機wifi界面。掃描wifi熱點,待出現熱點名為a.intchip時,點擊連接。 待wifi連接成功后,點擊極控app,進入啟動頁面,點擊播放。
9. 搖桿操作進入遙控界面后,出現左右兩個搖桿圖盤。 左邊搖桿:主要操作油門和四軸的自旋功能。其中上下移動控制油門大小,左右移動控制自旋方向;手指離開左搖桿后,油門保持最后的值,自旋值歸0; 右邊搖桿:主要操作前進/后退和左飛/右飛功能。其中上下移動控制四軸的前進、后退;左右移動控制四軸的左飛、右飛;手指離開右搖桿后,自動歸0。
10. 視頻錄像、截圖視頻錄像、截圖點擊后,進入視頻錄像和截圖;其中,視頻錄像存儲位置為/inichip/video目錄下,視頻截圖存儲位置為/intchip/capture目錄下。 11. 視頻傳輸模式采用RTSP流媒體傳輸方式,可以用VLC在手機和電腦端播放實時視頻,也可以采用軟芯軟研發的手機播放軟件。 l 安卓手機版本下載: 在360手機助手或者360安全市場里,搜索關鍵字“GeekRC”后點擊下載安裝。 l 蘋果手機版本下載: 在app store里,搜索關鍵字“GeekRC”后點擊下載安裝。 軟件無廣告、無病毒,可以放心使用。
無線傳輸距離:空曠地環境下,筆記本電腦可達200米范圍;手機160米范圍;無線環境比較復雜,傳輸距離受到干擾變化較大。如:周圍wifi信號干擾、生物體(人、動物等)吸收信號、建筑物干擾。 傳輸碼率:2Mbps
12. 多媒體說明12.1 視頻視頻帶寬:最大8Mbps 視頻編碼:h264 視頻碼流:CBR 視頻像素:100w/30w可選 視頻格式:720P 分辨率:1280*720 幀率:30幀每秒 12.2 音頻音頻編碼:ACC
13. 多媒體存儲模式13.1 TF卡存儲 支持市面常見TF卡,最大容量32G。
13.2 存儲模式開機前,插入TF卡。系統自動識別是否插卡、卡空間是否足夠。如果開機前沒有插卡或者卡剩余空間不足,不會進入錄像模式。 當檢測到TF卡正常后,系統自動進入錄像模式。錄像格式如下: 1、采用avi通用模式,支持所有播放器; 2、視頻模式:高清VGA(分辨率640x480,30幀每秒),支持百萬像素 3、音頻模式:ACC 4、分段保存:2分鐘一段視頻,保證視頻完整性 視頻大小:1分鐘20M,4G容量的TF卡可錄近200分鐘
14. 通信協議連接板子,手機與wifi熱點連接成功后,打開手機app。出現視頻界面后,手機每隔20ms將遙控數據發送到wifi602上。Wifi602再通過串口與單片機通信,每種控制字占用一個字節(8bits),數據說明如下: 數據編號 |
指令內容
|
功能
|
說明
| Buf0 |
幀起始碼
|
判斷一幀開始
|
固定為十六進制:0X81
| Buf1 |
校驗位
|
檢查幀數據是否正確
|
Buf2~Buf10異或結果,不包括幀起始碼和結束碼
| Buf2 |
油門
|
控制飛行器上升、下降
|
范圍0~127,初始為0。手指離開搖桿后不歸0,即保持油門值。對應左邊搖桿上下操作
| Buf3 |
左右
|
控制飛行器向左、向右
|
范圍-100~100,初始為0。對應右邊搖桿,移到最左邊為-100,移到最右邊為100。手指離開搖桿后歸0
| Buf4 |
前后
|
控制飛行器前進、后退
|
范圍-100~100,初始為0。對應右邊搖桿,移到最上面為100,最下面為-100。手指離開搖桿后歸0
| Buf5 |
自轉
|
控制飛行器原地旋轉
|
范圍-100~100,初始為0。對應左邊搖桿,移到最左邊為-100,最右邊為100。手指離開搖桿后歸0
| Buf6 |
按鍵
|
一鍵起飛、一鍵降落
|
按下一鍵起飛:與0x80異或;按下一鍵降落:與0x40異或。
| Buf7 |
左右微調
|
修正左右漂移
|
范圍-50~50,初始為0。修正左右漂移。
| Buf8 |
前后漂移
|
修正前后漂移
|
范圍-50~50,初始為0。修正前后漂移。
| Buf9 |
保留3
|
未使用
|
發送十六進制:0x00
| Buf10 |
保留4
|
未使用
|
發送十六進制:0x00
| Buf11 |
幀結束碼
|
判斷一幀結束
|
固定為十六進制:0X82
|
15. 數據幀提取代碼考慮串口接收中斷響應及時和多平臺移植,數據幀處理分成兩個部分:串口接收模塊和幀提取模塊。如果單片機資源不足可以合并在一起處理。
l 串口接收模塊代碼示例:
#define UART_BUFFER_SIZE 64
volatile uint8_t rxBuffer[UART_BUFFER_SIZE]; volatile uint8_t rxBufferRTail = 0; volatile uint32_t g_u32RecCnt = 0;
void UART0_IRQHandler(void) { volatile uint8_tu8InChar=0xFF; volatile uint32_tu32IntSts= UART0->ISR;
if(u32IntSts &UART_ISR_RDA_INT_Msk) { /* Get all the inputcharacters */ while(_UART_IS_RX_READY(UART0)) { /* Get thecharacter from UART Buffer */ u8InChar=UART0->RBR; /* Check if buffer full */ rxBuffer[rxBufferRTail] = u8InChar; rxBufferRTail++; if (rxBufferRTail>= UART_BUFFER_SIZE ) rxBufferRTail = 0; g_u32RecCnt++; } } } 串口只負責接收數據,保存到緩存里,并且記錄當前的數據個數和寫緩存索引號。 l 幀提取代碼示例: #define WIFI_RC_FRAME_LEN 11 /* 遙控器數據幀長,不包含幀結束碼 */ #define WIFI_RC_FRAME_START 0x81 /* 幀起始碼,固定為0x81*/ #define WIFI_RC_FRAME_END 0x82 /* 幀結束碼,固定為0x82*/
int read_wifi_data(unsigned char *Rxbuf,int len) { int i, k, write_idx; unsigned char recv_buf[UART_BUFFER_SIZE];
/* 數據長度不夠,返回 */ if (WIFI_RC_FRAME_LEN > g_u32RecCnt) { return 0; } //debug_info("cnt %d ", g_u32RecCnt);
/* 保存串口接收緩存 */ memcpy(recv_buf, (unsigned char *)rxBuffer, UART_BUFFER_SIZE); write_idx = rxBufferRTail; // 寫索引 /* 寫索引回減1幀數據長度 */ if (WIFI_RC_FRAME_LEN <= write_idx) { write_idx -= WIFI_RC_FRAME_LEN; } else { write_idx = WIFI_RC_FRAME_LEN - write_idx; write_idx = UART_BUFFER_SIZE - write_idx; }
/* 向后查找一個完整且有效幀*/ /* 只查找2個幀長-1, 這樣如果當前數據無效會用上一幀數據 */ for ( i = 0; i < WIFI_RC_FRAME_LEN*2-1; i++ ) { //debug_info("%x ", recv_buf[write_idx]); /* 查找到起始位后,進行校驗*/ if (WIFI_RC_FRAME_START == recv_buf[write_idx]) { unsigned char check = 0; unsigned char rc_date[WIFI_RC_FRAME_LEN]; /*數據*/ int idx = write_idx;
/* 校驗位移數據是否正確接收*/ for ( k = 0; k < WIFI_RC_FRAME_LEN; k++ ) { check ^= recv_buf[idx]; rc_date[k] = recv_buf[idx]; idx = (idx++) < UART_BUFFER_SIZE ? idx: 0; }
if ( (WIFI_RC_FRAME_START ==check) /* 多異或了第0位,所以最后結果應該是第0位*/ &&(WIFI_RC_FRAME_END ==recv_buf[idx])) /* 結束位判斷,不在有效數據內 */ { for ( k = 0; k { Rxbuf[k] = rc_date[k];
} //for ( k = 0; k { //debug_info("%3d", Rxbuf[k]); } //debug_info("\r\n");
g_u32RecCnt = 0;
return 1; } } /* 回減到有效數據元素 */ write_idx = (write_idx--) < 0 ? (UART_BUFFER_SIZE - 1) : write_idx; }
return 0; }
16. 電氣特性 名稱 |
描述
|
Min
|
Typ
|
Max
|
單位
| Vin |
Vin=3.7~5V
|
3.7
|
4
|
5
|
V
| |
Vin=4V
|
250
|
300
|
350
|
mA
|
17. 外觀尺寸天線長度、攝像頭尺寸視實際需要而定。
|