The 28BYJ-48 is a small 5V stepper motor commonly used in Arduino, ESP32, Raspberry Pi, robotics, and DIY automation projects. Unlike a normal DC motor that spins freely, the 28BYJ-48 moves in small controlled steps, which makes it useful for accurate positioning. This article will talk about the 28BYJ-48 stepper motor pinout, specifications, features, working principle, applications, and more.


| Pin/Wire Color | Function | Description |
| Blue | Coil A | Connected to one end of the first motor coil |
| Pink | Coil B | Connected to one end of the second motor coil |
| Yellow | Coil C | Connected to one end of the third motor coil |
| Orange | Coil D | Connected to one end of the fourth motor coil |
| Red | Common VCC | Common positive supply line shared by all internal coils |
| Parameter | Specification |
| Model | 28BYJ-48 – 5V |
| Rated Voltage | 5V DC |
| Number of Phases | 4 |
| Speed Variation Ratio | 1/64 |
| Stride Angle | 5.625° / 64 |
| Frequency | 100Hz |
| DC Resistance | 50Ω ±7% (25°C) |
| Idle In-Traction Frequency | >600Hz |
| Idle Out-Traction Frequency | >1000Hz |
| In-Traction Torque | >34.3 mN·m (120Hz) |
| Self-Positioning Torque | >34.3 mN·m |
| Friction Torque | 600–1200 gf·cm |
| Pull-In Torque | 300 gf·cm |
| Insulated Resistance | >10 MΩ (500V) |
| Insulated Electricity Power | 600VAC / 1mA / 1s |
| Insulation Grade | Class A |
| Temperature Rise | <40K (120Hz) |
| Noise Level | <35dB (120Hz, no load, 10cm) |
| Feature | Description |
| Compact Size | Small and lightweight design suitable for embedded systems and DIY electronics projects |
| 5V Operation | Operates using a low 5V DC supply, making it compatible with Arduino and microcontrollers |
| High Position Accuracy | Provides precise step-by-step rotational control |
| Built-in Gear Reduction | Uses an internal 1:64 reduction gearbox for improved torque and positioning |
| Low Noise Operation | Produces relatively quiet movement during operation |
| Good Holding Torque | Can maintain shaft position when energized |
| Easy Driver Compatibility | Commonly used with ULN2003 driver boards |
| Low Power Consumption | Suitable for battery-powered and low-power applications |
| Continuous Rotation Capability | Can rotate continuously with proper step control |
| Beginner-Friendly | Widely used in educational electronics and robotics projects |
The 28-BYJ48 is a unipolar stepper motor designed to rotate in small, precise angular movements called steps. Unlike a regular DC motor that spins continuously when power is applied, this motor moves in controlled step-by-step rotation by energizing its internal coils in sequence.
Inside the motor are four electromagnetic coils arranged around a permanent magnet rotor. When electrical current flows through one coil, it creates a magnetic field that attracts the rotor toward that position. The driver circuit then energizes the next coil, causing the rotor to move slightly again. By continuously switching the coil sequence, the rotor rotates in small controlled increments.
The motor commonly uses a ULN2003 driver board because a microcontroller such as an Arduino cannot directly supply enough current to drive the coils safely. The driver receives control signals from the microcontroller and switches the motor coils ON and OFF in the correct order.
The 28-BYJ48 also contains an internal reduction gearbox with a ratio of approximately 1:64. This gear reduction increases output torque while improving positioning accuracy, although it reduces rotational speed. Because of this gearbox, the motor is suitable for applications requiring precise low-speed movement rather than high-speed rotation.
The motor can operate in several stepping modes, including full-step and half-step operation. In full-step mode, two coils may energize together for stronger torque. In half-step mode, the motor alternates between single-coil and dual-coil activation, producing smoother and more precise movement.
A typical coil activation sequence is:
| Step | Coil Activated |
| 1 | Blue |
| 2 | Pink |
| 3 | Yellow |
| 4 | Orange |
Repeating this sequence rotates the motor in one direction, while reversing the order changes the rotation direction.
Because the motor moves in fixed steps instead of continuous spinning, it is widely used in positioning systems such as robotics, camera sliders, smart locks, automatic blinds, and small automation projects where accurate motion control is important.
The 28BYJ-48 uses an internal gearbox with an approximate 1:64 reduction ratio. This gear reduction lowers the motor’s output speed while increasing torque and positioning accuracy. Because of this system, the motor can move more smoothly and hold its position better during low-speed operation.
The gearbox also helps the motor handle lightweight mechanical loads more effectively compared to a direct-drive micro stepper motor. However, the reduced speed makes it less suitable for high-speed rotation applications.
| Parameter | Unipolar 28BYJ-48 | Bipolar Modified 28BYJ-48 |
| Motor Wiring | Uses 5 wires | Modified to 4 wires |
| Center Tap | Uses common center tap wire | Center tap disconnected |
| Driver Type | ULN2003 driver board | A4988, DRV8825, or bipolar drivers |
| Control Method | Easier coil switching | More complex H-bridge control |
| Torque Output | Lower torque | Higher torque |
| Power Efficiency | Lower efficiency | Better efficiency |
| Current Flow | One coil direction only | Current reverses through coils |
| Speed Capability | Moderate speed | Better high-speed performance |
| Heat Generation | Lower | Slightly higher under load |
| Wiring Complexity | Simple and beginner-friendly | More advanced setup |
| Modification Required | No modification needed | Internal wiring modification required |
| Common Applications | Arduino projects, educational systems, mini automation | CNC projects, stronger robotics, higher-performance motion control |
| Cost of Setup | Lower overall cost | Higher driver cost |
| Ease of Use | Very easy for beginners | Better for advanced users |
| Overall Performance | Good for light-duty positioning | Better torque and smoother control |
The 28BYJ-48 moves in fixed step angles instead of rotating freely like a regular DC motor. Its internal motor has a step angle of 5.625°, and after the gearbox reduction, each output step becomes much smaller. This gives the motor finer control over shaft movement.
This step-based movement allows the motor to reach repeatable positions with good accuracy in light-duty projects. It is useful for applications such as camera sliders, smart locks, sensor scanners, and small robotic mechanisms where controlled movement matters more than speed.

| Parameter | Half-Step Mode | Full-Step Mode |
| Stepping Method | Alternates between single-coil and dual-coil activation | Usually energizes two coils at a time |
| Step Resolution | Higher resolution | Lower resolution |
| Movement Smoothness | Smoother rotation | Slightly rougher movement |
| Position Accuracy | Better positioning precision | Moderate positioning precision |
| Torque Output | Slightly lower average torque | Higher holding torque |
| Vibration Level | Lower vibration | Higher vibration |
| Power Consumption | Moderate | Slightly higher |
| Rotational Speed | Slower due to more steps per revolution | Faster because fewer steps are required |
| Noise Level | Quieter operation | Slightly louder |
| Control Complexity | More complex stepping sequence | Simpler stepping sequence |
| Best Applications | Camera sliders, precision positioning, smooth motion systems | Basic robotics, simple automation, higher torque applications |
| Motion Performance | More refined movement | Stronger but less smooth movement |
| Parameter | Wave Drive Mode | Full-Step Drive Mode |
| Coil Activation | One coil energized at a time | Two coils energized simultaneously |
| Torque Output | Lower torque | Higher torque |
| Power Consumption | Lower power usage | Higher power usage |
| Heat Generation | Lower heat | Higher heat |
| Movement Strength | Weaker holding force | Stronger holding force |
| Position Stability | Moderate stability | Better positional stability |
| Rotational Smoothness | Smoother at low load | Slightly stronger but less smooth |
| Speed Capability | Can achieve slightly higher speed under light load | Stable speed under heavier load |
| Current Requirement | Lower current demand | Higher current demand |
| Vibration Level | Lower under light loads | Slightly higher vibration |
| Efficiency Under Load | Less effective for mechanical loads | Better for driving heavier loads |
| Common Applications | Low-power projects, lightweight motion systems | Robotics, positioning systems, higher torque applications |
| Control Complexity | Simple stepping sequence | Simple stepping sequence |
| Overall Performance | Better for low-power operation | Better for stronger and more stable movement |
The 28-BYJ48 stepper motor is commonly used in low-speed precision control applications where accurate positioning is more important than high power. Because it operates on 5V and is easy to interface with Arduino, ESP32, Raspberry Pi, and other microcontrollers, it is widely used in educational electronics, DIY automation, and small robotic systems.
Its built-in gear reduction mechanism allows the motor to provide better positioning accuracy and improved holding torque compared to small DC motors. This makes it suitable for projects that require controlled rotational movement instead of continuous high-speed spinning.
Common applications include automatic curtain systems, smart door locks, camera sliders, pan-and-tilt platforms, robotic arms, small conveyor mechanisms, and sensor scanning devices. It is also frequently used in hobby CNC prototypes, 3D printed mechanisms, and demonstration projects for learning stepper motor control.

The 28-BYJ48 stepper motor is commonly connected to an Arduino using a ULN2003 driver board. The driver board controls the motor coils and provides the required current for stable operation.
| ULN2003 Driver Pin | Arduino Pin |
| IN1 | D8 |
| IN2 | D9 |
| IN3 | D10 |
| IN4 | D11 |
| GND | GND |
| VCC | 5V |
The stepper motor plugs directly into the white connector on the ULN2003 board. A separate 5V adapter is recommended for more reliable motor performance.

This program rotates the motor one full revolution clockwise, pauses for one second, then rotates it one full revolution counterclockwise.
The 28-BYJ48 stepper motor can also be controlled using ESP32 and Raspberry Pi boards, making it useful for IoT systems, robotics, automation projects, and smart devices. Since the motor requires more current than a GPIO pin can safely supply, it is normally connected through a ULN2003 driver board. The driver receives control signals from the microcontroller or single-board computer and switches the motor coils in the correct stepping sequence.
The ESP32 is fully compatible with the 28-BYJ48 stepper motor and is commonly used in wireless automation projects because it supports both Wi-Fi and Bluetooth connectivity. The GPIO pins of the ESP32 can control the ULN2003 driver inputs directly, allowing precise stepper motor movement for applications such as smart curtains, robotic systems, camera sliders, and IoT positioning devices.
Because the ESP32 operates at 3.3V logic levels, the ULN2003 driver board helps provide proper current switching for the motor coils. Many developers use Arduino IDE libraries such as Stepper or AccelStepper when programming the ESP32 for smoother motor acceleration and speed control.
The Raspberry Pi can also control the 28-BYJ48 through its GPIO pins using the ULN2003 driver board. Python libraries such as RPi.GPIO or gpiozero are commonly used to generate the stepping sequence needed for motor rotation. This setup is popular in automation systems, pan-and-tilt cameras, sensor scanning systems, and Linux-based robotics projects.
Unlike Arduino or ESP32 boards, the Raspberry Pi runs a full operating system, which makes it suitable for more advanced applications involving networking, camera processing, web servers, or remote motor control.
The motor typically requires four GPIO output pins to control the four ULN2003 input channels. These GPIO pins send digital HIGH and LOW signals in sequence to rotate the motor shaft step by step. Both ESP32 and Raspberry Pi boards provide enough GPIO pins for this type of control.
It is important not to connect the motor coils directly to GPIO pins because the motor current exceeds safe GPIO limits. The ULN2003 driver protects the controller while providing sufficient current amplification for stable operation.
The standard 28-BYJ48 motor is designed for 5V DC operation. Although ESP32 and Raspberry Pi boards use lower logic voltages, the ULN2003 driver board allows safe interfacing between the controller and the motor.
For stable operation, an external 5V power supply is recommended instead of powering the motor directly from the development board. Insufficient power can cause weak torque, missed steps, vibration, or unstable motor movement. The ground of the external supply should always be connected to the controller ground to ensure proper signal reference.

The 28BYJ-48 stepper motor 5V operation, compact size, built-in gearbox, and compatibility with common controller boards make it ideal for beginners and hobby electronics users. However, it is not designed for heavy loads or high-speed movement. For stronger applications such as CNC machines, 3D printers, or larger robotics, motors like NEMA 14 or NEMA 17 are better options. Overall, the 28BYJ-48 is best used for lightweight automation, learning projects, and precise low-speed movement.