USB Cherry MX Numpad

Almost a year ago, I bought my first mechanical keyboard. It's a Filco Ninja Majestouch-2 Tenkeyless (with Cherry MX Brown switches). It's an absolutely amazing keyboard to type on and is built like a tank, well worth the admittedly shocking price. However, the "tenkeyless" in the name means that it does not have a numpad. The keyboard is available with a numpad aswell, but the reason why I did not want one is that I am left-handed, and much prefer the numpad to be on the left side of the keyboard. A normal numpad would be almost useless for me.

Another reason why I got the tenkeyless version was this: not having a numpad also gave me an excuse to build my own! It's taken a year, but I finally managed to get around to doing it. That is what this post is all about.

Software Defined Radio

I've been interested in Software Defined Radio for a long time, but haven't done much with it so far. I finally decided to take my first step in actually doing some software defined radio hardware. One DIY SDR kit that I've had my eyes on for a while is the Ensemble RX II. It can receive anything from 1.8MHz to 30MHz. It's a simple and easy to understand SDR. I'm not into building readymade kits, though. So I decided to build my own clone of it instead. I figured you'd learn a lot more that way. So here's the story of that.

AD9833-based USB Function Generator

One tool that I've been missing at my lab at home is function generator. They tend to be a bit expensive, so I haven't bought one. I thought this might be a good opportunity to try and make one myself. I found a pretty common DDS (direct digital synthesis) chip, called AD9833. Then just strap a USB-enabled AVR micro there and maybe some analog electronics.

This board doesn't do any of the special analog magic to allow for variable amplitude or offset for the signal. The output is fixed to 0-4v. I'm planning to make another completely analog board for adjusting amplitude and offset.

A Simple EMF Probe

There's something fascinating about electromagnetic fields. Thanks to the modern world and the prevalence of electronics and electricity, they're all around us these days. But because of the extremely limited array of senses that we humans have, we spend most of the time completely oblivious of them. Wouldn't it be cool to make something simple that could not just detect them, but would allow you look at the waveforms on an oscilloscope. An EMF probe in other words.

Making an Embedded Linux Kernel Device Driver

I bought this nice little embedded Linux development board some months back. It's called Carambola and it's based on a MIPS SoC manufactured by Ralink and designated RT3050. The board has 8MB flash, 32MB ram, two ethenet ports, 802.11bgn wifi, USB host, 2x uart, 1x SPI, 1x I2C and some GPIO pins. The chipset is commonly used in small home routers and such, but it seems to work very nicely as a generic embedded linux development platform.

I wanted to do something with the SPI bus of the board, purely as a learning experience. More specifically, I wanted to write a kernel module that does something with the SPI bus. You can actually control the SPI bus from Linux user space as well, and quite easily at that, so why do I want to do it from inside the kernel? First of all, I've been using Linux as my desktop operating system for years, so I'm quite familiar with how Linux operates in the user space, but my experiences with operating in the kernel space have been a lot more limited. This would be a perfect time to learn. Also, if you want to make actual Linux device drivers for whatever you're interfacing with, those need to be done in the kernel.

In any case, for the first try I wanted to interface with something easy. I decided to interface a very simple shift register and some LEDs to the carambola board. The goal: make a larson scanner.

Modifying a bench power supply

This post is about a small modificaton of this linear bench power supply I bought from some months ago. For the most part I've been satisfied with it, the only complaint I had was that the refresh rate of the voltage and current displays was a bit slow. It wasn't that bad and I figured I'd just get used to it, but a month ago I saw an interesting video by mikeselectricstuff on youtube. He had bought a bench power supply and he had the same problem as me, the refresh rate of the displays was too slow. But unlike me, he didn't just whine about it, he decided to do something about it.

Capacitive Touch Sensing with AVR and a Single ADC Pin

I've been thinking of a project that needs a little bit more elegant user interface than your usual push buttons. Partly inspired by a video blog on Dave Jones' EEVblog, I decided to look into capacitive touch buttons. The big issue unfortunately for me was that you usually need a separate chip for capacitive touch sensing. With some tricks, you can however use a normal microcontroller to do the job. Even using only a single pin and resistor.

Wireless Motion Sensor

Wireless stuff is fun! If you look at the picture above, the thing to the right, clamped to a vice, is a motion sensor (PIR sensor) that has a small addition on it's back. That addition is a small PCB that I designed, milled and soldered recently, with an ATmega microcontroller and a cheap radio-module on it. The thing to the left is a spectrum analyzer showing that the device is indeed sending radio signals. In the background you can also see a radio-controlled RGB light controller, but that's a story for a later time.

USB Infrared Toy Free PCB Build

A couple of times a week the fine people at Dangerous Prototypes give away free pcbs to their readers. Some time ago I got the pleasure of receiving one of them. The PCB I had chosen was one for an older version of their USB Infrared Toy. It's a small device that allows you to analyze, copy and send IR remote controller signals. Of course the bare PCB I got wasn't going to do any of that, so it was time to do some soldering.


I just came back from Austria last saturday from a university course called Developing Open Source Systems Expertise in Europe 2012 and I thought I'd post a couple of quick thoughts about it. The point of the course was to work in an international team over the course of two weeks to create some sort of an open source system. The team I was a part of, the one you can see above, was trying to transform a small ARM-based linux computer called the Dreamplug into a powerful, easily configurable open source -based network router.

Syndicate content