Biodegradable Conductive String: Magic Mermaid Top

by ombates in Circuits > Arduino

1029 Views, 3 Favorites, 0 Comments

Biodegradable Conductive String: Magic Mermaid Top

Screenshot 2025-03-23 at 10.22.09 AM.png
Screenshot 2025-03-21 at 1.01.59 PM.png
Screenshot 2025-03-21 at 1.02.51 PM.png

Electronic waste poses a rapidly growing environmental issue, contributing to pollution, health hazards, and the depletion of finite resources. As makers and innovators, exploring sustainable alternatives to traditional electronic components can significantly impact how we address this challenge.

In this Instructable, I share my exploration into biodegradable conductive materials by creating a conductive bioplastic string designed for interactive projects. Specifically, I've developed a conductive string using alginate-based bioplastic, which can be seamlessly integrated into textiles or crafts. I've created a simple yet interactive project to demonstrate its capabilities: a wearable made of regular alginate bioplastic string embroidered with my conductive bioplastic string. This embroidered conductive string is a capacitive touch sensor connected to a Circuit Playground Bluefruit. When touched, the yarn triggers engaging light animations, showcasing the practical application of biodegradable electronics.

Below, I'll guide you through my process, including the recipe and instructions for making your own conductive bioplastic. This approach offers a small but meaningful step towards reducing electronic waste through biodegradable alternatives, opening exciting new possibilities for environmentally responsible creativity.

Supplies

Screenshot 2025-03-21 at 1.09.41 PM.png

Tools:

  1. Kitchen Scale
  2. Blender or Emulsifier
  3. Glass Jars
  4. Pot

Materials:

  1. Water
  2. Glycerin
  3. Calcium Chloride
  4. Titanium Dioxide
  5. Conductive Carbon Black

Conductive String Recipe:

  1. Water ... 200 grams
  2. Sodium Alginate ... 6 grams
  3. Glycerin ... 8 grams
  4. Titanium Dioxide ... 5 grams
  5. Carbon Black ... 5 grams

Before processing/drying/curing: approx. 200 ml of alginate plastic can be stored for two weeks and used in many recipes.

Calcium Chloride Bath Recipe:

  1. Water ... 200 grams
  2. Calcium Chloride ... 20 grams

Calcium chloride 10% solution can be used in any alginate recipe.

Measure Ingredients

Screenshot 2025-03-21 at 1.29.07 PM.png
Screenshot 2025-03-21 at 1.29.32 PM.png
Screenshot 2025-03-21 at 1.10.58 PM.png
Screenshot 2025-03-21 at 1.12.34 PM.png
  1. Place the measuring tool on the scale
  2. Make sure the device is set to the correct unit (grams).
  3. Press the TARE button.
  4. This will set the scale to 0.
  5. Slowly pour the ingredient to reach the correct weight.
  6. If you pour too much, use a spoon to remove a little at a time.
  7. Set the ingredients aside and measure the next ingredient.

Mix Carbon Black and Water

FNQXTXBM8ISJ2B5.png
Screenshot 2025-03-21 at 1.16.20 PM.png
Screenshot 2025-03-21 at 1.13.19 PM.png
  1. Add 5 grams Carbon Black to 200 grams of Water.
  2. Mix using either an emulsifier or a blender.
  3. An emulsifier is more manageable for this size batch.
  4. Set this aside.

Mixing Conductive Substrate

FZ2CZ3BM8ISJ2JF.png
Screenshot 2025-03-21 at 1.11.56 PM.png
Screenshot 2025-03-21 at 1.12.16 PM.png
  1. Add the following ingredients to the Carbon Black/Water mixture:
  2. 6 grams of Sodium Alginate
  3. 8 grams of Glycerin
  4. 5 grams of Titanium Dioxide
  5. Blend with an emulsifier or a blender into a smooth paste.

Store Overnight

  1. *If ingredients are not already in a glass container*
  2. Transfer the mixture to a glass jar.
  3. Place in the fridge for at least 8 hours.
  4. This removes excess air bubbles produced from the mixing process

Prepare Calcium Chloride Bath

Screenshot 2025-03-21 at 1.30.37 PM.png
Screenshot 2025-03-21 at 1.30.00 PM.png
Screenshot 2025-03-21 at 1.30.19 PM.png
  1. Measure (refer back to Step 1):
  2. 200 grams of Water
  3. 20 grams of Calcium Chloride
  4. In a medium size pot, boil the water.
  5. Turn the heat off.
  6. Add the Calcium Chloride to the Water
  7. !Caution! This step fizzes up, so use a big enough pot.
  8. Stir to make sure all of the Calcium Chloride is dissolved.
  9. Let this cool for at least 1 hour.

Extrude String

Screenshot 2025-03-21 at 12.59.02 PM.png
Screenshot 2025-03-21 at 12.57.58 PM.png
  1. Take the alginate substrate from the fridge and let it thaw to room temperature for 1 hour.
  2. This can be done during the previous step while the Calcium Chloride bath cools.
  3. Transfer the Substrate to a sandwich bag.
  4. Alternative option: recycle a used condiment squeeze bottle.
  5. Cut a small hole in the corner.
  6. Cutting a bigger or smaller hole will determine the thickness of the string.
  7. Squeeze the substrate out into the Calcium Chloride bath.
  8. Starting at the center, use a circular motion.

Dehydrate the String

Screenshot 2025-03-21 at 12.57.12 PM.png
Screenshot 2025-03-21 at 12.59.43 PM.png
Screenshot 2025-03-21 at 1.00.16 PM.png
  1. Set the oven to the lowest temperature setting (170 degrees Fahrenheit).
  2. On a baking pan, coil the extruded string so that it does not overlap.
  3. Place in oven for 2 hours.
  4. Remove the string.
  5. Let it cool.

Incorporate String

IMG_0980.jpg

The string is not fully dry and is actively expelling water, but this is a good time to incorporate it into the project. The string has a rubbery consistency that is easy to embroider, crochet, or knit. For this project, I embroidered the conductive string onto an existing BioPlastic top made with crochet techniques.


Tips to reduce breakage:

  1. Be gentle when pulling on the string.
  2. Use tools with round, smooth edges.
  3. Use a crochet hook for embroidery to pull the string through


Attach Circuit Playground Bluefuit

Screenshot 2025-03-21 at 3.32.58 PM.png
Screenshot 2025-03-21 at 3.22.27 PM.png
  1. Tie a simple knot to make a connection.
  2. Make three connections to Circuit Playground Bluefruit at A2, A4, and A3.

!Caution! The string may not be fully dry at this point. Do not turn on electronic components until 7 days have passed since extruding the string.


Magic Animations

Screenshot 2025-03-23 at 10.20.44 AM.png
Screenshot 2025-03-23 at 10.20.59 AM.png
Screenshot 2025-03-23 at 10.21.24 AM.png

This is a Capacitive touch sensor:

  1. For each connection, a different animation can be seen.


#include <Adafruit_CircuitPlayground.h>


#define ROTATION_RATE 100 // Time delay between color changes

#define NUM_PIXELS 10 // Number of LEDs


int readValue = 0;

int readValue2 = 0;

int readValue3 = 0;

int readValue4 = 0;

int calibrate = 150; // Touch threshold

int brightness = 100;

int speed = 20;

int red = 6;

int green = 120;

int blue = 250;

int redSpeed = 10;

int greenSpeed = 10;

int blueSpeed = 10;

int pixelNum = 0;

uint32_t colors[] = {

0xEA2B1F, 0xFF5714, 0xFDCA40, 0x9CEC5B, 0x0CF574,

0x1BE7FF, 0x3772FF, 0x5A0B4D, 0xFF82A9, 0xD81E5B

};


int startIndex = 0;

unsigned long lastUpdateTime = 0;


void setup() {

CircuitPlayground.begin();

CircuitPlayground.setBrightness(150);

Serial.begin(9600); // Start Serial Monitor

setAllWhite(); // Start with all LEDs white

}


void loop() {

// 1346

readValue = CircuitPlayground.readCap(A4);

readValue2 = CircuitPlayground.readCap(A6);

readValue3 = CircuitPlayground.readCap(A1);

Serial.print("rainbow: "); // Print touch value

Serial.print(readValue);

Serial.print(", colorShift: "); // Print touch value

Serial.print(readValue3);

Serial.print(", brightness: ");

Serial.println(readValue2);


if (readValue > calibrate) { // If touching A1, rotate rainbow

if (millis() - lastUpdateTime >= ROTATION_RATE) {

lastUpdateTime = millis(); // Reset timer

rotateRainbow();

}

} else if (readValue2 > readValue && readValue2 > readValue3 && readValue2 > readValue4 && readValue2 > calibrate) {

if (millis() - lastUpdateTime >= ROTATION_RATE) {

lastUpdateTime = millis(); // Reset timer

pulsate();

}

} else if (readValue3 > readValue2 && readValue3 > readValue && readValue3 > readValue4 && readValue3 > calibrate) {

if (millis() - lastUpdateTime >= ROTATION_RATE) {

lastUpdateTime = millis(); // Reset timer

colorShift();

}

} else {

setAllWhite(); // If not touching, reset to white

}

}


// Function to set all LEDs to white

void setAllWhite() {

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

CircuitPlayground.setPixelColor(i, 255, 255, 255); // White

}

}


// Function to rotate the rainbow effect

void rotateRainbow() {

CircuitPlayground.clearPixels();

int colorIndex = startIndex;

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

CircuitPlayground.setPixelColor(i, colors[colorIndex]);

colorIndex = (colorIndex + 1) % NUM_PIXELS; // Wrap around

}

startIndex = (startIndex + 1) % NUM_PIXELS;

}

void pulsate(){

if(brightness + speed > 255 || brightness + speed < 5){

speed = speed * -1;

}

brightness = brightness + speed;

CircuitPlayground.setBrightness(brightness);

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

CircuitPlayground.setPixelColor(i, 255, 255, 255);

}

}


void colorShift(){

if(red + redSpeed > 255 || red + redSpeed < 5){

redSpeed = redSpeed * -1;

}

if(green + greenSpeed > 255 || green + greenSpeed < 5){

greenSpeed = greenSpeed * -1;

}

if(blue + blueSpeed > 255 || blue + blueSpeed < 5){

blueSpeed = blueSpeed * -1;

}


red = red + redSpeed;

blue = blue + blueSpeed;

green = green + greenSpeed;


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

CircuitPlayground.setPixelColor(i, red, green, blue);

}

}