两块开发板通过ble传输控制信息。一块开发板连接paj7620,通过IIC总线提供手势信息。另一块开发板使用ble和USB HID。使用ble接收数据,使用USB HID模拟键盘输入,控制ppt
图 1
我们需要两块开发板qn908x和手势控制装置paj7620。我们使用IAR作为开发环境,我们使用的示例是温度传感器,
温度收集器。SDK版本为2.2.3
3.1 温度传感器代码
我们要实现IIC从paj7620读取手势信息并发送数据。
IIC使用的引脚是PA6和PA7
简单将IIC读写代码封装在代码中创建i2c_operation.c和 i2c_operation.h。在其中实现IIC初始化和读/写寄存器功能
图 2
图3
3.1.1有了这些函数之后,我们开始编写手势识别代码。首先,我们在我们的项目中添加两个空文件paj7620.c和paj7620.h。
选择银行登记区域
图4
唤醒paj7620读取设备状态
图5
初始化设备
图6
手势测试功能
图 7
3.1.2当您准备读取设备信息时,
您应该在 BleApp_Init 函数中初始化 IIC 和 paj7620
图8
原则上,我们需要为 PAJ 设备创建一个自定义服务,但我们将温度数据替换为我们的手势控制数据。如果您想创建自定义服务,请参阅此链接自定义配置文件
3.1.3创建一个定期发送手势数据的计时器。
在文件 temerature_sensor.c 中
定义一个定时器, static tmrTimerID_t dataTimerId;
分配一个定时器,dataTimerId = TMR_AllocateTimer();
定义此定时器的回调函数
图 9
启动计时器
图 10
关闭低功耗模式。#定义 cPWR_UsePowerDownMode 0
这里最重要的是将 USB HID 移植到我们的项目中。USB示例
我们使用的是USB键盘和鼠标。
3.2.1将例子下的OSA和USB文件夹添加到工程目录下,并按照原例子的文件结构将文件复制到相应文件夹下。
图 11
3.2.2完成后添加头文件目录
图 12
同时,在这个选项卡中,添加两个宏定义
USB_STACK_FREERTOS_HEAP_SIZE=16384
USB_STACK_FREERTOS
3.2.3接下来我们需要修改usb示例中的main函数。打开composite.c文件。
图 13
它调用 APP_task。所以这个函数也需要修改。
图 14
3.2.4找到 hid_mouse.c ,注释掉函数 USB_DeviceHidMouseAction
找到 hid_keyboard.h。定义手势信息。
图 15
找到 hid_keyboard.c。我们需要修改函数USB_DeviceHidKeyboardAction如下图所示。
图 16
其中我们还需要实现如下函数。当检测到向上手势时,将播放上一个 ppt。向下手势为下一个PPT,左手势为退出PPT,向前手势为播放PPT
图 17
它还引用了外部变量gesture_from_server。变量定义
在文件 temperature_collocation.c 中。
3.2.5之后我们进入BleApp_Statemachinehandler函数
在 temperature_colloctor.c 中。
在mApppRunning_c中,我们将调用usb_main来初始化USB HID
图 18
3.2.6在BleApp_PrintTemperature中,我们将手势数据保存到gesture_from_server
图 19
我们完成了所有步骤。