Learn ESP32, ESP8266, Arduino, and Raspberry Pi

Arduino guide of 28 BYJ – 48 Stepper Motor with LEDs, LCD1602 I2C, RFID RC522 and piezo buzzer

We will learn how to control 28 BYJ – 48 Stepper Motor with LEDs, LCD1602 I2C, RFID RC522,piezo buzzer and Arduino board.

Tag: Project 004e 28 BYJ – 48 Stepper Motor with LEDs, LCD1602 I2C, RFID RC522 and piezo buzzer.

Project resources

Sketch: sketch;


  • The StepperSPI and Wire library included in Adruino IDE program which installed in your PC.. You can also download it – libraries;
  • You will need to unzip and add the RFID library to libraries in your PC, for example C:\Users\toshiba\Documents\Arduino\libraries – libraries;
  • pitches.h file contains all the pitch values for typical notes. For example, NOTE_C4 is middle C. NOTE_FS4 is F sharp, and so forth. This note table was originally written by Brett Hagman, on whose work the tone() command was based. You may find it useful for whenever you want to make musical notes.File should be in the same directory with sketch.pitches.h
  • I have used the library – which I downloaded, unzipped, changed the name of folder to LiquidCristal and added to libraries in my PC, for example C:\Users\toshiba\Documents\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC. If you have LiquidCristal folder in this location already – delete this folder and copy folder, which was made by you, to this location.

Other attachments: None.

Parts required

In this project, you needed these parts :

1.Aruduino Uno R3 (you can also use the other version of Arduino)

Aruduino Uno R3

2.28 BYJ 48 Stepper Motor

28 BYJ 48 Stepper Motor

3.Arduino IDE ( you can download it from here  )

4.Jumper cables

jumper cables

5.ULN2003 stepper motor driver board

ULN2003 stepper motor driver board

6. LEDs 3 pcs (1 Blue, 1 Green, 1 Red)


7. Resistors 3 pcs (220 Om each)


8. Breadboard


9.LCD1602 I2C module

LCD1602 I2C module

10.MFRC522 13.56Mhz IC or RFID RC522 module

MFRC522 13.56Mhz IC or RFID RC522 module

11.Piezo buzzer

Piezo buzzer

Understanding the stepper motors

See more details here. We will use unipolar stepper motor 28BYJ-48 for this project.

There are many types of drivers – L293, ULN2003, A3967SLB and more. 

The 28BYJ-48 even comes with breakout using ULN2003 as a motor driver chip.

Understanding LCD 1602 module

 See more details here – check this project

Understanding RFID RC522 module

 See more details here.

Understanding the piezo buzzer

Buzzers can be found in alarm devices, computers, timers and confirmation of user input such as a mouse click or keystroke.

Buzzers can be categorized as active buzzers and passive ones.

Place the pins of two buzzers face up and you can see the one with a green circuit board is a passive buzzer, while the other with a black tape, instead of a board, is an active buzzer, as shown below.

piezo buzzer

An active buzzer has a built-in oscillating source, so it will make sounds when electrified. But a passive buzzer does not have such source, so it will not beep if DC signals are used; instead, you need to use square waves whose frequency is between 2K and 5K to drive it. The active buzzer is often more expensive than the passive one because of multiple built-in oscillating circuits.

piezo buzzer

See piezo buzzers data sheets here. Don’t forget to use a current-limiting resistor.

Signals and contacts stepper motor, ULN2003 module, LEDs, LCD 1602 module

Signals and connections of stepper motor, ULN2003 module, LEDs  you can find here.

Signals and connections of LCD1602 module you can find here.

Signals and connections of RFID RC522 module you can find here.

Signals and connections of active piezo buzzer

Active piezo buzzer pin marked with (+) sign should be connected to Arduino Uno board digital pin which sends a signal, the other pin of active piezo buzzer should be connected to Arduino Uno board GND.


The power consumption of the motor is around 240mA. Because the motor draws too much power, it is best to power it directly from an external 5V power supply rather than drawing that power from the Arduino.

28 BYJ - 48 Stepper Motor with LEDs, LCD1602 I2C, RFID RC522,piezo buzzer and Arduino board
28 BYJ - 48 Stepper Motor with LEDs, LCD1602 I2C, RFID RC522,piezo buzzer and Arduino board

See the video here:

Step by Step instruction

  1. Do wiring.
  2. Open Arduino IDE.
  3. Plug your Arduino Uno board into your PC USB port.
  4. Select the correct board and COM port in the Arduino IDE.
  5. Find your I2C address. Each device has an I2C address that it uses to  accept commands or send messages. Load the sketch over at and follow the instructions to use it.  By opening up the Serial monitor window after you upload the sketch, Arduino will scan the address range looking for a reply.  Even though the documentation said it was 0x27, this scanner can detect different (in my case 0x3F)
  6. Modify the sketch in attachments above (you can use the sketch below too): the line LiquidCrystal_I2C lcd (0x 3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE) (See part marked bold)
  7. You must take something in consider: 28BYJ-48 has a gear ratio of 64 and stride angle 5.625 so this motor has a 4096 Steps. Number of Steps in one revolution= 360/stride angle=360/5.625=64. Steps =Number of steps in One Revolution * Gear ratio. Steps= (360/5.625)*64 = 64 * 64 =4096 – this value will substitute it in the Arduino sketch. 
  8. For Adafruit Stepper Motor the stride angle 7.5 and gear ratio is 16. So number of steps in 1 revolution will be : steps in One Revolution  = 360 / 7.5 = 48. Steps= 48 * 16 = 768. It will be different depending on what motor you are using so check the datasheet for your stepper motor to calibrate these values.
  9. Open up serial monitor and set your baud to 9600 baud.
  10. Scan your card, you will see a bunch of numbers pop out.
  11. Copy only the number and paste it to the column after “int cards[][5] = { ” – replace with your card number or numbers, space them with ‘,’ for example my cards were: 0 64 134 25 223}. You can add many cards here. 
  12. Verify and upload the the sketch to your Arduino Uno.

Wrapping up

We have learnt how to control 28 BYJ – 48 Stepper Motor with LEDs, LCD1602 I2C, RFID RC522, piezo buzzer and Arduino board.

Check for more DIY projects here.

Thank you for reading and supporting us.

Check for more DIY projects on and!

If you are looking for high quality PCBs PCBWay is the best choice: