After putting together the rotary phone beaglebone machine, I decided that I still needed to do something with the extra pinouts on the beaglebone. Since I had recently started using MyTinyTodo to keep track of my todo list, I thought it would be nice to have a quick visual display of how many things are still on my todo list.
To Accomplish this my goal, I would need to add some LEDs to the beagle bone and then hack some code to do what needs doing. First thing first: add the idea to the todo list.
Gather Some Components
In order to get this project going, a trip to the nearby electronics store was in order. After returning home with 10 green LEDs ( the plan was to use 6, but I figured buying extra would let me fry a few), I realized that there was a lack of 100 Ohm resistors in my home.
Fortunately, I had some 50 Ohms that I soldered in series to handle the job.
This is a very boring pictures; don't look at it.
Solder 6 of These
This is the basic circuit that get's wired to the BeagleBone. The extra length of wire will get cut off and the entire thing will be wrapped in a bit of electrical tape.
While I was at the electronics store, I bought some fans to replace the fans in the clock server because I think it runs too hot.
The Finished Circuit
Well looky looky! The circuit is finished. Six LEDs with a common ground, with a 100 Ohms of resistance for each LED.
Time to wrap these babies up with electrical tape and hot glue them into the BeagleBone's case.
Glued in Place
On the third attempt, I managed to almost get the LEDs glued into place where I wanted them. Yea, it took me a few time of gluing, and then prying the LEDs from the case a regluing before things were working properly.
As it is, one of the LEDs still doesn't let the box close very easily. Terrible terrible design. That's it! I'm firing myself.
Oh hey! This is probably the best picture that shows off the flowers etched in the glass.
7 Things On The ToDo List
At the time this picture was taken, there were 7 things on my todo list. But there are only 3 LEDs lit up. That's right, the LEDs need to be counted in binary from left to right.
With this setup, using 6 LEDs, the ToDo List will max out at 63 items; and I if I have that many things to do, something is very wrong.
Every 5 minutes, the LEDs run a simple animation sequence, parse the ToDo List RSS feed and then turn on or turn off LEDs as necessary.
Since there is still plenty of room in the box, I'm thinking of adding another something-or-other that is controlled by the BeagleBone pins. I'm not sure what it will be, but I can guarantee I'll have fun making it.
Hack on!
PS. I really want to have 15 things on my ToDo list, just so I can say "THERE...ARE...FOUR...LIGHTS" Ha hahahaha, I crack me up.
Rocking the Rambler
Remember the dash of my buddy's 1966 Rambler from http://www.jezra.net/blog/The_Wrench? Well, that dash has a stock AM radio that looks really nice. Unfortunately, there aren't very many AM radio stations in the area that play music worthy of listening to in a 1966 Rambler. So, for my buddy's birthday, I decided to make an AM transmitter that would deliver music of his choosing to his radio in sweet sweet monophonic sound.
Schematic
A quick internet search for "simple AM transmitter" let me to http://justtechnika.com/articles/circuit-diagram-simple-digital-am-transmitter/, which seemed to be exactly what I needed. About $5 later, the components needed to make three of these things were on their way to my home from digikey
After a few minutes of figuring out where things needed to go, I had a working prototype on a development board. I accidentally left out the 1000 micro farad / 25 volt capacitor. Oh well, it still works.
Test the prototype
The first test of the prototype took place with my alarm clock AM radio and I really needed to test this on the real thing.
Hey Buddy, bring your car over here!
The transmitter worked like a charm as long as the transmitter antenna was touching the radio antenna. (this is a good thing)
The real deal
A month or so after I started this project, I had a finished circuit ready to deliver to my buddy and a small burn on my finger. Damn soldering iron. The finished product is about 5x3 centimeters in size and a power switch has been added.
Hopefully the circuit doesn't sit around his apartment gathering dust.
hint hint
Hey Buddy! We should hella install that transmitter this weekend
When this gets installed, we are planning to connect the transmitter directly to the antenna where it plugs into the radio.
A bit of Computer Repair
My good buddy Constance has a rather old computer. Actually, it is an original ibook with a speedy 300Mhz processor and a whopping 192M of RAM.
OK, the RAM has obviously been updated, but other than that, the computer is still original.
One day, Constance told me a tale of tripping over her computer cord and then the adapter started sparking. Crap! The machine may be crap, but it is all she has and it has all of her writings on it.
Ah, the slow as dirt machine. See that "yo-yo" power adapter? Aside from always burning out, those things are $80 from Apple. I'll be damned if I let Apple get any of my poor writer friend's money. Let's fix that shit!
First thing first: find out where the cord is fried. Well, I'll be damned, it just happens to be fried where every other "yo-yo" adapter gets fried.
(That's me being sarcastic)
It went like this:
1. cut off part of the plastic housing
2. cut and strip wires
3. determine that the amount of exposed wire is to too short for my pathetic soldering skills
4. cut off all of the plastic housing
5. discard the metal housing under the plastic housing
After soldering the wires, I used hot glue to re-attach part of the plastic housing and then I wrapped the wires with electrical tape. Just to be save, I slather on a crapload of hot glue to keep everything together.
Solder, electrical tape, and hot glue. Shazaam! That's three adhesives in one project!
When the repair was completed, I put the machine in bag and pedaled over to Constance's house, where I was greeted ecstatically. It should be noted however, that there was a serious lack of cookies/coffee/beer/scotch waiting for me when I got there. cough cough, cough cough cough, hint hint.
Now quit reading, and go repair a crappy 11 year old laptop.
P.S. If anyone has an old laptop gathering dust, and the laptop isn't as crappy as Constance's current piece of shit, let me know. (Constance really needs an upgrade)
She will make some cookies when you tell her which kind.
(Are Tacos a cookie? )
seriously
The connector port cracked on the inside of the laptop case, so I took it apart and soldered in some braided wire that exits the chassis. Then I put a phoenix connector on the end. I then snipped off the end of the power adapter cord, and wired it into a phoenix connector also.
Works perfectly now. Common problem due to the stress on that connector or something.
I had to solder it back on, and then tape it in place because the solder points would be the only thing holding it in place otherwise. It sorta works now, but you have to be ginger with it.
As for newer laptops: I don't have anything past the Pentium I era that functions (and most of those don't function, either), but I'll make sure to keep my eyes open.
@windigo, perhaps you should invest in a hot glue gun to help keep things in place.
One can never have too many adhesives
My kids removed the down arrow key and the 'n' key, I think, but it all works fine.
(jamba, put linux on it and give it to him for free. picture it as a donation to the cause. ;) )
@nybill, I think I'm about to install freeBSD on it, but I'll think about it :-)
ah, and now I think my desktop is busted.... I think the north bridge melted or something. dangit.
Step 2: write "n" on the square
Step 3: glue the square to the keyboard
done!
turns out...my north bridge is definitely burned/burning up. when it rains, it pours
The tag on the phone said:
phone
as-is
$8.50
Perfect.
In various states of functionality, there are about 15 rotary phones in my home, this particular phone however, is destined for a different sort of communication.
Based upon the schematic that was used for the serial switch project I really wanted to make a multi-switch input device. It would be easy to simply solder on two more switches to the existing project and then run various commands when each switch is pressed, but that wouldn't be much fun. Fortunately, I know that a rotary phone has three switches inside. Let the fun begin.
The phone was light, too light. From experience, I had guessed that the ringer was gutted from this phone. Not only was the ringer gutted, but most of the internals where also removed. Oh well, it makes things easier for me. Here you can see the body, the internal cradle switch mechanism, and the back of the dialer.
Perhaps I should do this with every phone I have with a missing or broken ringer.
Step 1. Determine which of the wires coming from cradle switch from a closed circuit when the headset is placed on the cradle. There can't be more than 8 wires so it should be fairly easy to do.
Whoops. Wow, those things fall apart fairly easily and I was left with a pile of wires, switch contact points, spacers, and a sense of determination.
This is about 75% of the wires.
Hey, that wasn't too hard to put back together. Much like the toys I insisted on taking apart as a child, this switch was put back together with a few parts missing.
Actually, I only needed two contact point to make the switch work the way I want it to. The extra contact points were added to give pull on the slotted bar connected to the spring lever.
This is a close of up the back of the rotary. There are two switches here that I will refer to as the rotator and the dialer. If the rotary is moving then the rotator switch is making a closed circuit. The dialier on the other hand is normally closed, but when the rotary is swinging back to its default stationary position after a user has dialed a number, the dialer switch will break the circuit a number of times equal to the number that was selected. After the rotary has finally parked in the stationary position, the rotator switch opens and breaks the circuit.
Three switches means 6 connections: 3 grounds and 3 leads. Since the three grounds will be soldered to the same pin on the serial port, I only need a 4 wire cable. Fortunately I had a spare black USB cable( and USB cables only have four wires).
All soldered up and ready for electrical tape. OK, I used duct-tape.
All done with the hardware, now it is coding time!
Fast forward an hour
The code is done and everthing is working as expected. So how does it work?
1. pick headset off of cradle
2. dial a number that corresponds with a command in the configuration file
3. hang up the phone
4. the command is run on the computer
For example:
- dialing "1" will run the command "firefox http://www.linuxoutlaws.com " which will open the Linux Outlaws website in Firefox.
- dialing "2" will play the latest episode of my favorite audcast; It is time to remove the pod and put in some aud-io.
- dialing "22" will play the Conan Soundtrack
- dialing "23" will play compositions by Basil Poledouris (randomly)
- "3" will quit all audio players
- "01189998819991197253" will run "firefox http://www.youtube.com/watch?v=RK4Xye7AErE "
quit reading and go make something.
On the Linux Outlaws Podcast, there is a feature on the show called the "crap alert"; which is an alarm sound that plays whenever Fabian, one of the show hosts, states that something is crap. There were a few discussions on the show's forums regarding playing the alarm on one's own computer.
"Hey, I have a switch and I want to use it to play a command on my computer!"
But how do I do it?
A bit of research found www.swen.uwaterloo.ca/~drayside/altinput/, which has information regarding making a switch to connect to the serial port of a computer. After a bit of soldering, my serial port switch was complete. All it needed was some sort of driver. Having previously worked with Python to access data from a serial port, I decided to use Python to poll the state of the switch and run a command when the switch is depressed.
Here is the "driver"
#!/usr/bin/env python
import serial
import gobject
import os
import sys
import subprocess
class serial_checker (gobject.GObject):
def __init__(self):
self.config = {"port":0,"carrier_detect_pressed":"echo carrier\ detect\ pressed\n"}
#read the config file
cfile = os.path.expanduser("~/.serial_switch" )
file_lines = open(cfile)
for line in file_lines:
#trim the white spaces
line = line.strip()
#if the line has length and the first char isn't a hash
if len(line) and line[0]!="#":
#this is a parsible line
(key,value) = line.split(":",1)
self.config[key.strip()] = value.strip()
self.cd_switch_down = False
self.cd_switch_action_running = False
gobject.GObject.__init__(self)
self.switch_count = 0
#define our serial
self.ser = serial.Serial(self.config["port"])
self.mainloop = gobject.MainLoop()
gobject.timeout_add(150, self.check_switches )
def cd_switch_action(self):
#what is the user requested command?
command = self.config["carrier_detect_pressed"]
#print command
#run the command, this should be in a thread or asynchronous
subprocess.Popen(command,shell=True)
def run(self):
#run the main loop
self.mainloop.run()
#check the switches
def check_switches(self):
cdval = self.ser.getCD()
if (cdval):
if(self.cd_switch_down==False):
self.cd_switch_down = True
#try to run the cd switch action
self.cd_switch_action()
else:
self.cd_switch_down = False
return True
#when the class is closed, clean up
def __del__(self):
self.ser.close()
self.mainloop.quit()
if (__name__=="__main__"):
ser_check = serial_checker()
ser_check.run()
When the python script is first run, it reads a configuration file from my home directory named ".serial_switch", which contains the command that I want to run when the switch is depressed. The config looks like this:
# this is a config file for serial_switch
# all configurations will be in key:value format
# serial port (default /dev/ttyS0 )
#port:/dev/ttyS0
#what happens when the carrier_detect switch is pressed
carrier_detect_pressed: gmrun
Although I played around with various commands that I thought would be fun to run when the switch was depressed, I found that gmrun was more useful than playing an audio file.
TODO
Add more switches to the serial connector.
Physically, the serial connector should be able to hand 3 or 4 switches so I should add the switches and update the software accordingly.
What it looks like
Here is the video I uploaded to youtube.

