I want to learn more about hardware design, and the best way to learn something is to do it.
I’ve started work on a new project to create an easy-to-use hardware input platform. The project, codenamed Palawan, allows you to make contraptions that show up wirelessly as a keyboard, joystick, or mouse. All with no software to write and no hardware to solder. Unless you want to, of course.
Palawan is built around an NXP Kinetis KW01 CPU with a 48 MHz ARM Cortex M0+ and a sub-GHz wireless radio in it. This sets it apart from other projects in two ways: first in that it’s wireless, and second in that it doesn’t operate in the crowded 2.4 GHz band. This part is the same one used by the Orchard project, and used by bunnie in his Burning Man badge. A software stack exists already, which should make bringup easier.
The name Palawan continues the Kosagi tradition of naming projects after metro stops in Singapore. Palawan stop is on the Sentosa beach tram, and is a spot with fun beach activities. Likewise, the Palawan project aims to be one involving fun. It emulates a joystick, keyboard, or mouse, and can be used to play games, or to generally do something interesting and fun with the computer to which it’s connected.
One large drawback with the MW01 CPU is the lack of USB hardware. This wasn’t an issue for any previous projects, but with Palawan we want zero setup plug-and-play, which means we’ll need USB support. Arduino runs a software USB stack on a 12 MHz controller, so with four times the horsepower and many times more RAM we should be able to do the same on our chip. I am not yet familiar with the subtleties of the protocol, but writing a bit-banged implementation is a good way to familiarize oneself with the gory details of both the protocol and hardware.
There will be two variants of the board. One that runs off 5V and connects via USB. This will be known as the Rx board, as it receives input from the controller device and relays it to the computer. The other board will be known as the Tx board, as it processes button presses and movements, and transmits data wirelessly to the USB stick. The Tx board will run off a pair of AA (or AAA) batteries. These boards will share the same core and analog design, but will differ in their power supplies and digital interfaces.
Software has bugs, and so it’s very important to be able to update devices in the field. These boards will be programmed and developed using the on chip debugging features, but it’s asking way too much to have users connect SWD cables in order to update the software. Therefore, a bootloader will need to be created to make updates easier. To make software management easier, the firmware image will be the same on both the Tx and Rx boards. The Rx boards will be upgradeable over USB. The Tx boards will include their version number in the protocol announcement, and if it doesn’t match they will reboot and update from the Rx board wirelessly.
The Rx board will appear as a USB HID-class device, meaning there are no drivers to develop or install.
The Tx board will have through-hole 0.1" header points for soldering, but will also have areas for attaching alligator clips.
Future posts will detail various stages of development, beginning with part selection and schematic capture. I’ll follow with PCB layout, antenna selection, assembly, board bringup, USB stack creation, and more. At this point, this is still a work-in-progress, so the end has yet to be written. Let’s enjoy the ride.