13. Skin Electronics¶
Its Party Time !
THis week Skin electronics is the star of the week. Learning a bit more into electronic wearables and their various applications.
My focus was to create something between a party mask and a face painting design.
I was planning on using thermocromic colours and led lights.
Second skin Mask¶
I had inspirations of face mapping and colourfull illustrations. Party Mood was on !
Thermocromic colours¶
Testing a bit with thermocromic patterns first on paper and silicone thin sheet for which i used heat gun to test
Based on the tutorials provided and following the slides and This very useful link, I tested the effects of heat on the thermocromic powder colours using a wire for which I used the multimeter to find the resistance in the two trials (first one 3 Ohm and second 8 Ohm) based on the resistance I used 4 volt 200 mAm for the first short wire and 3.7 volt and 500 mAm for the second wire to mimic Liop battery voltage. All with the help and superviosion of My mentor.
Being happy with the result, It was time to move things to Adafruit Gemme M0 and start on the mask itself.
Mask Material¶
Started by an experiment to create flexible thin sheet that could be the mask main material.
- First I used silicone rubber ( Ecoflex 30) fro which I mixed equal amounts of a total of 40 grams and poured them into an already greased mold for which My lab partner have used in a previous project ( laser cut 3mm acrylic mold ) for which was left for more than 4 hours then peeled carefully.
The Ecoflex created a very durable flexible material that is has good transperancy and sticks better to skin.
- Second experiment was using a gelatin recipe and poured into a glass jar As I was trying to creade a domed extra flexible shape that can mimic a hat mask.
Recipe
6 g gelatin
150 g water
22.5 g glycerine
The gelatin recipe was perhaps too thin to be peeled and is not durable but extremely trasparent.
Started a little bit of sketching
and then procedded to cut out a backing sheet paper into the layout of the mask, trying it out and fixing it to my liking.
Electronic Part.¶
Following Liza Stark very detailed explanation which you can access through this Link
I used the following circuit sketch using copper tape , Mosfet , 100k Ohm transistor and 1N4001 Diode.
Sketch by Liza Stark
I used Mosfet FQP30N06L which is a transistor, a semiconductor device that is widely used for switching purposes. In this case, In order to heat the wire, we need higher voltages than what the Gemma Mo can provide, therefore I am using a 7 voltage battery for the heating element and 3.5 voltage battery to run the Gemma MO. Now the Mosfet role is to act as switch that based on the arduino code, When the digitalWrite is high, the Mosfet turns on the 7 voltage battery to heat up the wire and when the digitalWrite is Low, the Mosfet turns off the 7 voltage battery to give time for the wire to cool down.
Using Adafruit Gemma M0 I connected the circuit to the computer
Make sure to choose The right port, stack, and board
Note
Make sure the Usb cable is good for transferring data and not just charging Make sure all needed boards are updated and available through the manage board option from tools
Here is the code
#include <Adafruit_NeoPixel.h>
void setup() {
// put your setup code here, to run once:
pinMode(A0, OUTPUT);
Serial.begin(9600);
pinMode(A1, OUTPUT);
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 1
}
void loop() {
digitalWrite(A1, HIGH);
Serial.println("lighton");
digitalWrite(A0, HIGH);
Serial.println("ON");
delay(8000);
digitalWrite(A1, LOW);
Serial.println("lightoff");
delay(10000);
digitalWrite(A1, HIGH);
Serial.println("ON");
delay(5000);
digitalWrite(A1, LOW);
//off
digitalWrite(A0, LOW);
Serial.println("OFF");
delay(8000);
}
Bill of Materials¶
The bill of the materials for the final Project goes like this:
Material | Quantity | Unit |
---|---|---|
Adafruit Gemma M0 | 1 | Unit |
wires | 1 | m |
copper tape | 0.5 | m |
Soldering kit | 1 | Unit |
Mosfet FQP30N06L | 1 | Unit |
1N4001 Diode | 1 | Unit |
100k Ohm resistor | 1 | Unit |
3.5v round batter | 1 | Unit |
7v recatngular batter | 1 | Unit |
round battery base | 1 | Unit |
rectangle battery base | 1 | Unit |
Thermochromic ink | 3 | Unit |
resisting wire | 30 | cm |
Ecoflex 00-30 silicone | 20 | gram |
acrylic sheet | 30*20 | cm |
Now here is my Frankenstein
Gallery¶
Under the sea - Head Piece¶
A sound level interactive headpice, designed to be something between a crown and a mask.Lights Fade in and out based on the sound level around it. Inspired by the sea.
Inspirations¶
Like Always, The sea calls to me. I knew I wanted to make a headpiece Showing organic lines yet speaks of the strength of the sea.
Physical Part¶
Started with a single piece of the design in 3ds Max which I exported to rhino and duplicated the piece in a series and sdjusted each piece size and wisth to create a 2d layout of the mask . Created a grasshopper file to see how it fits on a face model. When I was happy with the result I exported the 3d layout as an stl file.
You can download it the file here
Using Cura, I sliced the file and used the settings in the picture to 3d print it.
Material : PLA
3d printer : Ultimaker S5
For a finer look. I Sprayed paint the 3d print.
I proceeded to cut the pieces , making sure I have a reference to the location of every piece. Then glued them to a tull fabric piece that I stretched lightly on a wooden board.
Then I glued the piece to it's designated place untill the head piece was ready.
Electric Part¶
Now for the electric part:
Note: The real life sequence of the whole process is a bit differentas at each time I get into a problem for which I would go back steps and fix stuff.
I started by Copying and pasting the link below into the Additional Boards Manager URLs option in the Arduino IDE preferences.
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
After that I started installing and updating library installations via the Library Manager interface. From the Sketch menu, > Include Library > Manage Libraries... Added "Adafruit NeoPixel by Adafruit", "Arduino SAMD Boards" and "Adafruit Circuit Playground".
Using a sound pressure example which you can find like this: file > Examples > Adafruit Circuit Playground > Microphone_Demos > Soundpressurelvl
I started testing , It was great except it worked on the interal Led lights using multiple colours and going back to z as in acting like a meter of sound. Working on the file I made it into reading the sound pressure level then creating phases with upper and lower limits for which three external flora neopixels would fade high and low based on the sound level.
As you can see here after long hours of testing and coding I managed to make it work.
I then proceeded to connect the lights using brass coated wires that are thin and can be hidden well enough. I made sure to measure the needed length first and scratching the wire where it will connect to the LED pin tie an average of 3 times and then solder it. Repeating the process with some few mistakes that made me redo some steps. I managed to finish it and test it using the adafruit circuit playground. Then I glued the electrical hardware part to the headpiece itself.
I serial print the pressure level while everything was working which looked like this:
Here is the code to make 3 flora neopixels fade by sensing sound pressure through Adafruit Playgrount circuit Express , Arduino Code.
#include <Adafruit_CircuitPlayground.h>
#define NEOPIX_PIN A2 // you chosen pin on adafruit
#define NUM_PIXELS 3 // number of attached external neopixels
// use Adafruit_CPlay_NeoPixel to create a separate external NeoPixel strip
Adafruit_CPlay_NeoPixel strip = Adafruit_CPlay_NeoPixel(NUM_PIXELS, NEOPIX_PIN, NEO_GRB + NEO_KHZ800);
int currentValue;
int previousValue;
void setup() {
CircuitPlayground.begin();
Serial.begin(115200);
strip.begin();
}
void loop() {
Serial.println(CircuitPlayground.mic.soundPressureLevel(50));
int p = CircuitPlayground.mic.soundPressureLevel(50);
int upper = 0;
int lower = 0;
int minimum = 0; //0
int mini = 57; //20
int mini2 = 60; //50
int mini3 = 64; //80
int mini4 = 78; //150
int mini5= 70; //255
int maximum = 255; //255
if (currentValue != NULL) {
previousValue = currentValue;
} else {
previousValue = maximum;
}
currentValue = p;
if (previousValue >= mini5){
upper = 250;
}
if (mini5 > previousValue && previousValue >= mini4){
upper = 150;
}
if (mini4 > previousValue && previousValue >= mini3){
upper = 80;
}
if (mini3 > previousValue && previousValue >= mini2){
upper = 50;
}
if (mini2 > previousValue && previousValue >= mini) {
upper = 20;
}
if (previousValue < mini) {
upper = 1;
}
if (p < mini){
lower = 0;
upper = 1; //h;
}
if (p >= mini5) {
lower = 255;
upper = 255;
}
if (mini <= p && p < mini2) {
lower = 20;
}
if (mini2 <= p && p < mini3) {
lower = 50;
}
if (mini3 <= p && p < mini4) {
lower = 80;
}
if (mini4 <= p && p < mini5) {
lower = 150;
}
int wait2 = 50; // delay when there is no transition in colour
int wait1 = 5; // delay when there is transition in colour
if (lower == upper) {
strip.setPixelColor(0, 0, 0, lower);
strip.setPixelColor(1, 0, 0, lower);
strip.setPixelColor(2, 0, 0, lower);
strip.show();
delay(wait2);
}
if (lower < upper) {
for (int i=upper; i>=lower; i--){
strip.setPixelColor(0, 0, 0, i);
strip.setPixelColor(1, 0, 0, i);
strip.setPixelColor(2, 0, 0, i);
strip.show();
delay(wait1);
}
}
if (lower > upper) {
for (int i=upper; i<=lower; i++){
strip.setPixelColor(0, 0, 0, i);
strip.setPixelColor(1, 0, 0, i);
strip.setPixelColor(2, 0, 0, i);
strip.show();
delay(wait1);
}
}
Bill of Materials¶
The final bill of materials goes like this:
Material | Quantity | Unit |
---|---|---|
Flora neopixels | 3 | Unit |
Adafruit Circuit Playground Express | 1 | Unit |
PLA | 50 | gm |
lycra mesh | 70*20 | cm |
Glue | 2 | Unit |
spray paint | 1 | Unit |
aligator clip wires | 6 | Unit |
Tarnish resistor thin wire | 2 | m |
soldering kit | 1 | Unit |