was successfully added to your cart.


Laser GIS map

By | Artwork, Carpentry, Engineering, Python | No Comments

Hello this is a tutorial used to create a GIS laser cut contour map.

Tools/Software needed

QGIS – Free
LaserWeb 4


  1. Download QGISA A free and open source Geographic Information System software from here http://www.qgis.org/en/site/
  2. Download your GIS data as im using UK coastlines ive used OS terrain data from here https://www.ordnancesurvey.co.uk/opendatadownload/products.html  i downloaded the ESRI shapefiles
  3. Sort through the different shapefiles until you find the correct data set for the location you are planning to plot


  1. Export the project to DXF and open in Illustrator/Inkscape – select all the artwork and ‘Fit Artwork to Selected Bounds’
  2. Select all artwork and give the contours a stroke of 0.01pt
  3. Then select the coastline – i had to delete the lowtide mark and join some lines due to the harbours and estuary. Copy the layer and paste into a new layer called ‘Coastline’
  4. Delete the selected coastline in the original layer then select the remaining contours and paste into a new layer called ‘Contours’
  5. You then need to clean up the coastline and contours so there is a clear definition between the two, i had a few island outcrops and odd small single lines i had to delete. It should now look like below
  6. Export or Save As SVG


By | Arduino, Electronics, Engineering, Surfing, Weather | No Comments

Featured on instructables here http://www.instructables.com/id/WAVEbuoy/

The WAVEbuoy is a 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

Parts needed:

  • Arduino UNO & Ethernet shield
  • Light bulb like this one Link
  • 3 Colour RGB SMD LED Module Link
  • Breadboard
  • Jumper wires

The case….its up to you how you encase it. Im 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 light bulb that i have cut in half.

Ubidots ISS

By | Electronics, Engineering, Programming | No Comments

I discovered the really cool ISS live stream recently. I thought it would be good to show my son on his raspberry PI and make an alert light/sound when it was over our home see if we could see it.

I looked at making a Google map with their API then discovered Ubidots. An Internet of Things innovation for maker. Not knowing a thing about CURL i followed some of their examples in the docs and thought id document my progress here.

Step 1. Open an account and follow these tutorials here http://ubidots.com/docs/get_started/quickstart/tutorial-collections.html NOTE* I tried and failed using the CURL Windows package install and use Cygwin to execute the commands. This allowed me to get a basic understanding of Ubidots.

Step 2. I then moved on to http://blog.ubidots.com/live-tracking-the-international-space-station where i plan to develop the code to trigger a light or sound when the ISS  is nearby our given location. The original code is below and i didn’t really know where to start with it,  i emailed Ubidots support who replied super quick that it was a python script that would need to be run locally with Python 2.7 which you can download here

Step 3. Once you have installed Python on your machine (mine was Windows) You have to install an additional ubidots API client package from here. I again used Cygwin as it just seems to work better using this command.  If you are copying and pasting the command remember to omit the dollar sign!

$ pi install ubidots==1.6.1

Step 4. Sign up for an account at Ubidots and get your API key found in your profile in the left hand menu. Make a note of this

API Key 364d3bd15af284a95a4cc0cd4fd907bf25301366
Token ftL4B1gzPmFzoch08ZaVs4elPYMDym

Step 5. Open up Cygwin and request a token by using this command. Make a note of it in Notepad* Ive noticed you can request an auth token when viewing your API key in your profile too

curl -XPOST -H "X-Ubidots-ApiKey: fee9a80a51d6523cd41bbec803b9f97850e7673a" http://things.ubidots.com/api/v1.6/auth/token

Step 6. Go to Ubidots and create a new source, call it something like ISS tracker. Then create a variable of that source named Local Distance. Hover over the ‘I’ circle on the top right of the box and make a note of the variable ID 54c9552b76254241a053980e

For control variable – http://translate.ubidots.com/api/postvalue/?token=sbyKW29lNkm1YlM2haxxvEl10EfCUxrF04gw9c1eBiLrq6CGYRAZgqAwRTBn&variable=54ca56747625421b373d7bd3&value=1

Step 7.You now have the crucial info to set up your alert. Replace the api = ApiClient value with your API key. Replace the = api.get_variable with your variable ID above

Change the my_lat = 42.3581 my_long = 71.0636 to your location heres an easy way to find them out http://www.latlong.net/


By | Arduino, Electronics, Engineering, Surfing | No Comments

SURFalert is my first standalone Arduino project to help visualise a surf forecast for any location covered by Magicseaweed. The standalone system (doesn’t need to be connected to a computer) uses a open source Arduino controller and Ethernet shield to connect to the internet parse some XML data and display the current and forecasted conditions using a series of different coloured LEDs.


By | Electronics, Engineering, Surfing | No Comments

WAVEcopter is a fully waterproof multicopter frame that I have constructed mostly from readily available and cheap electrical parts. My reasons for building it were to gain a new perspective on surfing photography, do aerial surveying of event sites, and to satisfy my general fascination with robotics and aviation.

Swell Dials

By | Arduino, Electronics, Engineering, Programming, Surfing | No Comments

This is an arduino project to visualise ocean data wave height/swell period & local wind from any surfing location on magicseaweed

Simple Client Parsing sketch
 Arduino 1.0 version
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
Servo swell;
Servo period;
Servo wind;
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char serverName[] = "festivalnet.co.uk";
EthernetClient client;
int swellval,periodval;
String readString = String(3);
void setup()
  if(Ethernet.begin(mac) == 0) { // start ethernet using mac & IP address
    while(true) // no point in carrying on, so stay in endless loop:
  delay(2000); // give the Ethernet shield 2 second to initialize
void loop()
  client.println("Refresh: 86400");
  if (client.connect(serverName, 80)>0) {
    client.println("GET http://magicseaweed.com/syndicate/rss/index.php?id=1&unit=uk ");//If a connection is made get in the desired page
    //client.println("GET http://festivalnet.co.uk/surf.rss");
  if (client.connected()) {
    if(client.find("Swell :: ")){//look for first rating and store the result to day1
      swellval = client.parseInt();
      swellval = map(swellval,0,12,0,180);
    if(client.find("@ "))
    {//look for second rating and store the result to day2
      periodval = client.parseInt();
      periodval = map(periodval,0,14,0,180);
    {//look for third rating and store the result to day3
      char c = client.read();
          if (readString.indexOf("NNE")>=0)
          if (readString.indexOf("NE")>=0)
          if (readString.indexOf("ENE")>=0)
          if (readString.indexOf("E")>=0)
          if (readString.indexOf("ESE")>=0)
          if (readString.indexOf("SE")>=0)
          if (readString.indexOf("SSE")>=0)
          if (readString.indexOf("S")>=0)
          if (readString.indexOf("SSW")>=0)
          if (readString.indexOf("SW")>=0)
          if (readString.indexOf("WSW")>=0)
          if (readString.indexOf("W")>=0)
          if (readString.indexOf("WNW")>=0)
          if (readString.indexOf("NW")>=0)
          if (readString.indexOf("NNW")>=0)
          if (readString.indexOf("N")>=0)
    else {
      client.stop();//else disconnect


Here is the illustrator file for the gauges that im planning to be laser engraved https://www.dropbox.com/s/kqlo390j8pi5dgo/guages.ai?dl=0

To test the design I printed the dials onto t-shirt transfer paper and ironed them on to some 18mm MDF that i had lying around.


I also added a LED to blink once optimum surfing conditions are happening


Rear view of the mdf showing cutouts for the 3 x Tower Pro micro 9g servos, the wind direction indicator is a FSR90 continuous servo to allow 360 rotation.


It is still in development and ill update progress here