There is something particularly gratifying about writing software that drives other bits of hardware. I guess it's the feeling of controlling something in the real world, rather than just making square boxes do things in the virtual world of PCs. .NET 2 made controlling COM ports easy through the SerialPort class, and there is a library available for controlling the USB ports. Then I saw this article about driving LCD screens from .NET, again via the serial port.
So now it's all very easy to control hardware from my preferred development environment, I just have to find a useful application to develop.
One possibility I've been mulling over for a while is some software to monitor electricity usage. Apparently there are electricity meters out there that will do this for you, showing pretty graphs etc, but the electricity companies aren't keen on installing them. Presumably this is due to the cost and also perhaps because it might encourage people to use less power, which isn't really in their interests. You can buy a clamp meter to non-invasively measure power usage but the ones that actually come with any kind of data interface are damn expensive so until I can find a cheap one, this particular idea is on the back burner.