28BYJ-48 stepper with Raspberry Pi Pico

Wiring for the 28BYJ-48 stepper + ULN2003 driver on the Raspberry Pi Pico (RP2040, 3.3 V logic), chosen with the same pin rules BoardPilot uses: default buses first, and no pins that are used for flash, USB, the debugger or booting.

Wiring

28BYJ-48 stepper pinRoleRaspberry Pi Pico pinNotes
IN1Input to the partGP15
IN2Input to the partGP14
IN3Input to the partGP13
IN4Input to the partGP12
-GroundGND
+PowerVBUSMotor supply 5 V: use VBUS (about 240 mA)

Check before you power it on

Test code (Arduino)

// Library: Stepper (built in)
#include <Stepper.h>

// 2048 steps per turn; note the IN1, IN3, IN2, IN4 order for this motor
Stepper motor(2048, 15, 13, 14, 12);

void setup() {
  motor.setSpeed(10);  // rpm
}

void loop() {
  motor.step(2048);   // one turn
  delay(500);
  motor.step(-2048);  // and back
  delay(500);
}

Arduino board: rp2040:rp2040:rpipico. If the board is not found, hold the BOOTSEL button while plugging in the USB cable.

Questions

Which Raspberry Pi Pico pins do I use for the 28BYJ-48 stepper?

IN1 → GP15, IN2 → GP14, IN3 → GP13, IN4 → GP12, - → GND, + → VBUS.

Does the 28BYJ-48 stepper work with the Raspberry Pi Pico at 3.3 V?

Yes: the 28BYJ-48 stepper runs at 5 V and the Raspberry Pi Pico uses 3.3 V signals, so no level shifting is needed.

BoardPilot checks this wiring in 3D as you build it, and finds crossed or missing wires on the real board.

Download BoardPilot

Full Raspberry Pi Pico pinout · 28BYJ-48 stepper + ULN2003 driver: all pins and data

The 28BYJ-48 stepper on other boards

Other parts on the Raspberry Pi Pico