I was watching Going Postal by Terry Pratchett and in the movie, there were these things called "Clacks Towers". Each tower consists of a massive light with a 4x4 shutter flap system (lots of ropes/pulleys/levers). Anytime someone wanted to send a message to another town, they'd do it through the clacks system which involved sending each letter of their message one at a time. The operators of each clacks tower would transmit those letters from tower to tower, and the recipient on the other end would get their message. The shutters would open or close depending on which letter it was.
These towers made a "semaphore line" - essentially, a line of towers with moving parts which would convey messages through visual signals. Modern day semaphore signaling can be seen when ground crews at airports use flags to signal what they want the pilot to do while near the gates (before or after take-off).
I was so impressed by how they worked! Our hackerspace happened to receive LEDs from Instructables and we had a few LED build nights for me to work on a LED version of a semaphore lantern. I wanted to connect a keyboard to a Propeller microcontroller and for each letter I pressed to be represented in binary via LEDs!
Though this instructable is contained within itself, I hope to eventually do a shutter-based semaphore lantern - pulleys, levers, and all!
Things I used to do this:
- Parallax Propeller Demo Board (super useful to learn programming on and develop new projects!)
- Scrap wood (I used hobby wood that was 1/4" thin and 3-4" wide. Enough to fit the Demo Board on.)
- 8 LEDs (Thanks Instructables!)
- Lots of wires/ribbon cable
- Scissors/Wire strippers
- NPN8 kit (It's a new kit we've been testing. It should be ready on Tindie in the next couple of weeks or so) - This kit allows you to control 8 NPN transistors with 5 lines through use of a shift register!
- Scrap cardboard, pegboard, hot glue
- Power tools: Bandsaw, Routing Table, drill press
- Patience :)
Step 1: Knowing the Boards
So you'd think attaching the keyboard to the Propeller Demo Board would be difficult, but it is in fact not! That's the easiest part of it! Note the purple socket in which my keyboard is plugged into. Bam. Easy!
The other board that I used is known as the NPN8. It allows you to use a shift register to control 8 NPN transistors which allows you to drive items with larger currents if your microcontroller can't source the power needed to whatever 8 items you want to drive (example: motors, solenoids, etc).
In the second picture, the bottom right pins are where the Power, Ground, Clock, Latch, and Serial Data from the Propeller Demo Board are connected to. So that's what I did first as seen in the third picture. It's a little blurry but I put the Power wire on the 3.3V of the Propeller Demo Board, Ground on VSS, Clock, Latch, and Serial Data went on pins 2, 1, and 0 respectively.
Step 2: Adding the LEDs + Using the NPN8 Kit Board
Next I needed to add the LEDs. Essentially on the NPN8 board, the top row of pins headers (0-7) connect to the emitters of the NPN transistors on the board. The bottom row of pin headers (0-7) connect to the collectors of the NPN transistors. In NPN transistors, emitters are usually connected to ground and collectors are usually connected to power.
Here, we are using the LEDs as a middle man - when we tell the Propeller to tell the shift register we want an LED lit up, power goes THROUGH the LED, then through the collector side of the board and out the emitter side of the board.
So to prepare the LEDs, I first used ribbon cable, stripped and tinned the ends with solder, and then soldered a wire to each cathode of the LED. I soldered those wires to the collector side of the board (Port In). (PIC 1, 2 and 3)
After doing that, I stripped/tinned more wires to connect onto the anode side of the LEDs. After soldering them on, I I realized that because these were LEDs, they would need current limiting resistors so I didn't blow them out. So I soldered big ole' 1k resistors (they're so big because I ordered the wrong wattage ones from a previous project) to the wires coming from the anode side of the LEDs. (PIC 4)
Since all of them were going to connect to power, I just twist them into a little bundle, put some solder in the twist, and soldered a wire to go from the bundle to the VSS on the demo board. Not terribly elegant, but certainly easy!
The other side of the NPN8 board (emitter side/Port Out) goes to ground. So again I stripped out wires, tinned them, and the soldered them to the board. The other end was twisted. Solder was put in the twist, and a wire was soldered from that twist/solder bundle to the VDD on the Propeller Demo board. The red circle shows the wires going from the anode of the LEDs to VSS and the green circle shows the wires going from the NPN8 board to ground. (PIC 5)
Note: This may seem somewhat confusing (It was for me until writing this instructable!). Essentially, as mentioned before, when we tell the Propeller to tell the shift register we want an LED lit up, power goes from the demo board, through the LED, then through the collector side of the board and out the emitter side of the board. In slightly more technical terms, when the transistor is biased with a signal from the Propeller, the collector and emitter are allowed to conduct current, so power inevitably goes from the demo board through the current limiting resistors, LED, collector of the transistor, then to ground through the emitter of the transistor.
Step 3: Cosmetics!
Of course, with all of these wires, it just didn't look that good. So I looked around for some scrap pieces of wood. Fortunately, from another project, I had random hobby wood of different sizes. Using our hackerspace's routing table, I routed rabbet joints into the pieces of wood much like the link shows. (PIC 1)
The bottom piece of the box had rabbet joints routed into the left and right side (which ever sides are longer). Two pieces of wood were trimmed to the same length as the bottom piece of the box for the sides (no rabbet joints). And the two remaining sides were routed with rabbet joints on 3 sides (left/bottom/right). When you fit the 5 sides together, they make for a elegant but simple box.
So we glued it up with wood glue and let it sit for an hour.
I wanted the LEDs to be equidistant from each other and noticed we had leftover pegboard. So after cutting it down to size (2x4 for 8 LEDs), and enlarging the holes for the LEDs themselves, we had a very nice method of keeping them in line. (PIC 2)
I hotglued them into place. And then because it was about 3AM at the time, I placed the demo board, and the wires into the lantern chassis (PIC 3 and 4). I also hot glued cardboard shims to the top and bottom of the pegboard-LED-holder so that the pegboard would fit snugly into the now-completed wooden lantern chassis. (PIC 5)
A cover was made and a hole was routed out (not without some difficulty mind you). And then I cut a piece of rice paper to fit and glued it on to the BACK of the cover.
Step 4: Code and ALL DONE!
So once the cover was in place, and the plugs were all plugged in - I needed to get the code working. Fortunately, I had already worked on it in days past.
It's actually fairly straightforward. Feel free to contact me if you have questions about it.
It's a pretty cute little module. I will be, in forthcoming days, working on the finish of the case, maybe adding a handle. But essentially, when you type on the keyboard, the lights that correspond to the binary pattern light up the box. That's one way of learning binary representation of letters and another way to (slowly) communicate with others!