大家好,我是毛毛,有机会参加这次开发板评测活动。目前主攻方向是嵌入式。
USB开发板包装比较精美。里面有一个LPC55S69开发板,一个USB线,以及一个小耳机。打算对其做个小改造,将手势识别功能集成到里面去。在现有的电竞USB开发板基础上,通过I2C接口外接手势识别传感模块paj7620。通过I2C接收数据,并通过USB HID仿真键盘,手势控制PPT翻页。
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
Figure 1
硬件环境准备,使用LPC55S69电竞开发板和手势控制模块(基于芯片paj7620),在IAR开发环境下,使用SDK2.10.0,如下目录所示。通过I2C读取paj7620手势信息,并将其发送给LPC55S69,LPC55S69解析后,通过USB发送到PC端。SDK里面有USB HOST模式和USBDevice模式,这里选择USB Device复合类USB鼠标和键盘代码。
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
将引脚PIN20和PIN21作为IIC引脚。将I2C读写代码封装到函数i2c_ operation.c 和i2c_operation.h中,实现IIC 初始化以及寄存器读写功能。
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
在实现上述功能后,将手势识别代码paj7620.c和paj7620.h添加到工程中。选择bank register 寄存器区域。
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg
唤醒paj7620,来读取设备状态。
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg
初始化器件:
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg
手势测试功能:
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg
当准备读设备信息时,需要初始化IIC以及paj7620函数。file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png
使用USB 键盘和鼠标复合例程代码添加手势识别程序。
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg
在USB例子中修改main函数,打开composite.c文件。使能USB_DEVICE_CONFIG_USE_TASK。调用 USB_DeviceTaskFn。
#if USB_DEVICE_CONFIG_USE_TASK
USB_DeviceTaskFn(g_UsbDeviceComposite.deviceHandle);
#endif
找到hid_mouse.c文件,屏蔽函数USB_DeviceHidMouseAction。在hid_keyboard.h文件中定义手势信息。
#define BIT(x)1<<(x)
#define GES_UPBIT(0)
#define GES_DOWNBIT(1)
#define GES_LEFTBIT(2)
#defineGES_RIGHT BIT(3)
#define GES_ FORWARDBIT(4)
#defineGES_BACKWARD BIT(5)
#defineGES_CLOCKWISE BIT(6)
#defineGES_COUNT_CLOCKWISE BIT(7)
#define GES_WAVEBIT(8)
找到hid_keyboard.c,需要修改函数USB_DeviceHidKeyboardAction如下图所示。需要实现如下功能,当手势向上检测到时,打开之前的PPT内容;当手势向下检测到时,打下下一页PPT内容,左手手势退出PPT,向前的手势时开始播放PPT。
file:///C:/Users/star.mao/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg
在hid_keyboard.c中,保存手势数据到gesture=Gesture_test()。至此,就完成了所有的测试代码步骤。