The Zero Law of Robotics:
A robot may not harm humanity, or, by inaction, allow humanity to come to harm.

- Isaac Asimov, I, Robot

Follow us on


Share this page with friends via

email icon facebook icon twitter icon
linkedin icon google plus icon blogger icon

Motors and Wi-Fi module

In this section we are going to introduce the low-cost stepper motors used in the robot in order to assure its mobility. Further, we will introduce the Wi-Fi module with function of an access point, which we use for establishing robot's own Wi-Fi network.

Stepper motors BYJ48 and driver boards ULN2003

At the beginning I had to decide for a type of motors, I would like to use in my project. Stepper motors seemed to me much easier to implement than the other classical DC-motors. Since I want to have a full control of the robot's motion, I need to know exactly how the robot has moved and gotten to its current position. This is really easy to achieve with a stepper motor rather than with a classical DC-motor, for which you would have to use a counter to count the rotations of the wheels. The choice of the stepper motor ensures that the motors rotate exactly as you tell them to rotate and, therefore, no need for a counter arises.

A stepper motors have also generally some disadvantages as

  • high price,
  • high energy requirements,
  • lower angular velocity.
Stepper motors are generally quite expensive. I could say that they are more expensive than other DC-motors, which is caused by their different construction. Nevertheless, the construction allows them to rotate their rotors to a certain orientation and remain in it due to additional wires built-in the motors (e.g., a 4-phase stepper motor can orient its rotor along four different orientations).

The energy requirements are given by the fact, that the motor has to have enough power to rotate its rotor from one orientation to the next and be able to stop there. This requires a lot of power and all the stepper motors drain more than 1A current. We should also note that the stepper motors need also energy to be locked in one orientation, otherwise a turned-off motor can rotate freely limited only by its inner friction.

The low angular velocity is a trade-off for the high precision control over the motors' rotation and we have to accept it. Nearly always are even the built-in gearboxes attached to the stepper motors intended to decrease the angular velocity and increase the torque.

In order to overcome most of the issues, I decided for affordable 4-phase stepper motors BYJ48. These motors can be ordered along with driving boards ULN2003 for a very low price on Ebay even with free shipping. The relatively low energy drain of 1A is also advantageous, since it allows the robot to run approximately for one hour (using batteries of capacity 2800mAh).

Technical details about the stepper motor BYJ48 can be found on this datasheet and details about the driver ULN2003 on this datasheet.

If you are interested into more details, I would like to refer to a thoroughgoing tutorial on using BYJ48 and ULN2003 with Arduino on The basics regarding the connections are the same for Arduino and Raspberry Pi. Thanks to the properties of the driver board ULN2003 you can use the board the same way for Arduino's 5V GPIOs and Raspberry Pi's 3.3V GPIOs without having to convert the logical output of the computer boards to one certain value. The only difference regards the programming language which will we cover later in chapter 3.

Wi-Fi module Tenda W311U+

I wanted my robot to be an autonomous device with its own Wi-Fi network allowing other devices (e.g., notebooks or cellphones) to connect to it and share data. For that reason, it was clear that I needed an access point and, since this is not a standard feature by the present smartphones, I decided the robot itself to become a Wi-Fi router with the access point feature.

Due to the Linux operating on-board computer Raspberry Pi, it seemed to be fairly easy to implement such function. To be honest, it is easy, if you know your way with networks management in Linux (especially in Debian). If you do not, the things get little more complicated.

Therefore, I wrote some easy scripts and files with settings to help you to set-up your own Wi-Fi network basically in no time. You can find them in section Setting up the network.

I decided for Tenda W311U+ because of its relatively small size, which can be even decreased due to its detachable antenna. Moreover, support for Linux operation systems was also an essential criterion. Before buying any access point router device, I recommend you to check on the Internet, weather this particular device supports Linux naturally and if it really obtains the access point feature (because not all Wi-Fi USB-sticks do!), which saves a lot of troubles later.

The technical details about the Tenda W311U+ can be found in the datasheet.

Blue Seal Project created by Jiří Daněk (2013-2016)