loading

Make a retro USB keyboard out of a 1980's Acorn Electron computer!

The Electron was an 8-bit computer first produced in 1983, based on the legendary BBC Micro. Although it was a budget home machine, it came equipped with a decent keyboard. To many of us who grew up in the 80s the sound and feel of an authentic mechanical keyboard brings back many happy memories.

Incomplete, untested or non-working Electrons can still be found on Ebay and elsewhere, sometimes for as little as £10, and this project will give these noble machines a second lease of life. I use mine as a keyboard for a much later British computing success, the Raspberry Pi.

Step 1: Assemble the Ingredients!

You will need:

  • An Acorn Electron computer unit. If you find one that doesn't boot, or is missing its power supply, so much the better!
  • A Freescale FRDM-KL25Z ARM development board. These excellent little boards are available for under £10 (e.g. from Farnell) and need no additional tools for programming.
  • Two 2 x 8-way 0.1" pitch headers, and matching 2 x 8-way IDC sockets.
  • Some 0.05" (1.27mm) pitch IDC ribbon cable. You'll need a 20cm lengths of 26-way cable (split into one 12-way and one 14-way). For instance, you could recycle an old IDE hard disk lead.
  • A USB "A" to "Mini B" cable
  • M3 nuts and bolts

The tools needed are:

  • A soldering iron and solder
  • A solder sucker or desoldering braid
  • A scalpel or sharp knife
  • A Philips screwdriver, pliers, wire stripper etc.
  • A bench vice
  • A drill

You will also need (brief) access to a PC running Windows.

Step 2: Dismantle the Electron

Open the Electron case by removing the four Philips screws on the underside. Gently separate the top and bottom halves of the case: the keyboard is attached to the top half, and the power supply and motherboard PCBs are on the bottom.

The keyboard connects to the motherboard via a flat flexible cable (see photo). Unplug this (it just pulls off) from the motherboard. The motherboard and power supply boards can now be unscrewed from the case and removed; they are no longer needed.

Next, unscrew the keyboard unit from the upper case by removing 5 Philips screws.

Cleaning

If the case or keyboard is dirty, now is a good time to clean it up. I found that an old toothbrush and sodium bicarbonate worked very well: wet the toothbrush, then pick up a small amount of bicarbonate powder with it. If you drop anything between the keycaps, make sure it is removed before proceeding.

Step 3: Detach the Flexi Cable

The first version of this project use the existing flexible cable connected to a pin header, but it was awkward to construct, and the cable itself was unreliable where it entered the connector. The best solution turned out to be removing the cable altogether and replacing it with ribbon cable.

To remove the cable:

  • cut through the cable with scissors, just above where it joins the keyboard (photo)
  • using a scalpel or sharp knife, cut the plastic between each connection
  • turn the keyboard over and scrape away the foam padding covering the connector pins
  • each connection can then be desoldered individually
  • clean each PCB pad up with a solder sucker or desoldering braid, so the hole is accessible

Step 4: Solder in the Headers

The two 16-pin headers can be soldered into positions J1 and J9 on the KL25Z board, as shown in the photograph. There is a small capacitor (marked C24) which will prevent the J9 header from sitting on the board properly - I found the easiest answer was to file away a small notch in the header to allow clearance.

Step 5: Prepare the Ribbon Cables

The keyboard is connected to the KL25Z via two ribbon cables. The "J1" socket (the lower one in the photo) needs a 14-way ribbon cable, and the "J9" socket a 12 way cable. Both of these cables should be placed in the left-most 14 or 12 spaces in the 16-way socket (as shown in the photos). IDC sockets can most easily be assembled by gently squeezing them onto the cables in a bench vice.

Note:if the sockets have a 'polarising' bump, so they only fit in the 16-way headers one way round, make sure you get them on the right way round! Refer to the photos for details.

Once the sockets are on, separate the individual wires at the other ends, strip them and tin them so they will go through the holes on the keyboard PCB. Wiring these up is mostly straightforward...

We'll call the left-most wire in each ribbon cable "wire 1", so we have "J1 wire 1" to "J1 wire 14", and "J9 wire 1" to "J9 wire 12".

We'll number the holes in the keyboard PCB from 1 to 22, with 1 being nearest the edge (at the left in the above photo).

The ribbon cable wires then go into the keyboard PCB holes as follows:

1. J9 wire 1 (PTE5)

2. J9 wire 3 (PTE4)

3. J9 wire 4 (GND)

4. J9 wire 10 (P3V3)

5. J9 wire 5 (PTE3)

6. J9 wire 7 (PTE2)

7. J9 wire 9 (PTB11)

8. J9 wire 11 (PTB10)

9. J1 wire 1 (PTA1)

10. J1 wire 2 (PTC7)

11. J1 wire 3 (PTA2)

12. J1 wire 4 (PTC0)

13. J1 wire 5 (PTD4)

14. J1 wire 6 (PTC3)

15. J1 wire 7 (PTA12)

16. J1 wire 8 (PTC4)

17. J1 wire 9 (PTA4)

18. J1 wire 10 (PTC5)

19. J1 wire 11 (PTA5)

20. J1 wire 12 (PTC6)

21. J1 wire 13 (PTC8)

22. J1 wire 14 (PTC10)

Note that four of the signals on the J9 cable are not used. The signal names (PTE5 .. PTC10) are shown on the Quick Reference card which accompanies the KL25Z board - you can use this for fault-finding if the keyboard doesn't quite work as planned.

If you've got this far: well done, the hardest part is now over! Time to put the kettle on and fire up that PC.

Step 6: Load the KL25Z Firmware

The firmware required to run the keyboard was built using the tools at mbed.org. To set up the firmware on the board requires two stages:

  1. Changing the bootloader on the board, to allow mbed programs to be loaded.
  2. Uploading the keyboard firmware to the board.

You will need a PC running Windows to do this.

Changing the bootloader

The official instructions for upgrading the bootloader are at http://mbed.org/handbook/Firmware-FRDM-KL25Z , but I'll recap them here.

  1. Find the pushbutton marked 'reset' between the two USB sockets on the board.
  2. Whilst holding down this button, plug the USB socket labelled 'OpenSDA' (the left-hand one in the photo) into the PC.
  3. Windows should identify the board as a USB mass storage device. It may need to load some drivers, then it will display an 'AutoPlay' dialog for a disk labelled 'BOOTLOADER'. Select 'Open folder to view files'.
  4. Download the file mbed_if_v2.1_frdm_kl25z.s19 attached to this page. Find the file in Windows Explorer (usually in the Downloads folder) and drag it to the BOOTLOADER file view window.
  5. Wait a few seconds for the file to appear in the file viewer (see picture).
  6. Unplug the KL25Z board from the PC.

Loading the keyboard firmware

  1. Plug the KL25Z into the PC using the 'OpenSDA' socket (don't hold down the pushbutton this time).
  2. The PC should detect a disk labelled 'MBED'. Again, select 'Open folder to view files'.
  3. Download the file electron_kbd_KL25Z.bin attached to this page.
  4. Find the file (usually in the Downloads folder) and drag it to the MBED window.
  5. When the file has finished copying, the bootloader will eject the disk. (Windows may show a dialog warning you it hasn't been ejected properly: don't worry about this). A short time later it will reconnect.
  6. You can now unplug the KL25Z board.


Modifying the firmware

If you would like to create your own custom keyboard firmware, or are just curious, the source code is available on the website at http://mbed.org/users/IH/code/electron_kbd/

The source file main.cpp contains detailed comments about the keyboard wiring and how the Electron keys are mapped to USB ones.

Step 7: Put It All Together!

Once the firmware is loaded, you can assemble the KL25Z board into the Electron case, as shown.

Remove the rubber feet which go through the mounting holes, place the board in a suitable location in the case, and mark through the holes (I used a fine-tipped permanent marker) onto the case. Drill out these holes (a 4mm wood bit will do a good job) then mount the KL25Z using M3 nuts and screws.

I used nylon washers between each nut and the PCB to avoid damage. Note that one of the four holes is very close to J1, and you may not be able to use this mounting hole.

The keyboard's USB cable is a USB A to mini-B cable plugged into the other socket on the board (labelled 'KL25Z') to the one you used for programming. It can be threaded out through the slot in the back of the lower case moulding. I glued a small rubber grommet around the cable at this point to provide some strain relief.

When this is done, you can plug the two ribbon cables in as shown, and you're ready for testing!

Step 8: Troubleshooting

When assembly is complete, you can test the keyboard by plugging it into a Windows, Linux or Mac computer.

If there are any problems, here are some tips:

Check the board is powered

  • Check that the LED (D3) on the KL25Z board is on. If no light comes on at all, check that the USB cable is plugged in all the way on the KL25Z and at the PC.
  • If this seems OK, unplug the ribbon cables from the headers. If the LED now comes on, it's possible the keyboard wiring is faulty and is shorting out the power.

Check the firmware is loaded

  • When the firmware is running, the LED should appear to glow a red-pink colour. If it doesn't, check the firmware was loaded properly in step 6.
  • The keyboard should be recognized as a standard USB HID device. To check this on Windows, search for and run 'Device Manager', and look for "Human Interface Devices" (next to 'Floppy drive controllers'). You should see 'HID-compliant consumer control device' and 'USB input device'.

Check the keyboard wiring

  • If the keyboard is recognised by the PC, but some or all of the keys appear to be not working, check the keyboard wiring.
  • If the 'P3V3' wire is not connected, nothing will work properly.
  • If some keys operate correctly, but other don't, individual wires may be broken. If keys operate but produce the wrong characters, wires may have become swapped.
  • If all the keys in a horizontal row don't work, the fault is probably on the J9 ribbon cable.
  • If all the keys in an approximately vertical 'column' don't work, the fault is probably on the J1 ribbon cable.

Step 9: Keyboard Mapping

You may have noticed there are far fewer keys on the Electron keyboard than on a modern machine, and that a number of the symbol keys are in odd places. Where there's a discrepancy I've tried to keep keys in the places your fingers expect them to be. This gives the following keyboard mapping:

  1. Shift + 6 produces ^, not & as the key cap is labelled. Similarly
    • Shift + 7 produces &
    • Shift + 8 produces *
    • Shift + 9 produces (
    • Shift + 0 produces )
    • Shift + - produces _
  2. Shift + ; produces : (as on a normal keyboard), not +
  3. The ': *' key behaves like a ' " key (or ' @ key, depending on UK or US keyboard mapping)
  4. CAPS LK/FUNC is now a Tab key. (There is no caps lock key).
  5. BREAK is a backspace key.
  6. The DELETE key is now an ALT key. ALT + letters work normally, but in addition we have:
    • ALT + left-arrow gives a ` (backtick), ALT + SHIFT + up-arrow gives ~ (tilde)
    • ALT + right-arrow gives \ (backslash), ALT + SHIFT + right-arrow gives | (pipe)
  7. The COPY key is now a [ key ({ when shifted), ALT + COPY gives the ] key.
<p>Great instructions and mini-project. I have been meaning to get around to making one for a long time and have now finally done it and really it didn't take that long at all. I had a bit of a mis-wiring (back to front) problem with my first attempt and then a minor snag with a ropey old Acorn key switch but those are all remedied now. Here's the required 'I Made It' snap with another using it to run Brandy (BBC) Basic on a Raspberry Pi 3 (not installed in the case). I will probably install a Pi Zero in the case in the fullness of time, then it can boot up into Elkulator are be, erm, an Electron again.</p>
<p>Thanks for posting the pictures - hope it brings a smile of nostalgia.</p><p>I never put a Pi actually inside my case because the connectors on the model B I had were quite awkwardly arranged. A Pi Zero + separate USB hub would work really well I imagine.</p><p>Thanks - Ian</p>
<p>Hi, after reading your article and having an Acorn Electron back in the 80's, I bought an Acorn Electron from Ebay with no leads or power supply.</p><p>I used an Arduino Pro Trinket as it has drivers to mimic a USB keyboard.</p><p>I'm planing to fit a Rapberry PI 2 in the Acorn Electron case.</p><p>The Acorn Electron PSU has a 19V AC input but works well on 12V DC supping + and - 5V. </p>
<p>Did you manage to complete this project? Any chance you can post how you hooked up the trinket to the Electron keyboard? </p>
<p>Hi Martin, I did manage to complete this project, I did modify the PCB and mount it on the back of the keyboard, as I needed more space in the case.</p><p>I now have a piece of vero board mounted on the back of the keyboard.</p><p>I did run out of digital I/O on the Pro Trinket as 2 of the digital I/O are used by the USB port. There are 2 analogue ports marked A6 and A7 next to the processor, I used them as sort of digital inputs, see the screen shot attached.</p><p>I don't have a circuit diagram but as it's built on vero board I could produce one and if you want a copy of my Arduino program, let me know.</p>
<p>Hi Alan, thanks for the reply. That looks awesome! I'm back in the UK next month and I want to try and find my old Electrons in my parents house and may do something similar. I know I had one that died and one that was still good so I'm hoping I can find the dead one to cannibalise. </p><p>What is that you have mounted next to the RPi? A USB hub of some sort?</p>
<p>Thanks for sharing this - I'm glad you found it useful.</p><p>If you ever write up the Trinket circuit &amp; sketch, let me know and I'll link to it.</p><p>Cheers</p><p>Ian</p>
<p>Ian, your Acorn Electron USB Keyboard was an inspiration.</p><p>If I was to do a write up on how to use a Pro Trinket and an Acorn Keyboard, it would have to be my BBC keyboard interface, which was a lot easier as Acorn fitted some logic IC's to the keyboard. There is enough room inside a BBC case to fit 4 Raspberry Pi 2's and a 5 port Ethernet hub. </p>
<p>Hi there, thank you for the article. It give me hope on recycling my old mechanical keyboard. I am good a software but not good at hardware. Can you point me the direction how I can make a dead ordinary PC keyboard into a USB keyboard? Looks like changing your firmware is the shortest path. But I don't know anything about keyboard hardware. Please help.</p>
My first attempt would be to try to fix the keyboard, and use an AT-to-USB keyboard adapter. Have you tried anything e.g. checking the cable with a meter to make sure every wire at the PCB end is connected to one at the connector end?<br><br>If the cable's OK but the keyboard electronics are dead, you will have to figure out which signals connect to the keyboard matrix. Almost all keyboards have the keys arranged (electrically) in a grid of rows and columns - each key connects a particular row to a particular column. <br><br>In the Electron keyboard, the controller scans the keyboard by putting a logic '0' (low) on a columns in turn, and then looks at the levels on each of the 'row' lines. If the key at that row and column is pressed, that row's input line will be low. If the key is not pressed, there's a 'pull up' resistor on the row line, which will make it 'high' (logic 1). <br>The column lines all have diodes on them, so that if the user presses two keys in the same row but different columns, it won't short-circuit the two column outputs together.<br><br>So, on your keyboard, you'll need to identify<br>a) a set of signals which connect to the keyboard in a grid; usually you'll be able to see which are 'rows' and which are 'columns'.<br>b) which of the signals have pull-up resistors on (if any). These might turn out to be either 'rows' or 'columns', but whichever they are they will need to be inputs to the controller.<br>c) which signals have diodes on (if any). These should be connected to the outputs of the controller.<br><br>You'll then have to work out which key is at the junction of each row and column, and set up the scan code table as appropriate.<br>
<p>I love hacks like this. Having grown up with an Apple ][+, I always wanted the clicky keyboard my pal down the street with the IBM PCjr had. Tactile keyboards are so much nicer....nice build!</p>
<p>good job keep it up</p>
<p>I love this! Its got a really cool look to it.</p>

About This Instructable

15,658views

83favorites

License:

More by TheSpodShed:Pringle Can MIDI Drums Mega Power Bank Super cheap Ethernet for the Raspberry Pi 
Add instructable to: