1.簡介
PAJ7620是ALIENTEK推出的一款高性能手勢識別傳感器模塊。該模塊采用原相科技(Pixart)公司的 PAJ7620U2芯片,芯片內部集成了光學數組式傳感器,以使復雜的手勢和光標模式輸出,自帶九種手勢識別,支持上、下、左、右、前、后、順時針旋轉、逆時針旋轉和揮動的手勢動作識別,以及支持物體接近檢測等功能。
PAJ7620模塊驅動時序為IIC時序,本次實驗我們通過硬件IIC來完成手勢識別功。
PAJ7620 內部自帶了 9 個手勢識別,分別是“上”、“下”、“左”、“右”、“前”、“后”、“順時針旋轉”、“逆時針旋轉”、“揮動”。 使用時傳感器的開窗口位置需朝上,如圖所示:

手在傳感器的上方,保持與傳感器的垂直距離,做出如下圖和所示的手勢,可以分別得出“上”、“下”、“左”、“右”、“順時針旋轉”、“逆時針旋轉”、“揮動”的識別結果。

2.硬件設計

3.軟件設計
1.打開STM32CubeMX軟件,配置手勢識別引腳PB6(IIC_SCL)、PB7(IIC_SDA);

2.設置引腳模式為推挽輸出模式,初始化電平為高電平

4.生成代碼
1.引腳模式配置函數

2.手勢模塊底層接口IIC協議函數

起始信號
鐘線為高電平時,數據線由高變低為起始信號
/***************發送起始信號*************
*
*說明:時鐘線為高電平時,數據線由高變低為起始信號
*******************************************/
void IIC_Start(void)
{
IIC_SDA_OUT_MODE();//輸出模式
IIC_SCL(1);
IIC_SDA_OUT(1);
DelayUs(2);
IIC_SDA_OUT(1);
DelayUs(2);
IIC_SCL(0);//鉗住IIC總線,準發送或者接收數據
}
停止信號
時鐘線為高電平時,數據線由低變高為停止信號
/**************發送停止信號*****************
**
**說明:時鐘線為高電平時,數據線由低變高為停止信號
************************************************/
void IIC_Stop(void)
{
IIC_SDA_OUT_MODE();//輸出模式
IIC_SCL(0);
IIC_SDA_OUT(1);
DelayUs(2);
IIC_SCL(1);
DelayUs(2);
IIC_SDA_OUT(1);
DelayUs(2);
}
發送應答信號

/****************發送應答信號************
**u8 ack -- 0應答,1非應答
**
******************************************/
void IIC_Send_Ack(u8 ack)
{
IIC_SDA_OUT_MODE();//輸出模式
IIC_SCL(0);
if(ack&0X01)IIC_SDA_OUT(1);//非應答
else IIC_SDA_OUT(1);//應答
DelayUs(2);
IIC_SCL(1);//時鐘線拉高,數據發送完成
DelayUs(2);
IIC_SCL(0);//時鐘線拉低,準備下一次數據收發
}
獲取應答信號
/***************檢測應答信號********************
**
**返回值:1,接收應答失敗
0,接收應答成功
************************************************/
u8 IIC_Check_ACK(void)
{
u8 i=0;
IIC_SDA_IN_MODE();//輸入模式
IIC_SDA_OUT(1);
IIC_SCL(0);
DelayUs(2);
IIC_SCL(1);
while(IIC_SDA_IN)
{
i++;
if(i>=255)return 1;//非應答
}
IIC_SCL(0);
return 0;//應答
}
發送一字節數據
/***************發送一字節數據***************/
void IIC_Send_Byte(u8 txd)
{
u8 i=0;
IIC_SDA_OUT_MODE();//輸出模式
for(i=0;i<8;i++)
{
IIC_SCL(0);
if(txd&0X80)IIC_SDA_OUT(1);
else IIC_SDA_OUT(1);
DelayUs(2);
IIC_SCL(1);
DelayUs(2);
txd<<=1;
}
IIC_SCL(0);;//時鐘線拉低,準備下一次數據收發
}
接收一字節數據
/**********************接收1字節數據****************/
u8 IIC_ReadByte(void)
{
u8 i=0;
u8 rxd=0;
IIC_SDA_IN_MODE();//輸入模式
for(i=0;i<8;i++)
{
IIC_SCL(0);
DelayUs(2);
IIC_SCL(1);
rxd<<=1;
if(IIC_SDA_IN)rxd|=0x01;
DelayUs(2);
}
IIC_SCL(1);
return rxd;
}


-
STM32
+關注
關注
2289文章
11011瀏覽量
362190 -
手勢識別
+關注
關注
8文章
226瀏覽量
48149 -
IIC
+關注
關注
11文章
306瀏覽量
39129
發布評論請先 登錄
利用PAJ7620U2 Gesture Sensor手勢識別控制小車
基于MM32F5270開發板利用I2C驅動讀寫姿態和手勢傳感器
ATK-PAJ7620手勢識別模塊的用戶手冊免費下載

評論