Skip to content

13. Skin Electronics

In this week we looked at the intersection between tech and skin. And this was the final week in phase one (yaay).

References & Inspiration

Even though this field is relatively nouvelle, there has been a lot of good work and progress being produced by many pioneers. I;m mostly impressed by the works of Michael McAlpine and Katia Vega


Process and workflow

Since New Year's Eve was right around the corner I thought I'd do something that can be worn then. Something that gets us excited for 2023!

Design

I designed this 2023 glasses in Rhino. I used TextObject command in Rhino to create solids taking the shape of a text. Then I moved each number to create an alternating effect, and I subtracted a rectangular box from both sides for the temples.

3D text

TextObject Command

I followed this tutorial to design the temples but here's a summary of what I did:
- I traced over an image of a 2D design of the temples using the polyline command in Rhino.
- Then I filleted the edges to make it smoother with the fillet command. - I extruded the polyline using extrudeCrv command, make sure that solid is selected. - I filleted the solid's corners using the filletCorners command.

Temples Design Summary

Temples

Then, to connect the temples inside the frame I created a box using the box command in Rhino, then mirrored it from the central axis. Finally, I subtracted the box from the frame using boolean difference command.

Connection

I created another box in the subtraction but this time I moved in to the temples and joined them together using the booleanUnion command.

Result

Exporting

Using the export command to export Rhino geometry to different formats. In this case because I needed this for printing I exported the frame and the temples-separately- to STL files.

3D Printing

Because I plan to include lights in the glasses I needed to either design the glasses perforated or use the same printing technique I used in week07 where I printed the side walls and the infill without the top and bottom layers. I chose the later. This way the lights would come through the glasses from the spaces between the infill.

I used Ultimaker Cura we have in the lab. Here are the print settings I used for the frame:

Material Layer height Infill Density Infill Pattern Top Layer Thickness Bottom Layer Thickness Build Plate Adhesion Type
PLA 0.1 mm 15% Gyroid 0.00 0.00 Brim

The Frame

Snippet from Cura

And for the temples I used:

Material Layer height Infill Density Infill Pattern Top Layer Thickness Bottom Layer Thickness Build Plate Adhesion Type
PLA 0.1 mm 50% Gyroid 0.2 0.2 Brim

The Temples

Lights On

I wanted lights that were small enough to fit on the backside of the frame and that would allow me the option to change the color and brightness so I used the Adafruit RGB Smart Neopixels flora V2 and connected them to a Adafruit Gemma M0 through conductive thread)

Connections

It's pretty easy to connect the neopixels to the gemma using a conductive thread. I wrapped the thread around the VCC in the Gemma board and connected it in the VCC in the neopixel #1 and then the next one and so on. I did the same thing with the GND. What's really good about adafruit's products is that it's easy to use, the VCC (+) and GND (-) are clearly marked on the board and the neopixels.

My sketch of the tools needs

Neopixel flora
Connecting Flora
  • Even though the holes are not too big in the Flora but try to wrap the conductive thread at least once.

Neopixels connected to the Gemma M0

I leveraged the infill perforations in the frame to connect the neopixels to the frame without using glue, I basically wrapped the conductive thread in the infill and back.

My sketch of the process

The Final Result

Mixing it up

Now that everything was set. I ran different codes in Arduino, but my favorite was this one from the example files:

// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// Released under the GPLv3 license to match the rest of the
// Adafruit NeoPixel library

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN        6 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 16 // Popular NeoPixel ring size

// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels

void setup() {
  // These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
  // Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  // END of Trinket-specific code.

  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}

void loop() {
  pixels.clear(); // Set all pixel colors to 'off'

  // The first NeoPixel in a strand is #0, second is 1, all the way up
  // to the count of pixels minus one.
  for(int i=0; i<NUMPIXELS; i++) { // For each pixel...

    // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
    // Here we're using a moderately bright green color:
    pixels.setPixelColor(i, pixels.Color(0, 150, 0));

    pixels.show();   // Send the updated pixel colors to the hardware.

    delay(DELAYVAL); // Pause before next pass through loop
  }
}
You can find this code in File>> Examples >> Adafruit Neopixel >> Simple

Video


Fabrication files


Last update: 2023-05-15