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

文章目录

前言

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-TXQTPixArt 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 波形分析

猜你喜欢

转载自blog.csdn.net/qq_20016593/article/details/132468670