传感器介绍

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. 在批处理中调用JS操作MongoDB
  2. 利用CStopWatch计算并显示小车运行速度
  3. 在el-table中使用el-popover,没法点击确定或取消来关闭
  4. Java实现gbk utf8 转换_java项目编码格式转换(如GBK转UTF-8)
  5. centos oracle sqlplus,centos 下oracle sqlplus乱码问题解决
  6. mysql root 注入_sql注入入门之mysqlroot权限下的注入利用方式
  7. 机器学习-吴恩达-笔记-11-异常检测
  8. Winform DataGridView中利用WebClient异步加载显示网络地址的图片
  9. 服务器导流板的作用,前保险杠下导流板的作用是什么?
  10. 开放 API 接口签名验证,让你的接口从此不再裸奔 !
  11. 拓端tecdat|R语言k-Shape时间序列聚类方法对股票价格时间序列聚类
  12. 写论文时introduction and realted works部分如何写别人的工作,论文写作常用词
  13. python游戏编程讲解之凯撒密码
  14. Qt 常用类 (11)—— QLabel
  15. 常用排序:冒泡排序与快速排序详解,看完这篇就够了!风马博客
  16. 前端页面模拟浏览器搜索功能Ctrl+F实现
  17. 第26周-window程序设计(基础篇)-第5章(图形基础)-边界框及LINDEMO.C
  18. Web全栈开发基础(小白入门版本)
  19. C语言学习笔记——输入五个国家的名称,按字母顺序排列输出
  20. 计算机开机后桌面黑屏,电脑开机一直黑屏怎么办 电脑开机后桌面黑屏的解决方法...

热门文章

  1. Procreate笔刷素材推荐
  2. Chrome/Edge浏览器卡通壁纸
  3. VERSA VGG-4422-U-A240多少钱
  4. c语言自动回复,经典的自动回复语言(调戏好友)
  5. 数字时钟html脚本,javascript实现数字时钟效果
  6. 阿里云发布Apsara SA系列混合云存储阵列
  7. C#面向对象练习之模拟商城购物
  8. (李兴华)【FANUC FOCAS1/2 Library 开发系列教程】-开发包概述
  9. 数值策划实例: 从MUGEN里的连击削弱谈到平衡原因
  10. Ubuntu 虚拟机集群 内网通, 网关拼不通,不能上外网