RPi Motor Driver Board
| ||
Introduction
Raspberry Pi Expansion Board, DC Motor / Stepper Motor Driver
More |
Interface definitions
Interface | wiringPi | BCM |
---|---|---|
M1 | P28 | 20 |
M2 | P29 | 21 |
PWMA | P25 | 26 |
M3 | P22 | 6 |
M4 | P23 | 13 |
PWMB | P26 | 12 |
M1 and M2 are connected to the right motor, while M3 and M4 are connected to the left motor. PWMA and PWMB are output enable pins, active high enable. When they are driven to high level, the PWM pulse will be outputted from M1, M2, M3 and M4, so as to control the speed of the robot.
Control work
M1 | M2 | M3 | M4 | Descriptions |
---|---|---|---|---|
1 | 0 | 1 | 0 | When the motors rotate forwards, the robot goes straight |
0 | 1 | 0 | 1 | When the motors rotate backwards, the robot draws back |
0 | 0 | 1 | 0 | When the right motor stops and left motor rotates forwards, the robot turns right |
1 | 0 | 0 | 0 | When the left motor stops and right motor rotates forwards, the robot turns left |
0 | 0 | 0 | 0 | When the motors stop, the robot stops |
Examples
There are two examples for this module, one is for infrared remote control, and the other is for website remote control with real-time monitor via a Raspberry Pi camera. (Notes: The chassis and the camera are not provided with the module, and have to be purchased separately.)
The examples demonstrated in the section below are available from here. To follow along with the examples, you just need to extract the relative file's contents into a folder under the directory of /home/pi in the Raspbian system. (Of course, you should copy them into the Raspberry Pi via your U disk first.)
Infrared remote control
This test demonstrates how to remote control the robot with an infrared remote controller. The pulse signal from the infrared remote controller complies with the NEC standard. The infrared remote receiver outputs the pulse to Pin 18 of the BCM after the relative signal is received. Then, the Raspberry Pi reads the pulse from Pin 18 and decodes it, to control the corresponding motor. For more detailed information, please refer to the source code of the example.
Infrared NEC protocol coding description
Data format: Address, ~(Address), Command, ~(Command)
~(Address): bit-wise complement of Address. ~(Command): bit-wise complement of Command
Both address and command are in a format of 8 bits, so a complete signal is 32 bits.
This example is based on the Python library, which has been in the latest Raspbian system. However, if there is any error occurs when running the example, you should install the Python library manually. In case the example is unable to be performed after installing the library, you can try to apply the command chmod +x filename
to grant the program the executable permission.
Enter the Linux terminal, and input the following command:
sudo apt-get install p7zip wget https://files.waveshare.com/upload/9/96/RPi-Motor-Driver-Board-Demo-Code.tar.gz tar xzvf RPi-Motor-Driver-Board-Demo-Code.tar.gz sudo chmod 777 -R RPi-Motor-Driver-Board-Demo-Code cd ~/RPi-Motor-Driver-Board-Demo-Code/python sudo python motor.py
Expected result: Pressing the keyboard of the infrared remote controller can control the robot. The key 2 is for go straight, 8 for drawback, 4 for turn left, 6 for turn right, and 5 for stop. The keys – and + are speed control keys. (Notes: Since the keyboard coding varies from different infrared remote controllers, you may need to modify the program as required.)
Resources
Support
Technical Support
If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)