513
edits
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
I am interested in exploring different ways of interaction between humans and their everyday environment of things.<br> | I am interested in exploring different ways of interaction between humans and their everyday environment of things. <br> | ||
In this case I am focusing on the common activity of walking in connection with the carpet as a customizable floor covering. | |||
I want to create a carpet / a collection of carpets that sense people walking on it / them and then trigger a certain output as a response. <br> | |||
I would like to create a complex environment in which people have to move through the space in order to explore its different features. | |||
Therefore I want to explore possibilities of creating an unpredictable output environment by introducing a certain amount of coincidental behavior.<br> | |||
The minimum goal of this course is creating a single interactive carpet.<br> | The minimum goal of this course is creating a single interactive carpet.<br> | ||
This idea is related to another project in which I designed a kind of yoga mat. | |||
I did not yet include electronics in the mat because I am doubtful about the determined amount of switches and their pre defined outputs. | |||
The interactive carpet is somehow an attempt to find out what happens if electronics are included and how the outputs can become unpredictable.<br><br> | |||
[[File:Sketch_hacklab_1.jpg]] | [[File:Sketch_hacklab_1.jpg]] | ||
Line 16: | Line 20: | ||
== Technical implementation == | |||
I want to construct a matrix structure in order to implement a „multiple switch device“ that can be triggered by peoples walking on it. | |||
Therefore I want to design switches that can handle the weight of a person standing on them. | |||
The switches have to be made of a flexible material so that they automatically return to their „off-state“ when the person changes his/her location. <br> | |||
I will try to implement a kind of resistor ladder in order to reduce the amount of input pins needed (this amount can easily become very high depending on the amount of sensors). | |||
The outputs will be controlled by an Arduino Micro controller board. | |||
It will trigger certain sounds or other outputs such as motor movement or LED lights. <br> <br> | |||
I | I accomplished different experiments in order to outline the needs of my final idea: <br> | ||
1) exploring touch sensor material <br> | |||
2) creating a simple button matrix / button resistor ladder <br> | |||
3) hacking a toy keyboard + exploring its inner architecture <br> | |||
4) reverse engineering and connecting a keyboard matrix with Arduino + exploring its functions <br> | |||
5) the toy keyboard matrix as a resistive sensor | |||
6) exploring different ways of implementing switches in a carpet <br><br> | |||
Line 53: | Line 48: | ||
'''1) DIY Sensor Materials''' | '''1) DIY Sensor Materials''' | ||
During the first | During the first class we investigated different materials and their conductivity / resistivity. | ||
I was mostly interested in materials that produce variable resistance when they are pushed and squeezed like „resistive plastic foam“. | I was mostly interested in materials that produce variable resistance when they are pushed and | ||
squeezed like „resistive plastic foam“. | |||
Another nice discovery was combining a metallic sponge and a piece of aluminium foil. <br> | Another nice discovery was combining a metallic sponge and a piece of aluminium foil. <br> | ||
Line 66: | Line 62: | ||
'''2) „Button Resistor Ladder“'''<br> | '''2) „Button Resistor Ladder“'''<br> | ||
The first experiment | The first experiment including matrix structures was about a chain of buttons. | ||
The last resistor of that kind of „resistor ladder“ | Each of these buttons were connected via different resistor values. | ||
This | The last resistor of that kind of „resistor ladder“ connects the whole structure to the Arduinos analog input via a voltage divider with a 100K resistor. | ||
—> see the circuit drawing below <br><br> | |||
This „button - resistor structure“ assures that each button provokes a specific and distinguishable value in the Arduinos serial reading. | |||
The experiment could lead to a more complex button structure that can be used as an „analog input matrix“. | |||
Line 80: | Line 81: | ||
'''3) hacking a toy keyboard, triggering it with relays + exploring its inner architecture''' | '''3) hacking a toy keyboard, triggering it with relays + exploring its inner architecture''' | ||
In the second experiment we took | In the second experiment we took a closer look at a toy including a keyboard matrix to play a funny collection of sounds. | ||
At first we traced each tone back to its switch on the matrix. | |||
Then we soldered external wires to the sound terminals in order to make the sounds externally accessible. | |||
[[File:hacked_toy_matrix_l1.jpg]]<br><br> | [[File:hacked_toy_matrix_l1.jpg]]<br><br> | ||
[[File:hacked_toy_matrix_l2.jpg]]<br><br> | [[File:hacked_toy_matrix_l2.jpg]]<br><br> | ||
We had the idea to further influence and control the sounds with an external switching device. | |||
Our solution was a chain of two relays controlled by the arduino via a multiple transistor IC (ULN…). | |||
These relays allowed us to turn the sound on and off so that little pieces of the sounds could be cut out. | |||
We stopped our experiment as soon as we realized that we would need a lot of (expensive) relays to control every available sound on the toy chip. | |||
[[File:hacked_toy_matrix_sound.jpg]]<br><br> | [[File:hacked_toy_matrix_sound.jpg]]<br><br> | ||
[[File:hacked_toy_matrix_relay_draw.jpg]]<br><br> | [[File:hacked_toy_matrix_relay_draw.jpg]]<br><br> | ||
I | After that I decided to explore the toy matrix a little further. | ||
A drawing helped me to understand and trace the | A drawing helped me to understand and trace the connections inside the matrix structure. | ||
I then attached | I then attached a DIY connector in order to use the bottom connectors. | ||
[[File:hacked_toy_matrix_pic.jpg]]<br><br> | [[File:hacked_toy_matrix_pic.jpg]]<br><br> | ||
Line 104: | Line 113: | ||
''' | '''4) Reverse-engineering and programming a common keyboard matrix''' | ||
This is a common keyboard matrix with a 4 x 3 buttons number plate. | |||
I „reverse engineered“ the matrix structure (hidden in the case) after I soldered pin headers to its connectors in order to plug it into the bread board. | |||
I was mostly interested in using the matrix as a variable resistor rather than using it as a „multiple digital pin input device“. (see experiment no. 2) | |||
I achieved that by connecting different resistor values in between each contact of the vertical and the horizontal button lines. | |||
In the end a voltage divider helped to create different voltage changes for the Arduinos analog input. | |||
The matrix is actually meant to be used as a "multiple digital pin input / output interface" like shown on this website (http://pcbheaven.com/wikipages/How_Key_Matrices_Works/) . <br><br> | |||
In my experiment every button represents a certain value in the analog input. | |||
By doing that I discovered a major problem: some of the values almost overlapped. | |||
Another problem was the amount of noise produced by the analog input. <br><br> | |||
Therefore I had to define a certain range of values for each button. | |||
Although this worked a bit better there was still a lot of overlap. | |||
This overlap sometimes lead to the effect that the interpretation of buttons being pressed was wrong. <br><br> | |||
Another interesting part of that experiment was the code. | |||
I did not use any library - instead of that I tried to use my basic programming skills to set it up by myself. | |||
It surprisingly worked out quite well - despite the mentioned overlap problem and the face that I needed a lot of memory. <br><br> | |||
In order to solve these issues in the future I need to learn about programming „arrays“ and „forloops“ that can help minimizing the amount of code. | |||
The overlap problem could be solved by using binary functions / average measurements that define clearer value states. <br><br> | |||
In order to solve these issues in the future I need to learn about programming „arrays“ and | |||
The overlap problem could be solved by using binary functions / average measurements that define clearer value states.<br><br> | |||
Line 132: | Line 143: | ||
'''5) using | '''5) the toy keyboard matrix as a resistive sensor''' | ||
The idea of using a matrix as a variable resistor was a good way of connecting the toy-keyboard to the arduinos analog input.<br><br> | |||
My hacked version of the toy keyboard does not really work as a system of clear state switches. | |||
I used a very resistive material in order to access the matrix (graphite lines). | |||
This material in combination with the original matrix circuit material (also very resistive) makes it hard to define clear input values.<br><br> | |||
A cool discovery: | |||
The multimeter shows that I get a certain value of resistance for each button when all the vertically and all the horizontally connected „lines“ are connected together. <br><br> | |||
The multimeter shows that | |||
Line 143: | Line 159: | ||
This way it is possible to use the matrix for instance as a variable resistor for | This way it is possible to use the matrix for instance as a variable resistor for a 555 timer chip in astable mode between pin 6 and pin 7: <br><br> | ||
[[File:555_toy_matrix.jpg]]<br><br> | [[File:555_toy_matrix.jpg]]<br><br> | ||
Line 149: | Line 165: | ||
'''6) | '''6) exploring different ways of implementing switches in a carpet''' | ||
The first problem is to install switches inside / underneath the carpet. | The final idea after my matrix explorations is to modify our environment by implementing a similar structure in everyday objects. | ||
I want to use a carpet as the main interface object as it is 1) easy to access and 2) something casual and omnipresent. | |||
It is a very flexible material that is easy to manipulate without the need of professional tools.<br> | The first problem is to install switches inside / underneath the carpet. | ||
<br> | I solved this problem by using an anti-sliding mat that separates the contacts of the switches. | ||
It is a very flexible material that is easy to manipulate without the need of professional tools. | |||
Another problem is designing and building the switches. | |||
The material needs to be 1) flexible (coming back into its original form) and 2) conductive. | |||
I experimented with different materials such as aluminium foil, aluminium plates and a conductive sponge. | |||
My solution consists of a piece of cardboard covered with aluminium foil. <br><br> | |||
[[File:carpet_switch_alu.jpg]]<br><br> | [[File:carpet_switch_alu.jpg]]<br><br> | ||
Line 170: | Line 183: | ||
I also discovered that the size of the gaps inside the flexible grid plays a big role in connection to the performance of the | I also discovered that the size of the gaps inside the flexible grid plays a big role in connection to the performance of the switches. | ||
I tried | I tried different sizes until I found a size that responds to the size and pressure of an „average human footstep“. <br><br> | ||
[[File:carpet_grid_sw1.JPG]]<br><br> | [[File:carpet_grid_sw1.JPG]]<br><br> |
edits