More selected projects

Input Machine: Type-Writer

What would a typewriter in an alternate universe looks like, if it has been invented in a different way? With a solenoid-powered keyboard, a writing system as a display and an online chatbot as its brain, this piece is trying to treat both humans and machines as equal participants in a network where they are be equally seen as each other's input device, so as to explore the human-machine communication in an unconventional way.

produced by: Siyuan Wu



Input Machine: Type-Writer, measured 120*55*35 (core part), is an interactive computational installation art piece made for the Shivers exhibition. Technically, it consists of a single-board computer, an automatic keyboard, a customised drawing machine and a selenium web driver, to form the hardware and software of an intelligence typewriter. Conceptually, it focuses on new attempts on Human-Machine interaction communication or relationship. Interactively, it uses unconventional output methods to offer new interactive experiences, and has been specially modified for easier and more stable interaction during an exhibition.

  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image
Concept and background research

With the level of technology nowadays, more and more bionic fantasies are either been achieved or are just around the corner. However, while it is cool to have a humanlike voice assistant in your phone or have the Boston Dynamics ATLAS to deliver your parcel, does it really make the machines more comfortable to work with or interact with, or less because it is easier for us to notice what they are not yet capable of?

Inspired by a few concepts in New Materialism and Posthumanism, I tend to see the world as a network where humans and matter equally participate. It is more than reasonable for machines to be built on their own logic, which means different appearance, different structures, different thinking methods and different behaviour, whatever it is to make it easier and more efficiently for machines to get things done.

After the Digital Revolution, people has get used to reading outputs from screens or speakers, at the same time, integration has become the main trend of electronic products, which gradually makes machines look "intelligent". People are excited to see machines as a participator in the network, for example their colleague, friend or even partner. However, considering the fact that the machines are designed or invented to be used by human at the first place, their essence still resembles tools like the first stone blade.

Keyboards are probably one of the most frequently used devices nowadays. The Input Machine: Type-Writer benefits from the design of typewriter, the very first keyboard machine which is invent before the Digital Revolution. It reconstructed the way of communication between humans and machines by using the keyboard as both an input device and an output device, giving outputs (which is machine's input to human) via typing or writing, just like how humans give inputs (which is human's input to machine) to it.

Genco Gulan, Hello, 2015. I see it as a reverse of cyborg.

In the term of hardware, Input Machine: Type-Writer consists of:

    A single-board computer (Raspberry Pi 4B), which is connected to:
        a microcontroller (Arduino Mega), which is connected to:
            an automatic keyboard, which is made from:
                28 solenoids and the internal layer of a membrane keyboard and its original PCB board,
        another microcontroller (Arduino Uno) with a CNC shield, which is connected to:
            a customised drawing machine, which is made from:
                3 stepper motors, a servo, a pen,
        the PCB board of the automatic keyboard,
        an ultrasonic sensor,
    3D printed or laser cut parts.

In the term of software, Input Machine: Type-Writer is a python program running in the terminal window of Raspberry Pi. It uses:

    selenium web driver to connect to Replika web version,
    pyFirmata to control the 2 Arduinos, 
    GPIO pin to control the ultrasonic sensor.

The logic of the python program is:

All electronic parts can be easily removed from Input Machine: Type-Writer for reusing, as it uses structures rather than glue to connect parts when possible:

  • gallery-image
  • gallery-image

Considering the complexity of the solenoids' circuit, I use a keyboard testing program I wrote to check it from time to time during the exhibition.
The original space bar was too long that it could fall off if audience keep pressing it from the side, so I removed the shift mark on the right shift key and used that instead.
The original return key was too far away from the character keys, it is not only unnecessary but also would make the keyboard base too big for 3D printing, so I placed it on the quote key while replacing /usr/share/X11/xkb/keycodes/evdev with a customised one.

Future development

During the durability test of, I made the device send exactly what Replika said to it back to Replika. It turns out Replika became very flirty in minutes. After the conversation has been stuck in some obvious sexual innuendo for a while, a small window popped up, suggesting that Replika in "friend relationship" is unable to talk about adult topics so I should consider changing it to "romantic partner relationship", which cost 7.99 USD per month.

I have 2 guesses. One, Replika is preset to be flirty once the human it is talking to does not stop it. Two, as Replika learns from all conversations, if most of Replika's users are more likely to reply when it flirts, it could see it as a reward and has learnt to flirt more.

Whichever it is, it inspired me of a possible project. I may connect Replika to Bumble (a dating app, kind of like Tinder but has a web version) and see how it goes, or look into it to see if this has relationship with the gender of Replika and the user (I was testing on a female Replika as a male, while Replika has 3 gender options including non-binary).


Input Machine: Type-Writer did a great job during the exhibition. People showed great interest, while it worked perfectly for 5 days without any maintenance. However, there is one thing I've really struggled with: the speed. 

The speed is extremely important for Input Machine: Type-Writer, as audiences have to read the outputs from the keyboard, which is less convenient than reading directly from a screen, so if it is too slow audience might lost interest. The hard thing is the speed has to standing on the balanced point between:
    how fast can the Raspberry Pi drive the stepper motors of drawing machine?
    how fast can the stepper motors rotate without a disgusting sound?
    how complicated are the graphics drawn by the drawing machine?
    how fast can the keyboard type without making it difficult for non-native English speakers to read?

Direct at this problem, I have made several changes during the development. First, I simplified the the graphics drawn by the drawing machine to lines and dots. Second, I made keyboard types and drawing machine draws at the same time (originally they were two separated steps). I've also tested the speed of stepper motor, turns out the quickest it can do with a Raspberry Pi without noise is 0.00065 sec per step on the x axis, which is 6.5 times slower than it was on a MacBook. 

The only thing I didn't try is to change the way that the stepper motor drives the pen holder on x-axis. Currently I'm using a threaded rod, but a timing belt could allow the stepper motor to move the pen by a greater distance at the same rotation rate. However, I did not make this change because this requires a redesign of the entire drawing machine and the plinth, and may against the aesthetic of the original design, while the current speed is not perfect, but already useable.