ESP32应用教程(0)— PMW3901MB光流传感器

news2024/11/26 14:42:43

文章目录

前言

1 传感器介绍

1.1 关键特征

1.2 关键参数

2 硬件概述

2.1 信号引脚

2.2 参考电路图

3 寄存器

3.1 寄存器列表

3.2 性能优化寄存器

4 代码说明

4.1 结构体说明

4.2 编译说明

5 波形分析


前言

本文介绍了在 ESP32 DEVKIT V1 开发板上开发 PMW3901MB-TXQ1 光流传感器的过程。


1 传感器介绍

PMW3901MB-TXQT 是 PixArt Imaging 公司最先进的光学导航芯片,采用远场光学技术设计,可实现室内导航,采用 28 引脚板上芯片(COB)封装,可提供 X-Y 运动信息,工作范围从 80mm 到无限远。它最适合用于远场 "运动检测"。

1.1 关键特征

  • 工作范围广,从 80mm 到无限远 ;
  • 镜头安装过程中无需对焦 ;
  • 运行模式下耗电量为 9mA
  • 16 位运动数据寄存器 ;
  • 运动检测引脚输出 ;
  • 内部振荡器 ~ 无需时钟输入。

1.2 关键参数

2 硬件概述

2.1 信号引脚

电源

  • Pin2 VDD;
  • Pin3 VDDIO;
  • Pin4 VREG;
  • Pin1 GND;
  • Pin21 GND。

控制接口

  • Pin16 MOSI;
  • Pin17 SCLK;
  • Pin18 MISO;
  • Pin19 NCS。

功能IO

  • Pin7 NRESET;
  • Pin15 MOTION。

2.2 参考电路图

3 寄存器

3.1 寄存器列表

PMW3901MB 寄存器可通过串行端口访问。这些寄存器用于读取运动数据和状态,以及设置设备配置。

3.2 性能优化寄存器

PMW3901MB 上电后,需要对一些寄存器进行配置,以实现芯片的最佳性能。这些寄存器是 PixArt 的专利信息,因此本数据手册中没有关于这些寄存器说明的其他信息。这些寄存器应按下列顺序写入。

4 代码说明

4.1 结构体说明

typedef struct motionBurst_s {
    union {
        uint8_t motion;
        struct {
            uint8_t frameFrom0    : 1;
            uint8_t runMode       : 2;
            uint8_t reserved1     : 1;
            uint8_t rawFrom0      : 1;
            uint8_t reserved2     : 2;
            uint8_t motionOccured : 1;
        };
    };

    uint8_t observation;
    int16_t deltaX;
    int16_t deltaY;

    uint8_t squal;

    uint8_t rawDataSum;
    uint8_t maxRawData;
    uint8_t minRawData;

    uint16_t shutter;
} __attribute__((packed)) motionBurst_t;

motion:运动信息,可以根据不同的位去判断运动信息,包括帧判别,运行模式和运动信息检测等;

observation:这个是用于检测 IC 是否出现 EFT/B 或者 ESD 问题,传感器正常工作时,读取出来的值为 0xBF

deltaX, deltaY:光流检测到图像的 XY 方向的运动信息;

squal:指运动信息质量,简单说就是运动信息的可信度;

rawDataSum:这个是原数据求和,可用作对一帧数据求平均值;

maxRawDataminRawData :最大和最小原始数据;

shutter:是一个实时自动调整的值,目的是保证平均运动数据在正常可操作范围以内,这个值可以搭配 squal,用来判断运动信息是否可用。

4.2 编译说明

1. 下载代码

git clone https://github.com/EmotionFly/ESP32_PMW3901MB.git
cd ESP32_PMW3901MB

2. 获取 esp-idf 库的环境

. $HOME/esp/esp-idf/export.sh

3. 编译—>下载—>监控

idf.py flash monitor

5 波形分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/938730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言——pow(base, exponent)函数,求幂

这段代码是用来计算底数的指数幂的程序。它使用了math.h头文件中的pow函数来进行幂运算,并使用printf函数来输出结果。 在程序中,使用pow(base, exponent)来计算底数base的exponent次幂,并将结果存储在result变量中。然后使用printf函数来输…

JDBC驱动程序类型

JDBC驱动程序类型 JDBC驱动程序类型列表类型1 JDBC驱动程序类型2 JDBC驱动程序类型3 JDBC驱动程序类型4 JDBC驱动程序 JDBC驱动程序是一组Java类,用于实现JDBC接口,目标是特定的数据库。JDBC接口带有标准Java,但这些接口的实现是特定于您需…

Mycat教程+面试+linux搭建

目录 一 MyCAT介绍 二 常见的面试题总结 三 linux下搭建Mycat 一 MyCAT介绍 1.1. 什么是MyCAT? 简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务、ACID、可以替代Mysql的加强版数据库 一个可…

QQ六七年前的聊天记录怎么找?3招教你找回并恢复

友友们,六七年前的QQ聊天记录还有办法恢复吗?我之前的手机还能用,但是登录QQ后没有找到我想要的聊天信息,有没有其他方法能够找回? QQ聊天记录找不回来是一个非常困扰大家的问题。特别是好几年前的聊天记录&#xff0c…

SLAM从入门到精通(CMake编译)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 linux系统里面的编译和windows下面的编译不同,它没有什么特别好用的IDE。一般都需要自己写编译脚本。这项工作在以前可能很麻烦&#x…

cmd: Union[List[str], str], ^ SyntaxError: invalid syntax

跑项目在调用from easyprocess import EasyProcess 遇到报错: cmd: Union[List[str], str], ^ SyntaxError: invalid syntax猜测是EasyProcess版本与python版本不对应 pip show EasyProcess查证一下: WARNING: pip is being invoked by an old…

深入了解OpenStack:创建定制化QCOW2格式镜像的完全指南

OpenStack 创建自定义的QCOW2格式镜像 前言 建议虚机网络配置为 NAT 或 桥接,因为未来 KVM虚机 需要借助 虚机 的外网能力进行联网安装软件包 虚机在启动前,必须在 VMware Workstation 上为其开启虚拟化引擎 虚拟化 Intel VT-x/EPT 或 AMD-V 安装kvm …

【git进阶】 .ignore 忽略有道 忽略核查gitcheck-ignore -v

git .ignore配置 .ignore使用场景新项目中.gitignore用法1 初始化生成.git文件夹2 git status 查看当前文件夹状态3 创建.ignore文件 忽略不想上传的文件4 编辑.gitignore文件 git status查看是否生效 .gitignore进阶用法模式匹配模式匹配例题练习1 忽略所有的内容2 忽略所有目…

深入理解树状数组

大家好,我是 方圆。关于各类区间和问题有很多种解法,我们可以根据题目要求选择解题的方向: 数组不变,区间查询:前缀和、树状数组和线段树 数组单点查询,区间查询:树状数组 和线段树 数组区间修…

“业务敏捷的领导力” 工作坊 · 2023年9月3日

“业务敏捷的领导力”在线工作坊 2023年9月3日;9:30-11:30 am 授课工具:Zoom分组Miro画布互动练习 讲师:Jim Wang王军 报名条件 优先捷行学员免费参加,报名2023后半年课程的学员免费,工作坊限定30人&#xff0…

【附安装包】Fireworks CS6安装教程

软件下载 软件:Fireworks版本:CS6语言:简体中文大小:165.87M安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.0GHz 内存4G(或更高)下载通道①百度网盘丨下载链接:https://pan.baidu.c…

STM32启动模式详解

文章目录 前置知识1. 单片机最小系统组成2. BOOT电路3. 三种启动模式4. 存储器映射 从主FLASH启动从系统存储区启动从SRAM启动 前置知识 1. 单片机最小系统组成 一个单片机最小系统由电源、晶振、下载电路、BOOT电路、和复位电路组成。少一个单片机都启动不了。 2. BOOT电路 …

华为云Stack的学习(二)

三、华为云Stack产品组件 FunsionSphere CPS 提供云平台的基础管理和业务资源(包括计算资源和存储资源)。采用物理服务器方式部署在管理节点。可以做集群的配置,扩容和运维管理。 Service OM 提供云服务的运维能力,采用虚拟化方…

线程基础:Java多线程的创建休眠与等待

目录 一.Thread 类是什么? 二.Thread 类的几个常见属性 三.线程创建 1. 继承Thread,重写 run 方法 2. 实现Runnable,重写 run 方法 3. 继承Thread,使用匿名内部类 4. 实现Runnable,使用匿名内部类 5. 使用 lambda 表达式…

大数据-玩转数据-Flink窗口

一、Flink 窗口 理解 在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击…

医疗器械行业的MES系统解决方案

医疗器械行业的MES系统(制造执行系统)解决方案是为医疗器械制造企业提供的一种集成化的信息技术系统,用于管理和监控制造过程,提高生产效率,确保产品质量,以及优化整个生产流程。MES系统通常涵盖了生产计划…

No118.精选前端面试题,享受每天的挑战和学习

文章目录 为什么说HTTP是无状态的协议?HTTP 报文结构是怎样的?HTTP1.1 中如何解决 HTTP 的队头阻塞问题?HTTP 中如何处理表单数据的提交?说下application/x-www-form-urlencoded 和 multipart/form-data对于定长和不定长的数据&am…

影视公司技术流程设计之Pipeline数据管理

使用场景 1 设计师画好设计稿后怎样让导演审查? 叫到位子上看? 放个文件夹会议室统一看?意见怎么记录,怎么反馈? 2 材质,绑定文件怎么与模型同步, 很多时间是绑定不小心改了, 去了灯…

WinRAR<6.23 远程代码执行漏洞【Poc公开】(CVE-2023-38831) [有POC]

漏洞类型代码注入发现时间2023-08-25漏洞等级高危MPS编号MPS-bw2s-d0rvCVE编号CVE-2023-38831漏洞影响广度广 漏洞危害 OSCS 描述WinRAR 是一款适用于 Windows 系统的压缩包管理器。 WinRAR 6.2.3之前版本打开压缩文件时会调用 ShellExecute 函数匹配文件名,如果目…

软件设计师(十一)标准化和软件知识产权基本知识

一、标准化基础知识 标准(Standard)是对重复性事物和概念所做的统一规定 标准化工作的特征包括横向综合性、政策性和统一性 1、基本概念 (1)标准的分类 国际标准:ISO、IEC等国际标准化组织国家标准:GB一中国、ANSI一美国、BS一…