RE-Inflatable Vest

by ZiyunQ in Circuits > Arduino

11307 Views, 72 Favorites, 0 Comments

RE-Inflatable Vest

2 Cover-Inflated.jpg
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.

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

Making Inflatable Bubbles:

DSC_0019.jpg
DSC_0016.jpg
DSC_0015.jpg

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

Build Up the Inflation System

DSC_0002.jpg
DSC_0003.jpg
DSC_0005.jpg
DSC_0009.jpg
DSC_0010.jpg
DSC_0011.jpg

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

Testing the Bubbles With Arduino

Bubble Test

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.

Make the Vest

IMG_3327.jpg
DSCN9124.jpg
DSCN9126.jpg
DSC_0140.jpg
DSC_0147.jpg
DSC_0153.jpg

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.

Arduino Part

DSCN9069.JPG

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

}

Downloads