传感器介绍

PAJ7620传感器是原相科技(Pixart)的一款内部集成光学阵列式传感器,以使复杂的手势和光标模式输出,内部集成了九种手势的识别:上、下、左、右、向前、向后、顺时针、逆时针以及挥动的手势动作识别、模块以i2c通信,传感器功能很强大,更详细模块说明的可参考数据手册。手册过大无法上传附件,需要可私信我,我做了pdf目录标签,方便定位查看。
              手势传感器可以用来做大量丰富的应用开发,我在网上找到这样的应用场景图片,如下:
 

还有有些oppo手机的手势隔空操作,可以翻转桌面和图片等操作,估计也是手势传感器来实现的。

 

驱动思路和原理

paj7620的驱动步骤在手册的programing sequence and function application里有详细的步骤说明,我在这里就总结一下注意事项。传感器的读时序中间有stop信号,因此在封装读函数需要调用两次i2c_transfer,,在下面的代码会看到。

<ignore_js_op>

设备树编写:

讲完传感器的介绍后,我们首先开始在设备树文件描述手势传感器,手势传感器是i2c协议通信的,我选择roc-rk3308的i2c1组进行通信,因此可以如下描述即可。

&i2c1 {clock-frequency = <400000>;status = "okay";paj7620: paj7620@73 {compatible = "pxi,paj7620";reg = <0x73>;};
};

  

从设备的地址可在数据手册上找到,它是7bit的地址0x73。
设备驱动编写:

这里我采用轮徇的方式去获取传感器的手势动作状态,并且将手势传感器实现成一个输入设备,因此可以用一个结构体这样描述它

struct gesture_sensor{struct i2c_client *client;                     //记录i2c的clientstruct delayed_work poll_work;     //工作队列struct input_dev *inputdev;             //输入设备
};

  

根据传感器的时序进行封装paj7620的i2c读写函数

//paj7620写寄存器
static int paj_write_reg(struct i2c_client *client ,unsigned char addr,unsigned char data)
{unsigned char buf[2]={addr,data};return  i2c_master_send(client,buf,2);
}
//paj7620读寄存器
//paj7620的读中间是p(停止)信号,因此要将read操作分成两次transfer
static unsigned char  paj_read_reg(struct i2c_client *client ,unsigned char addr)
{int ret;struct i2c_msg msg[2];unsigned char data;msg[0].addr=client->addr;msg[0].flags =0;//写msg[0].len=1;msg[0].buf=&addr;ret=i2c_transfer(client->adapter,msg,1);if(ret<0){printk("i2c_transfer read error %d\n",ret);return ret;}msg[1].addr = client->addr;msg[1].flags |= I2C_M_RD;//读msg[1].len = 1;msg[1].buf = &data;ret = i2c_transfer(client->adapter,&msg[1], 1);if(ret < 0){printk("i2c_transfer read error %d\n",ret);return ret;}return data;
}

  

在工作队列中将数据获取,并且上报给用户层。代码太长,此处将不粘贴,详细的代码可参考附件或私信我。

功能测试:

在这里,我做了一个应用层的demo来获取手势数据,在串口终端里运行gesturedemo,我们进行手势动作识别测试,效果如下,可以获取9种识别的手势:

# gesturedemo /dev/input/event1
gesture:down
gesture:up
gesture:left
gesture:right
gesture:forward
gesture:backward
gesture:clockwise
gesture:count clockwise
gesture:wave

  

进入Firefly开发者社区可下载Demo

转载于:https://www.cnblogs.com/TeeFirefly/p/10375077.html

ROC-RK3308-CC开发实例总结--PAJ7620手势传感器模块调试相关推荐

  1. PAJ7620手势传感器快速应用- -基于涂鸦CBU模组开发板

    PAJ7620手势传感器快速驱动- -基于涂鸦CBU模组开发板 正在,或是想要开发物联网小产品的你是否会觉得一些常用的控制需要繁琐地掏出手机会让你的产品体验不佳?添加实体按键又显得太 low ?不妨来 ...

  2. 4.0 树莓派做下位机播放视频、控制电机舵机、超声波检测、paj7620手势传感器控制,树莓派串口通信等程序分析

    文章目录 一.前言 二.Python实现封装打包自己写的代码 参考链接 我的参考 _init_.py setup.py 三. 树莓派的硬件解码播放器--Omxplayer 四.树莓派控制舵机,驱动L2 ...

  3. Ardunio开发实例-BMM150数字地磁传感器

    BMM150数字地磁传感器 BMM150是一款低功耗,低噪声的3轴数字地磁传感器,可用于罗盘应用. 占地面积为1.56 x 1.56mm²和高度为0.60 mm的12引脚晶圆级芯片级封装(WLCSP) ...

  4. Ardunio开发实例-红外避障传感器

    红外避障传感器 IR障碍物传感器根据红外反射原理来检测障碍物,当没有物体时,红外接收器不接受信号:当前方有物体阻挡并反射红外光时,红外接收器将接收信号.本次使用的红外避障传感器如下: 1.硬件准备 A ...

  5. ps2摇杆android图形编程,ROC-RK3308-CC开发实例总结--PS2 Joystick摇杆模块

    本帖最后由 Demon 于 2019-4-8 17:58 编辑 最近本人又调试了一款比较有趣的传感器模块--PS2  Joystick摇杆模块.下面将本人的测试方法分享于大家,下文仅个人见解,若有不足 ...

  6. Ardunio开发实例-红外寻迹传感器

    红外寻迹传感器 红外跟踪传感器本质上是一个红外LED和一个红外检测器. 轨迹传感器的红外发射管不断发出红外光. 由于黑色吸收光,因此当IR发射管在黑色表面上发光时,反射光更少,因此接收管接收到的IR射 ...

  7. ESP8266-Arduino编程实例-L9110直流电机风扇传感器模块

    L9110直流电机风扇传感器模块 1.L9110介绍 L9110是一款ASIC器件控制和驱动电机设计,将两通道推挽功放分立电路集成到单片IC中,降低外围器件成本,提高整体可靠性.本芯片有两路TTL/C ...

  8. ROC-RK3308-CC开发实例总结--MPU6050运动处理传感器模块调试

    传感器介绍        MPU60X0是invenSence公司的一款全球首例9轴运动处理传感器.它内部集成了3轴MEMS陀螺仪和3轴MEMS加速度计,同时可以通过I2C接口(注意这个接口是XDA. ...

  9. Arduino测试PAJ7620U2手势传感器

    目录 1.安装库 2.接线 3.下载代码测试 在淘宝买了一块PAJ7620手势传感器模块,现在就来用arduino测试一下玩玩看. 图片如下: 1.安装库 2.接线 一共四根线 VCC GND SCL ...

最新文章

  1. 关于项目数据库设计--投票系统
  2. android 拍照空指针,空指针异常时嵌入照片中的Android
  3. 摘抄 web 经 关于 自适应网页设计(Responsive Web Design)
  4. 多元化思维其二:“马太效应”之道
  5. html相对定位向上偏移,使用CSS的相对定位和偏移量
  6. [react] childContextTypes是什么?它有什么用?
  7. linux下的静态库与动态库
  8. 【elasticsearch系列】双击elasticsearch.bat闪退,日志排查报错信息
  9. android9开发者模式 s8,Android 9.0或加速Galaxy S8/9电池消耗 谨慎更新
  10. HDOJ 1564 Play a game【博弈论】
  11. 用python开发windows程序 [转]
  12. 数据分类分级指南范围
  13. PyCharm怎么来更新pip
  14. 如何降低IE安全级别
  15. 计算机硬件故障有哪些现象,计算机常见硬件故障症状现象分析及解决办法
  16. openxml html to word,使用openxml提取word中的文本和图片并转为Html
  17. C语言-流程控制-输出华氏-摄氏温度转换表
  18. iccid的PHP规则,中国联通(U)SIM卡ICCID命名规则
  19. Matlab论文插图绘制模板第78期—进阶词云图
  20. 【常用的linux、doctor、maven、gradle、adb、window命令总结】

热门文章

  1. c语言试题生成系统,C语言在线考试系统——试题生成模块.doc
  2. idea 配置快捷方式(syso)
  3. 电脑系统一键重装自定义还原的详细教程
  4. 【杂志投稿】博主的无线电杂志分享之旅
  5. 2016.9.6—— cwb
  6. 易创索讯:网站优化的排名如何稳定下来?
  7. 关于nodejs域名重定向问题
  8. 【水汐のC#】设计一个产品类Product,包括产品编号(id),产品名称(name),产品单价(price),产品库存量(amount)。
  9. 高德地图自定义Marker
  10. 时针分针秒针一天重合几次