Introduction: RE-Inflatable Vest
Office workers are constantly hunched over their laptops and computers for long hours every day. This causes back pains and bad posture. The Inflatable Vest is an interactive reminder for people to correct their bad habits. Every 20 minutes bubbles will inflate, forcing the user to stretch back and manually deflate the bubble. This makes users engage in a short break to exercise their muscles and stretch out the back.
Step 1: Materials:
Inflatable Bubbles
Micro water pump: CS1730PW, DC6.0V
From McMaster-Carr:
Tube 1/16 ID: 51135K12
Tube 1/8 ID: 51135K15
Checking valve: 2987K45
Tube barbs: 53415K281
Reducing Connectors: 5463K47
Disposable Finger Cot: 5291T6
Rescue tape:
http://www.amazon.com/3M-03625-Wrap-Repair-Silicon...
Vest Part
Silicon film (3 ft * 2 ft)
Rubber wire: (Found in Michaels)
Arduino Part
RTC Timer :
https://www.adafruit.com/products/264
Aduino uno
Tools
Laser cutter
Step 2: Making Inflatable Bubbles:
Cut the finger cot to the size you want.
Bring two tubes with 1/8 ID (One short, one long), 125psi checking valve and 15psi checking valve.
Tie with rescue tape. Make it tight so air will not leak out.
Make 5 more
Step 3: Build Up the Inflation System
Build up the inflation system as the picture shows. Use reducing connecter to connect 1/16 ID tube and 1/8 Id tube.
Connect air pump to tube barb with the 1/16-ID tube.
*For all the connections, their ID must be matched up.
*Pay attention to the direction of checking valve
Step 4: Testing the Bubbles With Arduino
After wiring all the components, connect the Arduino to your computer or a 9V battery to power the pump. If your balloon is not inflating, check over your wiring.
When the balloon is inflated, turn off the pump and squeeze the balloon. Check if the air could leak out from the checking valve. Check for any air leaks in the checking valve.
Keep pumping up the balloon to test the 50 psi valve. If the air pressure in the balloon is under 50 psi, no leaks should occur. If the air pressure is over 50 psi, air should start to leak out of the valve.
*The instructions above show how to make the inflatable unit. You can try to design your own structure (provide suggestions or examples.
Step 5: Make the Vest
In this part we’re going to make the balloons wearable. You can either buy a vest/shirt or make one by yourself.
Cut the silicon into two 2 ft by 1.5 ft pieces. Using the laser cutter to cut out the pattern.
Connect the silicon pieces together as pictures show.
Paste the Inflatable Part to the vest. What did you use to paste them together.
I also add EL wire to the vest to make it look cool.
Step 6: Arduino Part
You can edit the inflating time (pumpTimeron) and restart time (pumpTimeroff).
In my coding, the default time is:
pumpTimeron: 1 minute
pumpTimeroff: 15 minute
Coding Part:(The RTC timer is from Adafruit)
// Date and time functions using a DS1307 RTC connected via
I2C and Wire lib
#include
#include "RTClib.h"
RTC_DS1307 rtc;
unsigned long timer;
unsigned long pumpTimeOn = 60000; //1 min in milliseconds
unsigned long pumpTimeOff = 900000; //15 min in milliseconds
boolean pumpState = 1; //1 = pump on, 0 = pump off
int pumpPin = 7;// pin that turns the pump on and off
void setup () {
Serial.begin(57600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(2014,12,16,12,52,0));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
//set pump pin to output
pinMode(pumpPin, OUTPUT);
//initalize timer
timer = millis(); //set the timer to the current millis count
}
void loop () {
if(pumpState == 1){
digitalWrite(pumpPin, HIGH);
unsigned long currentMillis = millis();//read the current millis count
if(currentMillis >= (timer + pumpTimeOn)){//if the current millis is greater than the timer and the pump on limit... then
pumpState = 0;//change the pumpState to off
Serial.println("the pump is now off at this time:");
printCurrentTime();
timer = millis(); //reset timer
}
}
if(pumpState == 0){
digitalWrite(pumpPin, LOW);
unsigned long currentMillis = millis();//read the current millis count
if(currentMillis >= (timer + pumpTimeOff)){//if the current millis is greater than the timer and the pump off limit... then
pumpState = 1;//change the pumpState to on
Serial.println("the pump is now on at this time:");
printCurrentTime();
timer = millis(); //reset timer
}
}
//delay(3000);
}
void printCurrentTime(){
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
// calculate a date which is 7 days and 30 seconds into the future
DateTime future (now.unixtime() + 7 * 86400L + 30);
Serial.print(" now ");
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();
Serial.println();
}