Little Bird
Motor 2040 - Quad Motor Controller
All Products
New Arrivals
Circuitry & IOT
Brands and Manufacturers
RP2040
Digital Technologies
Robotics & Motion
Motors (DC, stepper, servo)
Motor Drivers and Controllers
Robotics
Raspberry Pi Microcontrollers
Pimoroni
$53.35
|
Only 2 left
A compact 4 channel motor+encoder controller, powered by RP2040. It has RGB and per-motor indicator LEDs plus built in voltage and current sensing. Motor 20...
Get notified when back in stock
Estimated Delivery
Arrives
Disclaimer
Secure checkout
A compact 4 channel motor+encoder controller, powered by RP2040. It has RGB and per-motor indicator LEDs plus built in voltage and current sensing.
Motor 2040 is a standalone motor controller for driving motors with encoders attached. Encoder motors can provide feedback to the controller, enabling more precise control over position and velocity - perfect for building a four wheel drive robot rover or buggy (add mecanum omniwheels to go sideways!). We've built the RP2040 chip right into Motor 2040 so you don't need separate microcontroller and driver boards, keeping everything tidy and lightweight.
Why limit yourself to vehicular constructs though, you could use it as the brains of any project that involves motors: elaborate pulley systems, 1:12 replicas of It's A Small World or even customisable dials with haptic feedback and programmable endpoints.
Motor 2040 comes with many useful built-in bells and whistles, such as:
- An addressable RGB LED (AKA Neopixel) for visual feedback and status reports.
- A pair of mono indicator LEDs on each motor channel to show you when and in what direction a motor is moving. This helps visualise what your code is doing and means you can prototype without having motors plugged in!
- A QW/ST connector to make it easy to attach Qwiic or STEMMA QT breakouts - great for adding some sensor smarts.
- Some neat voltage/current/fault sensing features to help prevent motor mishaps.
It's supported by a well documented C++/MicroPython motor and encoder library with lots of examples to show you how to use the individual features (and everything together).
Motor 2040 and MMME shims
We've designed Motor 2040 to interface easily with our new MMME (Micro Metal Motor Encoder) shims which can be used to upgrade our standard Micro Metal Motors into fancy encoder motors. We also sell motors with MMMEs pre-attached, if you want to skip the soldering.
Once your motor has an MMME attached to it you can plug it into Motor 2040 with a 6 pin JST-SH cable. Convenient!
Features
- Powered by RP2040 (Dual Arm Cortex M0+ running at up to 133Mhz with 264kB of SRAM)
- 2MB of QSPI flash supporting XiP
- 2 Dual H-Bridge motor drivers (DRV8833)
- 4 JST-SH connectors (6 pin) for attaching motors
- Wide voltage range for motors and logic (2.7V to 10V)
- On-board 3V3 regulator with input up to 13.2V (max regulator current output 150mA)
- Onboard voltage, current and fault sensing
- Per motor current limiting (0.5A) *
- Per motor direction indicator LEDs **
- Addressable RGB LED/Neopixel
- Reset and BOOT button (the BOOT button can also be used as a user button)
- USB-C connector for programming and power (3A max)
- Qw/ST (Qwiic/STEMMA QT) connector for breakouts
- Fully-assembled
- C++/MicroPython libraries
- Schematic
- Dimensional drawing
Software
Because it's a RP2040 board, Motor 2040 is firmware agnostic! You can program it with C/C++, MicroPython or CircuitPython.
Our C++/MicroPython libraries will help you get the most out of Motor 2040, they're packed with powerful features for working with motors. You'll get best performance using C++, but if you're a beginner we'd recommend using our batteries included MicroPython build for ease of getting started.
You can also use CircuitPython on your Motor 2040, if you want access to all the nice conveniences of Adafruit's ecosystem.
- Download CircuitPython for Motor 2040 (coming soon)
- Getting Started with CircuitPython
- CircuitPython examples
Connecting Breakouts
If your breakout has a QW/ST connector JST-SH to JST-SH cable, or you can easily connect any of our I2C Breakout Garden breakouts with a JST-SH to JST-SH cable; coupled with a Qw/ST to Breakout Garden adaptor.
- List of breakouts currently compatible with our C++/MicroPython build.
Powering Motor 2040
Motor 2040 can be powered either by plugging the board into a USB-C power source (like a PC or power bank) or by connecting a battery pack to the EXT PWR or VSYS connections. On an unmodified board, you should only have one power source connected at a time, to avoid back-powering your computer or battery.
If you want to have two power sources connected at the same time, Motor 2040 has two traces on its underside that you can cut to do this safely.
- Cut EXT PWR to VSYS if you want to provide your motors with a separate power supply (up to 10V) from that used to power the rest of the board. Board power (up to 13.2V) will need to be provided either by USB 5V or VSYS.
- Cut USB 5V to VSYS if you want to run the board entirely off a separate power supply, without worry of back-powering your computer. Note that this also means the board will not turn on when only connected by USB.
Below is a simplified circuit diagram showing the power wiring:
Notes
- Measurements: 52mm x 38mm x 7.7mm (L x W x H). The mounting holes are M2.5 and 2.7mm in from each edge.
- * The current limit of each motor can be disabled by soldering the "high current" pads on the rear (doing this will also disable the current monitoring). The maximum supported output current when unlimited is 1.2 A continuous (2 A peak) per motor.
- ** The direction indicators for each motor can be disabled by cutting the "motor LED" traces on the rear.
- The pinout of the JST-SH motor connectors is M+, M-, 3v3, A, B, GND.
- Motor 2040 has some extra broken out headers that adventurous roboticists might find useful (note that these are unpopulated and so will require soldering):
- 2 sets of headers for connecting analog sensors
- 1 set of headers for connecting a serial device, or an 3.3V ultrasonic distance sensor
- Unpopulated screw terminals for supplying external power (10A max continuous current)
- Exposed analog, Breakout Garden and debug pins
About RP2040
Raspberry Pi's RP2040 microcontroller is a dual core ARM Cortex M0+ running at up to 133Mhz. It bundles in 264kB of SRAM, 30 multifunction GPIO pins (including a four channel 12-bit ADC), a heap of standard peripherals (I2C, SPI, UART, PWM, clocks, etc), and USB support.
One very exciting feature of RP2040 is the programmable IOs which allow you to execute custom programs that can manipulate GPIO pins and transfer data between peripherals - they can offload tasks that require high data transfer rates or precise timing that traditionally would have required a lot of heavy lifting from the CPU.
Jargon buster
Plain-language definitions for the technical terms used above.
- ADC
- An analogue-to-digital converter reads a changing voltage and turns it into a number the microcontroller can use. It matters when connecting analogue sensors such as light, sound, or variable-resistor sensors.
- breakout
- A breakout board carries a small or fine-pitched component and brings its connections out to standard, breadboard- and header-friendly pins. Describing a part as a breakout means it can be wired into a project without soldering directly to the component's tiny contacts.
- CircuitPython
- A beginner-friendly version of Python designed to run directly on microcontroller boards. If a product supports CircuitPython, you can often program it by copying code files onto the board rather than setting up a more complex toolchain.
- encoder
- An encoder is a sensor that converts the rotation or position of a shaft, knob or dial into electrical signals, reporting movement as incremental steps and direction, or as an absolute position. It is used to track how far something has turned, which matters for precise positioning, speed control, repeatable movement, or using a rotary knob as an input.
- GND
- GND is the ground or reference connection (0 V) for a circuit. When connecting two devices together, their grounds must be joined so both agree on what counts as a low or high signal.
- GPIO
- General-purpose input/output pins are microcontroller pins you can set in software to read signals, switch devices on and off, or connect to peripherals. The number of GPIO pins matters because it limits how many buttons, LEDs, sensors, and other parts you can wire directly to the board.
- Headers
- Rows of connector contacts on a fixed pitch (commonly 2.54 mm) used to link a board to a breadboard, jumper wires, or another board. They come as male pin headers and female socket headers; when a module ships with pre-soldered headers it can be used straight away, whereas bare pads require soldering the pins yourself.
- I2C
- I2C is a two-wire communication bus used by many sensors and small modules. It matters because several I2C devices can share the same two wires, but each device needs a compatible address and your controller must support I2C.
- LED
- A light-emitting diode (LED) is a small electronic component that emits light when current flows through it in the correct direction. Because it only conducts one way, its polarity matters, and a through-hole LED must be soldered the correct way around to light up.
- M2.5
- A metric screw thread size with a 2.5 mm nominal diameter. It matters for mounting because screws, standoffs, and holes must use the same size to fit securely without damaging the board.
- microcontroller
- A microcontroller is a small computer on a single chip that runs a stored program and controls connected inputs and outputs such as buttons, sensors, displays and communication interfaces. In a device built around one, it is the part that executes the code and coordinates the device's behaviour.
- MicroPython
- A version of the Python programming language made to run on microcontrollers. It matters because it lets beginners write readable code to control LEDs, sensors, motors and displays without needing to start with lower-level languages.
- NeoPixel
- A type of addressable LED system where colour data is sent along a single digital data line from one LED or controller to the next. Compatibility matters because the timing and signal format must match for the lights or driver board to respond correctly.
- PWM
- Pulse Width Modulation is a way for a digital pin to simulate variable output power by switching on and off very quickly. It matters for controlling things like LED brightness, motor speed, or servo-style signals from a microcontroller pin.
- Qwiic
- Qwiic is a plug-in connector system for I2C devices that uses small 4-pin cables, so you can connect compatible sensors without soldering. It matters because your controller or adapter also needs Qwiic, or you will need a cable or breakout to wire it up.
- RGB
- Short for red, green and blue, the three primary colours of light that are mixed in varying amounts to make a wide range of colours. In electronics RGB can refer to an LED or pixel that blends these three colours, or to a colour signal or interface that carries separate red, green and blue channels.
- RP2040
- The RP2040 is a dual-core Arm Cortex-M0+ microcontroller chip from Raspberry Pi, used on many maker boards and offering programmable I/O, multiple GPIO pins and reasonable processing speed. Code and accessories built for that chip should work where RP2040 compatibility is listed, though demanding tasks such as reading a camera can require careful pin allocation and timing.
- SPI
- A fast serial communication bus often used for displays, memory cards, and sensors. It matters because SPI devices need specific pins for clock and data, plus a separate chip-select line for each device.
- SRAM
- Fast temporary memory used by a processor while a program is running. More SRAM helps with projects that handle larger data buffers, networking, displays, or more complex code.
- STEMMA QT
- A small plug-in connector system for I2C boards that lets you connect compatible sensors and controllers without soldering. It matters because it can make wiring faster and less error-prone, especially when adding several small modules to a project.
- UART
- UART is a simple asynchronous serial interface that sends data over separate transmit and receive wires, usually labelled TX and RX, with both ends set to the same baud rate. It is a common way for microcontrollers and other serial devices to exchange data.
- USB-C
- USB-C is a small, reversible USB connector that can carry power, data and, on some devices, video over a single cable. The same connector can range from charging only to high-speed data, so the functions a given port actually supports vary.
Find this product in
Brands
Robotics & Motion
welcome to circuitpython
Circuit Diagram · 10.6 MB · Click any page to view full size
Resources & Downloads
Guides, code examples, and more
Related Tutorials
Free guides on learn.littlebird.com.au