Skip to content

13. Skin Electronics

References & Inspiration

I started out this week's assignment trying to make something with my transit RFID card, but it didn't end up working. You can read section about my RFID failure at the end of this page. But, now that my first idea failed, i started looking for new inspiration and i looked at what some of the other students had already done for this assignment and I was inspired by Mina Mayo-Smith's charlieplexing work.

inspo

All images were found on pinterest, source unknown, except for left image from Leeor Wild.

Tools

materials

Process and workflow

I found a lot of useful tutorials on charliplexing but they all felt to complicated for my limited understanding of electronics. I found this instructables tutorial showing how to make the simplest charlieplexing layout, with 6 LEDs. This is perfect for me, as I easily get overwhelmed by new information, I need to start simple.

Here are also some other tutorials i looked at:

Step 1: test the LED integration

I had an aesthetic in mind for the integration of the LED and this aesthetic is based on the fact that i find the LED light harsh and not enjoyable to look at. I wanted to try something that makes it more tolerable to look at and i thought of backlighting.

I found these interesting beads from a store in Montreal while i was out fabric shopping and i thought they might work for covering the LED and creating a backlighting effect.

Initially i wanted to use conductive thread, but after a few tests, i couldn't get it to solder. Instead i stripped an electrical wire and extracted some very thin copper wire and my soldering tests worked great. Once i tested my LED, I hot glued a pearl onto it to validate the aesthetic i am going for, and I love it, it's clean and minimal and has an astral quality, it reminds me of an eclipse. first test led-bead

Step 2: Testing the simplest charlieplexing layout

Here's a diagram showing the simplest possible charlieplexing layout using 3 pins on the arduino. charlieplex

I found some TINY spare LEDs from the lab (2mm x 1.6mm). I was curious to see how difficult it is to create something with such small LEDs. The important thing is too figure out a setup to hold the LEDs in place: some simple double sided tape worked well. Note: pay attention to the polarity of the LEDs in the diagram.

first charlieplex assembly

Left image shows the LEDs placed onto the double sided sticky tape. Second and third image show the application of flux to the soledring pads. In the last image on the right, i have soldered some soldering wire onto the LEDs pads. I thought it was easier to add a bit of solder to the pad first, and then solder the copper wire.

Once the doldering done, I added some smaller beads with some double sided sticky tape. This is probably not a viable long term solution, it's just to prototype.

first done

This looks cute! And I love the ultra thin copper wire, it's super delicate and from far, you barely see it. For sure, it needs to be handled with care, but i don't worry about this right now.

Step 3: Testing the code

I downloaded the code from the instructables tutorial, there's a link at the bottom of the page that sends you to a github page, and you can download the arduino sketch from there.

And also, here it is:

/* Charliplexing 6 LEDs
--------------------------------------------------------------------------------
Row 1 (R1): Arduino Pin 13
Row 2 (R2): Arduino Pin 12
Row 3 (R3): Arduino Pin 11
--------------------------------------------------------------------------------
variable    pinMode      state
 L           OUTPUT       LOW 
 H           OUTPUT       HIGH
 Z           INPUT        LOW
---------------------------------------------------------------------------------
     R1 (Pin 13)      R2 (Pin 12)     R3 (Pin 11)
L1    L                 H                Z
L2    H                 L                Z
L3    Z                 L                H
L4    Z                 H                L
L5    L                 Z                H
L6    H                 Z                L 
-----------------------------------------------------------------------------------
LED    Cathode      Anode
1         R2          R1
2         R1          R2
3         R3          R2
4         R2          R3
5         R3          R1
6         R1          R3 
---------------------------------------------------------------------------------
*/

const int LED_1 = 13;     //LED row 1
const int LED_2 = 12;     //LED row 2    
const int LED_3 = 11;     //LED row 3

void setup() 
{
}

void loop()
{
  //turn on LED L1
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);

  delay(100);

  //turn on LED L2
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);

  delay(100);

  //turn on LED L3
  pinMode(LED_1, INPUT);      //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, OUTPUT);     //row 3
  digitalWrite(LED_3, HIGH);

  delay(100);

  //turn on LED L4
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);    //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, OUTPUT);    //row 3
  digitalWrite(LED_3, LOW);

  delay(100);

  //turn on LED L5
  pinMode(LED_1, OUTPUT);    //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);    //row3
  digitalWrite(LED_3, HIGH);

  delay(100);

  //turn on LED L6
  pinMode(LED_1, OUTPUT);
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, INPUT);
  digitalWrite(LED_2, LOW);
  pinMode(LED_3, OUTPUT);
  digitalWrite(LED_3, LOW);

  delay(100);
}

Results

It worked instantly! I didn't really run in to any issues, which feels like a miracle. And the code is simple enough that i was able to understand it, and play around with it a little bit. This was a small win that i needed!

Note: I don't like the blue light aesthetic, I didn't notice that i picked a blue LED. It's okay for this prototype, but next round, i want to make it with the warm LED's i ordered from digikey.

Tinkercad

Ok, so now that i understand the simplest charlieplexing code and wiring, i feel confident to try a more complex layout. I think i will try it out in Tinkercad, just like Mina Mayo-Smith did. I am not making it as complex as Mina, because i don't feel confident yet, just a little bit more complex than the first one. I'm pretty proud of myself, i wrote the code myself, adapting the instructables code I downloaded from the instructables tutorial for 6 LEDs.

Here's the code:

/* Charliplexing 14 LEDs
--------------------------------------------------------------------------------
Row 1 (R1): Arduino Pin 13
Row 2 (R2): Arduino Pin 12
Row 3 (R3): Arduino Pin 11
Row 4 (R4): Arduino Pin 10
Row 5 (R5): Arduino Pin 9
--------------------------------------------------------------------------------
variable    pinMode      state
 L           OUTPUT       LOW 
 H           OUTPUT       HIGH
 Z           INPUT        LOW
---------------------------------------------------------------------------------
     R1 (Pin 13)      R2 (Pin 12)     R3 (Pin 11)
L1    L                 H                Z
L2    H                 L                Z
L3    Z                 L                H
L4    Z                 H                L
L5    L                 Z                H
L6    H                 Z                L 
-----------------------------------------------------------------------------------
LED    Cathode      Anode`
1         R2          R1
2         R1          R2
3         R3          R2
4         R2          R3
5         R3          R1
6         R1          R3 
---------------------------------------------------------------------------------
*/

const int LED_1 = 13;     //LED row 1
const int LED_2 = 12;     //LED row 2    
const int LED_3 = 11;     //LED row 3
const int LED_4 = 10;     //LED row 4
const int LED_5 = 9;      //LED row 5

void setup() 
{
}

void loop()
{
    //turn on LED L1
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, HIGH);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, INPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L2
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, OUTPUT);      //row 3
  digitalWrite(LED_3, HIGH);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, INPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L3
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, OUTPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, OUTPUT);      //row 4
  digitalWrite(LED_4, HIGH);
  pinMode(LED_5, INPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L4
    pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, OUTPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, OUTPUT);      //row 5
  digitalWrite(LED_5, HIGH);

  delay(50);
  //turn on LED L5
  pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, LOW);  
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, INPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L6
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, OUTPUT);     //row 2
  digitalWrite(LED_2, HIGH);   
  pinMode(LED_3, OUTPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, INPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L7
  pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, OUTPUT);      //row 3
  digitalWrite(LED_3, HIGH);
  pinMode(LED_4, OUTPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, INPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L8
    pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, OUTPUT);      //row 4
  digitalWrite(LED_4, HIGH);
  pinMode(LED_5, OUTPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L9
    pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, OUTPUT);      //row 3
  digitalWrite(LED_3, HIGH);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, INPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L10
    pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, OUTPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, OUTPUT);      //row 5
  digitalWrite(LED_5, HIGH);

  delay(50);

  //turn on LED L11
    pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, OUTPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, INPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L12
    pinMode(LED_1, INPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, OUTPUT);      //row 3
  digitalWrite(LED_3, HIGH);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, OUTPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);

  //turn on LED L13
    pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, LOW);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, OUTPUT);      //row 5
  digitalWrite(LED_5, HIGH);

  delay(50);

  //turn on LED L14
    pinMode(LED_1, OUTPUT);     //row 1
  digitalWrite(LED_1, HIGH);
  pinMode(LED_2, INPUT);     //row 2
  digitalWrite(LED_2, LOW);   
  pinMode(LED_3, INPUT);      //row 3
  digitalWrite(LED_3, LOW);
  pinMode(LED_4, INPUT);      //row 4
  digitalWrite(LED_4, LOW);
  pinMode(LED_5, OUTPUT);      //row 5
  digitalWrite(LED_5, LOW);

  delay(50);





}

Next steps

Next I would like to successfully program this into the Attiny so that i can be untethered from the Arduino. I'm not sure yet if I will build the more complex circuit.

Toughts on applications

I decided to have the LEDs facing the skin for aesthetic reasons, but it made me wonder if there are any benefits or drawbacks to doing this, health wise. Is it okay to have LEDs right up against your skin? So I looked into it and found this monstrosity, which is great if you don't mind looking like Jason from Friday the 13th:

JASON

This is an anti-aging red light therapy device created by Omnilux.

One of the early thoughts i had was to create a veil-like circuit that covers part of the face. I was thinking of it just as an aesthetic piece but I'm realising there could actually be some therapeutic benefits. And it wouldn't it be amazing if this red light therapy mask didn't make you look like someone who's coming to kill you in your sleep?

I found this article about the use of LEDs for therapeutic purposes. I don't know how reputable clevelandclinic is for this type of information, but they are claiming all sorts of skin care benefits, such as benefits for acne, psoriasis, hair loss, ecszema, wrinkles, rosacea, etc. I also found this article by harvard health (probably a more reputable source) saying that scientists say LED skin treatments are safe but there is little evidence they actually work, because there aren't enough large studies.

One use of light therapy which is accepted by scientists and proven to work is light therapy for SAD (seasonal affective disorder). I myself suffer from this and can't live a functional life without my lightbox. Here's an article by mayoclinic about the benefits of light therapy for SAD and here's an interesting article on choosing a light box. This last article is espcially interesting because it gives clues as to what the design considerations are for a light therapy device. I've seen light therapy glasses so I think it's possible to design something that is less bulky and a bit more stylish...

RFID failure

Before looking into LEDs, I wanted to create a useful accessory i could use for transit. I was inspired by Loes Boger's amazing RFID skin tattoo that makes her bow down to the london transit system. Pretty funny.

I did some reasearch to understand how RFIDs work and to find inspiration on what to do with an RFID. Here's some of this research:

Following the info in some of these tutorials, I bought some acetone and submerged my opus card in it. I left it on the window ledge in my airbnb's vestibule because it smelled bad. Looking back, I probably should have just covered it. I don't know if the temperature has an impact on if this works or not? But, it did not work. some of the plastic just didn't want to dissolve and the chip ended up falling apart before the plastic.
opus trial

My theories on why it didn't work: - Temperature? - Not covering the container? - The pastic used in this Opus card is just not disolvable by acetone?

I didn't find any troubleshooting info on the web, no one has gone through this so I'm not really sure what to do from here.

Maybe i won't figure out the Opus card for now...But i would like to do something with RFID's in the future, when i have the time. I like the idea of having a silicone bracelet or a ring for my house key, for example.

Fabrication files


  1. File: xxx 

  2. File: xxx 

  3. File: xxx