P.E.T : Personal Easy Transporter

Introduction: P.E.T : Personal Easy Transporter

About: DIY Blog/Website: http://hassanulmakers.wordpress.com

This project is done by Muhammad Hassanul from Singapore Polytechnic, with Mr Teo Shin Jen as my project supervisor/advisor.

The P.E.T is an open source multi-use personal urban transporter, designed to be used for commuting on sidewalks and for connecting the last mile between the MRT Train Station to home. It has a small size which makes it suitable being brought into trains. The benefit of it is that: It is cheap, easy to build, highly adaptable to any spare parts the end user has, small footprint, and relatively acceptable travelling speed.

What its made of
It is made of a pair of repurposed car wiper motors recycled from a previous polytechnic final-year project, bolted to a piece of 40 x 45 cm plywood. An Arduino Uno receiving commands from an app on an Android Smartphone through the HC-06 Bluetooth module is the brain of the whole transporter. It also gives commands to the Sabertooth Motor Controller through Serial UART. The app is readily available on the Google Play Store here. The P.E.T is powered by a rechargeable 24V LiFePO4 battery also recycled from a previous project.

The user can choose the panel size, motor, battery and motor driver.

For example, the battery I'm using is very expensive as it is designed for very high current draw devices like electric bikes.The user can switch the batteries for one that is cheaper like an array 12V/24V NiMh/LiPo/SLA battery. I had it salvaged from a previous polytechnic project.

For the motor driver, I used the sabertooth 2X25A V2 motor driver which costs about $125. This was also salvaged from a previous school project, so I got it for free. It can drive up to 24A at 30V which is overkill. One motor only draws about max 2 amps at the highest speed, so 2 motors equate to about 4 amps. Another alternative for this is to use a power MOSFET such as a IRF520/540 with a heatsink and regulate the speed using PWM.

For the motor, an alternative would be a bicycle motor. Or you could just go to a car scrapyard and get some windshield wiper motors

Why build it?

1. The P.E.T is multi-purpose. It can be used as a personal tranporter, a remote controlled 'Trolley' to carry heavy items, or a remote controlled robot.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Parts List

1 x Plywood (Cut according to desired size) I cut mine to 40cm X 45cm

2 x Car Wiper Motor with mount

1 x Arduino Uno

1 x Motor Driver (Use a motor driver that can handle up to 6A) or a Power MOSFET IRF540 or a Sabertooth 2X5 regenerative motor driver

1 x HC06/HC05 Bluetooth Module (Preferably HC06)

Batteries - I used a 24V LiFePO4 battery pack. I recommend using a SLA (Sealed Lead Acid) battery as they are quite cheap. You can connect 2 in series to get 24V if you want higher speed.

Battery charger for the specific battery that you're using

Wires - Try to use 24AWG wires and above for the motor.

Crimp Connectors (Fork,Ring,Push On) for connecting motor to motor driver

Step 2: Testing Everything Out

The first thing to do is to test out everything first. The arduino is connected to a breadboard which has the HC-06 Bluetooth module and to the sabertooth motor driver with 24V powering the motor driver. Solder/Crimp fork and push on connectors for easy disconnecting/connecting of the motors. Remember to use sufficiently thick wires. The program for the arduino can be downloaded here. What I did was to just connect the motors directly to the power supply. When everything works, its time to try to interface the motor to the arduino through the motor driver. If you're using the sabertooth motor driver, I have written a simple arduino code for it. Use Final3.ino If you use a power MOSFET, you would have to modify the code to output PWM analogWrite to the MOSFET. If everything is ok, move on to the next step.

Motor Driver Vin -> + 24V/+12V

Motor Driver Ground -> Arduino Ground and Power Supply/Battery Ground

Motor Driver 5V output (If present, if not connect arduino to USB) -> Arduino Vin

Arduino Pin 1 -> Motor Driver S1

Arduino Pin 2 and 3 -> Bluetooth Tx and Rx to Arduino

Arduino 5V and Ground -> Bluetooth Vcc and Ground

Note: If you're using the same Motor driver as me, I have set the jumpers as:

1 - Off

2 - On

3 - On (For lithium battery protection, only if you're using Lithium batteries, otherwise, set this to off)

4 - On

5 - Off

6 - On

Follow the instructions of the respective motor driver you're using for more info

Edit: the above is incorrect. Use the config below.
1 - up
2 - down
3 - up
4 - down
5 - up
6 - up
This works for me so you might want to try this too if the above doesn't work.

Step 3: Layout

The second thing to do is to think of the layout, how everything is mounted to the plywood. Then measure the total size. I chose the wheels to be flush/’hidden’ within the plywood so as not to hit other surrounding things easily. Use a pencil and draw guide lines and circles for the holes that needs to be drilled.

Step 4: Cutting and Drilling the Plywood

The next thing to do is to cut the plywood to size. I had it cut to 40 X 45 cm. Using an automatic hand jigsaw, it was cut from a larger piece of plywood. Then, draw guide lines for drilling the mounting holes. Before drilling, make sure that the mounting holes align with the markings. Double check! Using a hand drill, with a piece of scrap wood underneath, drill the holes needed. I used a 8mm drill bit as the bolts used are M8, giving it a tight fit. Screw a nut on the other side, tight but not so tight that it will crack the plywood. After that, mark and drill the holes for the arduino, HC06/05 and the motor driver.

Step 5: Screwing Everything In

Using an appropriate length screw size, screw the motor bracket to the plywood. As mine is a hexagonal shaped head, I used a spanner to tighten in. Insert a nut on the other end, if available.

Next, mark out the holes to mount the Arduino Uno, motor driver and battery. Drill the holes for the Arduino and motor driver, but using a smaller bit (1 mm down) than the required hole. As for the battery, I used a bit size that fits the cable tie, which is what I am going to use to mount the battery because it did not have any mounting hole.

Use self tapping screws for all the electronics.

As for the battery, I simply used cable ties to secure it as the battery does not have any mounting hole

Step 6: Wire Connections

The battery I'm using has an Anderson Powerpole connector, so I used a fork adapter to connect the battery to the motor driver. For the motors, I used a push on crimp connector and a fork connector on the motor driver side. As for the arduino connections, I simply used individual solid core wires into the arduino, although soldering headers to the wires would be better as the wires kept coming out.

For convenience, you might also want to connect a switch between the battery and the motor driver's input.

Step 7: Android App

As for the app, I used Andi.co's App 'Arduino Bluetooth RC Car'. The app can be downloaded from the link below. The app is originally used for controlling RC-sized cars, but it'll work well for our purposes. You can download it here.

Once installed, enable bluetooth on your android device, and then connect to your HC06. It should show as HC06. The default password is 1234. Consult the manual/datasheet if you're using a different bluetooth module for the default password and pinouts. Open up the app, then select the gear icon. Scroll down, make sure that 'Continuous Stream (every 50ms)' is ticked. Below that is all the commands that the app will send for your reference in case you're writing your own Arduino code.

Press forward and both motor should spin in the same direction. Do the same for the left and right. 1 motor should turn while the other stopped. 1 motor should also spin slower/faster than the other when you press forward/backwards and left/right at the same time. Adjust the polarity of the motors accordingly. Remember to bring up the speed slider if your motors do not spin. You also might want to adjust the turning radius by adding/subtracting the numbers that I added/subtracted behind 'velocity' in the arduino sketch. I find 30 to be the best for mine.

The App can be downloaded here

I may consider developing my own android app in the future using MIT's AppInventor 2 as I have just started learning it.

Step 8: Others/Improvements

Right now, the whole P.E.T is running on 2 wheels and it is sort of using the frame as the 3rd wheel. In the future, I plan to put a caster wheel in front so that it will balance correctly.

An improvement I would like to do is to reduce the overall weight of it. It has quite a hefty weight due to mainly the car wiper motors being mounted on a solid aluminium block. In the future, I would like to change those out to something like wood or a smaller aluminium frame which is much lighter.

Another improvement that I would like to make is to design and 3D print a bracket to mount the battery in. The cable tie method is unsightly and not very secure.

Visit my website at hassanulmakers.wordpress.com for more projects!

Please vote for me in the move it contest. I would appreciate if you could vote for me and leave some constructive feedback. Thank you for taking your time to read this instructable!

Move It

Participated in the
Move It

Be the First to Share


    • Backyard Contest

      Backyard Contest
    • Silly Hats Speed Challenge

      Silly Hats Speed Challenge
    • Finish It Already Speed Challenge

      Finish It Already Speed Challenge

    12 Discussions


    3 years ago

    Hallo Hassanul,

    Ik ben bezig om een onderstel van een rolstoel te bedienen met bluetooth + sabertooth 32. nu heb ik jouw software geupload naar arduino uno.

    de upload functioneerd prima maar de wielen draaien alle kanten op als ik de bluetooth inschakel. wat doe ik niet goed? ik kan hem ook niet bedienen met de bluetooth app. bluetooth app is wel verbonden.

    kun jij mij verder helpen !

    hartelijk dank


    Reply 3 years ago

    Sorry I couldn't understand, had to use a translator. :)

    Anyways, are you using the same app as me? Have you set the settings as I have indicated above in the app? Also, check all the connections are correct (especially the TX RX wires to the bluetooth module). Check the jumper is set to serial mode.

    Alternatively, you can also try out the sweep/simpleexample example in the Arduino IDE examples to see if your motor turns correctly. If it does, it might be on the app side that is causing problems

    Let me know if you need more help

    Cheers :)


    3 years ago

    hai iam using your program to let drive my wheels.

    the problem is that i get a code i cannot upload your program because ofsotware serial does not name a type exit status 1 error ST was not declared in this scope.

    can you tell me hoe to fix it.


    Reply 3 years ago

    Thats because you have to install the sabertooth library first before uploading. Try again and tell me if you still have problems. Cheers


    5 years ago on Introduction

    Very cool project tutorial!

    Unfortunately my motors are not turning :(

    I use 50Nm wheelchair motors (dynamic wmt 90104), and if I switch to OFF the 6th DIP switch of sabertooth 2x25, the motors keep turning (means no signal from bluetooth module?)...

    I already used my HC-06 in other projects, and it is working well.

    What could be the problem?

    (I also increased the value 30 in the code to 160 as you suggested.)

    please help :)


    Reply 5 years ago

    Also, I realised that I have written the wrong jumper config on the instructable. It should be Up Down Up Down Up Up. Tell me if it works


    Reply 5 years ago on Introduction

    Thanks for your answer!

    I already realized that the 3rd DIP switch was in wrong position, so I changed it yesterday, before the first try.

    So the 3rd is up now -> it means you are not using lithium battery anymore?

    I use the same app, I use your code on Arduino, and with 50ms refresh.

    If I switch the 6th DIP switch down (disable timeout), my motors are working continuously, BUT if the 6th is up, no movement at all. Nothing.

    I can try it tomorrow, I will let you know!

    Thanks again!


    Reply 5 years ago on Introduction

    Can you also try out the updated code? It is labeled as final3.ino . Tell me if it works


    Reply 5 years ago on Introduction

    Hello Hassanul!

    I tried with your new code and new dip switch positions, and it is WORKING!
    Thank you VERY much for your help!

    Good day sir!


    Reply 5 years ago on Introduction

    You're welcomed!

    I am happy to know that it worked for you. Do you have a picture of your transporter? I am curious to see how does yours look like.

    Hassanul :)


    Reply 4 years ago on Introduction

    Hello Hassanul,

    unfortunately not yet finished, only the motors and controllers are what I have. I will post it in 2 months, after I created the chassis :)



    Reply 5 years ago

    If you read up the sabertooth 2x25 manual, it says that the sabertooth will continue to execute the last command that was given to it. It should continue turning until a stop command is given. Also, I would like to know if you're using the same Android app as mine?
    Do the motors start turning even when a command was not given to the HC05?