Picture of Email notification bell
Wish your computer had all the bells and whistles?  You can get at least half-way there with this project, a USB-powered and -controlled bell that can be used for email notification or a manner of other things that require a satisfying "ding".

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 adsRemove these ads by Signing Up
imbignate3 years ago

I believe you could execute the ding.exe in outlook following these instructions:
anstimp2 years ago
If I needed one to check a certain folder (label) in gmail and ding, can this be done? How much would you charge to make me one? Could there be an option to manually change the folder (label) it checks so that if I wanted alerts for a different folder?
Pumoonkust2 years ago
Can I use any other microcontroller?
zcshiner2 years ago
How hard was it to get your electromagnet's position 'tuned' so that it pulled the clapper hard and far enough?
meseta (author)  zcshiner2 years ago
not very hard, it worked very well and was quite strong, it worked first time. Though I think it was lucky coincidence that the bolt was about the right length.
zcshiner meseta2 years ago
How long was the bolt? I tried making one from at 1/4-20 bolt, but it doesn't pull the clapper hard enough.
meseta (author)  zcshiner2 years ago
I think mine was a half-inch bolt, and I went crazy with the windings
zcshiner meseta2 years ago
Did you ever measure the resistance of the coil, or measure the current draw of the electromagnet when it is on?
meseta (author)  zcshiner2 years ago
Yes, I made sure that the steady state current draw was < 0.5A as per USB 2.0 spec, however I couldn't measure transients due to lack of equipment. However I did use the largest capacitor value I could find, and a small amount of resistance on the USB input to minimise the risk of damage/brownouts upstream when the electromagnet switches on.
MIKE_FLOOD3 years ago
Most USB ports will shut down if the current they supply exeeds something like 150ma (milliamps)

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.
Gotta tell you , I think your choice of avatar is a blast. Those characters crack me up. The artist is coming to my area, and I'd love to see him perform. The radio station has a contest and the prize is two tickets to the show ($130.00 per ticket) That would be a really fun contest to win!
I had an idea similar to this. When you get a email, it sends a signal to a small device in your pocket and alerts you somehow. Anyways, NICE JOB! :D
you mean something like a smart phone?
probaly the same thing, ya. :P
Your tech abilities are amazing! The bell is such a fun and innovative design.
Wonder if just a usb printer cable and logic chip latches would save using a microcontroller and a lot of unneeded code writing. Might do a version using the standard parallel port for linux. On another point, an optoisolator should work to keep the computer safer.
meseta (author)  Computothought3 years ago
Could do, but you should take a look at the code first, to make it work it's literally just:

int main(void) {

void USBOut(unsigned char USBData[], unsigned int USBLength) {
  Port2Write(PIN11, 1);
  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.
ghurse3 years ago
to protect the USB source, May I recommend a Limiting resistor on the 5V line to the transistor (and Main Electro). The larger this Capacitor the greater the turn on "in Rush" or charge current will be.. this could be as bad as the firing of the solenoid . with a little redesign you could have a sizeable storage for the solenoid that is more isolated from the USB but still have the circuit USB powered..
duckerduck3 years ago
Could you also build a mac version of ding.exe?
I would love to make one!
Yes. Mac version PLEASE!!
meseta (author)  duckerduck3 years ago
Hey, I'd love to, but I'll need to get my hands on a mac first! I'll see if I can borrow one off friends or colleagues.
imbignate3 years ago
The capacitor in your diagram is 470 micro farads, yet your initial BoM listed a 2200 uF capacitor. Which is correct?
meseta (author)  imbignate3 years ago
I suggested using at least 470uF, but preferably larger, the one I ended up using is 2200uF.
Nice idea. I can even see steampunkers using it with minimal cosmetic changes.
HamenChips3 years ago
Or you can connect the USB to a device which converts electrical outlet voltage to USB voltage.
ynze3 years ago
jamesh3 years ago
Neat idea. I really like it. you could also have the microcontroller trigger an event on the computer when the bell is rung with a simple switch, or perhaps even by measuring induced current on the coil when the bell is rung manually.

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:

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:
meseta (author)  jamesh3 years ago
I know, people keep saying that I don't need a microcontroller, etc. Nobody seems to read the instructable any more, I do mention that I will put pulsing LEDs on the thing.
Robot Lover3 years ago
This is sweet! Perhaps an indicator LED would be helpful, you know, just in case you're out of the office and you miss the bell, that way you know that you have an email. Also, you can buy circular protoboard at radioshack here's the link:
meseta (author)  Robot Lover3 years ago
Yeah, I'm definitely putting LEDs under there for some gentle coloured pulsing. That way it'll also be able to distinguish which mail account received the email.
Maybe an RGB LED that can change colors for the amount of emails recieved!
meseta (author)  Robot Lover3 years ago
Exactly! I have these high intensity Super-flux red, green and blue LEDs from a previous instructable:
Well there you go! You could probably diffuse one and it would be sufficient. Gotta love brainstorming! ( :
Would adding a resettable fuse help with the current draw problem?

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.
meseta (author)  frank260801153 years ago
Yup, I agree, a resettable fuse would be safer for the computer. Although I don't have any current draw problems with mine; I am using a 2200uF capacitor, and the USB port seems happy enough supplying the current.

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)
rmd6502 meseta3 years ago
I don't fully understand the math, so may be completely wrong, but wouldn't too large a cap provide current too "slowly" to the solenoid? Or is that just ESR? Since the cap+solenoid effectively creates a RLC tank circuit, if the resonant frequency is too low?
meseta (author)  rmd65023 years ago
It is just ESR, and larger caps tend to have lower ESRs (though I think a lot has to do with physical dimensions rather than capacitance value).

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.