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

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

2.硬件設(shè)計

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

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

4.生成代碼
1.引腳模式配置函數(shù)

2.手勢模塊底層接口IIC協(xié)議函數(shù)

起始信號
鐘線為高電平時,數(shù)據(jù)線由高變低為起始信號
/***************發(fā)送起始信號*************
*
*說明:時鐘線為高電平時,數(shù)據(jù)線由高變低為起始信號
*******************************************/
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總線,準發(fā)送或者接收數(shù)據(jù)
}
停止信號
時鐘線為高電平時,數(shù)據(jù)線由低變高為停止信號
/**************發(fā)送停止信號*****************
**
**說明:時鐘線為高電平時,數(shù)據(jù)線由低變高為停止信號
************************************************/
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);
}
發(fā)送應答信號

/****************發(fā)送應答信號************
**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);//時鐘線拉高,數(shù)據(jù)發(fā)送完成
DelayUs(2);
IIC_SCL(0);//時鐘線拉低,準備下一次數(shù)據(jù)收發(fā)
}
獲取應答信號
/***************檢測應答信號********************
**
**返回值: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;//應答
}
發(fā)送一字節(jié)數(shù)據(jù)
/***************發(fā)送一字節(jié)數(shù)據(jù)***************/
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);;//時鐘線拉低,準備下一次數(shù)據(jù)收發(fā)
}
接收一字節(jié)數(shù)據(jù)
/**********************接收1字節(jié)數(shù)據(jù)****************/
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
+關(guān)注
關(guān)注
2283文章
10986瀏覽量
361297 -
手勢識別
+關(guān)注
關(guān)注
8文章
226瀏覽量
48085 -
IIC
+關(guān)注
關(guān)注
11文章
304瀏覽量
39020
發(fā)布評論請先 登錄
相關(guān)推薦
基于PAJ7620和STM32手勢識別應用案例

PAJ7620手勢傳感器模塊調(diào)試
利用PAJ7620U2 Gesture Sensor手勢識別控制小車
PAJ7620手勢傳感器模塊調(diào)試步驟分享
基于MM32F5270開發(fā)板利用I2C驅(qū)動讀寫姿態(tài)和手勢傳感器
【RA4M2設(shè)計挑戰(zhàn)賽】基于PAJ7620U2手勢識別網(wǎng)關(guān)設(shè)計
使用Arduino和PAJ7620手勢傳感器制作手勢控制機器人
ATK-PAJ7620手勢識別模塊的用戶手冊免費下載

評論