文章目录
前言
本文介绍了在 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:光流检测到图像的 X 和 Y 方向的运动信息;
squal:指运动信息质量,简单说就是运动信息的可信度;
rawDataSum:这个是原数据求和,可用作对一帧数据求平均值;
maxRawData 和 minRawData :最大和最小原始数据;
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 波形分析
相关文章
多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)
无人机的主要导航参数就是依靠多传感器信息融合获得的,因此信息融合技术是组合导航系统的关键技术,目前已成为国内外学者研究的热点问题。随着多旋翼无人机向自主化和智能化发展,多旋翼无人机对其自身导航系统的性能提出了更高的要求。针对这一矛盾,本文提出将无人机自带的微型惯导系统与GPS通过信息融合技术相结合,构成INS/GPS组合导航系统,由此能够提升导航系统的整体性能。[1]刘洪剑,王耀南,谭建豪,李树帅,钟杭.一种旋翼无人机组合导航系统设计及应用[J].传感技术学报,2017,30(02):331-336.
AI专题 2023/09/23 23:18:48
(10)(10.6) 开发人员工具(下载)
Ardupilot官网关于《Mission Planner》的翻译 —《(10.6) 开发人员工具(下载)》。
编程日记 2023/09/23 23:13:16
Ardupilot — EKF3使用TOF作为高度源代码梳理
本文说明在Ardupilot旋翼中,EKF3 的整个代码运行流程,以及在哪一步选择测距仪作为高度源。
编程日记 2023/09/23 23:13:11
Ardupilot — AP_OpticalFlow代码梳理
本文主要梳理,Ardupilot中光流传感器的代码运行流程,以及如何选择相应的光流传感器类型。
编程日记 2023/09/23 23:13:05
Ardupilot — EKF3使用光流室内定位代码梳理
本文说明在Ardupilot旋翼中,EKF3 的整个代码运行流程,以及在哪一步融合光流数据进行室内定位飞行。
编程日记 2023/09/23 23:12:56
(25)(25.1) 光学流量传感器的测试和设置
Ardupilot官网关于《Peripheral Hardware》的翻译 —《(25.1) 光学流量传感器的测试和设置》。
编程日记 2023/09/23 23:12:50
(25)(25.4) PX4FLOW光学流量相机板
Ardupilot官网关于《Peripheral Hardware》的翻译 —《(25.4) PX4FLOW光学流量相机板》。
编程日记 2023/09/23 23:12:47