Over the past couple of months, I have been working on external projects alongside my work on my final project. These projects are a fantastic way for me to expand and improve skills which I have learned on the course as well providing me with income! I have been working primarily on solving physical computing problems here, building modules that will compose part of a larger integrated system. This will be the first of a series of posts about my work on the project.
The system will have 7 parts.
- Hairdryer to blow letters around
- Hoover to suck letters up
- Pump to make letters bigger
- Fire extinguisher to cover letters with foam
- Tap to fill the screen with water and drown the letters
- Hammer to hit the box and shake the letters
- Control panel with buttons to select an emotion
Each one of these parts presents unique challenges.
The Hoover is the simplest of the parts, it is simply a switch and a small light to indicate if it is on or off. I have erased the label from the switch, so it is no longer clear if the switch is on or off. This makes it possible for the hoover to be disabled after a short time in the software without the switch being set in the wrong position. This was a simple job as the switch was simple to rewire. I replaced the 240V light that came with the hoover with an LED in the same position so it could be powered by the Arduino that will control the whole arrangement.
The Hairdryer is also very simple. I started out by wiring up all the switches that were present on the device and removing the motor and heating elements. We experimented using this with the software and decided that the extra switches were not necessary and that we could get by with a single button which was momentary. I was then tasked to fill the holes left by the extra switches which I accomplished using 3d printed parts which were then sanded with progressively finer files and sandpapers until the desired finish was achieved.
The Pump was the first analogue part in the project, requiring levels of input based on the hardness of the push on the pump. This is being achieved using a microphone connected to the Arduino. I tested a few microphones that were available and found one which had an amplitude output which varied a reasonable amount when the pump was pushed. The microphone was mounted against the nozzle of the bicycle pump in order to eliminate external sound from triggering the reaction.
The Fire extinguisher is an interesting problem. It needs to produce a value that changes with how much pressure is put on the handle of the extinguisher. I started by hooking up actual pressure sensors to it by placing the sensor between the handle and the spring-loaded valve part. This worked in a mediocre fashion, but I was very concerned with the longevity of those parts, given the requirement that this machine be in place for 2 years. I therefore started experimenting with other sensors and while examining the mechanism inside the fire extinguisher I realised that pressing the valve created a linear motion inside so I decided I would try to measure this. The small nature of this movement ruled out options such as ultrasonic sensors or other standard distance measuring devices. At this point I came across a hall sensor in a box of sensors I had lying around. This solid-state sensor detects a magnetic field around itself. I realised that moving a magnet closer to and further away from the sensor produced a reasonable variance in readings. I therefore prototyped a mechanism, replacing various internal parts of the fire extinguisher with 3D printed alternatives. This allowed me to hold the hall sensor near a magnet attached to the end of a rod which was pushed down by the handle of the extinguisher. It also allowed the cables from the sensor to be passed through the valve itself and out through the nozzle of the extinguisher so the structure and the visual of the extinguisher was not compromised. This worked satisfactorily although I had reservations around the longevity of the wires that passed through the valve and were therefore rubbed together each time the valve was activated.
The Tap sensor was a simple rotary encoder, an inexpensive one as it was not necessary to have much resolution on a single turn. I started with a 3D printed handle attached through a heavy bearing to the rotary encoder. This worked well but the aim was for the handle to be that of a fire hose. A couple of weeks later the handle arrived and I set about working out how to connect it to the rotary encoder. The problem was one of hole shape and the need for the rotary encoder to be mounted on the opposite side of a wall to the handle itself. I 3D printed a part which combined with a modified bolt which could fit through the square hole on the handle. The modified bolt then had a nut tightened over it to hold the whole assembly in place atop the 3D printed part. This was then attached to the same bearing and encoder assembly as the previous version.
The control panel of buttons will be assembled straight upon the final installation so for the time being I simply made a piece of perfboard with 10 buttons on it, each individually connected to the Arduino.
Finally, the Hammer assembly, the most complicated part in the system. This system had already been started by Eevi and I was to help. The current system uses a high-resolution rotary encoder for positioning and a belt to drive a round piece of acrylic that is attached to the bottom of the hammer assembly. This assembly has a notch cut down its length via which it is attached to the back plate. Therefore, as the handle rotates the hammer moves in a motion whereby it lifts for some of the turn and for the rest strikes down. We were having problems with the flexibility of the back plate made of acrylic and one of the axles which was flexible so as not to put too much pressure on the rotary encoder. As well as this we were having problems with how much force was required to move the hammer through the lift portion of the motion.
To solve both these issues we enlarged both of the gears and mounted them much closer to the backing material.
I also created a custom circuit board to manage the nest of cables that needed to all connect to the same arduino. Each Cat5 plug is labeled with the part that should be plugged into it.