Go Down

Topic: Automatic Timed Inflation Device. (SQUEASE compression Vest) (Read 55 times) previous topic - next topic


Hello all! I'd like to share a project I've been working on for a few months now. This project was born of necessity. After some major life events I found myself needing some healthy coping skills to deal with my anxiety. One thing I found was a compression vest. I found quickly that the vest gives me a great calming effect when I'm feeling a little wound up. Unfortunately the vest I purchased (SQUEASE Vest®) only had a manual squeeze bulb for inflation. This works well but I wanted something a bit more automatic. There are other vests on the market that are all fancy with bluetooth and such but I like this vest so I set out to make something that would work.

I give you 'ATID' or Automatic Timed Inflation Device. I totally just made that name up!  LOL

I'm not really sure if there is much interest in a DIY version of this product. Most of the products on the market are special made for their specific wearable garment. Most of these products are aimed at the medical and special need fields with varying costs and applications. For me this was partially a medical need but I purchased the vest on my own. I have no idea if Sqease will make such a device in the future but I'm sure it will be more tailored to there specific vest.

The 'ATID' is powered by an ESP32 and the interface is a Nextion smart display model NX4024T032. BTW I really wish the Nextion software was easier to use! The ESP32 runs a simple air pump and pneumatic solenoids for air release. The pump and solenoids are driven by FETs directly from a level shifter. I didn't do much testing on driving the FETs from the EPS32 I/O pins directly. The level shifter was needed for reading sensors that where 5v so I decided to just drive the FETs from 5v instead of 3.3v.

The pressure sensor I chose was possibly an improper choice. I posted about it here. https://forum.arduino.cc/index.php?topic=716249.0  Basically I'm being cheap and decided to use a BMP180 as a sensor. Not what it was designed for but it does work for now.

It runs on 2 x 18650 batteries with simple 2 cell balancer. So why 2 instead of one? The first version of this I used 2 much smaller less powerful motors. I'm driving them on PWM of course. I have the motors ramp down as it reaches the desired pressure and attempt to hold it there. Even with this small system there is a slight air leak and it's possibly coming from the vest it self. I did a water test on the manifold and it's definitely not that. So the pump or air solenoids or the many air connections inside the vest. The leak is minimal at about 1psi/5min drop. So I wat the pump to hold that desired pressure for an amount of time. A strong pressure for this suit is about 3psi and up. Wanting this device to be quiet I wanted the pump to have short and low PWM bursts to hold that pressure. Well the super small air pumps couldn't inject any air unless driven at higher PWM to overcome that initial pressure. So I decided to over drive them with higher voltage and shorter PWM pulses. This worked very well however I was never satisficed with the inflation time so I stepped up to a larger pump. I decided to keep the overdrive method and this new pump works great. Even quieter than using to smaller pumps!

I'm also using more than one air solenoid because I wasn't satisficed with the deflation speed. The port for these small devices don't let much air out. I might step up this part as well if I do another version. You can see in the pic I'm using three but one is disconnected. The manifold had to be modified to fit the way I wanted so I lost one port.

I'm still a super novice in the coding department. Some stuff still doesn't work! I went through many version of the UI design. My experience with this is very limited as well but I do enjoy it. I like the way you need to be efficient with your space and still make it usable.

What it can do right now:

Inflate to a desired pressure for a time limit and then deflate for the same deration. It can sensor and report current vest pressure. While the vest is inflated it can sense your breaths (in and out) and show your breaths per minute.

What is can't do right now:

I wanted it to be able to have an ON and OFF deration including a MIN and MAX pressure. While designing it I thought I would want the pressure to go down to a minimum during the OFF deration. In testing I think I prefer a full release of pressure after a high pressure cycle. I did try to implement this but ran into issues with reading the pressure with the air valves open. This made it difficult to know when to close them and caused the valves and pump to bounce back and forth.

Right now it doesn't save states on power cycle so I need to do that. I'd like to be able to store the programs set times and pressures.

Changes I need to make:

When I turn on the device the pump runs for the boot time of the ESP32 then turns off. I looked into this but couldn't find an easy way to fix it. I know the ESP32 I/O's have different properties and power on functions. I'm driving the FETs with the level shifter and it has pullup and pulldown resister I think. I tried pulldown resisters on the I/O pin but couldn't make it work that way. I'm limited on knowledge of FET driving and ESP32 I/O's so I'm not sure what to do.

The front page needs to be fixed. I have a 'release' and 'stop' button. I need to combine them and just have a stop button that will stop the timer and release the air.

Remove the MIN pressure from the configure pages.

Program MAX pressure and HUG pressure/button. The MAX being the overall max pressure and prevent the pump from working above it. The HUG button was intended to be a simple one touch for a hug pressure with no timer. Something simple that needed minimal attention to get the vest pressure up.

The breath per minute isn't working very well. The coding is a little messy. The breath monitor was intended as a possible feedback mechanism for a guided relaxation program. Possibly something like monitoring your breathing and adjusting the pressure and time. I haven't messed with that yet. When the vest is inflated it reads from the sensor and gets a time stamp at the peaks and valleys. This is averaged over many reads and gives a number of breaths displayed as breaths per minute. When I went to a larger pump this function seemed to get more erratic and unreliable.

I need to do a check on what state the valves and pump are in at various levels. I think I missing one because I've had a looping event where the valves and the pumps were bouncing back and forth with out the vest attached. Weird behavior but it works well so far otherwise. 

If someone really wanted to mess with this I could post the code and Nextion project files. Although so much doesn't work so I'd be wary of doing that. And the Nextion project is a mess!

If someone knows of any other DIY projects like this let me know I'd like to see their solution.

Thanks for reading!  8)

Go Up