介绍:传输距离远、体积小、低功耗、低延时、重量轻,板载串口,方便与单片机等通讯。可作为飞碟、飞机、航模、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. 外观尺寸天线长度、摄像头尺寸视实际需要而定。
|