Amongst some other pieces, I picked up a 12 VDC Piezoelectric Buzzer (RS# 273-0059). You can find cheaper ones online - just make sure that the low-end of the voltage range for yours is around 3 volts (http://www.netduino.com/netduino/specs.htm).
You can drive this pretty easily by simply plugging this buzzer in between the ground pin (GND) and one of the digital I/O ports (I used 13 - it's right next to the ground pin). Somewhat annoyingly, it will immediately begin buzzing when you power-up the Netduino - this does not endear you to your sleeping wife. :)
The plan was to make the last project into something useful. As you may know - the FCC requires that amatuer radio operators identify periodically during operation (Sec 97.119 - http://www.w5yi.org/page.php?id=124). With a couple quick modifications - you can make your Netduino provide your ID whenever you press the button. This might actually be useful. I don't operate on CW often, but you can ID with CW wherever CW is authorized - So, everywhere but 60 meter right (not an issue for me)?
You can do this with a couple tiny modifications from the previous project:
First, change your OutputPort from:
// setup our output port (on-board LED) static OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);
to
// setup our output port (piezo buzzer (RS # 273-0059) between D13 and ground) static OutputPort piezo = new OutputPort(Pins.GPIO_PIN_D13, false);
Then change your write operations from:
led.Write(true|false);
to
piezo.Write(true|false);
Then switch the MESSAGE constant to your call sign. Hit the "Start debug" button and then press your button and you should get your call sign in CW over the buzzer at about 14 wpm (based on the UNIT constant being left at 100).
(I also ran across this free eBook on the .NET Micro Framework tonight - I haven't read through it yet - but it looks interesting - check it out: Beginner's Guide to C# and .NET Micro Framework)