Digital prototyping - experimenting with rabbit

Reflection
This seminar was inspiring due to its fascinating complexity. What I mean by that is, despite the number of steps involved, the hands-on prototyping technique gave fast results, making it fun to experiment with. Once you grasped the communication mode, there were a lot of ways to reinterpret the task, which was helpful in generating ideas for integrating these technologies into my research context.

I also believe wearables are seeking ways to minimise energy consumption for various purposes. That's why learning about her approach to customising wearables, such as creating your own Arduino board, was intriguing in the scope of low-power device research (the concept of hacking). I've observed individuals customising their Arduino Pro Mini to achieve very low current draw, enabling better adaptation to low-power devices. Perhaps in my future research, I'd like to explore creating low-power consumption boards powered by alternative energy sources. This could be practical for others interested in prototyping in a similar way.

While I had a bit of prior knowledge on the subject, this seminar provided the opportunity to fully explore what the softwares had to offer. Collaborating with my classmates was also an empowering way to interact, especially with the MDEFest approaching; we're keen on expanding our communication methods as much as possible.

Random thoughts:
- All the examples shown during the presentation were super cool.
- I have a lot of respect for people who work with their bodies in art installation.
- Don't know much about coding so learning about live coding was nice. Gives ideas for the future.

Mobirise Website Builder

Prototyping of a touch sensitive sensor

Mobirise Website Builder

Experimentation
In my research, I'm currently exploring the concept of harnessing energy generated by living organisms and examining our relationship with them. Through this exploration, I aim to develop interactive installations that diffuse knowledge about their capabilities and explore passive methods of interaction with them. Thanks to a seminar I attended, I became interested in experimenting with the transmission of data from soil to Arduino, effectively using soil as a trigger mechanism. Drawing inspiration from YouTube tutorials, I tried to adapt techniques employed to turn vegetables into functional buttons for use with soil. When implementing this circuit, I observed that the data indeed fluctuated when the soil was touched, indicating a possible setup for a trigger mechanism. Subsequently, I integrated this setup with Processing to generate abstract shapes in response to soil touch events. Using ChatGPT, I developed the necessary code for this purpose.

The creation of this installation marks the start of a larger installation project aimed at responding to microbial activity and human touch. One intriguing aspect of the circuit setup is its usage of the human body for conductivity, effectively closing the circuit. This conceptualises the human body as an integral part of the device rather than an external interaction component.

Looking ahead, I envision connecting multiple soil cells to music software to explore the possibility of creating a soil drum instrument that can be utilised by multiple individuals simultaneously. While the specifics of this project are still under consideration, I find the idea intriguing.




This is the explanation of the processing code:
          +-----------------------+
| Setup() |
| - Initialize sketch |
| - Set window size |
| - Set background |
| - Open serial port |
+-----------+-----------+
|
v
+-----------------------+
| Draw() |
| - Check for data |
| availability |
| - Read data |
| - Convert to integer |
| - Draw bacteria |
+-----------+-----------+
|
v
+-----------------------+
| drawBacteria() |
| - Draw green shapes |
| based on sensor |
| values |
+-----------------------+

Processing code creating abstract representation of bacteria when soil is touched

Video that I used as reference to create soil sensor

Codes
Arduino code:
// the setup routine runs once when you press reset:

void setup() {

// initialize serial communication at 9600 bits per second:

Serial.begin(9600);

}


// the loop routine runs over and over again forever:

void loop() {

// read the input on analog pin 0:

int sensorValue = analogRead(A0);

// print out the sensor value:

Serial.println(sensorValue);

delay(500); // delay in between reads for stability




Processing code: Code green bacteria:

import processing.serial.*;

Serial serialPort; // Create a Serial object


void setup() {

size(400, 300); // Set the size of the window

background(0); // Black background

// Open the serial port - change "/dev/cu.usbmodem1441401" to the appropriate port name for your system

serialPort = new Serial(this, "/dev/cu.usbmodem1441401", 9600);

}


void draw() {

if (serialPort.available() > 0) { // If data is available to read

String data = serialPort.readStringUntil('\n'); // Read the data until newline character

if (data != null) {

println(data); // Print the data to the console

// Convert data to integer

int sensorValue = Integer.parseInt(data.trim());

// Check if sensor value is under 1023

if (sensorValue < 1023) {

// Draw a green bacteria at a random position

float x = random(width);

float y = random(height);

float size = random(10, 30); // Random size for the bacteria

drawBacteria(x, y, size);

}

}

}

}



// Function to draw a bacteria shape

void drawBacteria(float x, float y, float size) {

int numVertices = 20; // Number of vertices

float angleIncrement = TWO_PI / numVertices; // Angle increment between vertices

fill(0, 255, 0); // Green fill color

beginShape();

for (int i = 0; i < numVertices; i++) {

// Calculate vertex position

float theta = i * angleIncrement;

float offsetX = cos(theta) * size * random(0.8, 1.2);

float offsetY = sin(theta) * size * random(0.8, 1.2);

// Quantize vertex position to create pixelization effect

offsetX = floor(offsetX / 5) * 5; // Round to nearest multiple of 5

offsetY = floor(offsetY / 5) * 5; // Round to nearest multiple of 5

// Add vertex to shape

vertex(x + offsetX, y + offsetY);

}

endShape(CLOSE);

}

Offline Website Software