The Catheter Alarm By
The Waterlilies:
Final Project

Introduction

Left: Evelyn. Middle: Justin. Right: Evan

Evelyn                                                               Justin                                                               Evan

This is a photo of each of the group members that worked on this project. Evelyn is on the left smiling in a chair, Justin leaning down with his hands on his knees smiling at the camera, and Evan is on the right holding the wireless key fob leaning into his left. The C-alarm is in the center of the 3 on top of a table just below Justin.

What We Built

Final Design which looks like a blue box with a black remote

The Catheter Alarm is an assisted device for client Monica who needs to catheterize every 3 hours. She is a nurse and wants the alarm not to make a beeping sound because she is desensitized by the sounds.  She enjoys music in 80's rock music such as Journey and Bon Jo. She is also a Trek-y but she only enjoy the original Star Trek. The alarm begins when the power button is switched on. There are Velcro straps on the back so it may be mounted on the back of her wheelchair or taken off and set on a table.

Front view of the Catheter Alarm and remote. The Catheter Alarm is a virtual box,  made out of a blue acrylic on all sides. There is a 45 degree angle cut on the top of the device that is made out of frosted acrylic. There are two buttons seen on top to the right. One button is red and one is blue. On the left top there is a black power switch and a red power indicator LED to the right of the switch. A Key fob is on it's side balance on the front face of the C-alarm. It is on it's side with the buttons facing the camera.

Final Product

3/4 view of the Catheter Alarm which is a blue box and the black remote

Final photo of the Catheter Alarm

Left side view of the Catheter Alarm which is a blue box. You can see the black remote on the left.

Left  view of the Catheter alarm

Right side view of the Catheter Alarm which is a blue box. You can see the black remote on the left and 2 black straps.

Right-side view of the Catheter alarm

Back view of the Catheter Alarm which is a blue box. You can see part of the Star Trek logo and the 2 straps of the device the black remote

Top-side view of the Catheter alarm

Top view of the Catheter Alarm which is a blue box. You can see a black swith, 1 black button, 1 red button, and one red indication light

Top-side view of the Catheter alarm

3/4 view of the Catheter Alarm which is a blue box. You can see a black switch, 2 black straps, 1 black button, 1 red button, 1 speaker, and one red indication light

Front 3/4 view of the Catheter alarm

3/4 view of the Catheter Alarm which is a blue box. You can see a black switch, 1 black button, 1 red button, 2 straps, 1 speaker, and one red indication light

Back 3/4 view of the Catheter alarm

Narrative

When Monica wakes up, she rolls out of bed and turns on her C-alarm. She doesn’t have a consistent schedule, so when the alarm turns on, that’s when the timer starts. She goes through out her morning, getting ready for the day. The alarm goes off in the middle of her cooking brunch. She’s a distance away so she pulls a wireless key fob out to quiet the alarm from afar.

As she packs up to head out to the farmers market, she takes her alarm with her. Once she arrives, she sets up her wheelchair and straps the C-alarm onto the back of the wheelchair. As she finished purchasing her goods, she hears the alarm start. Monica turns around and presses the red button on the top of the alarm to put it asleep, restarting the timer.

Whenever she arrives at home, she is tired and is going to head to bed. That is when she turns off her alarm with the power switch in order to start the same process again the next day!

Prototype  

The main question we were able to prototype for was: how is this going to mount on Monica's wheel chair and how do we keep this device ergonomic and out of the way, while also having enough space for components? We built a total of 4 prototypes, all with similar aspects and functionality.

A cardboard box of the device with white straps attached

Prototype #1 with straps and buttons on top

A cardboard box of the device with a curved top. A black switch and a silver button on the front. On the left side, there is a red button.

Prototype #2  with a button on the front and side and a switch on the front. A curved hand placement. 

A cardboard box of the device with a slanted top with a silver button, 2 red buttons, and a cutout rectangle hole.

Prototype # 3 with slanted top with buttons and functionally for schedule organization of the alarm set.

A cardboard box of the device and on the top there 3 is cardboard buttons and there is a curved transition edge from the top side to the front side of the device.

Prototype #4 with 3 buttons on top and there is a curved transition edge from the top side to the front side of the device.

3/4 view: Fitting a cardboard box design between the back pole of the wheelchair and the backrest of the wheelchair

3/4 view: Trying to fit prototype #4  between the back pole of the wheelchair and the backrest of the wheelchair

Top view: Fitting a cardboard box design between the back pole of the wheelchair and the backrest of the wheelchair

Top view: Trying to fit prototype #4  between the back pole and the backrest of the wheelchair

Measuring the diameter of the pole of Monica's back handle of her wheelchair

Measuring the diameter of the pole of Monica's back handle of her wheel chair

Most of the prototypes we had were cardboard with no electronics. The goal for our prototype was ergonomics first. You will see above several variations of the same design each one considering how Monica was supposed to silence the alarm and be able to see and hear when the alarm triggered. 

We initially were unable to visit Monica in person and had to make some assumptions for our prototype. One, was the assumptions that her wheel chair had arms. Each prototype had this in mind. When we got to see her in person for prototype feedback we swiftly moved the design to the bar on the back of her wheel chair. We made sure it was accessible to her as she turned around. The initial concept of having straps easily moved to this version of the prototype.

We found out many of Monica's preferences, like how she wanted the alarm on the back of the wheelchair. She also told us that having the alarm dynamically be able to start at any time made it much easier to use. With these ideas, we were able to very firmly determine the capabilities of the device itself.

Process

A black Arduino Uno with lots of wires

Wires during coding process

Acrylic the blue and cover mostly with brown plastic cover

Laser cut pieces

Blue acrylic pieces together

Glued pieces of laser cut acrylic

cardboard on top of a silver speaker

Testing speaker size and measurements

Gluing the acrylic pieces together

Fitting all the wires and Arduino parts in the blue glued box

Box with the wiring and pieces inside

We had fabricated a 3D print, but it was too thin and could not be redone due to an overly long waiting line. Instead, we laser cut the box and made sure everything fit inside. Our schedule was pushed back a lot due to not being able to meet our first client and being transferred to another. We also ordered some parts in which one was not available. So, we had to compromise and not have a battery pack available for the product. Otherwise, we successfully created a clear acrylic piece that allowed the LED strip light to shine through without exposure. We managed to just push back a few days and keep on schedule otherwise.

Discussion

We are very happy with how the project turned out, other than the battery pack not being available. We had a lot of fun working with Monica. Trying to help her out with a very real problem she has made it challenging as well as interesting. We were able to see a snip bit into her life as a nurse and a tech nerd. Without this project, we could not have been able to see how to approach user-centered projects from a brand new perspective, in which we are very thankful for.

During the first critique we were able to finalize our idea and start the building there after. We chose what components would be the most useful in the most simple way. After the final critique, we found that there were many insightful comments such as the blinking of the power LED to lower the cost of resources as well as placing the LED strips on the other side of the box for specific user preferences. We also came across a problem of not being able to find a battery pack that was thought to be available. This made it impossible to change the battery,  rendering the device to function temporarily. Another point was to make sure the speaker was behind some form of hard form so that it isn't exposed. We got many positive comments about how finely tuned the design of the box was as well as the sizing and compactness of it.

What we have learned during the process of building the Catheter Timer is that it was difficult but in a fun way. We had some challenges starting up with the MP3 player as well as connecting it to a speaker, but we were able to smooth it out in the end. Another point to make was that we were very excited to make different prototypes to test out our ideas in order to make sure Monica got what she wanted. This could mean addressing ideas that we might've thought as silly but in turn becoming a feature to the product. Some trouble we did have was that the soldering for the wires kept coming off, which might've been due to the constant handling of the wires that were constantly bent and straightened out.

If we could build another iteration of this project, we would definitely make sure there was a battery pack on the back of the project with the logo in the front. We would also make the form factor more smooth around the edges in order to combat any sharp edges that could be dangerous for the user.

Technical Details

On the left top is a tactile button switch. The left middle two are arcade push buttons, and the left bottom is a radio signal. These four all connect to the Arduino Uno in the middle. On the right side is an LED, Speaker, LED Strip, and Radio Signal that are the outputs.

Box Schematic diagram

Schematic diagram

Code

/*

  Author: Evelyn Bang, Evan Alexander, Justin Song

  Title: Catheterize Timer

  Description: Timer goes off every 3 hours and plays a song in a playlist while LED

               strip lights until a button is pressed to turn it off. A red LED light

               is used as an indicator to show if the timer is on or off.

  PIN MAPPING:

  PIN |    MODE    |    COMPONENT    | DESCRIPTION

  ------------------------------------------------------------------------------

  A1  |    INPUT   |REMOTE RECEIVER A| Receives signal from a two button keyfob to turn off the alarm + reset the timer

  A2  |    INPUT   |REMOTE RECEIVER B| Receives signal from a two button keyfob for shuffling through playlist of songs

  08  |    INPUT   |    RED BUTTON   | Turns off alarm and restarts the 3 hour timer

  07  |    INPUT   |   BLACK BUTTON  | Plays next song on the list

  NA  |   OUTPUT   |     SPEAKER     | Plays alarm sound (connects to MP3 player)

  11  |    INPUT   |  MP3 PLAYER RX  | Connecting MP3 player to Arduino

  10  |    INPUT   |  MP3 PLAYER TX  | Connecting MP3 player to Arduino

  02  |   OUTPUT   |    LED STRIP    | Turns on when alarm goes off (PololuLED Strip)

  NA  |   OUTPUT   |    LED SINGLE   | Turns on when device is on (connects directly to power)

  LINKS:

    Forum link to MP3 Player         : https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299

    Youtube Link to Song Playlist    : https://www.youtube.com/playlist?list=PLri2B0JyFfoYqYZyf_NyMQUEaabbSORFC&jct=w2Nn5378-KGVo57GNyAiHdORdLDtEw

    Library File: https://drive.google.com/drive/folders/13ZcTia8K_bbBIkyIEfAHw9lvFljyCtIP?usp=sharing

*/

#include "mp3tf16p.h"

#include <PololuLedStrip.h>


/*

  GLOBAL VARIABLES

*/

// Timer

unsigned int timer = 0;

unsigned const int threeHours = 10800000; //Use 10000 for testing

bool alarm = false;

// Remote

const int remoteA = A0;

const int remoteB = A1;

// Buttons

const int alarmPin = 8;

int alarmButtPressed = 0;

const int songChangePin = 7;

int songChangedPressed = 0;

// MP3 & Speaker

const int mp3TX = 10;

const int mp3RX = 11;

MP3Player mp3(mp3TX, mp3RX);

int currTrack;

const int numTracks = 6;

int vol = 30;

// LED Strip of Light (Neo)

const int ledPin = 2;

const int numLED = 7;

PololuLedStrip<ledPin> ledStrip;

rgb_color colors[numLED];

rgb_color magenta = rgb_color(255, 0, 255);

rgb_color black = rgb_color(0, 0, 0);


/*

  SETTING UP THE VARIABLES AND PINS

*/

void setup() {

  // Remote

  pinMode(remoteA, INPUT);

  pinMode(remoteB, INPUT);

  // Buttons

  pinMode(alarmPin, INPUT);

  pinMode(songChangePin, INPUT);

  // MP3

  mp3.initialize();

  currTrack = random(1, numTracks + 1);

  // Misc

  Serial.begin(9600);

}


/*

  LOOPING

*/

void loop() {

  // Alarm every three hours

  if ((millis() - timer) > threeHours) {

    // Time

    alarm = true;

    timer = millis();

    // Turn on Light

    for(int i = 0; i < numLED; i++) {

      colors[i] = magenta;

    }

    ledStrip.write(colors, numLED);

    // Starts playing the current song on the list

    mp3.playTrackNumber(currTrack, vol);

  }

  // Alarm turns on

  if (alarm) {

    // Turn off alarm

    // Button press check if previously not pressed and is currently being pressed

    bool buttonA = false;

    if(analogRead(remoteA) > 1000) {

      buttonA = true;

    }

    alarmButtPressed = (digitalRead(alarmPin) || buttonA);

    if (alarmButtPressed == 1) {

      // Turn off lights

      for(int i = 0; i < numLED; i++) {

        colors[i] = black;

      }

      ledStrip.write(colors, numLED);

      // Turn off and reset song/sound

      mp3.pauseIt();

      alarmButtPressed = false;

      alarm = false;

    }

    // Change song

    // Button press check if previously not pressed and is currently being pressed

    bool buttonB = false;

    if(analogRead(remoteB) > 1000) {

      buttonB = true;

    }

    songChangedPressed = (digitalRead(songChangePin) || buttonB);

    if (songChangedPressed) {

      int lastTrack = currTrack;

      while (lastTrack == currTrack) {

        currTrack = random(1, numTracks + 1);

      }

      mp3.pauseIt();

      delay(100);

      mp3.playTrackNumber(currTrack, vol);

      songChangedPressed = false;

    }

  }

}