Skip to content

9. Wearables

wk09_summary_photo

Learning outcomes

  • Research skills: the participant has acquired knowledge through references and Concept development
  • Design skills: the participant has learnt by programming a microcontroller, design a circuit and schematic
  • Fabrication skills: the participant acquired skills necessary to integrate inputs and outputs in a microcontroller wearable project
  • Process skills: Anyone can go through the process, understand it and reproduce it
  • Final outcome: Assembled project, functioning and complete
  • Originality: Has the design been thought through and elaborated?

Student checklist

  • Document the concept, sketches, references also to artistic and scientific publications
  • Create a swatch/sample using an ATTiny/Arduino/Adafruit with one input and one output, using hard-soft connection solutions and battery
  • Create 2 actuator swatches and test them with the Arduino or ATTiny, chosing from examples such as:

    • motors / mini vibration
    • leds / neopixels
    • flip dot / electromagnet
    • heat pad / with thermochromic coating
    • speaker / mp3 player
    • SMA (shape memory alloy)
    • Learn how to program an Arduino/ATTiny/Adrafruit, documenting your process, the libraries added, power requirements and source code
  • Document the schematic and circuit

  • Upload a small video of your object working
  • Integrate it to a project (extra credit)

Ideation

Considering the additional values for vehicle seat, following functions came up in my mind;
- Vehicle surrounding object notification by vibration at each body part as augmenting vehicle body area (vibrator, air or liquid inflator)
- Exercise rhythm guidance by vibration at fabric surface (vibrator), volume change at seat cushion area (air or liquid inflator), motion of seat frame part (servo motor with geometrical support force)
- Refreshing cooling and warming at sacrum area (Peltier device)

Research

Talking about haptic technology, I cannot ignore the amazing Ted Talk by David Eagleman in 2015 talking about how brain is flexible and could complement other sense. For example we are able to "hear" by our haptic sense.
David Eagleman haptic vest

I am also curious about electric control system reinforced by mechanical linkage to actuate force that would not be achieved by electric motor alone.
* Variable Geometry Actuator called "Delft Active Suspension system"
My focusing point is the following "cone suspension system" which can be controlled by little force of servo motor but output relatively big force.
cone suspension

Based on my Ideation list, I started to learn about "DC motor" and "Vibration Motor" control by Arduino.

DC Motor control by Arduino

Materials Needed

  1. Arduino (Uno, Nano, or any other compatible board)
  2. Breadboard
  3. DC Motor
  4. transistor
  5. push button switch
  6. potentiometer (if motor rotational speed need to be changed)
  7. external power supply

Set Up the Circuit

To set up the circuit, basic LED light circuit could be the reference to start.
However, motor requires a lot of current (larger than 100mA) to run which cannot be supplied from Aruduino IO-Pin.
Therefore, external power supply to run the motor is necessary.
Then, the transistor is needed.
In TinkerCAD, "nMOS" as the mosfet (metal oxide semiconductor filed effect transistor) might be the one to choose fot the transistor.
Be careful not to connect positive voltages of Auduino and external power supply, but make sure to have common ground (ground of external battery pack to ground of Arduino) for the entire circuit.

Below is an example of simple LED light press button circuit and code; Simple LED circuit with Arduino

// C++ code
// simple LED light button press circuit
// declare variables
const int LED_pin = 9;
const int button_pin = 2;
int state;

void setup(){
  // setpins
  pinMode(LED_pin, OUTPUT);
  pinMode(button_pin,INPUT_PULLUP);
}

void loop(){
  // read button state
  state = digitalRead(button_pin);
  // check if button is pressed
  if(state == HIGH){ //button not pressed
    digitalWrite(LED_pin, LOW); // turn LED off
  }
  else{ // button pressed
    digitalWrite(LED_pin, HIGH); // turn LED on
  }
}

Here under is an example of DC motor control circuit with Arduino.
simple DC motor control with Arduino

DC motor can be controlled with exactly the same code as LED light one as follows;

// C++ code
// simple DC Motor control
// declare variables
const int motor_pin = 9;
const int button_pin = 2;
int state;

void setup(){
  // setpins
  pinMode(motor_pin, OUTPUT);
  pinMode(button_pin,INPUT_PULLUP);
}

void loop(){
  // read button state
  state = digitalRead(button_pin);
  // check if button is pressed
  if(state == HIGH){ //button not pressed
    digitalWrite(motor_pin, LOW); // turn Motor off
  }
  else{ // button pressed
    digitalWrite(motor_pin, HIGH); // turn Motor on
  }
}
I made an actual circuit of Simple DC Motor with Arduino.
simple DC Motor circuit
video >>

Vibration Motor control by Arduino

Materials Needed

  1. Arduino (Uno, Nano, or any other compatible board)
  2. Breadboard
  3. ERM(eccentric rotating mass) motor
    or coin vibration motor <-very compact and all sealed
  4. solder set to solder the vibration motor thin wire with normal thickness wire to be able to put in breadboad hole
  5. electric tape to cover the solder part
  6. transistor
  7. push button switch
  8. potentiometer (if motor rotational speed need to be changed)
  9. external power supply

Here under is an example of simple vibration motor control with Arduino.
simple vibration motor control with Arduino

Code;

// C++ code
// Control vibration motor with buttun press
// declare pins
const int button_pin = 2;
const int motor_pin = 8;

// variable for button state
int button_state;

void setup() { 
  pinMode(button_pin,INPUT);
  pinMode(motor_pin,OUTPUT);
  Serial.begin(9600);
}

void loop() { 
  button_state = digitalRead(button_pin);
  if(button_state == HIGH){
    digitalWrite(motor_pin,HIGH);
    Serial.println("ON");
  }
  else{
    digitalWrite(motor_pin,LOW);
    Serial.println("OFF");
  }
}
I made an actual circuit of Simple Vibration Motor with Arduino.
simple vibration motor circuit
video >>

Pressure Sensor input -> 3 Vibration Motor control by Arduino

Materials Needed

  1. Arduino (Uno, Nano, or any other compatible board)
  2. Breadboard
  3. ERM(eccentric rotating mass) motor X 3
    or coin vibration motor <-very compact and all sealed
  4. solder set to solder the vibration motor thin wire with normal thickness wire to be able to put in breadboad hole
  5. electric tape to cover the solder part
  6. transistor (Nmos)
  7. Pressure sensor
  8. external power supply

I made following circuit with Arduino that as the load of Pressure Sensor increases the number of Vibration Motor increases up to three.

Code;

// One Pressure Sensors + 3 Vibration Motor by Kohshi Katoh
// declare variables
int sensor_pin1 = A0;  // sensor pin
int sensor1;          // sensor readings
// Vibration Motor pins
int VibMotor1 = 2;
int VibMotor2 = 3;
int VibMotor3 = 4;

void setup() {
  // put your setup code here, to run once:
  // set LED pins as outputs
  pinMode(VibMotor1,OUTPUT);
  pinMode(VibMotor2,OUTPUT);
  pinMode(VibMotor3,OUTPUT);
  // initialize seral communication
  Serial.begin(9600);
}

//
void motor_setting(int, int, int, int);

void loop() {
  // put your main code here, to run repeatedly:
  // read sensor value
  sensor1 = analogRead(sensor_pin1);

  // print sensor value
  Serial.println(sensor1);

  // turn on Motors if sensor reading
  // exceeds a certain threshold
  // sensor1
    motor_setting(sensor1, VibMotor1, VibMotor2, VibMotor3);
}

void motor_setting(int sens, int vmt_n1, int vmt_n2, int vmt_n3){
    if(sens > 900){
        digitalWrite(vmt_n1,HIGH);
        digitalWrite(vmt_n2,HIGH);
        digitalWrite(vmt_n3,HIGH);
    }
    else if(sens <= 900 && sens > 700){
        digitalWrite(vmt_n1,HIGH);
        digitalWrite(vmt_n2,HIGH);
        digitalWrite(vmt_n3,LOW);
    }
    else if(sens <= 700 && sens > 500){
        digitalWrite(vmt_n1,HIGH);
        digitalWrite(vmt_n2,LOW);
        digitalWrite(vmt_n3,LOW);
    }
    else{
        digitalWrite(vmt_n1,LOW);
        digitalWrite(vmt_n2,LOW);
        digitalWrite(vmt_n3,LOW);
    }
}

I made actual circuit with Arduino that as the load of Pressure Sensor increases the number of Vibration Motor increases up to three.
I used Jute Pressure Sensor that I made in "E-textiles week".
Jute Pressure sensor in Vibration Motor out
video >>

Air Pump blow in-out control with valve by Arduino

Materials Needed

  1. Arduino (Uno, Nano, or any other compatible board)
  2. Breadboard
  3. DC air pump X 2
  4. valve
  5. diode(IN4007) X 3
  6. transistor (Nmos) X 3
  7. Resistance 10kΩ
  8. external power supply 6V
  9. Soft inflator

Thanks to Kae, I learned that "diode" is required to block the spike currency might happen at valve and motor at transient drive.
spike of currency

  • Why Your Solenoid Needs a Diode

Circuit for Arduino
2AirPumps_1Valve

Code

/*******************************
 *  2 Air Pumps with 1 Valve
 *******************************/

int Valve = 8;
int pump1 =9;
int pump2 =10;


void setup() {
pinMode(Valve,OUTPUT);
Serial.begin(9600);
}

void loop() {

digitalWrite(Valve,HIGH);
Serial.println("on");
analogWrite(pump1,255); 
analogWrite(pump2,0); 
delay(5000);

digitalWrite(Valve,LOW);
Serial.println("off");
analogWrite(pump1,0); 
analogWrite(pump2,255); 
delay(5000);

}
I made actual "air pump blow in-out" circuit with Kae's guidance.
Inflator made for "Soft robotics" was used for the circuit confirmation.
air pump blow in-out circuit
video >>

Servo Motor with additional force function

I wanted to think about active control system to move human body with small motor.
Then, following suspension system designed by Delft University came in my mind.

  • Variable Geometry Actuator called "Delft Active Suspension system"
    My focusing point is the following "cone suspension system" which can be controlled by little force of servo motor but output relatively big force.
    cone suspension

Materials Needed

  1. Arduino (Uno, Nano, or any other compatible board)
  2. servo motor
  3. spring
  4. joint
  5. arm
  6. frame

Code for servo motor demo with Arduino shared by Gunjan Kaul in SkyLab team

#include <Servo.h>  // Include the Servo library

Servo myServo;  // Create a Servo object

void setup() {
  myServo.attach(9);  // Connect the servo to Pin 9
}

void loop() {
  // Sweep the servo from 0 to 180 degrees
  for (int angle = 0; angle <= 180; angle++) {
    myServo.write(angle);  // Move the servo to the specified angle
    delay(15);  // Wait for the servo to reach the position
  }

  // Sweep the servo from 180 to 0 degrees
  for (int angle = 180; angle >= 0; angle--) {
    myServo.write(angle);  // Move the servo to the specified angle
    delay(15);  // Wait for the servo to reach the position
  }
}
I made a "Cone Suspension" demo model with servo motor using above code and Arduino.
cone suspension demo model

video >>

weekly assignment

Check out the weekly assignment here or login to your NuEval progress and evaluation page.

about your images..delete the tip!!
  1. Remember to credit/reference all your images to their authors. Open source helps us create change faster together, but we all deserve recognition for what we make, design, think, develop.

  2. remember to resize and optimize all your images. You will run out of space and the more data, the more servers, the more cooling systems and energy wasted :) make a choice at every image :)

This image is optimised in size with resolution 72 and passed through tinypng for final optimisation. Remove tips when you don't need them anymore!

get inspired!

Check out and research alumni pages to betetr understand how to document and get inspired

Add your fav alumni's pages as references

References & Inspiration

"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

  • Two images side-by-side

describe what you see in this image describe what you see in this image


Tools

Tools

Process and workflow

My sketches are ...

This schematic 1 was obtained by..

This tutorial 2 was created using..

footnote fabrication files

Fabrication files are a necessary element for evaluation. You can add the fabrication files at the bottom of the page and simply link them as a footnote. This was your work stays organised and files will be all together at the bottom of the page. Footnotes are created using [ ^ 1 ] (without spaces, and referenced as you see at the last chapter of this page) You can reference the fabrication files to multiple places on your page as you see for footnote nr. 2 also present in the Gallery.

Code Example

Use the three backticks to separate code.

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Results

Video

From Vimeo

Sound Waves from George Gally (Radarboy) on Vimeo.

From Youtube

---

---

Fabrication files


  1. File: xxx 

  2. File: xxx