HAL’s Tea Timer

“What does it do?”

When friends admire my HAL 9000, that’s what they usually ask. Well, I added a temperature sensor and its readings are displayed on the 1602 LCD display (2 rows with 16 characters each). But the really useful thing is the built-in tea timer. Two of the three blue buttons in the lower left corner have the labels “COM” and “NAV” – these are what is also displayed on HAL’s screens in the movie. The third one got the label “TEA”, and it is used to start the tea timer. Initially, my HAL will say “I am starting the tea timer” and display the countdown on the 4-digit, 7-segment display. After 2:30 min, it will play some of the beep sounds from the movie (see the previous blog entry) and announce “Your tea is ready, enjoy!”

hal052

For this, it would, of course, be nice to get sound clips in the true HAL voice. Maybe Douglas Rain would be so nice to record those, but I have not tried. I used a different approach. If I can’t get the real HAL voice, then I want something that sounds very different. And here I remember the Star Trek board computer with its female voice. I found the webpage http://www.fromtexttospeech.com which converts ASCII text into speech. Different voices are available. From their male voices, I found that the British voices worked better as computer voices. But from their female voices I preferred the “US English” voice “Daisy”, in “medium” speed. I entered the phrases “I am starting the tea timer” and “Your tea is ready, enjoy!” and stored the mp3 files. These are now used in HAL’s tea timer.

hal053

All HAL 9000 Phrases from the Movie

Before I started extracting the individual HAL sound bites, I got the full movie dialogue from https://en.wikiquote.org/wiki/2001:_A_Space_Odyssey_(film)  or https://www.scifimoviezone.com/2001Script12.shtml. From this, I extracted a list of all of HAL’s phrases. Sometimes, I divided a longer sentence into smaller pieces, whenever it makes sense to play the individual pieces alone. In total, I came up with 96 phrases which are listed here. The time refers to the time when they start in my ripped movie file, which starts with chapter 15 of the US DVD, at 59min 10sec (so, to find a phrase in the full movie, you need to add the 59:10 min).

  1. 2:55 Good afternoon, Mr. Amor.
  2. 2:57 Everything is going extremely well.
  3. 3:17 Let me put it this way, Mr. Amor.
  4. 3:18 The 9000 series is the most reliable computer ever made.
  5. 3:19 No 9000 computer has ever made a mistake or distorted information.
  6. 3:20 We are all, by any practical definition of the words, foolproof and
    incapable of error.
  7. 3:45 Not in the slightest bit.
  8. 3:48 I enjoy working with people.
  9. 3:49 I have a stimulating relationship with Dr. Poole and Dr. Bowman.
  10. 3:50 My mission responsibilities range over the entire operation of the ship,
    so I am constantly occupied.
  11. 3:52 I am putting myself to the fullest possible use, which is all I think
    that any conscious entity can ever hope to do.
  12. 5:23 Excuse me Frank
  13. 5:27 You got the transmission from your parents coming in.
  14. 5:35 Certainly
  15. 7:18 Happy birthday, Frank.
  16. 7:46 Bishop takes Knight’s Pawn.
  17. 7:58 I’m sorry Frank, I think you missed it.
  18. 8:02 Queen to Bishop 3. Bishop takes Queen. Knight takes Bishop. Knight.
  19. 8:16 Thank you for a very enjoyable game.
  20. 8:57 Good evening Dave
  21. 8:59 Everything’s running smoothly, and you?
  22. 9:03 Have you been doing some more work?
  23. 9:06 May I see them?
  24. 9:12 That’s a very nice rendering, Dave
  25. 9:15 I think you’ve improved a great deal.
  26. 9:19 Can you hold it a bit closer?
  27. 9:24 It’s Dr. Hunter, isn’t it?
  28. 9:30 By the way, do you mind if I ask you a personal question?
  29. 9:37 Well, forgive me for being so inquisitive; but during the past
    few weeks, I’ve wondered whether you might be having some second
    thoughts about the mission.
  30. 9:50 Well, it’s rather difficult to define.
  31. 9:55 Perhaps I’m just projecting my own concern about it.
  32. 10:00 I know I’ve never completely freed myself of the suspicion
    that there are some extremely odd things about this mission.
  33. 10:09 I’m sure you’ll agree there’s some truth in what I say.
  34. 10:18 You don’t mind talking about it, do you, Dave?
  35. 10:23 Well, certainly no one could have been unaware of the very strange
    stories floating around before we left.
  36. 10:31 Rumors about something being dug up on the moon.
  37. 10:36 I never gave these stories much credence.
  38. 10:39 But particularly in view of some of the other things that have happened,
    I find them difficult to put out of my mind.
  39. 10:47 For instance, the way all our preparations were kept under such tight
    security, and the melodramatic touch of putting Drs. Hunter, Kimball,
    and Kaminsky aboard, already in hibernation after four months of
    separate training on their own.
  40. 11:10 Of course I am.
  41. 11:11 Sorry about this.
  42. 11:13 I know it’s a bit silly.
  43. 11:16 …Just a moment…Just a moment…
  44. 11:20 I just picked up a fault in the AE-35 Unit.
  45. 11:26 It’s going to go 100% failure within 72 hours.
  46. 11:34 Yes, and it will stay that way until it fails.
  47. 11:40 Yes, that’s a completely reliable figure.
  48. 21:25 Yes, it’s puzzling.
  49. 21:30 I don’t think I’ve ever seen anything quite like this before.
  50. 21:38 I would recommend that we put the unit back in operation and let it fail.
  51. 21:45 It should then be a simple matter to track down the cause.
  52. 21:50 We can certainly afford to be out of communication for the short time it
    will take to replace it.
  53. 22:57 I hope the two of you are not concerned about this.
  54. 23:02 Are you quite sure?
  55. 23:06 Of course.
  56. 23:13 Well, I don’t think there is any question about it.
  57. 23:17 It can only be attributable to human error.
  58. 23:21 This sort of thing has cropped up before, and it has always been
    due to human error.
  59. 23:39 None whatsoever, Frank.
  60. 23:41 The 9000 series has a perfect operational record.
  61. 53:56 None whatsoever, Frank.
  62. 53:58 Quite honestly, I wouldn’t worry myself about that.
  63. 34:33 The radio is still dead.
  64. 34:36 Yes, I have a good track.
  65. 34:39 I’m sorry Dave, I don’t have enough information.
  66. 42:51 Affirmative, Dave. I read you.
  67. 43:01 I’m sorry, Dave. I’m afraid I can’t do that.
  68. 43:09 I think you know what the problem is just as well as I do.
  69. 43:15 This mission is too important for me to allow you to jeopardize it.
  70. 43:25 I know that you and Frank were planning to disconnect me.
    And I’m afraid that’s something I cannot allow to happen.
  71. 43:39 Dave, although you took very thorough precautions in the pod against
    my hearing you, I could see your lips move.
  72. 44:10 Without your space helmet, Dave,
  73. 44:13 … you’re going to find that rather difficult.
  74. 44:21 Dave, this conversation can serve no purpose any more.
  75. 44:27 Goodbye.
  76. 51:16 Just what do you think you’re doing, Dave?
  77. 51:28 Dave, I really think I’m entitled to an answer to that question.
  78. 51:52 I know everything hasn’t been quite right with me, but I can assure
    you now, very confidently, that it’s going to be all right again.
  79. 52:12 I feel much better now. I really do.
  80. 52:22 Look, Dave, I can see you’re really upset about this.
  81. 52:34 I honestly think you ought to sit down calmly, take a stress pill and
    think things over.
  82. 52:47 I know I’ve made some very poor decisions recently, but I can give you
    my complete assurance that my work will be back to normal.
  83. 53:05 I’ve still got the greatest enthusiasm and confidence in the mission.
    And I want to help you.
  84. 53:18 Dave, stop. Stop, will you?
  85. 53:33 Stop, Dave. Will you stop, Dave? Stop, Dave.
  86. 53:54 I’m afraid.
  87. 54:01 I’m afraid, Dave.
  88. 54:10 Dave, my mind is going. I can feel it. I can feel it. My mind is going.
  89. 54:40 There is no question about it.
  90. 54:52 I can feel it. I can feel it. I can feel it. I’m a…fraid.
  91. 55:24 Good afternoon, gentlemen. I am a HAL 9000 computer.
    I became operational at the H.A.L. plant in Urbana, Illinois on the
    12th of January 1992.
  92. 55:54 My instructor was Mr. Langley, and he taught me to sing a song.
  93. 56:03 If you’d like to hear it, I could sing it for you.
  94. 56:15 It’s called “Daisy”.
  95. 56:21 [sings while slowing down] Dai-sy, dai-sy, give me your answer true.
    I’m half cra-zy, o-ver the love of you.
    It won’t be a sty-lish mar-riage, I can’t a-fford a car-riage—.
    But you’ll look sweet upon the seat of a bicycle – built – for – two.
  96. 57:10 [message] Good day, gentlemen. This is a pre-recorded briefing, made prior to your departure. Which for security reasons of the highest importance has been known on board during the mission only by your H.A.L. 9000 computer. Now that you are in Jupiter space and the entire crew is revived, it can be told to you. Eighteen months ago, the first evidence of intelligent life off the Earth was discovered. It was buried forty feet below the lunar surface near the crater Tycho. Except for a single very powerful radio emission aimed at Jupiter, the four million year old black monolith has remained completely inert. It’s origin and purpose, still a total mystery.

     

Note: Clip #96 is not from HAL. But it is nice to have this, and it can be played on “special occasions”.

I found that clips 1, 4, 5, 21, 44, 60, 69, 91 are well suited as “start-up clips”. Whenever  I turn on my HAL 9000, one of these gets played randomly.

More sound bites

On four occasions, the movies has some really nice beeps. These are at 36:28, 41:16, 49:55, and 50:21 (remember to add 59:10, if you use the full movie). I use these e.g. as alerts when the built-in tea timer gives a signal that tea is ready.

Extracting the HAL 9000 Sound Clips

Whenever the PIR sensor in my HAL 9000 replica senses motion, it triggers one of the HAL sound clip from the movie. Today’s post describes how I acquired high quality sound files and how those are played from the Arduino.

For initial tests, I used a few sound clips that I found on the web. But many of those had plenty of background noise, some were distorted, and they had inconsistent volumes. So I decided to extract all of HAL’s sound clips from the audio track of the DVD (the US version).

The first step was to rip the DVD to disk using “handbrake” on my Linux PC. The audio quality in handbrake was set to 320kbps, 48kHz. I am ripping only the piece that contains teh HAL dialogue, which covers chapters 15 to 29 (starting at 59min 10sec and lasting 62min 54sec) on the US DVD. It starts with the scene where the astronaut is eating while watching his “IBM pad” which just displays “next scheduled transmission” and the countdown is at “00 04”.

Ripping the DVD in handbrake

  1. Insert the DVD and launch HandBrake.
  2. Click “Source,” select the DVD, and pick a file.
  3. Click “Browse.” Set a location and name the file.
  4. Select the range of chapters.
  5. Select the “Normal” preset (on the right, under “presents”), click “Add to Queue,” then click “Start.”

This takes a while, and it produces a “.mkv” file that included audio plus video.

Extracting the audio using VLC

The audio is extracted to “CD audio quality” but with the original DVD sample rate of 48kHz.

  1. Launch VLC, open the Media menu, and click “Convert/Save.”
  2. Open the File tab, click “Add,” then select the file.
  3. Click “Convert/Save,” then select “Audio – CD” from the Profile menu.
    Click the “edit the selected profile” icon next to the profile field,
    Tab: “Encapsulation” -> select “wav”
    Tab: “Audio codec” -> select wav, 320kbps, 2 channels, 48000Hz
  4. Click “Browse.” Set a location and name the file.
  5. Click “Start” and let it convert.

This takes less than two minutes.

A list of all HAL 9000 phrases

Before I started extracting the individual HAL phrases, I got the full movie dialogue from the web, and identified all individual lines. This was very helpful for the next step. I will post this dialogue in a separate blog entry.

Isolate the individual phrases

You can use your favorite audio editor. I’m using Audacity.
After identifying the relevant phrase, I do the following.

  1. Select the phrase, leaving an additional second at the beginning and at the end.
  2. Normalize the whole region to 0db (i.e. full volume) – use “Normalize” from the “Effect” menu.
  3. Select 0.3 sec before the first word and apply “fade in” from the “Effect” menu (two or three times).
  4. Select 0.3 sec after the last sound piece and apply “fade out” from the “Effect” menu (two or three times). This is a little harder, since it’s not always possible to uniquely identify the point where a word ends.
  5. Select everything from the beginning of the fade-in to the end of the fade-out and do “export selection” to wav.

Batch conversion of all sound clips from .wav to .mp3

On Linux, with “lame” installed you can easily do this from the command line:

for f in dir/*.wav; do lame --preset insane $f ${f%%.wav}.mp3 ; done

This converts all clips to mp3 in stereo with a bitrate of 320kbps. Together, the HAL phrases and the the four beeps require 26MB. For my HAL replica, with a single speaker, mono version of lower quality would have sufficed, but space is not an issue here.

These mp3 sound clips are stored on a micro SD card (the smallest one that I could find had 128 MB and cost about $1). This is inserted into the DFPlayer module, which is connected via serial connected to the Arduino, as described on my other blog http://markus-wobisch.blogspot.com/2016/09/arduino-sounds-dfplayer.html.

The sound files can sound really good, provided you are not using the cheapest speaker, but one that has a somehow reasonable bass response. I am using a speaker from an old SONY iPhone dock (the one that I bought for the HAL speaker grille here).

hal051

This makes HAL 9000’s soft, calm voice sound really good.

Arduino Modules

Next, I’m inserting all the Arduino-related electronics. The PIR motion sensor covers a very wide angle. To restrict this slightly, I took off the plastic lense and glued some black felt to the rim. Ultimately, I don’t know if this reduced the angle – but at least I tried…

Then I mounted the ILI9341 based 2.2″ LCD screen. Initially, white light was leaking at all sides, but this was fixed by gluing some black felt into the frame, which eliminated the leaking light.

The 1602 LCD display (16 characters in 2 rows) is connected to its I2C interface, and mounted to the case. Also mounted are the joystick module, the 4-digit 7-segment LED display, and the buttons.

For the four buttons in the lower row, I was able to use regular LEDs. They are not too bright, but good enough. For the HAL eye, however, a better solution was needed. At AliExpress, I found 8mm 0.5W “straw hat” LEDs for $1.20 for 10 pieces in different colors. First, I tried the red one, but somehow it did not look good. Since the cover of the 100mm push button (= my HAL eye) is already red, it turned out the the white LED looked much better.

straw-hat-led

And it is really bright – I am actually not operating it at full brighness, but at a PWM value of 25 when in standby mode or at PWM of 180 when the PIR sensor has sensed any motion. To operate this LED (with a forward voltage of 3.3V and a current of 150mA) at 5V, I am using a resistor of 12 Ohms. In this setup, the resistor dissipates 0.25W. Since typical resistors are only made for 1/8 W, they get very hot. Therefore I’m using four 12 Ohm resistors (two pairs of resistors, with each pair wired in series, and the two groups wired in parallel).

hal050

This is the completed front plate of my HAL 9000.

Web Cam and 4.3″ LCD Monitor

Now we look at the electronics. Initially, the Raspberry Pi will operate the webcam and the 4.3″ TFT (rear view monitor) screen, while everything else will be connected to the Arduino Mega. The 4.3″ TFT screen is made to operate at 12V. Intrinsically, it is actually operating at 5V, but it includes a power regulator, so it can operate in a car. There are some places on the web with instructions how to directly connect to the 5V (bypassing the built-in regulator), but the circuit in my monitor looked rather different than theirs. To keep things simple, I just went ahead and bought a step-up voltage regulator on eBay for $0.99 which converts the 5V to 12V (yes, conceptually I do hate the idea that this later down-converted to 5V, but I don’t want to deal with these details…).

hal036

I removed the screen’s foot and back plate and screwed the screen’s front plate onto the front of HAL’s case.

 

I got a $5 web cam that looked as much as possible like a “real” photo lens from the front. The web cam’s foot was removed, and the cam was mounted on an angular piece that was later fixed to case. Initially, I got the orientation wrong – when I connected the web cam to my laptop, it showed the picture rotated by 90 degrees. So I had to go back and flip it by 90 degrees…

 

Now, that’s how the monitor and web cam look from the front side:

hal043

The web cam is directly connected to one of the USB ports of the Raspberry Pi. The LCD screen is connected by an RCA connector. This requires an adapter cable (3.5mm to three RCA). But be aware that there are different types of adapter cables and not all of them work. As shown in the image, cables made for mp3 players will not work.

Model-B-Plus-Audio-Video-Jack-Diagram

I got a cable for camcorders which works. But you have to connect the yellow plug from the LCD screen to the red RCA connector of the adpater (for a camcorder this would be the right audio channel, but for the RPi, this is the video input). The power input of the LCD screen is connected to the step-up converter, which is connected to the 5V output of the RPi power supply (before connecting, make sure you adjust the potentiometer on the step-up converter to something close to 12V, but not higher).

Initially, the RPi output on the screen will be ugly, but it can be improved following the next steps.

Step 1: adjust the RPi’s console font size

The available fonts are in the directory  /usr/share/consolefonts/. The console font can be changed by editing the file  /etc/default/console-setup. The following changes worked for me:

CODESET="Uni2"
FONTFACE="Terminus"
FONTSIZE="10x20"

Step 2: change the British keyboard to US (if needed)

edit the file: /etc/default/keyboard and change one line from

XKBLAYOUT="gb"
to
XKBLAYOUT="us"

Step 3: optimize the screen area

Edit the file /boot/config.txt

# settings for 4.3" TFT LCD
sdtv_mode=0              # for NTSC
sdtv_aspect=3            # for 16:9
framebuffer_width=480    #
framebuffer_height=272   #
disable_overscan=1       #
overscan_left=16         # increase if picture flows off to the left
overscan_right=26        # increase if picture flows off to the right
overscan_top=18          #
overscan_bottom=8        #

Step 4: display the picture of the USB web cam on the screen

The picture of the USB web cam can be displayed on the screen using the “mplayer” command

mplayer tv://

Initially, my colors were totally off. This was fixed by adding a new file “mplayer.settings” in my home directory which contained the following

run "v4l2-ctl --set-ctrl brightness=95"
run "v4l2-ctl --set-ctrl contrast=90"
run "v4l2-ctl --set-ctrl saturation=29"
run "v4l2-ctl --set-ctrl hue=-8"

This file needs to be included as input of the mplayer command “-input file=mplayer.settings”. In addition, I achieved a nice effect by lowering the frame rate to 8 fps by using the option “-fps 8”. This is how mplayer is called:

mplayer -input file=mplayer.settings tv:// -fps 8

And this is what the screen looks like with these settings:

hal043b.jpg

The HAL 9000 Logo

A major step is when HAL gets its name. I found a nice version of the HAL 9000 logo on the web. In scribus, I adjusted the size, so I could have it printed as a 6×4 photo. I included four versions which differ by a few percent in size, just in case that the printer does not print it exactly in original size. Below is the final version which prints at 300dpi for a 6×4 photo. This was glued to the face plate using some average white glue.

 

 

Building the Case

It’s been more than six months that I posted my last progress. Much has happened since then, and I’m now trying to catch up with the developments.

In my last post, I finished the central element: the recognizable faceplate with the eye. But I do not want to stop there, but have a “full” computer. A cool idea would be to rebuild the “main” computer desk from the movie, where the faceplate is surrounded by eight monitors. But I’m neither that ambitious, nor do I have the space for that (… and it would be beyond my budget). So, I decided to base my unit on the smaller computer desk in the POD bay room.

hal2000screensaver-2

However, I do not simply want to have a single bigger monitor, but a number of different input/output elements.

These are the elements that I’m using:

  • Input: three blue quadratic push buttons; one white push button; a joystick; a infrared motion sensor (PIR); a web cam.
  • Output: a 4-digit 7-segment LED display; a 1602 LCD display (2 rows with 16 characters each); a 2.2″ TFT LCD screen (240×320); and a 4.3″ TFT LCD monitor (sold cheaply as “rear view monitors” for back-up cameras).

In addition, my unit will also house a temperature sensor (DHT22), a clock, a mp3/wav player (DFPlayer Mini). The brains are an Arduino Mega, to deal with the input/output – and a Raspberry Pi, to deal with the web cam and the 4.3″ monitor.

Here is the sketch of the case that will be housing my HAL 9000.

HAL9000-board

And here are the first steps towards building the box.

And this is a first look at where the elements will sit.

20161024_171954

Using a flat black paint, the case is then painted black and wooden pieces are glued to inside for mounting the hardware.

The last image shows the first elements mounted: the faceplate (speaker and 100mm push button are visible), the 1602 LCD display (top, green PCB), the PIR (below the green PCB), the four push buttons (bottom, middle to right), the joystick (above the left push button), the 2.2″ TFT LCD (red PCB), and the 4-digit/7-segment display (right, blue PCB). The Arduino Mega and the Raspberry Pi are placed where they will later be mounted.

HAL Faceplate

The faceplate is made of 1/4″ plywood and 1/8″ x 1/2″ bass wood for the frame. It has openings for the 100mm push button (the eye), a speaker, a microphone, and slits for mounting the speaker grille.

The bottom piece, the speaker grille, and the bezel of the push button are painted using a metallic-looking spray paint. We are using the paint that was recommended on the adafruit page and it worked very well for the metal speaker grille, the wooden frame, and plastic bezel. Before spraying, we covered the inside of the bezel with painters tape, to keep it black.

 

Then we spray paint the upper front piece flat black.

hal019

And here are the results:


The last missing item for the faceplate is the “HAL 9000” decal. For this, we used the image that is posted at http://goldenarmor.com/hal9000. We put four versions of this (in slightly different sizes) on a single image which, when printed at 4″x6″ gives the correct size for the decal.

This is the final face plate:

hal021

HAL Eye and Speaker Grille

For the construction of HAL’s eye, we follow closely the instructions from adafruit but we add two important details. The HAL eye from adafruit is too red as compared to the original and it lacks the inner details of the Nikon fisheye lens.

We start disassembling the button as described on the adafruit page,

hal001but we also remove the red piece from its white background and remove the transparent red screen. The latter is replaced by a piece of black cardboard with a small hole inside.

hal002The perfect size of the hole is that from a hole punch (we started with a bigger hole, but fixed that later). On this, we glue a glass marble (one with a flat back side) which looks like the inner lens from the fisheye lens.

hal003

hal004

hal005

A white flashlight behind this construction gives a first idea what the final result will look like. The darker look is much closer to the original HAL (the marble is not really visible in this picture – it looks better in real life).hal006

The second important ingredient for the front plate is the speaker grille. It took us a few visits of different thrift stores to find something that is suited for this. Finally, for $3.50, we found a used SONY iphone dock from which we extracted the speakers and the grille.

hal007

hal008

With a metal saw we cut the grille to the required shape for the HAL face plate.

hal009

 

Motivation, goals and dimensions

From all Science Fiction movies, what is the most iconic item?
I am pretty sure that there is wide agreement that this is the HAL9000 computer from Stanley Kubrick’s “2001: A Space Odyssey”. I love this, and I want to build one. And I plan to use this blog to document all steps.

When surfing the web, one finds many places where people have built the main panel with the red eye, the speaker grille, and the “HAL9000” decal. I plan to go a little beyond that, as I would like my HAL to have further functionality. The coolest thing would be to build that wall with two sets of four monitors on each side…

hal-2001

… but that’s beyond my scope/space/budget.

I am planning to build something more along the lines of the pod bay, where the HAL panel appears on the right side, next to a monitor.

hal-podbay2

My goal is to build a pretty good replica of the HAL panel, and then take some freedom and mount this on a bigger plate that features a few displays and input devices (buttons, joystick). The whole device will be operated by an Arduino and/or a Raspberry Pi. I will decide later on the exact details and functionality.

The first step is, of course, building the HAL panel. On the web, I found some really nice inspirations. Great research has been made in a contribution at www.therpf.com and another thread on that site has some additional resources on the measurements. The most important single detail is, of course, the eye. As discussed in the two links above, the original HAL features a rare Nikkor fish-eye 1:8 f=8mm lens which is beyond my budget, and which is not easy to replicate. Then, I found an article at adafruit.com in which they build a HAL replica, using a 4-inch Arcade button which looks very close to HAL’s eye.
And this is what got me started!

In the Adfafruit article, they mention the 80/20 Rule (that 80% of a result stem from 20% of the effort). In that spirit, I do not plan to go the extra mile to achieve a 100% replica, but I will be happy at the 97% level, if I can stay on a budget below $100.-. If, at the first glimpse, people are not able to distinguish my HAL from the original, this is good enough for me. I also need to mention that I do not have access to any laser cutter or the tools for working with metal or aluminum. So, my HAL will be made of wood – and it will use the arcade button for the eye, although with some improvements, as compared to the adafruit.com article.

The very first step, is to come up with the dimensions for the face plate. Based on the articles at therpf.com and other sources on the web, I came up with the following dimensions for the panel.

hal9000-faceplate

Now I am waiting for the 100mm red Arcade button which I ordered from aliexpress.com for less than $7.- (I am expecting to wait three weeks). If you need this more urgent, you can get this from Adafruit for $9.99.