This project essentially consists of a microcontroller affixed inside the base of a counter bell, that pulls on the bell's clapper with an electromagnet, and communicates with the computer over USB. WAIT! COME BACK! Don't run away, I haven't told you how easy this project is yet!
This project is reasonably easy,
Here's a video of the bell in action, I am sending myself some emails, and as they appear in Thunderbird, the bell goes ding.
Some skills required:
1. soldering - you'll need to solder just six electrical components together
2. electronics knowledge
3. knowledge of programming is entirely optional if you use the same microcontroller as I do since I've made all the code and firmware online so you can quickly download it and load onto the microcontroller over USB
Materials required (details to follow):
1. A counter bell of some sort with a steel clapper
2. A short bolt (to make a solenoid/electromagnet)
3. Some thin (less than 26 AWG) enamelled wire (about 2m)
3. A transistor
4. A resistor
5. A large capacitor (because USB probably won't supply enough power in one go to fire the electromagnet
6. A diode (flyback diode, as safety to avoid things blowing up)
7. A Forebrain (LPC1343 microcontroller) dev board (or you can use an alternative microcontroller/dev board if you want to have a go at coding it yourself)
8. Some prototyping board and wires
You will also need a soldering iron, some type of tape or adhesive to attach things to other things, and possibly some kind of cutting tool to cut a slot out of the base of the bell for the USB plug. And of course a computer (sorry, I only supply source and binaries for WIndows, the bell appears on a computer as a generic USB HID device, for which all modern operating systems have drivers built in for, so it would be relatively easy to code it for Linux or Mac).
Note: the bell does not check your email for you; you will need some sort of program on your computer to check your email and then activate the bell when you receive new mail. For Windows, the Thunderbird mail client works perfectly for this, or alternatively a utility called POP Peeper (more on this later).
Here is another video where I am triggering the bell manually from the computer. The bell plunger occasionally gets stuck, but I've since fixed that with some WD40.
WARNING: This project involves powering a home-made solenoid via the USB port, which may risk damage to your computer if your solenoid draws too much current. I highly recommend using a cheap powered USB hub. I accept no responsibility for any injury to you or damage to your equipment or property should you choose to attempt this. Please proceed AT YOUR OWN RISK.
Remove these ads by
Signing UpStep 1Parts: The Bell
Pushing down on the top arm of the clapper would send the bottom half kicking out and striking the stainless steel bell. I figured I could place an electromagnet underneath top arm of the clapper and attract that downwards to ding the bell.
If your bell is different from this, you'll need to figure out a way to mount your electromagnet, and if the clapper isn't steel or iron, you may be able to get around it by affixing a magnet to the clapper and attracting/repelling that instead.
| « Previous Step | Download PDFView All Steps | Next Step » |


















































I believe you could execute the ding.exe in outlook following these instructions:
http://www.inboxactions.com/index.php/component/content/article?catid=14&id=74
In between "dings" the capacitor would recharge to supply power sufficient to "wack the clapper again't the bell" Use a series Resistor to limit charging current.
int main(void) {
USBInit();
}
void USBOut(unsigned char USBData[], unsigned int USBLength) {
Port2Write(PIN11, 1);
WaitDelay(50);
Port2Write(PIN11, 0);
}
And for the ding.exe app (using Signal 11's cross-platform HID API, code looks identical for Windows and Linux) it's
int main(void) {
unsigned char buffer[2] = {0,0};
hid_device *handle;
handle = hid_open(0x1fc9, 0xbe11, NULL);
if(handle) {
hid_write(handle, buffer, 2);
}
return 0;
}
Using the Signal 11 open source USB lib there, and Forebrain's hardware abstraction code.
I've added a bit more code to store the pulse time into Forebrain's on-board EEPROM, to allow changing of the pulse time over USB, as well as increased the number of bytes sent to allow for any future pulsing of LEDs.
I would think that building something with logic chips, coding for parallel port, and trying to neatly package for a parallel port would be quite a bit more work! I'd suspect you'd want to use hardware astables instead of relying on the computer to send the turn on/off signal since you want to guarantee the pulse time; you don't want your thread to be delayed half-way through!
I've had Forebrain communicating with Linux over USB HID previously as well with no problems (was using Forebrain as a hardware random number generator).
With USB connectivity, there is no reason to use optoisolators since the bell is not connected to any other power source. optoisolating USB is also problematic since it is differential signalling, some sort of USB isolation IC would be required. Isolating power transfer is possible with isolating DC/DC converters, I use these in my USB-controlled fridge.
I would love to make one!
For a linux machine, I think this could be redesigned to not even need a microcontroller, just a bit of code to cycle power to the usb port.l See:
http://stackoverflow.com/questions/1163824/linux-usb-turning-the-power-on-and-off
For any OS that lets you cycle the capslock light in response to an email, you could use a cut-up USB keyboard instead of a microcontroller, as in this old project of mine:
http://www.instructables.com/id/USB-controlled-mini-lava-lamps/
Or maybe a large capacitor to tank the energy required for the coil, and release that energy instead of drawing it from the USB port, all you need to add to your circuit is one resistor on the +5V line and then turn up the capacitance on that capacitor.
Thanks for the introduction to Forebrain. I always love seeing new ARM dev-boards. And thanks for the introduction on POP Peeper.
I did do as you suggested, I had a 0.47ohm resistor on the +5V line, and a 0.33F ultracap. But seeing as the thing seemed to work fine with a regular large aluminium electrolytic and without the series resistor, I decided to just go with those out of simplicity (and more common to get than really large capacitances and really small resistances)
The current from an ideal cap is i = C dv/dt, which only says that the current is a function of the change of voltage, a larger cap will give you more current for the same change in voltage. Or conversely a smaller drop in voltage for the same current.
The circuit doesn't form an RLC tank circuit since there's a flyback diode parallel to the inductor, which dissipates the reverse current.