Category Archives: TypeBot

Dubious advisor | Typebot

Dubious Advisor is an early prototype for a typing robot. It is voice-activated and responds to speech and questions by offering dubious advice. Similar to gag gifts such as a Magic 8 ball, it is especially handy for the indecisive, but downsides may include sarcasm and inaccuracy.

Interface and Context

I felt that a voice sensor would make the typebot most ‘human’. As I didn’t have a voice sensor at hand, I accessed the in-built microphone using Max to send data to the arduino. Max would sense if there was a sustained noise (i.e. someone talking or asking the typebot a question). If a sustained silence followed (user is done asking the question), Max would generate a random value to the Arduino and trigger one of the pre-programmed answers. This wouldn’t work as a fully functioning device in different environments but was suitable for the prototype stage!

This typebot has 5 different responses to yes-no type questions. It isn’t actually responding to specific questions but we users suspend our disbelief and buy in to the context.



Parts made using lasercut and MDF!

Panning motor secured to wooden blocks which were then secured to the base. Shaved of part of the cube for wiring. The base was added so the typebot wouldn’t fall back on itself because of the momentum. The laptop is placed on top of the base, so it’s weight would make the structure stable.

The design functioned well  until I started programming the individual alphabets. Although reinforced at 4 points, the disk and panning motor were not firm enough to support the torque from the motor sitting above it. When the ‘finger’ hit the keys, instead of depressing it and typing the letter, the typebot tilted backwards.

To combat this, I removed the disk and attached the ‘elbow’ motor directly onto the panning motor. This made the arm more solid and keys could be triggered. An unforeseen issue that would only have been discovered through execution!

Using the bottom Z-M row as perpendicular to the robotic arm, I calculated the positions for all alphabets and space and enter. Although I started by estimating all the 3 angle inputs for each letter, I soon found out that was impractical for this design. Instead, I estimated the ‘coordinates’ using the extreme values and midpoint of each row. I expected the angle increments between each key to be linear however that also wasn’t the case! I could then calibrated the values from these estimates.