FishWatch

Monitor your favorite fishing spot's flow rate and immediately know whether it's a good day to skip out early from the office.

Made by Stefanie Owens, jhjenkin, Melanie Swartz and hlgraffeo

Before you head out to fish, it's always important to check the status of the river to see if the fish are biting. Rather than having to search for water data each time you wanted to fish during the week, what if you could quickly glance at a device on your desk and know the status of the river? FishWatch not only helps the fly-fishing enthusiast get their weekly (or daily) fix, but promotes spontaneous adventures out of the office when the outdoors starts calling your name.

Created: February 9th, 2015

0

Project Description

FishWatch is an ambient river flow monitor to inform fly-fisherpeople know optimum days for fishing. When flows are too high, the fish are moving too fast and won’t bite. Rather than having to seek out this information online each day, fly-fishing enthusiasts can simply glance at their FishWatch display and see if the flows are rising, falling, or staying the same over the past few hours, as seen by the fly movement. Depending on the speed of the “river” on their desk, they can also see how high or low the river is. (*Note: This was the original intention of the water feature, however we were unable to get the pump working accordingly with only a 3v power supply from the Spark microcontroller.  Instead, the river now provides a nice ambience while the fly itself is the primary ambient display).  The FishWatch smart display gives valuable information at a glance for the fisherperson to plan their day accordingly, saving precious time and resources driving out to their favorite fishing spot or searching for river information online. 

For our prototype, we will be monitoring the Missouri River and showing data from the following source via an ambient display:

http://waterdata.usgs.gov/mt/nwis/uv?site_no=06066500

*Note: Through multiple iterations of testing and checks with Daragh, the Kimono API pulled from the USGS site above failed to work, so we are simulating the data pull below by entering flow values via cloud variables.

Use Case Scenario

Our model and prototype is built to-scale for an office at an outdoors-related company, such as Orvis, REI, or Patagonia.  We envision the device being a great addition to any company culture that encourages its employees to have a good work/life balance, including spontaneous fishing trips when the waters are just right. It could also belong in the home, on the fly-fishing enthusiast's desk or bedside, providing a nice, relaxing sound of the outdoors while also giving valuable information. 

Process Work: 

https://docs.google.com/document/d/16IzlpM-wfCFhUt_NiKclyHMlEW_Ne0BNuTgpjt5cVU0/edit?usp=sharing

0
0

Bill of Materials:

1 Breadboard

1 Spark Microcontroller

1 Servo Motor

1 5V Power Relay 

1 Pump

12V Power source

Jumper Wires

0
int flowR1 = 5000;
int flowR2 = 5000;
int min = 1000;
int max = 8000;
int thresh = 500;
bool num = true;
int comp;
int negthresh;
int status;
int flowSpeed;
int motorPin = A0;
int motorSpeed;
int buttonPin = D1;

int servoPin = A7;
Servo myServo;
int servoPos = 0;

int neut = 90;
int rise = 130;
int fall = 40;

void setup()
{
   Spark.function("flow", flowF);
   //Spark.variable("flow1", &flowR1, INT);
   //Spark.variable("flow2", &flowR2, INT);
   Spark.variable("status", &status, INT);
   //constrain(flowR1, min, max);
   //constrain(flowR2, min, max);
   myServo.attach( A7 );
   pinMode(buttonPin, INPUT);
}

void loop()
{
  if (num == true) {
    comp = flowR1-flowR2;
    negthresh = -thresh;
    if (abs(comp) <= thresh) {
      //neutral servo
      myServo.write(neut);
      status = 0;
    }
    else if (comp < negthresh) {
      //rising servo
      myServo.write(rise);
      status = 1;
    }
    else if (comp > thresh) {
      //falling servo
      myServo.write(fall);
      status = -1;
    }
  }

  else if (num == false) {
    comp = flowR2-flowR1;
    negthresh = -thresh;
    if (abs(comp) <= thresh) {
      //neutral servo
      myServo.write(neut);
      status = 0;
    }
    else if (comp < negthresh) {
      //rising servo
      myServo.write(rise);
      status = 1;
    }
    else if (comp > thresh) {
      //falling servo
      myServo.write(fall);
      status = -1;
    }
  }
  int button = digitalRead(buttonPin);
  if (button == HIGH) {
    digitalWrite(motorPin, HIGH);
  }
  else{
    digitalWrite(motorPin, LOW);
  }
}


int flowF(String command)
{
  if (num == true) {
   flowR1 = command.toInt();
 }
 else if (num == false) {
   flowR2 = command.toInt();
 }
 num = !num;
}
Click to Expand
x
Share this Project


About

Before you head out to fish, it's always important to check the status of the river to see if the fish are biting. Rather than having to search for water data each time you wanted to fish during the week, what if you could quickly glance at a device on your desk and know the status of the river?

FishWatch not only helps the fly-fishing enthusiast get their weekly (or daily) fix, but promotes spontaneous adventures out of the office when the outdoors starts calling your name.