Month: July 2015

Personal Transporter V2

Project Advisor : Teo Shin Jen ( and funded by Singapore Polytechnic

If you have not read the article on the P.E.T V1, read here.

My first version of the personal transporter was really bulky, heavy and quite slow. I can literally workout with that thing. It was made of recycled parts from previous projects, so it wasn’t really a good one and I have very little control over the size and customisability of the parts. The 24Ah LiFePO4 battery is too overkill and too heavy. The Sabertooth is too overkill as it is rated at 25A and the motor mount is too heavy as it is made of a solid aluminium block. So I am going make a new one from scratch using brand new parts, so that I can customise everything. It is going be smaller, lighter and has faster speed.


For the overall size, it will be about half as much as the current P.E.T. As for the motors, I am going to use a geared motor which is much lighter and smaller than the wiper motor. For the wheels, I am going to use 100mm scooter wheels that are going to be driven by the motors. It is going to be mounted on a bearing. As the wheels have a 22mm diameter mounting hole, I am going to use pololu’s 6mm scooter wheel adapter. Both of the motors will be driven by a RoboClaw 2x15A motor driver, which is cheaper than the sabertooth. All of these will be powered by a 5000mAh 4S 14.8V LiPo battery. Lastly, there will be a handle added to the PT.

Where I got my parts:

Motors – Ebay

Wheels – Ebay

Batteries and charger accessories –

Motor Driver and scooter wheel adapters – Robot R Us (Singapore – based online robot shop)

Coupling, bearing holders, shaft – Misumi

Plywood, PVC pipes and pipe joints – Local hardware shop


The motors are the most important thing in this project. I used a 160 rpm worm gear motor that has 10kgcm of torque which should be enough for this application. At no load, they take about 1A of current. They cost about SGD55/USD41 each. You can buy it here. If you’re choosing other motors, aim for one that has high torque (~10kgcm or higher).


As for the handle, I thought of using aluminium extrusions but they are quite expensive. I then decided to use PVC pipes with a T-joint at the top to make it like a handle. I used a 32mm diameter one, but I’m not sure why its labeled as 25mm. Its cheap though, so I’m not complaining. I paid SGD 4.20 for about 2 meters of the 32mm pipe.


I used 100mm scooter wheels as I thought that they would give me a balance between moderate speed and high torque. Scooter wheels also have high traction against the ground. Most of them have bearings installed in them, so try to get one that doesn’t have the bearings installed as you would have to knock them out, possibly damaging them in the process. I bought this particular one. They have a 22mm bore hole after the bearings are removed, so I used pololu’s scooter wheel adapter. I used the one with 6mm bore. You can get them here or if you’re in Singapore, here.

Batteries and Accessories

I bought the LiPo batteries from , as they are priced reasonable and has fast delivery service. I bought a hard-cased Turnigy 5000mAh 4S battery. It has a rating of 20C (which means it can discharge at a rate of 20 times its capacity i.e. 20C x 5000mA = 100A). They are quite cheap, at USD25.85/SGD35, a price that other shops definitely can’t beat. They are in fact genuine.

I also bought a Hobbyking ECO6 50W Balance charger for USD19/SGD25. It is a DC charger, so I also bought a hobbyking 60W 15V Switchmode power supply for it. Along with that, I also bought some adapters for the 4mm HXT bullet connector for the battery, 2 battery voltage alarm/checker and velcro straps for the battery.

Motor Driver

Previously I used the Sabertooth 2X25 on the P.E.T. However, they are too overkill and quite expensive, although I got it for free. I decided to use Orion Robotics’s roboclaw 2x15A motor driver. It has regenerative braking, which means the kinetic energy from the spinning motors will be converted to electrical energy to charge the battery when it is braking/slowing, similar to how electric trains brake. This saves power as the battery does not have to be very large, allowing for extended range. It has a simple serial mode which I plan to use. In the future when I have extra time I might use the packet serial mode which can feedback to the arduino about motor voltages, battery voltages as well as have better control over the motors. You can buy it here or if you’re in Singapore, here. If you’re going for a cheaper one, you might want to consider getting Pololu’s Simple Motor Controller series or even use a simple MOSFET to control the motors using PWM.

Mounting Hardware

The wheels are direct-driven and have to be mounted on a mount. I originally wanted to use a pillow block but I could not find one with 6mm bore. I then thought of using a pillow block with plastic bearing but having limited experience of using plastic plain bearings (I only used it once), and I’m not sure whether it works for high load applications. I then decided to use a customisable bearing holder that has a 626 bearing(6mm bore) installed from misumi. Misumi does not sell to individual customers, they only sell to companies so I ordered them through my school.

As for mounting of the motors, I am planning to use steel 90° shelf mounting brackets. I will drill holes based on the spacings of the holes on the motor’s gearbox.

Fabrication of The Personal Transporter

(As for the fabrication part, my friend Max also helped me)

We started with cutting the plywood to a suitable size. Originally we thought of cutting it to 40cm x 30cm but it proves uncomfortable to stand with my feet so close together. I decided to cut it to 40cm x 40cm square, 5 cm smaller than the previous personal transporter.

20150617_131012_HDR Handle

As for the PVC pipes, my friend had a really awesome idea of storing the handle under the transporter when not in use. They would be secured to the plywood board using velcro straps. So we decided to cut the 1m pvc pipe into 30cm sections so they could fit below. Using straight joints, they could be combined into a 90cm handle. At first we thought of using a 3D printed mount to mount the handle to the wood, but 3D prints are not very strong so we decided to use a screwed coupler for the handle. We had to ‘mill’ a large hole in the wood to get in the screw coupler. Tedious, but works better than the 3D print mount.

For the mounting of the motor, we used the 90° angle bracket used for shelves. We counterbored holes for the M4 screw heads so they would not protrude out as that would look unsightly.



We spray painted both the plywood and handle so that it will look nicer and cleaner. For the handle, we used a matte silver colour to give it a metallic look and as for the wood we used dark grey so that it would not get look dirty easily. A few coats had to be given in order to hide the underlayer.


We used misumi’s bearing holder with a 626 bearing preinstalled. It is made of solid aluminium so it should be more than enough for a human’s weight. Similarly, we also counterbored holes on the plywood side so that the screw would not look unsightly.

Bearing Holder

The magic smoke of the motor driver

I was testing the battery with the motor driver at one time. The 5V BEC pin of the motor driver was connected to the Vin pin of the arduino as the 5V pin was used for the HC06 bluetooth. I unplugged the battery from the motor driver, and then inserted it in to the HXT 4mm to 2.1mm connector and then connected the 16V battery to the arduino, not realising the Vin pin is still connected to the 5V pin of the motor driver. The magic smoke was released, and that was the end for the motor driver. Luckily, upon further scrutiny, the MOSFETs look ok, but the 5V switching regulator has burned. I might be able to salvage it, but that will be in a future blog post. I had to use an old sabertooth 2×5 from another student’s project for now, although now I also have to add in a 7805 5V regulator as the sabertooth 2×5 can only supply 10mA for battery voltages above 12.6V.

Burned Motor DriverSabertooth 2X5A

Attaching Couplers to Motor Shafts


Completed P.E.T V2

Read Personal Transporter V2.5 here


Arduino Smartwatch

Project Supervisor : Teo Shin Jen

Over the last few years, various wearable technology have been created by various IT companies. VR headsets, smartwatches are some of the few examples. Smartwatches have become more and more popular as it provides the platform for the user to check on notifications on their phone without whipping out their phone. It has become a convenient gadget for a lot of people. Although more affordable models exist, what’s the fun of just buying one when you can make one for less than $40? Today I will be showing you how I made mine that connects to an Android Phone and shows SMS notifications and syncs time with an android smartphone.

Step 1: Parts needed:

1. 0.96″ Or 1.3″ SSD1306/SH1106 SPI/I2C 128×64 OLED Screen (From ebay)

2. An Arduino Pro Mini 3.3V with ATmega328P (From ebay)

3. An Arduino Uno or a TTL-Level 3.3V USB to Serial Converter (From ebay)

4. HC06/HC05 Bluetooth Module (I recommend using HC-06) (From ebay)

5. Wires (as small as possible. I used wire wrapping wires)

6. A small Li-Po battery below 500mAh (Choose according to your size preference, I used 600mAh) (From local shop)

7. Small Push Buttons

8. A TP4056 Li-Ion Battery Charging module (I recommend the one with the battery protection circuit.) (From ebay)

9. An Android Phone

If you need the ebay links don’t hesitate to comment below and I will add the links for you.


Step 2: Before we do anything, we must make sure that everything works by prototyping on the breadboard. I recommend using an Arduino Uno as it is more convenient when prototyping and similar to its mini counterpart, the Arduino pro mini, except it is 3.3V. If you’re using a bare HC05/HC06 without a breakout board, you should use resistors to step down the I/O voltage to 3.3V on the VCC and RX line of the Bluetooth module. (I recommend using 330 ohms and 1kohm. The centre pin between the 2 resistors is the step-downed voltage) Same for the OLED. However most SSD1306/SH1106 OLEDs are 5V tolerant. Check with the manufacturer/seller for more info. Breadboard CircuitArduino_Smartwatch_Schematic

Firstly, I planned the watch face using Adobe’s Illustrator. I made a new file with its width set to 128 px and height to 64px, representing each pixel on the OLED display. I then used the U8glib library to code the drawings on the OLED. At that time, I temporarily used the millis() function to increase the time from 0. Next was the menu system. I had originally planned to use 4 buttons for the watch (1 for next, 1 for previous, 1 for menu, 1 for select) but I figured out its too many. 3 would be enough. I combined the menu button into next and previous button. When both buttons are pressed, it would go to the menu. Similarly, I used Adobe Illustrator to plan the menu.

The menu system works based on another separate function. Once the user presses the select button, the function would return a number, for example ‘2’ would mean the user selected the apps menu. The void loop function would then run the app menu function. Next is to program the most important part of the watch, the bluetooth sync SMS and time sync capability. I actually developed the android app using MIT’s App Inventor 2 first before I start on the Arduino side. I will explain more on the app on the next section. For the SMS part, I did the coding on a separate program so as to make it easier and not confusing. After I have made it working, only then I would combine both of them together. Test the arduino program by pushing both buttons that are connected to pin 7 and 5. It should go on to a menu. Pin 4 is the select menu option. If it does, you have done the connection correctly.

Step 3: The Android App I used MIT’s App Inventor 2 to develop the app that interfaces with the watch as it only involves dragging and dropping blocks. I utilised the Texting and bluetoothClient modules. Basically how it works is that the texting component will receive and store the text message into a String variable. It will pass the variable to the bluetoothClient component which will affix a ‘2’ to the front of the string so that the arduino can identify that this string is a text message. As for the time sync function, I used the clock component to get the current time of the phone. It will then pass it to the bluetoothClient component which will then affix a ‘1’ to the front of the string so that the arduino can identify that it is a string of characters that represent time. Test the app by first installing it on your phone, and then connect to your HC05/06 by selecting connect and then selecting your HC05/06. Note: You have to pair your HC05/06 to your phone in your android settings menu for your phone before you can connect it in the app. Make sure your bluetooth is turned on. You can download the app (apk and .aia appInventor file) here App Inventor

Step 4: Soldering everything together

Firstly I removed the reset button on the pro mini as it might be accidentally pressed when the watch is assembled. Also, it is the tallest component on the pro mini. I heated up one of the pads and then used tweezers to lift the button up. Then I heated up the other side and lifted up the whole reset button.

The next thing I did was to remove the header pins on the OLED screen. The best way to remove it is to heat up one of the pins, and then slowly lift up the pin one by one when they become loose. After all of the pins are lifted, the plastic part of the header can then be lifted up easily. After that, I used short wire wrapping wires to solder. Remember, the objective is to use as little wire as possible as wires can.

Step 5: 3D printed casing + watch strap

I plan to use the ninjaflex flexible filament for the casing. My friend suggested that we print a small rectangular sample for the strap so that we can test the flexibility of the ninjaflex strap as this is our first time using it. Since it was recommended that the print speed for the ninjaflex filament set at 30mm/s, we had it set to 20mm/s, just to be cautious. We used the school’s Makerbot Replicator 2 with the spring loaded extruder. Originally the school’s makerbot had a plastic build platform, but then it was replaced with a glass one with flashforge’s pre cut print tape. There was a bit of imperfection on one side, but that is due to the unleveled build plate.


As for drawing of the casing, we at first modeled all the parts including the OLED, HC06, Pro mini and TP4056 charger board in CAD (Autodesk Inventor). Then we assembled it in CAD and then only we modeled the casing around it.

Arduino Code:

Android App (APK):



Current Prototype