Skip to content

Process

Ideation & sketches

I started by making a body map for myself, tracing traces, emotions and memories that find their places onto my body.

Mapping on my body serves as a tool to identifiel emotional residues a build a self-archive.

Installation Overview

Overview

The project takes the form of an art installation.

At the centre, there’s the bodysuit embedded with a touch sensor. Around it, I intend to expand the narrative space of the installation through the creation of tokens: small objects that will represent an emotional memory.


Mapping

I decided to focus on 2 areas to design a wearable that translates emotional memories into material and form. Emotional memory can be defined as the ability to recall past events to which strong emotional response is tied to.


  • Area: hands and feet
  • Emotional memory: grief, loss in childhood, family

Between the age 3 and 5, children start to be interested by and aware of death, even though they cannot yet comprehend its persistance. When grevieng, they might end up asking a lot of and repetitive questions to try to understand what has happened and where there person has gone. They can also experience anxiety, speech regression and feelings of hopelessness and helplessness towards the grieving adults aorund them.

Token - Area: hair - Emotional memory: femininity, distance, heritage

Hair is a carrier of ancestry and memory. I look at the hair of my mother, of my grandmother and I see mine. It's a symbol of power, sensitivity and it acts as a bridge between me and my ancestry. As I move further away from home, I feel like my hair is something that keeps me connected.


How can a wearbale be an embodied archive?

Biomaterials

I chose biomaterials because they share key characteristics with memory and emotion: they are fragile, layered, reactive, composite, and they change over time.

Conductive Biomaterils

Here you can find some of the testing I did. I started experimenting with agar agar but the results where not quite what I wanted

Agar

experiments

Ingedirents Materiom
Agar 8 gr 2 gr
Glycerine 24 gr 1 ml
Water 400 gr 210 ml
Salt 5 gr

Alginate

Ingredients
basic Charcoal Graphite Magnetite
Alginate 12 gr (liquid) " "
Glycerine 20 gr " "
Water 400 ml " "
Salt 5 gr " "
Oil 10 gr " "
Charcoal 10-15 gr*
Graphite 12 gr*
Magnetite 12-15 gr**

Notes *After preparing the alginate solution I divided it in 3 parts and added chrcoal, Graphite and magnetite: 120 gr + 10 gr of graphite, 120 + 7/8 gr of activated charcoal, 130 gr + 7/8 gr graphite ** I prepared a recipe adapted to 200 ml of water of solution and added 12gr of magnetite in one half and 15 gr in the pther half

Arduino IDE

I used a simple circuit of a ESP32S3, a red LED and a resistor to test the conductive biomaterials. It works!

define TOUCH_PIN 4          
#define LED_PIN_NUMBER 5     

const int VALUE_THRESHOLD = 45000;

void setup() {
  Serial.begin(115200);
  while (!Serial);

  pinMode(LED_PIN_NUMBER, OUTPUT);
  Serial.println("Touch");
}

void loop() {
  int touchValue = touchRead(TOUCH_PIN);
  Serial.println(touchValue);

  if (touchValue < VALUE_THRESHOLD) {
    digitalWrite(LED_PIN_NUMBER, HIGH);
  } else {
    digitalWrite(LED_PIN_NUMBER, LOW);
  }

  delay(100);
}

Alginate and Fruit Peel

Then I moved to experimenting with alginate. As the biomaterials needs a substrate in order to be stitched into a body suit. I tried adding crochet pieces, fabric and cotton fiber.

Experiment Experiment

I also tried creating a mould with clay to reproduce a crochet pattern

Clay Experiment

I found this recipe Fab Lab Barcelona Making Bioplastic from Orange Peel - REMIX EL BARRIO. I adapted it to use apple peels, which are widely grown in the Netherlands. I added extra glycerin, citric acid, essential oils, and sodium alginate for several reasons:

Apple peel is less fibrous and less acidic than orange peel, so these adjustments are intended to improve the material’s durability and flexibility.

Ingredients Oranges Apple
20g wool fiber
5L water 5L 5L
peel 120 g 150-169 g
Calcium Chloride
sodium alginate 125 g 140–150 g
glycerin 421 g 450 g glycerin
(coconut) oil 56 g 70 g
citric acid 5–8 cirtric acid
essential oil 3–6 (lavander)

Substrate

After a conversation with Cecilia, we decided to use a streatchy fabric in both directions as a substrate for the biomaterial. Without it, it would be really hard to see. I got some that resembles my skin colour.

Moulds

Moulds Wood


So I have built a four frames based on the size of some pannels that Waag had remaining from old events. I simply cut and screwed together for pieces of wood to create a frame. Three frames of 95x65 cm and one of 115x80 cm I sprayed a sodium chloride solution on the botton side and then pinned the fabric to the side of the panel in order to give some tension. With the help of someone else, I made sure that the fabric did not touch the botton while placing it so it would not get in contact with the sodium chloride solution.

Mid-process Results

Below you can see two sheets ready. There are some cuts which might be caused by the fabric touching the sodium chloride solution at the bottom. For the rest it looks like the biomaterial is gripping to the substrate. It is not so elastic though, especially some parts were the biomaterial is a bit thicker.

Crochet and alginate

This is how the piece with crochet and alginate looks like at the moment. The centre part is dry, only the edges need a bit more time


Tokens

The tokens represent embodied emotional memories drawn from my personal experience. I focus on two areas of the body: hair, and hands and feet.

Token Hair

Hair relates to ancestry, belonging, and family. When I look at my hair, I see my mother’s and my grandmother’s hair. For this token, I will use a small loom holding a woven piece made with my own hair, collected over the past 2 months. This connects to my mother’s wedding kit, which she recently shared with me. The wedding kit speaks about inheritance and participation, and this token reflects on belonging,, continuity and family

Token Feet

The second token focuses on hands and feet, and on the absence left by my father’s passing. I do not remember him, but my body holds this memory, as my mother says: my hands and feet look like his. This token is approached playfully: soft materials and bright colours make the empty space left by my father's hand tangible.

Hair Loom

With the help of Aslı I designed a loom inspired by Dan Chen's Mini Loom and another loom we had at waag.

Interactions

Circuit

The main input is touch, as it happens on and through the body. Touch sensors embedded in the bodysuit trigger short texts displayed on a small, portable screen, encouraging reflection on bodily awareness

Touching the tokens triggers local audio responses (and may also activate light feedback on corresponding areas of the bodysuit)

Here you can find my circuits' layout.


* ESP32S3
  • Waveshare 2.9 inch E-Ink E-Paper Display - 3 Kleuren
  • DFPlayer Mini MP3 Player Modul
  • Speaker 8ohm (less than 3W!)
    • JST-XH 8p connector
    • ESP32S3
  • Conductive Biomaterials
  • Arduino IDE

Display

I'm using a ESP32S3 and a Waveshare 2.9 inch E-Ink E-Paper Display - 3 Colours

The E-ink display offers a paper-like display with a very minimum power consumption (current is required mainly for refreshing). It's dimentions are 66.90 × 29.06mm and its viewing angle is 170°. It uses an SPI, which stands for Serial Peripheral Interface. It is a protocol that is synchronous serial communication. It is used to communicate between the peripheral devices i.e. input and output devices and microcontrollers. It is allowed to transfer high-speed data.

Test sketch (AI generated)

#include <GxEPD2_3C.h>
#include <Fonts/FreeMonoBold9pt7b.h>

// GPIO numbers
#define CS   43
#define DC   6
#define RST  5
#define BUSY 44

// Correct driver for 2.9" 3-color
GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(
  GxEPD2_290_C90c(CS, DC, RST, BUSY)
);

void setup()
{
  Serial.begin(115200);
  Serial.println("Starting ePaper...");

  display.init(115200);
  display.setRotation(1);
  display.setFont(&FreeMonoBold9pt7b);

  display.setFullWindow();
  display.firstPage();
  do {
    display.fillScreen(GxEPD_WHITE);

    display.setCursor(10, 40);
    display.setTextColor(GxEPD_RED);
    display.println("Test");

    display.setCursor(10, 80);
    display.setTextColor(GxEPD_RED);
    display.println("Please work");

  } while (display.nextPage());

  Serial.println("Done");
}

void loop() {}

Case

Test

With the help of Aslı, we looked into the case and how to design it with Rhino. First, I designed a test for the top part of the case where the display would rest. I designed a 1.5 mm face, extruded a rectangukar of the shape of the screen and added 3mm holes where the screws would go. This design allow for the mounting part of my 2.9 e-ink display to be hidden, and the display will rest sliglty inwards. Here is the test. I prented it with the CoreOne 3D printer and used PLA for rigidity

Audio Output

* DFPlayer Mini MP3 Player Modul
* Speaker 8ohm, 2-3W
* Micro SD
  • Cables
  • Arduino IDE

ESPNOW Protocol

I've already worked with ESPNOW connecitons for the Open Source Hardware week. Here you can see my documentation.

Display

* Waveshare 2.9 inch E-Ink E-Paper Display - 3 Kleuren
* JST-XH 8p connector 
* ESP32S3
  • Conductive Biomaterials
  • Arduino IDE

I used this code to obtain the MAC address of the receiver

/*
  Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/get-change-esp32-esp8266-mac-address-arduino/
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.  
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*/
#include <WiFi.h>
#include <esp_wifi.h>

void readMacAddress(){
  uint8_t baseMac[6];
  esp_err_t ret = esp_wifi_get_mac(WIFI_IF_STA, baseMac);
  if (ret == ESP_OK) {
    Serial.printf("%02x:%02x:%02x:%02x:%02x:%02x\n",
                  baseMac[0], baseMac[1], baseMac[2],
                  baseMac[3], baseMac[4], baseMac[5]);
  } else {
    Serial.println("Failed to read MAC address");
  }
}

void setup(){
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  WiFi.STA.begin();

  Serial.print("[DEFAULT] ESP32 Board MAC Address: ");
  readMacAddress();
}

void loop(){

}
If you look at the serial monitor you should see the ESP32 Board MAC Address

10:31:58.596 -> [DEFAULT] ESP32 Board MAC Address: e8:f6:0a:8d:16:f8

this is how the receiver code looks like

#include <GxEPD2_3C.h>
#include <Fonts/FreeMonoBold9pt7b.h>
#include <esp_now.h>
#include <WiFi.h>

// ----- DISPLAY PINS -----
#define CS   43
#define DC   6
#define RST  5
#define BUSY 44

// ----- DISPLAY DRIVER -----
GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(
  GxEPD2_290_C90c(CS, DC, RST, BUSY)
);

// ----- VARIABLES -----
String receivedText = "Waiting...";
bool updateDisplay = false;

// ----- ESP-NOW RECEIVE CALLBACK -----
void onDataReceive(const esp_now_recv_info_t *info,
                   const uint8_t *incomingData,
                   int len) {

  char message[100];
  memcpy(message, incomingData, len);
  message[len] = '\0';

  Serial.print("Received: ");
  Serial.println(message);

  receivedText = String(message);
  updateDisplay = true;
}

// ----- UPDATE SCREEN FUNCTION -----
void updateScreen() {

  display.firstPage();
  do {
    display.fillScreen(GxEPD_WHITE);
    display.setTextColor(GxEPD_RED);
    display.setFont(&FreeMonoBold9pt7b);

    display.setCursor(20, 60);
    display.println(receivedText);

  } while (display.nextPage());

  updateDisplay = false;
}

// ==============================
void setup()
// ==============================
{
  Serial.begin(115200);

  // ---- Init WiFi for ESP-NOW ----
  WiFi.mode(WIFI_STA);

  if (esp_now_init() != ESP_OK) {
    Serial.println("ESP-NOW Init Failed");
    return;
  }

  esp_now_register_recv_cb(onDataReceive);

  // ---- Init Display ----
  display.init();
  display.setRotation(1);
  display.setFullWindow();

  updateScreen();

  Serial.println("Receiver Ready");
}

// ==============================
void loop()
// ==============================
{
  if (updateDisplay) {
    updateScreen();
  }
}

This is how the sender code looks like. You need to define the touch pins not with their digital numbers but with the touch pin number. In the schematic below you can see that the two numbers differs

#include <esp_now.h>
#include <WiFi.h>

#define TOUCH1 4
#define TOUCH2 5

uint8_t receiverMAC[] = {0xE8, 0xF6, 0x0A, 0x8D, 0x16, 0xF8}; // your display MAC

void setup() {
  Serial.begin(115200);

  pinMode(TOUCH1, INPUT);
  pinMode(TOUCH2, INPUT);

  WiFi.mode(WIFI_STA);
  esp_now_init();

  esp_now_peer_info_t peerInfo = {};
  memcpy(peerInfo.peer_addr, receiverMAC, 6);
  peerInfo.channel = 0;
  peerInfo.encrypt = false;
  esp_now_add_peer(&peerInfo);

  Serial.println("Sender Ready");
}

void loop() {

  // ✅ THIS IS WHERE IT GOES
  int t1 = touchRead(TOUCH1);
  int t2 = touchRead(TOUCH2);

  Serial.print("T1: ");
  Serial.print(t1);
  Serial.print(" | T2: ");
  Serial.println(t2);

  if (t1 > 60000) {
    esp_now_send(receiverMAC, (uint8_t*)"TOUCH1", 6);
    delay(400);
  }

  if (t2 > 60000) {
    esp_now_send(receiverMAC, (uint8_t*)"TOUCH2", 6);
    delay(400);
  }
}

Prototypes

prototypes are your first step towards shaping your final piece, product, material et cetera


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Mid-Term Presentaiton

Here you can find my mid term presentation!

Mentoring notes

Mentors in all sessions may share with you their comments, notes, advise, projects and technical equipment to check out. This is good place to share those, so that you can find them later on when you need them the most!

Half-fabrication files


  1. Test file: 3d modelling test