Sem prj: Tele-Bonsai

One-liner concept

Tele-bonsai is a tele-operation machine that will allow a bonsai master to remotely help you tailor-cut your beloved bonsai from anywhere in the world.

CAD time !

Yes, it is very comforting to design and construct everything on the computer. Laser-cutting was the tool of choice and I had plenty of throwaway 2mm acrylic boards, so I worked my design around that. Though it wasn’t as convenient as being able to 3d print ‘any’ shape, I find that it was a good practice for designing modular small parts that can fit together to make a larger shape. And my recent foray into cardboard design helped somewhere too. CAD also allowed me to play with different ideas without spending any time and money before committing, unlike relationships in real life :p

Parts assembly

epoxy nut into shears for clamping, and yes it’s a real japan made bonsai shears ($18 a pop) !

Locking the (bonsai) shears to the shaft is particularly challenging, I tried a variety of methods, but finally stuck to using epoxy and sticking a nut inside a hole inside the shear.

lazy susan as base

lazy susan with internal gears

Next up was the lazy susan for the rotating base. This went pretty smoothly; I chose an internal gear of about 6-ish:8 ratio to reduce the amount of degrees lost as I am using a servo and would like to rotate at least 120 degrees. Originally planned for 2 pieces of 3+mm material, but ended up using 5 pieces for the robotic side’s base.

Encoder with magnet assembly

I have chosen to use magnetic encoders(AS5600) for this project as they weigh practically close to nothing and have ‘infinite’ resolution, but it turns out to be quite a bit finicky then expected and proved to be quite a problem as the premise of tele-operation relies on accurate sensing. Hardware encoders should have been used, though at the expense of weight and footprint, but would most likely be much more reliable. I am not absolutely sure but it seems the noise ripple from the power supply for the servos messes the signal significantly, though the effect is less pronounced in the wee hours(12am – 1.30am). But still its very accurate for what it costs and its size. The ‘spacers’ are for fine-tuning the spacing between the diametric magnet and the encoder.

gear assembly for shears frame

The gear assembly is quite hard to lock onto the rotating shaft, and it seemed to slide abit, though the frame didn’t quite make it to the final; more on that later.

Test assembly


testing with safety lines

testing with safety lines

Moment of truth!

First off, I was quite pleasantly surprised to be able to assemble everything without too much drama; CAD designs sometimes fall into the pitfall of being impossible to assemble.

However, I must admit, my heart sank as I came to the conclusion that the motors won’t be able to support the frame, but lesson learnt. The three joints in particular are not favorable; the middle one had to support a great deal of weight and I burnt up a beefy 20kg/cm rated servo for that…

testing with safety lines


I tried to shortening the distance between the servos in hopes of them having more torque to overcome the heavy frame, but to no avail. Oh well..

final controller setup

Wiring & electronics

final wiring

controls for debug

It was a good time to practise tidy wiring, and I did just that. It’s oddly satisfying to spend(waste) the time to wire nicely. But it does help; I only had to troubleshoot 2 wrongly placed wires for a whole day of wiring. And lots of custom wiring splicing as well. It was a welcome break from the construction work.

I used a hardware encoder to determine all the limits for each of the servos to prevent mishap before powering up anything. The magnetic encoders took quite a while to figure out its quirks, and I should probably have done much more extensive testing before committing to this approach.

The coding was pretty straightforward, the i2c did throw me off a bit for a couple of hours; initially I couldn’t figure out why the 16 channel PWM controller wasn’t detected when I combined the circuit with the magnetic encoders(using a tca9548a i2c multiplexer), and realised I had to connect it to one of the channels on the multiplexer instead of running it in parallel. It was a rather silly mistake on hindsight. But it is certainly easier than having 2 Arduinos sending data back and forth.


Final assembly

After much deliberation, I decided to laser-cut a cardboard replica of the frame for the robot side, just for visualisation sake.

Yes, cardboard .. better than nothing though …

Final demo

Not available yet, trying to pick a good timing(less people on campus = less noise in the power lines?) to shoot a video, or figure out how to use a battery pack to power the servos … stay tuned … ?

proposals for sem prj



Idea 2: the bonsai master tele machine

what: a tele-presence machine that allows a bonsai master to physically manipulate a bonsai remotely.

why: you might have difficulty hiring a bonsai master in your area to help you with your new expensive hobby.


  • tabletop mechanism for bonsai (wk1)
  • remote hand (wk1-4)
  • hand controller (wk1-4)
  • camera (wk4/5)


Idea 1:  cry baby

what: a crying ‘baby’ that only stops upon encountering solar power/movement(lots of)

why: to encourage physical movement and getting out in the sun.

Idea 3: peace-seeker

what: a machine that helps guide you towards a solidarity and contemplative state.

why & how: could be useful in a (future) highly contagious pandemic situation. all we need is a direction indicator to take us on the ‘right’ path.


Sketch – Gesture

this is a 2-user device, one set for each. The premise: rather than the tedious process of picking up your mobile and texting your friend or loved one, you can now scribble a gesture on ur computer and give him/her a piece of your mind. The led strip is articulated by a simple robot snake(no good reason for making so) to form specific shapes, for a grand total of 7. i try to match the led animation and colors appropriately for the given gesture as well.

boxed ones are the final shapes i used for the snake robot

initially i had tried with hand gestures coupled with handOSC and wekinator, but the recognition proved unreliable. Leapmotion didn’t fare better due most probably to information-overload(yes its partly my fault too), but curiously with the mouse input example from wekinator and a few small tweaks, i was able to get reliable results with only 2-3 samples for each mouse-written gesture.

Sketch 1: Covid Mat

A picnic mat that keeps track of how many people is within the mat, and shows green when max capacity hasn’t been reached, and blue otherwise. The entrance also prevents entry after max capacity is reached.

Sketches 1A

Sketch 1

Use custom zigsim touch cards for safe entry to automatically light up the correct seats . After seated, customers can use the provided phone and corresponding touch cards to make different requests:

  • like praise the chef for food
  • ask for table service
  • for bill etc

when requests are made, the lights will turn to different colour combinations so that waiters can respond accordingly

led strips on floor can direct customers to enter and exit.


Sketch 2

Roller coasting at home with family and friends. Basically a seat on gyro structure, with ropes for friends to pull. Phone with zigsim positioned around seat area that detects orientation and translates that to corresponding LED strips. LED strips are in chasing lights configuration, implying speed and movement. Add-ons would be a mounted fan in front of user


Sketch 3

Neck gadget senses surrounding crowd concentration, and if its not ideal, bracelet will start pulsating in red, else green or blue.


Sketch 4

Same neck gadget, but this time output is to a shirt with LED signs, to ward people off.


Sketch 5

Earring to tell people your temperature, thus serving as a warning/reassurance to others. A thermostat is stuck into ear, and LED strip hanging from ear provides color indication of bodily temperature.


Sketch 6

The safe distancing picnic mat. When people approach, the lights surrounding will start to pulsate faster in red, otherwise, it will be yellow and in slow pulses.