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