Friday, 30 May 2025

Mechanical keyboard wiring using the Tutte-Coxeter graph

Following my post on Topology meets Keyboard Design, I spent a few days exploring small less symmetric graphs, trying to find something in the region of 30~42 edges, 20~29 vertices, and as good a girth as possible (especially to have better rollover for the modifier & layer keys) for use in an ergonomic keyboard design. Then I realised as a starting point we can just use part of the 30 vertex Tutte-Coxeter graph, and get 6-key rollover automatically.

30 vertex Tutte-Coxeter graph 28/30 vertices in Tutte-Coxeter graph 26/30 vertices in Tutte-Coxeter graph
All 30 vertices in Tutte-Coxeter graph28 of 30 vertices in Tutte-Coxeter graph26 of 30 vertices in Tutte-Coxeter graph

Friday, 23 May 2025

Topology meets custom keyboard circuit design

Lately I've been reading about ergonomic keyboards, including DIY, spilt keyboards, and custom layouts. I'm currently learning to touch type my own variant of the inverted Hands Down Promethium layout on a pre-assembled Corne spilt keyboard (and on my laptop). I'd like more pinkie stagger, so perhaps I'll design and build my own keyboard - but I don't like soldering, so am drawn to the diode free designs.

The microcontrollers used in most DIY keyboard designs have at least 17 pins available to connect to keyboard switches. In the simplest designs each pin is connected directly to one key switch, which in a split design is enough for a 34 key layout. But what happens if you want more keys than your available GPIO pins, and you don't want to add diodes? Enter topology and the Heawood Graph, 14 vertices (GPIO pins) and 21 edges (key switches).

Heawood graph, 14 vertices & 21 edges, chain of 6 highlighted

Sunday, 1 February 2015

Ikea ZAISU - Floor chairs for our kotatsu

A year ago I setup a DIY kotatsu using an Ikea LACK coffee table, but never got a proper futon-mat, nor any Japanese style floor chairs to go with it: 座椅子 (ざいす, or zaisu). I'd been seriously pondering importing zaisu chairs when I stumbled on a blog comment suggesting using the top half of an Ikea swivel chair.

So I went back to the Edinburgh Ikea and attempted to check all their chairs to see which (if any) might be used without legs as a simple zaisu. I came home with a pair of Ikea VÅGSBERG swivel chair shells (and nearly bought the Ikea JULES junior desk chair shell as well - a little small for me), and a new thick rug.

Ikea kotatsu & zaisu: LACK coffee table with Metro heater, VÅGSBERG chairs,
ALMSTED rug,  Euro-King size MYSA STRÅ duvet with LYCKOAX cover

Saturday, 6 September 2014

Curious Rover Tracks at Space Expo 2014

This week I enjoyed visiting the Space Expo 2014 "The Great Challenge of NASA/JAXA" which is being held 19 July to 23 September at Makuhari Messe (幕張メッセ) in Chiba, Japan.

1/10 size Saturn V model at Space Expo 2014Space Expo 2014 exhibit floor, with hanging ISS model
Lunokhod ("Moonwalker") modelCuriosity Rover model at Space Expo 2014

Sunday, 26 January 2014

Instrumented Telescope with Raspberry Pi and orientation sensor

A "Push To" telescope mount is like a fully automated "Go To" telescope mount, but without the motors. You must manually move the telescope, but because the telescope knows where it is pointed, you get live tracking telling you where it needs to go.

I'm using a Raspberry Pi with a GY-80 orientation sensor to turn my basic SkyWatcher EQ2 mount into a computer assisted "Push To" telescope - which can pass this information to planetarium software like SkySafari on my iPad/iPhone. To do this I've written a little Python script (telescope_server.py) which runs on the Raspberry Pi, and translates the orientation sensor information into RA/Dec angles. The Raspberry Pi listens to Meade LX200 (or Nexstar) serial protocol commands received over TCP/IP, and responds with the orientation information.
SkySafari Plus v4, showing telescope direction from a Raspberry Pi

Indoor testing has gone well so far... I can rotate the Raspberry Pi and watch the blue cross-hairs on SkySafari change position. The locations look sensible (and drift naturally due to sidereal rotation). There is a bit of jitter which may need some smoothing.

Part of the idea came from reading how easy it is to have SkySafari talking to telescope via a Raspberry Pi running a WiFi to serial port bridge (similar blog post), mimicking SkySafari's expensive but neat SkyFi box. I was also impressed with Simon Box's instrumented Dobsonian telescope (measuring altitude-azimuth angles directly) connected to Stellarium (Update: and this similar instrumented telescope project called scopebox), and Leon Rozengarten's project building an Arduino telescope controller using the HMC6352 and ADXL345 sensors (videocode).

This project meant integrating lots of different stuff - serial communication protocols, I2C sensor chips, Inertial measurement unit (IMU) / Attitude and heading reference system (AHRS) calculations, quaternion mathematics for rotations, sidereal time, angle conversions, etc. Here are a few notes... my Python script telescope_server.py is on GitHub.