Control Stepper Motors With Raspberry Pi: Tutorials and Resources

The title of the article can be as well as ‘Let’s build robots using stepper motors and the Raspberry Pi, because everything you need is a good example of where you can learn how to control the spin direction, speed, and the rotation of a stepper motor using a fruit-named single board computer, a controller board, and one or more stepper motors.

Having played with LEDs, switches, or any other components that can be embedded into a robot is a plus and can contribute to improve your electronic and programming skills in order to interface stepper motors with Raspberry Pi.

Stepper Motor Diagram (image source)

Stepper Motor Diagram (image source)

To get the motion of the electric motors, you have to build an entire system where several components such as a motor drive board, stepper motor, single board computer, wires and a programming language has to be combined to return a functional motion system able to move a robot with accuracy and on the right path.

A voltage near zero volts is interpreted as a logic zero, while a voltage near 3.3V is interpreted as a logic one.

A stepper motor is controlled by multiple electromagnetic coils able to work individually to provide a precise rotation of the motor divided into steps. There are several reasons to use stepper motors in robotic projects including here an accurate position, abilities to spin forward and backwards in discrete steps or in a continuous rotation, and the ability to be controlled with or without feedback.

Any of the GPIO pins of the Raspberry Pi should not be connected to a voltage source greater than 3.3V.

The Raspberry Pi is a single board computer with support to connect and control directly a wide range of components and modules. Your focus in interfacing stepper motors with RPi is the GPIO pins that can be found in number of 2×13 header pins including SPI, I2C, serial UART, 3.3V and 5V power. If for an Arduino board you might control motors using the 5V power level, the RPi allow you to use the 3.3V logic pins.

How to control a stepper motor with Raspberry Pi

My mission with this article is to provide you as much information to control the stepper motors with a wide range of programming languages supported by the Raspberry Pi, as well as in as many methods to fit on any project.

Using simple programming lines, you can control the certain pulse signal that will drive the motor in steps to a certain angle. At the same time, you can control the speed of the stepper rotate by controlling the number of the pulse. All of these controls use the GPIO pin states, which can be LOW or HIGH. When the state of a pin is HIGH, the motor is engaged in rotation and with the proper sequence and timing you achieve motor rotation.

Overview of a project where a stepper motor is controlled using RPi (image source)

Overview of a project where a stepper motor is controlled using RPi

How to program the RPi and what components you need to use in order to control one or more stepper motors can be found here:

  • Raspberry Pi – Stepper Motor Control & Breakout Board – from this tutorial you can learn how to control a stepper motor running Java on Raspberry Pi and using the components from a Stepper Motor Breakout Board kit;
  • JavaFX on Raspberry Pi: Some fun with stepper motor – this guide shows you how to use a user interface application to control a stepper motor. The application is called JavaFX UI, which is an application able to control the GPIO pins of the Raspberry Pi;
  • Adafruit’s Raspberry Pi Lesson 10. Stepper Motors – you can control a stepper motor using different components and different methods. In this tutorial you can find how to control a stepper motor using one of the L293D or ULN2803 motor drivers. In the same tutorial you can find a few tips and trick that can help you to understand when a motor drive such as ULN2803 is better to use compared with L293D. As an example, the ULN2803 has several spare outputs that can be used for something else;
  • Controlling a stepper motor with the Raspberry Pi and Piface – using simple digital interface compatible RPi, your work can become easier. In this guide has defined the concept of ‘Pi-Face Digital Interface’, a complete resource to control motors, lights, and many more components that can be found in a robot. The electronic board is a credit card-sized device able to sense inputs, fully compatible with Python, capable of onscreen simulator, user friendly, and a real protection for the Pi;
  • Stepper Motor Control In Python – this tutorial shows you how to control the 28BJY-48 stepper motor with the ULN2003 motor drive board. The programming language used is Python, while the entire example is a simple exercise to catch the skills to embed components;
  • Raspberry Pi, Unipolar Stepper motors, ULN2003 Darlington Pairs, USB Gamepad, Python – with this example, we enter into the area of real-life applications were in a vehicle are embedded two stepper motors controlled with a RPi and a USB Gamepad/Joystick;
  • [link removed] Tutorial : Control a DC motor with Raspberry Pi – this tutorial is a comprehensive source to learn how to control the speed and the direction of a stepper motor using a dual H-bridge motor driver integrated circuit (L293D);
  • PyHacking step by step – welcome to one of the best tutorial from where you can learn how to wire on a diagram the stepper motors, how to interface the motors with an H bridge, and how to program the Pi to spin the motors and how to vary the speed of the motors;
  • Controlling of Stepper Motors using Raspberry Pi – this guide shows you in steps how to interface the GPIO pins with a stepper motor, as well as how to program the Pi with Python to control the motors;
  • Control stepper motors with Raspberry Pi and node.js – using the JavaScript scalable server-side and networking application called Node.js, you can control in real-time several stepper motors, while the computer is the fruit-name board. In this tutorial you can find a lot of information regarding Node.js and control methods for stepper motors;
  • Using a RaspiRobot Board to Drive a Bipolar Stepper Motor – this guide shows you how to control stepper motors using the RaspiRobot board;
  • 4 Port Stepper Motor Board – this guide shows you how to use a 4 port stepper motor drive to control up to 4 bipolar stepper motors in forward and reverse mode, as well as the speed of the motors;


On the market are available several solutions to expand your project using custom electronics, or to start learning how to control stepper motors using kits. Below can be found several resources to control the electric motors easier than ever before, as well as electronic kits and motor drive able to control a wide range of stepper motors.

  • PicoBorg – a motor drive capable of driving large stepper motors and engineered with 5-wire or 6-wire;
  • RasPiComm – a Raspberry Pi piggyback board – the RasPiComm is a stepper motor controller board based on RS485 interface with 5 input connectors and two 5V outputs with LEDs;
  • Step Your Pi – a complete kit to start learning how to drive stepper motors. The kit is able to run up to two stepper motors and is designed to start working in minutes by plugging the wires in the GPIO connectors located on the RPi. The kit is based on the ULN2803A IC motor drive board, which is equipped with 8 I/O pins and 8 LED’s to indicate the status of the pins;
  • RTK Motor Controller Board Kit for Raspberry Pi – the RTK kit is a cheap and self-assembled system able to control DC motors using Python programming language or any other programming languages compatible with RPi;
  • Raspberry Pi Shared Library for GPIO – this is one of the most completed library that can be used to manage the GPIO pins of the Pi;
  • Scratch V1.4 in Raspberry Pi GPIO control – this is an open-source free software designed to do simple tasks using several commands and controls;

5 comments » Write a comment

    • Thank you for giving me the opportunity to visit this impressive website. There is plenty of valuable info listed on this site.
      I have seen a lot of tricks. It is too much to absorb at once, thus I definitely will return to view more.

  1. Can I control bigger motor wheels those with 350 watts capacity, if yes, how do I manage the power to the board and motor wheel.

    For example, I have a power source of 24 V DC to the motor wheel. How do I control that with RPI?

Leave a Reply

Required fields are marked *.