9. Wearables¶
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.
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.
Based on my Ideation list, I started to learn about "DC motor" and "Vibration Motor" control by Arduino.
DC Motor control by Arduino¶
- Useful tutorial for beginners; Control a DC Motor with Arduino (Lesson #16)
- Use motor controller device with Arduino; Control Big Motors with your Arduino (Step by Step Tutorial)
- Motor Rotational direction change with H-Bridge; DC Motor Control with an H-Bridge and Arduino (Lesson #17)
Materials Needed¶
- Arduino (Uno, Nano, or any other compatible board)
- Breadboard
- DC Motor
- transistor
- push button switch
- potentiometer (if motor rotational speed need to be changed)
- 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;
// 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.
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
}
}
video >>
Vibration Motor control by Arduino¶
- Useful tutorial for beginners;How to Use a Vibration Motor with Arduino (Lesson #25)
Materials Needed¶
- Arduino (Uno, Nano, or any other compatible board)
- Breadboard
- ERM(eccentric rotating mass) motor
or coin vibration motor <-very compact and all sealed - solder set to solder the vibration motor thin wire with normal thickness wire to be able to put in breadboad hole
- electric tape to cover the solder part
- transistor
- push button switch
- potentiometer (if motor rotational speed need to be changed)
- external power supply
Here under is an example of 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");
}
}
video >>
Pressure Sensor input -> 3 Vibration Motor control by Arduino¶
Materials Needed¶
- Arduino (Uno, Nano, or any other compatible board)
- Breadboard
- ERM(eccentric rotating mass) motor X 3
or coin vibration motor <-very compact and all sealed - solder set to solder the vibration motor thin wire with normal thickness wire to be able to put in breadboad hole
- electric tape to cover the solder part
- transistor (Nmos)
- Pressure sensor
- 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.
- my TinkerCAD model >>Pressure input Vibration output with Arduino
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".
video >>
Air Pump blow in-out control with valve by Arduino¶
Materials Needed¶
- Arduino (Uno, Nano, or any other compatible board)
- Breadboard
- DC air pump X 2
- valve
- diode(IN4007) X 3
- transistor (Nmos) X 3
- Resistance 10kΩ
- external power supply 6V
- 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.
- Why Your Solenoid Needs a Diode
Circuit for Arduino
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);
}
Inflator made for "Soft robotics" was used for the circuit confirmation.
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.
Materials Needed¶
- Arduino (Uno, Nano, or any other compatible board)
- servo motor
- spring
- joint
- arm
- 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
}
}
video >>
weekly assignment
Check out the weekly assignment here or login to your NuEval progress and evaluation page.
about your images..delete the tip!!
-
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.
-
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
-
Thermochromic screenprint - Ruby Lennox - FabLab Bcn
-
Led responsive glove - Marion Guillaud - Le TextileLab lyon
-
Thermochromic and sound research - Stephanie Johnson - TextileLab Amsterdam
-
Interactive glove - Stephanie Vilayphiou- Green Fabric
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
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.