Building a Washington State Ferry decoration

Night shot of ferry outside

I built a working WA State Ferry decoration for my yard.

I like to work on projects that are a little outside of things I usually work on. I have no idea how to achieve it, and spend most of the year working on it in my spare time.

Some of my past projects:

For this post I want to expand on how I made some challenges, and how I overcame them.

You can see an overview of the entire process here:
  https://imgur.com/gallery/6KvSis8

Movement and Control

My original idea for the ferry was to use an aluminum rail with a wheeled sled. I found one while I was working on a different project. I had aspirations of building something similar to a 3d printer to control it. As I was working through how to achieve this, it became clear it would be too complicated and hard to maintain.

I had researched garage door openers in the past for my ski lift. I ruled it out since it wasn’t designed to run all the time – I was afraid it would overheat. I revisited the solution again for the ferry. I researched various models and features, and kept an on craigslist until one showed up.

At first I thought I would have the ferry run on a schedule. Every 15 minutes it would automatically switch sides. It didn’t take long to come to the conclusion that it was better to have the user press a button.

Testing a LED button with alligator clips
You can never have too many alligator clips

Garage door openers already have an option for a button. One downside is that the button can be used at any time to stop progress of the opener. I did not want the button press to be so responsive. Once the process started I wanted it to finish. This is where I decided to use an Arduino to control the button. I have a separate blog post showing how I achieved this: https://www.jjerome.com/2019/07/03/using-arduino-to-ignore-button-presses/

The button behavior was fairly straight forward, but it would take some experimentation. I learned long ago that a good test environment gives you the highest chance of success. I had to be diligent about making my project easy to pickup after leaving it alone for a month . This meant well organized code, version control, and pictures of my breadboard setup.

I organized actions into functions:

  • instead of writing digitalWrite(LED_BUILTIN, HIGH) to turn off an LED
  • I had a functions called turnBuiltinLEDOn() and turnBuiltinLEDOff()

Staying organized made it a lot easier to crawl back into my code when needed.

What things should look like

I knew I had to make:

  • a ferry that looked like a ferry
  • a cover for the motor to keep it dry, and it should look like part of the scenery
  • something else on the other side, that also fit the scenery
A model made to look like a ferry boat.
A boxy Washington State Ferry

The Ferry
There are lots of examples of ferry online. I looked at a few pictures of real WA State Ferries, and a few drawings as well. I’ve found that people like decorations that look more like a cartoon than the real thing. I also wanted the ferry to look homemade. I settled on something with more rounded port holes, and the same color scheme as real thing. I also wanted some room for some cars.

A diecast model on the ferry
Our first customer

I thought it would be neat to have all our cars represented on the ferry. Finding a model for a classic VW Beetle was not that hard. Finding a Eurovan and a Chrysler minivan were a bit harder. I found some cheap diecast models on ebay. They looked close enough, I painted them to look like our vehicles.

waiting for a painted diecast model to dry
A makeshift drying station

There seems to be a large diecast model community. There was plenty of advice on how to paint the models. I follow most of the advice, but I cut a few corners here and there. I didn’t strip the old paint, and I had to paint with a brush. For some reason every model was advertised as 1:32 scale. But when you compared them next to each other the scale is not accurate. I did my best with the time allotted.

The Terminal
For the side of the Garage Door opener with a motor, I made something that looked like a terminal. The only problem was that the real terminals do not look like much. You would be hard pressed to see one if you were not paying attention. I settled on a bland white building, with a large version of one of the logos on the side. I borrowed this idea from some of the airlines that paint a huge logo on their hangars at airports. I wanted to have windows that could light up, but I decided that could be a feature for another time.

A picture of a box painted to look like a ferry terminal in a cluttered garage.
A ferry terminal hanging out in a cluttered garage

The Dock
While researching terminals, I saw a lot of pictures of docks. The main thing about the docks is that they had a large structure that went high in the air. I decided to build a similar looking structure as a dock for the other side. I got a little fancy and came up with a pattern that made it look pretty good.

Assembling the ferry dock
Assembling the ferry dock

Storage

Storage is a big deal. We knew from past experience that you must account for storage. Any time I have made an exception it has a certain cost in the future. From the outset I had a plan for how I was going to store everything:

  • The ferry is held together by bolts, and comes completely apart
  • The ferry dock is also held together by bolts
  • The terminal serves as a box that holds all the other parts
  • I’m going to store the garage door opener, in the garage! Since the track is attached to the motor, I can hang it up high as one piece

I built the platforms as I needed them. I originally thought I’d use a ladder for one side, but it didn’t work well when I had everything together. Both these platforms come completely apart. I learned a lot from watching a youtube video for building modular stages: https://youtu.be/ff8LiHGpFKQ

Extras

One of the things I like about this project is that I got it to the point where I have a lot of flexibility. At this point the project is using the same techniques used by model train builders for their scenery. I have a few ideas:

  • I want to light up the terminal at night. I plan to cut out the windows (the black rectangles), and install some translucent material with lights behind them
  • Some friends got me models of their cars for the ferry. One of them had LED headlights. I rewired them so that they work on external power instead of batteries. I’d like to put this car on the dock and power it so that its lights shine at night
  • I want to install some lights on the dock
  • Someone suggested I add a small horn when the ferry starts, but I’m thinking that will start to annoy the neighbors after a while 🙂
Night shot of ferry outside

In Summary

This was a fun project! I felt like I got to apply some lessons learned from past projects and it went fairly smoothly. This ferry incorporates more features than the other projects. The interactive part really makes it a crowd-pleaser.

Jay Inslee, Governor of Washington State, said "Nice work" on Twitter.
Wow!

Lego Saturn V Rocket

Picture of reading Lego instructions

We finished our Lego Saturn V! Just in time to celebrate the 50th anniversary of the moon landing.

I like to pick projects to do with my kids. Sometimes it’s just a puzzle, and other times it has been Lego. This was one of those projects.

You can find a ton of reviews for this set online, and it seems like I am the last person to complete the set. The reviews are true – it’s a great set, well thought out, and very large. You can even add some lights and sound if you want.

Motivating your family

I have found my kids don’t necessarily want to do something if I ask them. Instead, I have had a lot of luck just starting a project in a common room, and they kind of gather on their own. For instance, I’ll start a puzzle and pretty soon someone shows up. They usually start by asking me what I’m doing. They might make fun of it. Soon they start watching. Then they start helping me. Coincidentally, this also works on my significant other 🙂

How to find one

These sets used to be hard to find, but that doesn’t seem to be the case anymore. If you are having a hard time find this set or another set like it, there are some websites that will alert you when a set is back in stock. In hindsight, I probably could have waited longer for a used set to show up online.

If you are looking to save a little money, you might do well to find a used set. For me, I was only interested in the rocket – I did not care too much about the lunar lander and stand. If I would have waited an extra year I could have saved a lot of money. You might do well to find a set that is missing some of these accessories. At least for me, tracking down missing parts can be part of the fun of constructing a set.

Here are some other Lego projects I have worked on:

Using Arduino to ignore button presses

arduino diagram

How I programmed an Arduino to accept a button press and then ignore subsequent button presses

I am working on an art project that involves a button. The button will start the device, but ignore any extra button presses for a set amount of time. This post focuses on my small journey, and a few things I learned along the way.

My Background

I have a very basic knowledge of electronics. I have an Arduino starter kit, and I played around with the tutorials until I understood the basics. After that I moved on. I figured I could always pick it back up again if needed.

The Requirements

  • Start a garage door opener (I’ll refer to it as the “opener” from now on)
  • Use the opener’s wired-button terminals/leads/pins to control it. These are the same leads that you would use hook up to a button on the wall in your house to use your garage door opener.
  • The opener has 2 terminals/leads – if they touch together, the opener will start
  • Use a button to communicate with the Arduino. It will decide if it should (or should not) use those terminals to start the opener

Hardware

I need 2 buttons: One to communicate with the Arduino, and the other one controlled by the Arduino. To do this I need something called a Relay.

What’s a Relay

A Relay is a fancy switch that is controlled by electricity. It does this with an electromagnet. Imagine a light switch – you add some parts so that if you hold a magnet to one side, the switch will flip. Take the magnet away and the switch flips back off. Wrap that into a box and you have a relay.

  • If no electricity is running to the Relay, then there is no magnet. The switch is off
  • If electricity is running to the Relay, then the electromagnet is on. The magnet attracts the switch to the other side and turns the switch on

You can hear a Relay when it switches. It makes a distinct “click” noise. You find them in a lot of everyday things, like your windshield wipers.

That’s the basics. Yet there are a few more features:

  • The Relay can do the exact opposite. It can be ON when no electricity is running, and turn OFF when the electricity is on
  • Relays are used to operate high voltage electronics, while protecting sensitive equipment. The Arduino can only handle about 5 volts. It could never power a household light bulb. To do this you wire the light bulb with the full power, and use a relay to control that power. The Arduino is safely behind the Relay, protected from the high voltage.

A relay typically has 5 pins:

  1. Input 1: the positive (+)
  2. Input 2: the negative (-)
  3. a common (or COM): this is one half of the thing you are switching
  4. Normally Closed (or N/C): when power is on, the switch is on
  5. Normally Open (or N/O): when power is off, the switch is on

I read a couple articles before this started making sense to me. This one helped me the most: https://www.instructables.com/id/How-Electronic-Switches-Work-For-Noobs-Relays-and/

My Relay

My Relay had no labels and looked different from most of the tutorials. I figured it out by connecting a couple alligator clips to a 9v battery. After connecting them to the pins on the relay, I listened for the click of the magnetic switch. After that I used my volt meter to determine which pins were Normally-Closed and Normally-Open.

The hardware layout

Relay Setup:

  • I connected my ~5 on the Arduino to one pin on the relay, and 5v on the Arduino to the other pin
  • The Common (middle) lead connects to one terminal on the garage door opener
  • The N/C (Normally Closed) pin connects to the other terminal on the garage door opener

Button Setup:

  • The button setup is like all the other button tutorials
  • I connected ground (GRD) on the Arduino to one end of the button
  • I connected ~9 on the Arduino to the other end of the button
My first time drawing a diagram in fritzing!

The Code

Intended behavior:

  1. When the button is pressed (or LOW) on ~5, I trigger a “button press” using the relay for the garage door opener (it starts)
  2. I then run a delay for a set amount of time
    • the delay allows my code to ignore everything until after the delay has finished

Quick notes:

  • I use the built-in LED on the Arduino to show when it is ignoring button presses (LED_BUILTIN)
  • I write debug messages to the serial. Not a big deal but it makes the code a little more busy looking
/**
 * Ignore button presses after accepting the first, for a set amount of time
 * Jason Jerome
 */

int gDoorPin = 5;
int buttonPin = 9;

String msg = "seconds to wait: ";
int secondsToWait = 20;

void setup()
{
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(gDoorPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);

  digitalWrite(gDoorPin, HIGH);
  Serial.println("Hi - ready");
}

void loop()
{
  if (digitalRead(buttonPin) == LOW)
  {
    Serial.println("button pressed");
    digitalWrite(LED_BUILTIN, HIGH);

    startOpener();

    Serial.println(msg + secondsToWait);
    delay(secondsToWait * 1000);

    Serial.println("done - ready for more");
    digitalWrite(LED_BUILTIN, LOW);
  }
}

void startOpener() {
  Serial.println("gDoor - activating");
  digitalWrite(gDoorPin, LOW);
  delay(500);
  digitalWrite(gDoorPin, HIGH);
}

Here’s a video of it in action:

This has been a fun project so far. I’m very happy to have most of the electronics figured out so early in the process. I can now move on to designing and building the other parts!