Project showcase
WAVEbuoy

WAVEbuoy © MIT

The WAVEbuoy is a arduino lamp connected to the internet that displays the current wave height of any of the NDCBs network of wavebuoys

  • 1,820 views
  • 1 comment
  • 6 respects

Components and supplies

About this project

The WAVEbuoy is an arduino lamp connected to the internet that displays the current wave height of any of the National Data Buoy Centre's wave buoys.

This lamp is currently connected to the Sevenstones Lightship buoy that gives an indication of swell approaching Cornwall in the UK. The lamp can also be connected to any surfing location covered by magicseaweed.com

RED - High surf alert

GREEN - Medium swell

BLUE - Low swell

The case....it's up to you how you encase it. I'm a carpenter by trade and I had the ability to use some scrap pieces of oak. You could house it in all sorts of ready made boxes or lamps. The white dome on top is a lightbulb that I have cut in half.

It's a very simple circuit using 2 RGB modules and 3 resistors. Just follow the diagrams. If you need the fritzing file let me know.

I know I could improve this by using a PCB, but i just sawed off a small section of the breadboard and stuck it in the oak case.

Code

UNO CodeArduino
Here is the arduino code. Just change the link to your local buoy listed here on the Google map.

http://www.ndbc.noaa.gov/

Not all of them have the 'Significant Wave Height' variable so check first.

With a slight edit you can also pull data from any location covered at magicseaweed by using the 'Swell' variable

http://magicseaweed.com/syndicate/rss/index.php?id...

Replace the id=1 in the link to your local spot the id can be found by visiting the spot on msw and looking in the link.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char serverName[] = "ndbc.noaa.gov";
EthernetClient client;
int red=7,green=8,blue=9; // PWM pins initialized to pass values of RGB
float waveheight; // float value that holds wave height
void setup()
{
  Serial.begin(9600);
  pinMode(red   ,OUTPUT);
  pinMode(green ,OUTPUT);
  pinMode(blue  ,OUTPUT);
  if (Ethernet.begin(mac) == 0)
  { // start ethernet using mac & IP address
    while(true) ;
  }
  delay(2000); // give the Ethernet shield 2 second to initialize
}
void loop()
{
  if (client.connect(serverName, 80)>0) {
    client.println("GET http://www.ndbc.noaa.gov/data/latest_obs/62081.rss");
  }
  if (client.connected()) {
    if(client.find("Significant Wave Height:"))
    {//look for the wave height and pass the value to variable
      waveheight = client.parseFloat();
  }
  else{
    digitalWrite(13,HIGH);
  }
  //The code below lights up RGB module light depending on the wave height
   if ((waveheight>=0)&&(waveheight<3))
   {
     analogWrite(red   ,0  );
     analogWrite(green ,0  );
     analogWrite(blue  ,255);
   }
   if ((waveheight>=3)&&(waveheight<8))
   {
     analogWrite(red   ,0);
     analogWrite(green ,255 );
     analogWrite(blue  ,0);
   };
   if ((waveheight>=8)&&(waveheight<100))
   {
     analogWrite(red   ,255 );
     analogWrite(green ,0);
     analogWrite(blue  ,0);
   }

  client.stop();//Disconnect
}
}

Schematics

Circuit
Wavebuoy 3

Comments

Similar projects you might like

Arduino LED Display

Project tutorial by miklas

  • 9,959 views
  • 0 comments
  • 4 respects

Automated Snake Enclosure with Camera

Project showcase by hagakure

  • 8,857 views
  • 11 comments
  • 21 respects

Colors of Photons

Project showcase by Eva Konya and Janos Magyar

  • 5,847 views
  • 4 comments
  • 27 respects

Arduino Bluetooth Robot for Android Device

Project showcase by aip06

  • 4,380 views
  • 2 comments
  • 19 respects

Wooden Chess Board with Piece Recognition

Project showcase by MaxChess

  • 38,123 views
  • 43 comments
  • 102 respects

Arduino Clock

Project tutorial by Arduino_Scuola

  • 29,605 views
  • 0 comments
  • 15 respects
Add projectSign up / Login