1264102_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1264102_zh-CN

1264102_zh-CN

基于BLE的手势控制PPT

1 简介

两块开发板通过ble传输控制信息。一块开发板连接paj7620,通过IIC总线提供手势信息。另一块开发板使用ble和USB HID。使用ble接收数据,使用USB HID模拟键盘输入,控制ppt

nxf56274_0-1618816281761.pngnxf56274_0-1618816281761.png

图 1

2 准备

我们需要两块开发板qn908x和手势控制装置paj7620。我们使用IAR作为开发环境,我们使用的示例是温度传感器,

温度收集器。SDK版本为2.2.3

 

3 代码

3.1 温度传感器代码

我们要实现IIC从paj7620读取手势信息并发送数据。

IIC使用的引脚是PA6和PA7

简单将IIC读写代码封装在代码中创建i2c_operation.c和 i2c_operation.h。在其中实现IIC初始化和读/写寄存器功能

nxf56274_1-1618816281828.pngnxf56274_1-1618816281828.png

图 2

nxf56274_2-1618816281867.pngnxf56274_2-1618816281867.png

图3

 

3.1.1有了这些函数之后,我们开始编写手势识别代码。首先,我们在我们的项目中添加两个空文件paj7620.c和paj7620.h。

 

选择银行登记区域

nxf56274_3-1618816281931.pngnxf56274_3-1618816281931.png

图4

 

唤醒paj7620读取设备状态

nxf56274_4-1618816281970.pngnxf56274_4-1618816281970.png

图5

 

初始化设备

nxf56274_5-1618816282039.pngnxf56274_5-1618816282039.png

图6


手势测试功能

nxf56274_6-1618816282053.pngnxf56274_6-1618816282053.png

图 7

 

3.1.2当您准备读取设备信息时,

您应该在 BleApp_Init 函数中初始化 IIC 和 paj7620

nxf56274_7-1618816282094.pngnxf56274_7-1618816282094.png

图8

原则上,我们需要为 PAJ 设备创建一个自定义服务,但我们将温度数据替换为我们的手势控制数据。如果您想创建自定义服务,请参阅此链接自定义配置文件

 

3.1.3创建一个定期发送手势数据的计时器。

在文件 temerature_sensor.c 中

定义一个定时器static tmrTimerID_t dataTimerId;

分配一个定时器,dataTimerId = TMR_AllocateTimer();

定义此定时器的回调函数

nxf56274_8-1618816282129.pngnxf56274_8-1618816282129.png

图 9

启动计时器

nxf56274_9-1618816282166.pngnxf56274_9-1618816282166.png

图 10

关闭低功耗模式。#定义 cPWR_UsePowerDownMode 0

3.2 temperature_collector代码

这里最重要的是将 USB HID 移植到我们的项目中。USB示例

我们使用的是USB键盘和鼠标。

3.2.1将例子下的OSA和USB文件夹添加到工程目录下,并按照原例子的文件结构将文件复制到相应文件夹下。

nxf56274_10-1618816282200.pngnxf56274_10-1618816282200.png

图 11

3.2.2完成后添加头文件目录

nxf56274_11-1618816282245.pngnxf56274_11-1618816282245.png

图 12

同时,在这个选项卡中,添加两个宏定义

USB_STACK_FREERTOS_HEAP_SIZE=16384

USB_STACK_FREERTOS

 

3.2.3接下来我们需要修改usb示例中的main函数。打开composite.c文件。

nxf56274_12-1618816282295.pngnxf56274_12-1618816282295.png

图 13

它调用 APP_task。所以这个函数也需要修改。

nxf56274_13-1618816282323.pngnxf56274_13-1618816282323.png

图 14

3.2.4找到 hid_mouse.c注释掉函数 USB_DeviceHidMouseAction

找到 hid_keyboard.h。定义手势信息。

macro_gesture.PNGmacro_gesture.PNG

图 15

找到 hid_keyboard.c。我们需要修改函数USB_DeviceHidKeyboardAction如下图所示。

nxf56274_15-1618816282485.pngnxf56274_15-1618816282485.png

图 16

 

其中我们还需要实现如下函数。当检测到向上手势时,将播放上一个 ppt。向下手势为下一个PPT,左手势为退出PPT,向前手势为播放PPT

nxf56274_16-1618816282625.pngnxf56274_16-1618816282625.png

图 17

它还引用了外部变量gesture_from_server。变量定义

在文件 temperature_collocation.c 中。

 

 

3.2.5之后我们进入BleApp_Statemachinehandler函数

在 temperature_colloctor.c 中。

在mApppRunning_c中,我们将调用usb_main来初始化USB HID

nxf56274_17-1618816282665.pngnxf56274_17-1618816282665.png

图 18

3.2.6在BleApp_PrintTemperature中,我们将手势数据保存到gesture_from_server

nxf56274_18-1618816282756.pngnxf56274_18-1618816282756.png

图 19

我们完成了所有步骤。

 

 

 

 

BLE软件量子
Tags (1)
No ratings
Version history
Last update:
‎01-05-2026 10:08 AM
Updated by: