Process

Final project process page

Time management

week schedulefinal project
computer-aided designdesigning the pillow and the body of the nightlight
computer-controlled cuttingcutting acrylics and testing a light pattern, making a screenprint sticker for the pillow
electronics productionworking on a touch sensor
3D scanning and printing3D scanning possible lens shapes
embedded programminglook into led’s and motors,
computer-controlled machiningworking on a touch sensor, getting familiar with the ESP32
electronics designdesign a board with a NEO pixel and one to test different kind of motors
output devicesworking on the motor and LED’s and the kinetic movement
mechanical design, machine design
break, midterm reviewworking on documentation for final project page
input devicesworking on the touch sensor input pillow
molding and castingmould and cast the lenses to go on top of the nightlight both for the kinetic movement as for the first spiral design
networking and communicationsfigure out how to communicate between the two devices
interface and application programmingwork on the PCB design for the final project
wildcard weekmill the outer wooden shape
applications and implications, project developmentwork on the programming and putting everything together
System integrationwork on the programming and putting everything together
invention, intellectual property, and incomefinish final project preparing the presentation
project presentations

Inspiration

During Neils first class we saw some project presentations and I really like the final project from Mickaël Bouhiermeditation pebble. This is a breathing exercise tool that guides you with light. I looked op several projects from previous FabAcademy students by searching for Light. I found the shy light project of a previous Waag FabAcademy student Rutger Oomkes I read in his documentations about using servo’s for moving the light. What will be a challenge is that when working with servo’s it tends to give a shocking motion. For the project I have in mind I think it’s important that the motion is smooth. I read about including soft robotics so make more natural movements. Which I find very cool but I don’t know yet if it would fit with my final project idea.

Edition: I’ve found inspiration from Anthony Howe, who makes these mesmerizing sculptures that turn in the wind. I want to incorporate this mechanical movement into my final project.

For the input pillow: I’ve seen knitting input touch sensors in the project [kunststof](https://fabacademy.org/2023/labs/waag/students/michelle-vossen/final-project-development/) of Michelle which is really interesting for this project to investigate. I like the idea of screenprinting a conductive pattern or using the embroidery technique on the fabric. At Waag there are students that follow the [fabricademy](https://textile-academy.org/program/) course and I think I can get more inspiration for the pillow looking in to their research. I would like to experiment with different techniques and let the experiment direct the shape of the pillow.

Existing things

I found this design lamp ripple from the POETIC LAB they made a glass bulb with ripples to create light structures that resemble light reflecting on water. Ripple — The light is spinning around but its not using an input and also no light patterns this is what I would like to add. I want to experiment with different shapes to create different patterns.

I found these very cheap disco and galaxy lights that works sort of similar with the the light and a transparent object that reflect the light on the ceiling. But this is not the type of patterns and light I want for my project, and I want to make of nice material like wood and again use the input of the pillow. galaxy lightbulb

Making thoughts

At first I wanted upcycle a simple glass object like a glass bottle from sirup or oil. I tried some stuff to see how it reflects the light and made some sketches but I quickly changed my mind because:

  1. The goal is to create as much as possible yourself
  2. The way the light reflects depends on the shape of the bottle and I want it to be something more universal. Now I would have to build around one specific object as in my previously made artwork and sketches below. But for the fabacademy I would like it to be a project that I can consistently work on with the weekly assignments to make sure I can finish the project. And I don’t want to be stuck to the bottle idea.

sketch sketch
Now I’m thinking about making a base, maybe from CNC milled wood, with LEDs in the base. That gives me a lot of space to experiment with the light bending object on top. Like pouring it in resin, vacuum forming the shape or making it with the laser cutter from acrylics. I sketched this idea:

sketch

I made a render of this idea in week 2. alt text Since then I have new ideas about how to make the light patterns. One idea is making an kinetic moving construction so the light will bend in all kind of directions new sketches The other one is making a glass top with water jet cutting glass and make a striped pattern that can rotate. new sketches

I decide to set my mind on the kinetic art nightlight and will stick to this idea.

Spiral development

  • Spiral one

  • pillow with touch sensors fo turn the motor connected with wires to the nightlight

  • sensor for dimming the light

  • Lasercut base for the kinetic art construction, made of universal joins shafts

  • Stepper motor and pulley for the movement, microstepping for smooth movement

  • acrylic lasercut design for the light bends

  • Spiral two

  • Input pillow and light object communicate wireless

  • Nice wooden milled base more compact design

  • use of home made beveled gears for the kinetic turning mechanism

  • moulded en poured transparent bio plastic organic shapes for the light bends

  • Spiral three

  • Different programmed movement patterns

  • Rechargeable battery

  • Back-up plan

  • Light object with the light bending lens on a transparent plateau that turns around instead of the kinetic peace. Like the render you can find above.

system diagram

The making of

Input sensor for the pillow

First render: alt text Redesigning: new sketches For the input pillow I wan’t to try different ways of making the input sensor on / in the pillow. I start by trying to screenprint a design with conductive paint I made myself, major fail there so I continue with conductive paint I boughed, coperfabric and velostat tests. You can read about it below.

Conductive ink - capacity sensor

I want to try to make a screenprint with conductive paint on fabric for the input pillow to make a capacity sensor.

I start with playing with the spiral tool in Corel Draw to make a shape. I try the different functions that the tool offers like the amount of turns and the distance between the lines. It can be evenly distributed or centering at the circle. I thing I will try them both. And I export the drawings as .EPS files. construction kit fabricating With the Summa vinyl cutter an the Fablab Arnhem I cut out a peace of leftover foil with the pressure set to 60 grams, weed the actual sticker itself so I’m left with the outershape and use transfer foil to put it on the screen. screenprinting I follow this tutorial showing how to make conductive paint from charcoal. I have a bag of charcoal for barbecuing and start with using the multimeter in the Ohm function and I try find the peaces with low resistance, I found some peaces of <80 ohm but it’s kinda hard. A lot of the peaces have a very high or unmeasurable resistance. screenprinting And put them in the blender. I take away the clean water on top after letting it rest and put a little bit of textile binder instead of glue (what they use in the tutorial). screenprinting I try to screenprint with it but the emulsion does not pass through the sieve. I strain the ink and try again, still no success. screenprinting I end up painting a shape and after I let it dry I test it but the resistance is very high I measure Mega ohms now, and on some parts I can’t even measure it because it’s to high. The paint is leaving black prints on your finger when you touch it so it’s not a success at all. screenprinting

Follow up: I ordered this conductive paint for about 11 euro’s and mixed it with a bit of textile binder again to make sure it will attach to the fabric. I use a rate of 1:1 of the paint and binder and pain a shape on the fabric again. I use the same code described at the coperfabric capacity sensor below and was able to read numbers from the serail monitor.

Coper fabric vinyl cutting - capacity sensor

I got a tip from Michelle looking in to coper fabric who worked with this during fabacamdemy originally inspired by this project kobakant tutorial to make the conductive pillow touch sensor. You can find instructions of working with the vinyl cutter machine on page Week 2 - computer controlled cutting. And on page Week 4 - electronics design I tried cutting a pcb with the same machine and material. I got the tip for using vliesofix to attach coper fabric to fabric from Michelle and I used the vinyl cutter instead of the lasercutter because I don’t know what type of material vliesofix is made from and if I can safely cut it with the lasercutter and I think it should be possible to cut it with the vinyl cutter as well.

I used the following materials:

  • vliesofix I got it from a local store that I bought for 0,60 cents
  • coper fabric I got it from amazon fot about 11 euros
  1. I start by using the heat press to attach one side of the double sides vliesofix to the coper fabric. I put the heat at 100 degrees, test the pressure by turning the big black screw on top and make sure I feel resistance from the press and pressed it for a sew seconds, that works nicely! touch pillow

  2. I put the peace of coper fabric with the vliesofix material attached to the backside on the cricut sticky mat, and I use some extra tape to make sure the material stays in place. I do some test runs using the test function of the machine and the pressure of 20 grams works best for cutting through the coper. I export my design as an EPS file and send it to the plotter. Weeding the material is easy I do have to watch out that the spiral does’t get loose from the sticky mat. I it looks very good and i’m happy so far!
    touch pillow

  3. I cut peaces of yellow cotton fabric and use a transfer sticker to transfer the spiral to the fabric without deforming it. I use the heat press again same temperature /pressure and length as step 1. I will now attach the the coper fabric to the yellow fabric by heating the vliesofix again. I press it leaving the transfer sticker on. Because I don’t want to deform the spiral. The vliesofix material only becomes sticky when you heat it so it wont attach to the fabric before. The transfer foil comes of easily and there is no glue or anything left and the coper fabric is nicely attached to the yellow fabric! It looks really good no loose edges. touch pillow

  4. I open Arduido IDE 2.3.1. and use the code from the arduino starter kit that uses an capacity sensor library by Paul Badgers and try to get it to work using the micro controller I made during the electronics design week. I get an error and remember that chips have become faster to I check the baud rate of the XIAO RP2040 and change the code to 115200 instead of 9600. Thinking it will work now! nope.. I googled the error and after some rome research I can make the conclusion that the library that i’m using is not supported by the XIAO RP2040, so I need to change library or micro controller. For now I will change the controller because I can do this quickly, find an arduino onu laying around in the lab and use this to test if i can read values. error

I start from this example code:

/*
  Arduino Starter Kit example
  Project 13 - Touch Sensor Lamp

  This sketch is written to accompany Project 13 in the Arduino Starter Kit

  Parts required:
  - 1 megohm resistor
  - metal foil or copper mesh
  - 220 ohm resistor
  - LED

  Software required :
  - CapacitiveSensor library by Paul Badger
    https://www.arduino.cc/reference/en/libraries/capacitivesensor/

  created 18 Sep 2012
  by Scott Fitzgerald

  https://store.arduino.cc/genuino-starter-kit

  This example code is part of the public domain.
*/

// import the library (must be located in the Arduino/libraries directory)
#include <CapacitiveSensor.h>

// create an instance of the library
// pin 4 sends electrical energy
// pin 2 senses senses a change
CapacitiveSensor capSensor = CapacitiveSensor(4, 2);

// threshold for turning the lamp on
int threshold = 1000;

// pin the LED is connected to
const int ledPin = 12;


void setup() {
  // open a serial connection
  Serial.begin(9600);
  // set the LED pin as an output
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // store the value reported by the sensor in a variable
  long sensorValue = capSensor.capacitiveSensor(30);

  // print out the sensor value
  Serial.println(sensorValue);

  // if the value is greater than the threshold
  if (sensorValue > threshold) {
    // turn the LED on
    digitalWrite(ledPin, HIGH);
  }
  // if it's lower than the threshold
  else {
    // turn the LED off
    digitalWrite(ledPin, LOW);
  }

  delay(10);
}
  1. I delete everything that has something to do with the LED because I just wan’t to read the sensor value for now in the Serial Monitor. And add the map function. This will recalculate the output values between the number you type there so for example: Instead of mapping a value number between 0 ans 2000 you can scale this bac to between 0 and 10. So an original value of 1000 will be 5 now on a scale from 0 to 10. This is the actual code I used to make the video below:
// create an instance of the library
// pin 4 sends electrical energy
// pin 2 senses senses a change
CapacitiveSensor capSensor = CapacitiveSensor(4, 2);

void setup() {
  // open a serial connection
  Serial.begin(9600);

}

void loop() {
  // store the value reported by the sensor in a variable
  long sensorValue = capSensor.capacitiveSensor(30);

  // scale the numbers back for you to make it more readable. 
  map (sensorValue, 0, 1023, 0, 100)

  // print out the sensor value
  Serial.println(sensorValue);

  }

  delay(10);
}

With the new pain I was also able to screenprint designs. With the multimeter I measured the Ohm resistance of the material. With the smaller lines it’s to high but the bigger lines look fine! It took me a few tried to get the pressure right and and up with a nice screenprinted spiral. alt text alt text

Velostat and coper fabric - Pressure sensor

In the local meeting I got the change to share my final project and got the tip from Ardian to look at the material velostat, so I ordered this to. It’s a pressure sensitive conductive sheet if you put pressure on it the resistance becomes less. Ardian shows the E-monsters project made with velostat, the led changes color when the fabric is pressed. Velustat is a Carbon impregnated black polyethylene film material with a volume resistivity is <500 Ohms/cm i read in his documentation you can find here flex sensor this also uses the ardianino board I made so it’s very helpful. I’m going to try to make two different versions of this pressure sensor. One laminated in plastic that could go inside of the pillow and another one with fabric that could be sewed on top of the fabric.

In have the wires of the VCC and ground soldered to the copertape. I will add an 10k pull-down resistor at the sensor signal output. And an other wire for communicating the signal to arduino pin 0). IMPORTANT: We also need to connect a .

I use the microcontroller XIAO Rp2040 and use the following code from adrians page about the TEXTILE FLEXURE SENSOR:

//Fab Academy 2021 - Fab Lab León
//Textile Flexure Sensor
//Adrianino
//ATtiny1614
int sensorPin = 0;    // analog input pin to hook the sensor to
int sensorValue = 0;  // variable to store the value coming from the sensor
 
void setup() {
  Serial.begin(115200); // initialize serial communications
}
 
void loop() {
  sensorValue = analogRead(sensorPin); // read the value from the sensor
  sensorValue = map(sensorValue, 0, 1024, 0, 1024);
  Serial.println(sensorValue); // print value to Serial Monitor
  //mySerial.println("x"); // print value "x" to Serial Monitor
  delay(500); // short delay so we can actually see the numbers
}

Laminated velostat sensor

I started working on the laminated version using coper tape a piece of velostat and a sheet of plastic for the lamination process. I cut two pieces of coper tape, solder a wire on every peace. But the coper side towards the velostat and sandwich the velostat between the coper. It’s important that the coper traces don’t make direct contact because the current needs to go though the velostat and pressing of bending the velostat will reduce resistance with will make you able to measure this change thus use it as an input device. I did this wrongly so I made a second and this time using fabric with the final project in mind.

Fabric velostat sensor

I make another one using fabric as a base. I start with cutting the coper fabric in two peaces and use the heat press to fix the vliesofix to the yellow fabric the same way I made the capacitive sensor. Soldering on the coper fabric is difficult because you will burn holes in it with normal tin. I found this low temperature solder tin from Voltera. It’s expensive but works super nice. I soldered the wires at a temperature of 200 degrees and now have my base. touch pillow touch pillow I fold the fabric in half, put a peace of velostat between it an sew it together using the sewing machine. Watch out for you needle on the parts that have tin. touch pillow touch pillow touch pillow

Step response

Mechanical movement - Kinetic art

For the mechanics of my project i’m working on two ways of making this movement. One with beveled gears and one with universal couplers.

Beveled gear

During 3D printing and scanning week 5 I made a design for the beveled gears to create this rotating movement inspired by this video from Geo3Dprint I found creating an Antony howe inspired sculpture.
mechanicalpartfinalproject It will be placed on top of this wooden base with will include the motor to drive the mechanism and the PCB with the Neopixels or power LED’s. After printing it, you can find the result here

I redesigned the beveled gears to get more grip beveledgear

But during output devices I decided to go another rout to make a quick prototype using universal couplers so I could add a stepper motor before the end of the week.

Universal couplers

mechanicalpartfinalproject mechanicalpartfinalproject

mechanicalpartfinalproject mechanicalpartfinalproject mechanicalpartfinalproject mechanicalpartfinalproject mechanicalpartfinalproject mechanical movement

mechanicalpartfinalproject

Light pattern reflective object

Acrylic to bend the light

I cut out a shape I designed in Coreldraw using the circular pattern function and the line tool. I cut 3 mm acrylic using the BRM machine I talk about in week 2. I heat the shape with a hot air gun and bend the shape so the light bends. I try it with the flash light of a phone.

light reflective light reflective light reflective

I started designing the leaf like shaped forms for the moving mechanism. I start with drawing the constraints so I know how big I can make the peases. After this I start working on the shape itself inspired by some google search pictures of leaves. acrylicleaf acrylicleaf acrylicleaf acrylicleaf

After exporting the shaped as a .DXF file I use deepnest to nest the parts. acrylicleaf

Neopixel strips with arduino uno

https://learn.adafruit.com/make-it-glow-how-to-solder-neopixels-a-beginners-guide/troubleshooting

//Fab Academy 2023 - Fab Lab León
//RGB LED
//Fab-Xiao
//original code from https://wiki.seeedstudio.com/XIAO-RP2040-with-Arduino/#rgb-led


#include <Adafruit_NeoPixel.h>
 
int PIN  = 2;
#define NUM_PIXELS 2
 
Adafruit_NeoPixel strip(NUM_PIXELS, PIN, NEO_GRB + NEO_KHZ800);


void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  // Example: Turn on the first pixel
  strip.clear(); // Clear the strip
  strip.setPixelColor(0, 255, 255, 255); // Set the first pixel color to white
  strip.setPixelColor(1, 255, 255, 255); // Set the first pixel color to white
  strip.show(); // Display the updated pixel
  delay(1000); // Delay for 1 second (adjust as needed)
 
}

Molding and Casting

notes

  • coreless pm motor (more silent?)
  • muscle with air pump. (not a big pump) -> soft robotics Erwin spiral weafing.eu
  • Neo pixels
  • capacitive touch slider tip from Edwin will work better then capacity libraries.
  • capacity touch breakout board
  • schedule until june 5 what to do when
  • Diagram of components
  • one on one with local instructor

stepstick:


#include <Adafruit_NeoPixel.h>
 
int PIN  = D8;
#define NUM_PIXELS 2
 
Adafruit_NeoPixel strip(NUM_PIXELS, PIN, NEO_GRB + NEO_RGBW);


void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  // Example: Turn on the first pixel
  strip.clear(); // Clear the strip
  strip.setPixelColor(0, 255, 255, 255, 200); // Set the first pixel color to white
  strip.setPixelColor(1, 255, 255, 255, 30); // Set the first pixel color to white
  strip.show(); // Display the updated pixel
  delay(1000); // Delay for 1 second (adjust as needed)
 
}

// CNC Shield Stepper  Control Demo
// Superb Tech
// www.youtube.com/superbtech

const int StepX = 2;
const int DirX = 5;
const int StepY = 3;
const int DirY = 6;
const int StepZ = 4;
const int DirZ = 7;


void setup() {
  pinMode(StepX,OUTPUT);
  pinMode(DirX,OUTPUT);
  pinMode(StepY,OUTPUT);
  pinMode(DirY,OUTPUT);
  pinMode(StepZ,OUTPUT);
  pinMode( DirZ,OUTPUT);

}

void loop() {
 digitalWrite(DirX, HIGH); // set direction, HIGH for clockwise, LOW for anticlockwise
 digitalWrite(DirY, HIGH);
 digitalWrite(DirZ, HIGH);
 
 for(int x = 0; x<200; x++) { // loop for 200 steps
  digitalWrite(StepX,HIGH);
  delayMicroseconds(500);
  digitalWrite(StepX,LOW); 
  delayMicroseconds(500);
 }
delay(1000); // delay for 1 second

for(int x = 0; x<200; x++) { // loop for 200 steps
  digitalWrite(StepY,HIGH);
  delayMicroseconds(500);
  digitalWrite(StepY,LOW); 
  delayMicroseconds(500);
 }
delay(1000); // delay for 1 second

for(int x = 0; x<200; x++) { // loop for 200 steps
  digitalWrite(StepZ,HIGH);
  delayMicroseconds(500);
  digitalWrite(StepZ,LOW); 
  delayMicroseconds(500);
 }
delay(1000); // delay for 1 second

}
/*
 * Simple demo, should work with any driver board
 *
 * Connect STEP, DIR as indicated
 *
 * Copyright (C)2015-2017 Laurentiu Badea
 *
 * This file may be redistributed under the terms of the MIT license.
 * A copy of this license has been included with this distribution in the file LICENSE.
 */
#include <Arduino.h>
#include "BasicStepperDriver.h"

// Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step
#define MOTOR_STEPS 200
#define RPM 120

// Since microstepping is set externally, make sure this matches the selected mode
// If it doesn't, the motor will move at a different RPM than chosen
// 1=full step, 2=half step etc.
#define MICROSTEPS 3

// All the wires needed for full functionality
#define DIR 2
#define STEP 4
//Uncomment line to use enable/disable functionality
//#define SLEEP 13

// 2-wire basic config, microstepping is hardwired on the driver
BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP);

//Uncomment line to use enable/disable functionality
//BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP, SLEEP);

void setup() {
    stepper.begin(RPM, MICROSTEPS);
    // if using enable/disable on ENABLE pin (active LOW) instead of SLEEP uncomment next line
    // stepper.setEnableActiveState(LOW);
}

void loop() {
  
    // energize coils - the motor will hold position
    // stepper.enable();
  
    /*
     * Moving motor one full revolution using the degree notation
     */
    stepper.rotate(360);

    /*
     * Moving motor to original position using steps
     */
    stepper.move(-MOTOR_STEPS*MICROSTEPS);

    // pause and allow the motor to be moved by hand
    // stepper.disable();

    delay(5000);
}