Detect motion of close-up surfaces with this Breakout Garden compatible optical navigation breakout - great for floor tracking for ground-dwelling robots!
The PAA5100JE sensor is used in robot vacuum cleaners and uses a low-resolution camera and some clever algorithms to detect the motion of surfaces. This sensor has a super close range of 15-35mm so it's suitable for use with a variety of different surfaces. If you're looking for a similar sensor with a bigger range (for attaching to something like a drone) check out our PMW3901 breakout.
You can use this breakout completely solder-free with any Breakout Garden with an SPI slot, for ease of prototyping.
- PAA5100JE-Q optical tracking sensor (datasheet)
- Two white LEDs on-board for illumination
- Frame rate: 242 FPS (frames per second)
- Range: 15-35mm
- Field of view: 42°
- Maximum speed: 1.14 metres per second (with sensor 25mm away from the surface)
- 6mA typical current draw
- SPI interface
- 3.3V or 5V compatible
- Reverse polarity protection
- Compatible with Raspberry Pi and Arduino
- Measurements: approx 24mm x 24.5mm x 5mm (L x W x H, including components)
- Python library
- Mechanical drawing
We've adapted our PWM3901 Python library to work with this sensor as well. It makes reading the x/y motion values and their magnitude really straightforward. Use the following line at the beginning of your code to make sure it's set up correctly:
from pmw3901 import PAA5100
Connecting to your Raspberry Pi
If you're not using a Breakout Garden, this is how to connect your Near Optical Flow Sensor Breakout up to your Raspberry Pi.
Our library is set up to use the front SPI slot by default: BCM 7 for CS, BCM 11 for SCK, BCM 10 for MOSI, BCM 9 for MISO, and BCM 19 for the INT pin.
Here's which pins to connect between your Near Optical Flow Sensor Breakout and your Pi's GPIO (note that it's BCM pin numbering):
- 3-5V to any 5V or 3V pin
- CS to BCM 7
- SCK to BCM 11
- MOSI to BCM 10
- MISO to BCM 9
- INT to BCM 19
- GND to any ground pin
You can of course use other pins but you'll have to change them accordingly when you instantiate the sensor in your code.