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();

}