Think-a-Tron 2020

by megardi in Circuits > Electronics

16520 Views, 59 Favorites, 0 Comments

Think-a-Tron 2020

IMG_0936.jpg
Think a Tron.png
Ad.jpg
IMG_0701.jpg

In 1960, Hasbro unleashed its first personal "computer" to the masses. Called Think-a-Tron, it was launched decades ahead of IMSAI, Apple, or Commodore machines.

Ok, my opening paragraph for this Instructable is just a "bit" overstated, but so was the marketing for Think-a-Tron, "the machine that thinks like a man". While some toys of the same era, like the Digi-Comp I for instance, endeavored to teach people about computers, Think-a-Tron took advantage of the growing interest in computers to sell a cleverly packaged trivia game. In fact, if there is any "claim to fame" attached to Think-a-Tron, it's that it introduced the trivia game concept 21 or more years before Trivial Pursuit.

My goal for this project was to honor Think-a-Tron, not to reproduce it. I wanted to build something that is clearly a Think-a-Tron derivative, but utilizes modern fabrication techniques and components. At the same time I would try to maintain the 60s mainframe vibe of the original. As always I wanted to have some fun along the way.

Supplies

In addition to the 3D printed parts you will need:

  • 1 - ADS1115 16 Bit 4 Channel I2C IIC Analog-to-Digital ADC Converter
  • 1 - ISD1820 Sound Voice Recording Playback Module with Mic Sound Audio Microphone
  • 2 - Robojax Whmxe 595-2 74HC595 Driving 2 Digit 0.5in Seven Segment Display
  • 1 - BTF-LIGHTING 100pcs WS2812B Addressable 5050 Smart RGB LED Pixel Light
  • 1 - ESP32-CAM 4M PSRAM Dual-core 32-bit CPU with OV2640 2MP Camera Module
  • 1 - FT232RL FTDI USB to TTL Serial Converter (optional if you don't already have one)
  • 1 - LM2596 Step Down Buck Converter Adjustable DC to DC 3.2-40V to 1.25-35V Voltage Regulator Module
  • 10 - Gikfun Micro Switch Long Hinge Lever (Pack of 20pcs) for Arduino EK1713
  • 8 - M2 x 6 mm bolts
  • 40 - 200 mm Female to Female jumper wires

Plus some pin headers (about 40 .1 spaced pins for each:

  • 2.54mm Right Angle Male Pin Headers
  • 2.54mm Single Row Female Headers
  • 2.54mm Single Row Male Headers

Some 30 AWG insulated "wire wrapping" wire. Having a few different colors will be helpful.

Remembering Think-a-Tron

Think a Tron Color.png

This step is provided to give you some background information on the original Think-a-Tron. It's not necessary for the rest of the build, but I encourage you to at least watch the video.

Before you can begin to understand Think-a-Tron, you need to see one actually running. This video does a great job of explaining how to operate a classic Think-a-Tron.

Now, having seen a Think-a-Tron in action, would you be surprised to learn that there are no active components? In fact, the only passive component is a single incandescent bulb powered by two D batteries! Think-a-Tron is actually a cleverly devised mechanical device. Let's see how it was done.

This is the back of the machine. The unit I purchased did not have a rear covering panel, but here is a photo of one.

With the back cover removed you can see the first big reveal.

What I had assumed would be some sort of early "electronic" 5x7 matrix display, was actually just a spinning disk. In hindsight this makes sense. In 1960, LEDs are still a couple of years away. Add many more years on top of that until they would be cheap enough to be used in a product like this. Using 35 incandescent bulbs would have been a nightmare. But a spinning disk, a single incandescent bulb, and some clever diffusers, that was ingenious. IMHO, the blinking light effect achieved as Think-a-Tron is "calculating" the answer, which we had come to associate with large mainframe computers in the 60's, was outstanding.

At the top, the blue box with the white "plug" holds the bulb.

Removing the bulb box we can see the first white diffuser panel on its bottom side.

This also gives us a better look at the wheel. You can make out the 5 "answers" A, B, C, T, and F, as well as some random holes in between used to help "sell" the blinking light effect. Also notice the spring used to tension the wheel when "cranked" from the front.

Removing the display wheel exposes the secondary diffuser panel into which a 5x7 matrix of clear lenses is embedded (which of course line up with the holes in the display wheel).

The white plate in the middle holds a central shaft in place. The crank handle in front of Think-a-Tron is connected to this shaft.

At the bottom, the blue box is a battery holder which is glued to the frame.

Behind the battery holder you can see the gears that make up the simple mechanical score counters. A downward press of the lever beside each of the two circular counters, turns the counting wheel clockwise, increasing the score by one .

This is what it the machine looks like with the shaft and plate removed. You can start to see a set of levers exposed.

And here is the shaft.

The crank handle is connected to the left side, and the display wheel to the right. Note the "bumps" sticking up from the central part of the shaft. We can see three of five answer tabs that are spaced equally both around the circumference, and the along the length, of the middle part of the shaft, to the left of a protruding ring. To the right of the ring you can see a single tab sticking up.

The "ridge" sticking up on the rightmost part of the shaft is "keyed" to a corresponding grove in the wheel's central hole.

Now here is where the magic happens. As was mentioned in the video, the question cards have notches corresponding to the correct answers. The circular holes and cut corner are just for show.

When a card is pushed into Think-a-Tron it will interact with the levers positioned beside the shaft.

You can see in the photo above, that four of the five "answer" levers are pushed away by the card, allowing only the center lever (corresponding to the answer A) to protrude. As the display wheel turns, the middle bump on the shaft for answer A will hit the protruding lever, stopping the wheel. The sixth "leftmost" lever locks the spring tensioned display wheel in place when it is cranked, and releases the wheel to spin freely to the correct answer when the card is pushed in. You can see the card tray's blue tab pushing the lever into the release position in the photo above.

Finally check out the lever counterweights in this photo (the instruction manual calls them Fingers).

Not only do these provide an interesting visual element to the Think-a-Tron look, they ensure that the levers will always be pushed towards the central shaft.

For completeness here is a picture of the battery holder, as seen from below.

So that's how Think-a-Tron worked. A simple but clever mechanical contraption that "simulated" a computer of the day. In my mind it was a pretty damn cool hack.

Print the Parts

I printed the parts with the following settings (unless other wise specified):

Print Resolution: .2 mm

Infill: 20%

Filament: AMZ3D PLA

Colors: I used grey, black, white, and light blue to be consistent with the original. Your call.

Notes: No supports. Print the parts in their default orientation. To make a Think-a-Tron 2020 you will need to print the following parts:

  • 1 - Camera Core
  • 1 - Camera Lens Adjusting Tool (optional)
  • 2 - Console Wedge (optional) If you don't like the wrap around look.
  • 1 - Display Stand
  • 1 - LED Array Diffuser - Print at .1 mm. Print black and pause at 1.1 mm and switch to clear filament.
  • 1 - LED Array Box
  • 2 - Player Console
  • 2 - Player Panel
  • 2 - Player PCB Holder
  • 11 - Push Button Frame
  • 1 - Push Button Question - Print white and pause at 15.2 mm and switch to black filament.
  • 10 - Push Button Shaft
  • 1 - Push Button Tops - Print at .1 mm. Print white and pause at 2.1 mm and switch to clear filament.
  • 1 - Question Button Console
  • 1 - Question Button Panel
  • 1 - Speaker Grill
  • 1 - Test Camera (optional)

Assemble the 5x7 Display Unit.

IMG_0702.jpg

Pictured above is a close-up of that clever 5x7display as seen from the front. I was so impressed with the spinning wheel implementation of the original, that for a while I considered doing something similar, but motor driven perhaps. At the end of the day though I decided to replace what I initially thought was an LED array with an actual 5x7 LED array.

The panel on the original is 50 mm (2") wide and 70 mm (2 3/4") high and I wanted mine to be the same size. I searched for a suitably sized LED array but came up empty. I was about to start creating a custom PCB when I found these:

NeoPixel compatible, WS2812B addressable, smart RGB LED pixel lights. They are individual units but ship attached in a 10x10 grid as can be seen in the picture above. The good news for me is that each pixel light is about 10 mm in diameter which is perfect for my purposes.

With a little careful bending you can easily snap off a 5x7 block of these. As shipped they are not connected so you will have to wire the individual units in the 5x7 array together. Use the photos below as a guide but the basic idea is that you are "chaining" the 35 pixels into a single strand with the "outs" of each cell attached to the "ins" of the next.

I used some 30 awg "wire wrapping" wire that I had lying around from the old days ;-) It was a lot of pads to wire but not too hard. The pixel lights shipped with a three wire connector that I attached.

The next order of business is to make a diffuser for the lights.

This print is all one piece. Print the black backing panel, pause the print, then finished with some "transparent" PLA filament. Not quite as clear as the original, but it gets the job done.

Next assemble the case.

  1. Put the diffuser panel in first with the transparent bumps facing out.
  2. Next insert the LED matrix with the LEDs facing forward through the diffuser and the wire connector slipping out the slot in the back.
  3. Attach the back panel with 4 M2 x 6 mm bolts. The holes are self threading.

And when it is all put together here is what it looks like.

Assemble the Player Panel Buttons

IMG_0843.jpg

For the original Think-a-Tron, I'm assuming that the game play went something like this:

  1. Someone reads the question from a card.
  2. Both players verbally declare what they think is the correct answer (A, B, C, T, or F).
  3. The card is inserted into Think-a-Tron, which is "activated" and reveals the correct answer.
  4. Players with the correct declared answer manually update their score counters.
  5. Repeat.

Now I'm assuming this because I have not been able to find a copy of the Instruction sheet that shipped in the box. If anyone out there has this sheet I would be eternally grateful for a copy. At any rate Think-a-Tron 2020 will work a little differently:

  1. Someone reads the question from a card.
  2. Both players lock their answers into Think-a-Tron 2020.
  3. The card is inserted into Think-a-Tron 2020, which is "activated" and reveals the correct answer.
  4. Think-a-Tron 2020 automatically increments the score for those players with the correct answer.
  5. Repeat.

The key to being able to "lock in" the player's answers is a push button like the one pictured above. Not just any push button, but an illuminated push button, and not just any illumination, but WS2812B addressable, smart RGB LED pixel light illumination.

There will be five of these per player, one for each answer choice A, B, C, T, or F. When the player wants to "lock in" their answer, they just have to press the appropriate button, and it will light up. The five will act as radio buttons, so only the last one pressed will ever be the illuminated choice.

Here is how to build one.

I started with a design that I used in my TMD-1 project for the panel buttons, and incorporated the same smart pixel units that I use for the 5x7 LED array. Here are all the parts you need to make one.

So we are talking about a simple push button switch here that I built around a small micro switch that I had lying around.

Assembly is pretty straight forward. Start by sliding the micro switch into the base piece making sure that the lever actuator does not extend past the edge of the base (there is one right and one wrong way to do this).

Now attach the base piece to the bottom of the console mounting piece. Mine friction fit pretty well, but you can used a small amount of glue to hold it firmly in place if necessary.

Note the orientation of the hole in the bottom of the base and the slot in the side of the console mounting piece. This is important.

Next slide the button shaft into the console mounting piece. Make sure that the slot on the button is aligned with the smaller slot at the top of the console mounting piece. Also make sure that the hole running down the shaft is aligned with the hole in the base.

Prepare the single NeoPixel unit by attaching short wires to the +5V, GND, Data In, and Data Out pads. I used 30 AWG wire for this.

Carefully bend the wires so that they are both perpendicular to the PCB and off to one side. Then slide the wires all the way down the shaft and out through the base of the button.

Push the wires and PCB all the way back until the PCB is inserted into the circular recess in the button shaft.

Slide the locking tab into the slot at the top to hold the shaft in place. This tab will also be used when it is time to panel mount the button.

I attached the LED's wires to a header for ease of use with this small gage wire.

The header has the following connections from top to bottom in the picture above:

  • +5V
  • Led In
  • Led Out
  • GND
  • Micro Switch Common
  • Micro Switch NO

The order is important for the next step.

At this point since everything is still accessible, I would test the push button. When it has checked out you can glue the letter piece to the top of the shaft.

Repeat for the other nine buttons.

Assemble the Player Panels

IMG_0857.jpg

In addition to the five push buttons from the previous step you'll notice something new in the picture above. A two digit seven-segment display that will be used to keep track of the player's score.

I used a perf board with headers to help sort out the wiring. This Player Module also has four 2K resistors used to determine which button is pressed. (To see how this works check out this excellent post to The DIY Life.) Point-to-point wiring was tight but doable. If I could get PCBs cheaply (it's the shipping to Canada that kills me), I would have gone that route.

I created a small slotted clamp to hold the Player Module perf board and attached it to the back of a Player Panel that I printed to mount the switches and display.

The clamp should be at the top of the Player Panel on the side closest to the Central Core. The above photo is for the left side Player Panel.

I added headers to the back of the seven-segment display and mounted the display in the center rectangle with the raised edges. The front of the display should end up being flush with the front face of the panel. The switches are pushed in from the front of the panel and held in place with the tabs you can see in the second picture below.

I slid the perf board into the holder and began plugging in the switches.

Notice that the headers are plugged in with the +5V lead to the inside of the panel and are arranged in "A", "B", "C", "T", "F" order from left to right as in the picture above. Also of note here, the yellow and orange wire you see to the left connect the +5V (orange) and GND (yellow) pins to the power and ground pins of the seven segment display.

With everything attached mount the Player Panel onto the printed Player Console seen below.

Now repeat for the second Player Panel.

Assemble the Core Console

main.jpg

The heart of Think-a-Tron 2020 consists of three main parts: the camera QR code reader section, the display, and the question (?) console with speaker.

The ESP32-CAM is mounted in a rectangular box forming the main part of the Core Console.

You can see there is a mounting slot for the ESP32-CAM and a guide to hold the question card (with QR code) at the correct distance for the camera to be able to read it. The top for this section has a slot that lines up with the guide to accept the trivia card.

I had some buck converters lying around so I used one to power the project.

The power jack supplies the input voltage to the converter, with the output of 5V and GND soldered to a small two pin female header.

I decided that I want to add a sound effect to the project so I purchased a cheap solid state ISD1820 based recording and playback module.

I attached some jumper wires to the VCC, GND, and P-L connectors. Whatever you record on the device (which can hold about 10 seconds of sound) will play back so long as the P-L pin is held high).

There is a slot for the sound module on the opposite side of the card holder.

Run the jumpers along the left had side and out through the hole at the back as can be seen above. I secured the module with a piece of two sided tape.

I printed a small console to hold a single button and the speaker for the sound module.

I attached the printed speaker grill to the console front with a few dabs of glue. There are slots to mount the speaker, which I secured in place with some electrical tape. I attached leads to the push button common and NO pins of the non-illuminated ? button.

Attach the speaker to the sound module and run the push button cables along the side and out the back the same as was done with the sound module. Attach the button panel to the console. Glue the console to the main part of the core section.

I printed a stand to hold the 5x7 NeoPixel display.

Insert the display with case into the stand and glue the assembly to the top of main core section.

That's it Core Console done.

Attach the Player Consoles

IMG_0932.jpg
IMG_0881 (1).jpg

You have two options here. I liked the wrap around look of the leftmost picture above. The other option is to forgo printing the Console Wedge pieces and attach the Player Consoles straight across which is more in line with the original Think-a-Tron. Your call.

Make Some Trivia Cards

6199251608686521342.jpg

Trivia cards for the original Think-a-Tron were pretty small at just 1 1/4 x 2 1/2 inches.

I had to decide what kind of cards to use for Think-a-Tron 2020. Some criteria:

  • The answer had to be part of the question card and should not be too easy to figure out, like the "notch" was.
  • I needed to be able to somehow "read" the answer from the card.
  • The trivia cards should be easy for anyone to create.

After considering this for a while, I settled on the following:

  • Think-a-Tron 2020 trivia cards will use a standard business card format of 3 1/2 x 2 inches. I chose this size because blank card stock and word processing templates are readily available. The larger size will also allow for more easily readable questions (old eyes).
  • Questions will appear on the front of the card, and answers on the back, so only a single question per card.
  • Answers will be encoded as QR codes. I considered bar codes but I think that QR codes are cooler looking.

So for my first batch of trivia cards I purchased some blank business card stock (Avery 5371) and using MS Word with the Avery template created some test cards. The QR code images used were created online at QR Code Generator.

Remember, since the QR codes will be printed on the back of the question cards, that the QR code for the left question must be on the right side of the answer sheet and vice-versa. Seen here are the front of the printed sheet on the left and back on the right.

That worked great but was a little tedious so I created a Python based application to automate the process. I'm relatively new to Python, but I'm beginning to appreciate how quickly you can get things done with it. What I thought might take a few days turned out to be more like a few hours.

So the application works with one sheet of Avery 5371 business cards at a time. You simply key in ten questions, choices, and answers then press the Save button. This will create:

  • A text file with your data so that you can Load it back in to make changes.
['Humans and chimpanzees share roughly how much DNA?', 'Roughly how long does it take for the sun’s light to reach Earth ?', 'At what temperature are Celsius and Fahrenheit equal?', 'What modern-day country was Marie Curie born in?', 'How many hearts do octopuses have?', 'Apollo 15 was the first moon mission to carry a lunar rover?', 'On the periodic table, what symbol stands for silver?', 'Mercury is the only planet in the solar system without a moon.', 'What was the name of the first man-made satellite launched by the Soviet Union in 1957?', 'What is the biggest planet in our solar system?'] 
['10%', '8 minutes', '-40', 'Hungary', 'One', '', 'Si', '', 'Sputnik 1', 'Uranus'] 
['52%', '8 hours', '0', 'Poland', 'Two', '', 'Ag', '', 'Echo 1', 'Jupiter'] 
['98%', '8 days', '32', 'Czechoslovakia', 'Three', '', 'Na', '', 'Explorer 1', 'Neptune'] 
['', '', '', '', '', '', '', '', '', ''] 
['', '', '', '', '', '', '', '', '', ''] 
[3, 1, 1, 2, 3, 4, 2, 5, 1, 2]
  • A PDF of the questions and choices nicely formatted one per card.
  • A PDF of the ten QR codes laid out to align with the correct questions when two sided printing.

The Python script can be found on github along with the QR code images that it uses. See: Think-a-Tron 2020.

Preparing the ESP32-CAM

ESP32-CAM-camera.jpg

I did a fair amount of research before I decided to use QR codes to encode my answers. I discovered that there was a lot of activity around using the ESP32-CAM module to read QR codes.

The ESP32-CAM as can be seen above is a very small camera module that combines an ESP32-S chip with an OV2640 camera that sells for about $10.

Since I needed an MCU for this project anyway this seemed like a good fit. Once the ESP32-CAM is programmed, and assuming that the built-in microSD slot is not used, there are 10 I/O pins available for general use. Notice that there is no USB port. Programing the ESP32-CAM requires an FTDI programmer.

I won't go into details here, but you can click this link for a great tutorial on setting up the ESP32-CAM. I followed these instructions and got the Video Streaming Server working easily. Pretty cool stuff.

If you google "ESP32-CAM QR code reader" you will get a lot of results. Having looked at a few of the videos and read a number of the tutorials returned by that search, I realized that the big difference between what has been done so far, and what I am trying to do, is that the QR codes being scanned in these posts were all fairly large. I am trying read a 1 1/2 inch square QR code from the back of a business card.

So I setup a little test rig to see if it could be done (spoiler alert: it can).

The trivia card is inserted into a holder that can slide towards and away from the stationary camera. The ESP32-CAM is connected to the FTDI programmer. I ran the Video Streaming Server example mentioned in the installation tutorial.

I used this setup to determine the optimal distance between card and camera by sliding the card into a position so that the QR code occupies most (say 90%) of the frame. This turned out to be about 65 mm!

So my suggestion for you is to print the Test Camera parts and run the Video Streaming Server as I did. Set the trivia card to be 65 mm from the lens of the camera. With the card positioned, focus the camera to get the sharpest image possible buy carefully twisting the lens. To this end I designed the Camera Lens Adjusting Tool to securely hold the camera in place while the lens was being turned.

You have to apply a fair amount of torque to adjust the lens. Go slow and take your time with this part.

Once the camera is focused, install the Think_a_Tron_2020.ino sketch onto the ESP32-COM. You will find this on a github release: Think-a-Tron 2020. The ESP32-CAM should now be ready to go.

Wire Everything Together

IMG_0940.jpg

When I started putting everything together I realized I had a lot of wires to deal with. I ran 200 mm female/female jumper wires from the following points.

Left Player Panel

  • +5V
  • NeoPixel In
  • NeoPixel Out
  • GND
  • Buttons Common
  • 7-Segment SDI In
  • 7-Segment SCLK In
  • 7-Segment LOAD In

Right Player Panel

  • +5V
  • NeoPixel In
  • NeoPixel Out
  • GND
  • Buttons Common

5x7 Display

  • +5V
  • NeoPixel In
  • GND

Core Console

  • Sound +5V
  • Sound GND
  • Sound P-L
  • ? Button NO
  • ? Button GND

In addition I ran wires from the Left Player Panel 7-Segment SDI, SCLK, and DATA Out pins directly to the Right Player Panel 7-Segment SDI, SCLK, and DATA In pins.

You can see the result in the photo above.

If I were doing this again I would definitely put more thought into the whole wiring thing. But moving forward I needed to try to to tame this mess. I decided to create a "shield" for the ESP32-CAM that would at least position the correct headers on the side that the wires were coming from.

In the process of creating the shield I realized that I was a pin short on the ESP32 for what I wanted to do. The problem is that GPIO 16 is in fact used by the Camera although this is not documented anywhere I could find. Any use of GPIO 16 causes the camera to crash when capturing an image (sigh).

Another issue I was having was that the analog readings that I was getting from the player inputs pins sucked. Even averaging multiple analog reads sometimes resulted in the wrong button being "selected".

So I ordered a 16 bit high precision 4 channel I2C IIC Analog-to-Digital Converter based on the ADS1115 PGA ADC converter chip. I would use 2 pins for the I2C interface but replace the 3 pins need for the Player button and ? button inputs with the ADC on the board.

So long story short see below for what the "shield" looks like. As before were it not for the cost I would have had a PCB made. Instead a did another point-to-point wiring job on a proto board. The pins along the sides are single 90 degree pin headers, 20 per side. The ADS1115 is mounted along the top with straight headers. In the middle of the board on the other side are two 8-pin female headers spaced to plug into the ESP32-CAM module.

On the left above is the PCB layout I would have used if I were not so cheap ;-), the middle is the shield itself, and on the right is a card I printed with the shield pinouts. Most of the connections are pretty self-explanatory except for the Pix Ins and Outs. On the left are the NeoPixel In and Out from the Player 2 Console. On the right, the top Pix In and Out are from the Player 1 Console. The bottom Pix In on the right is for the 5x7 Display NeoPixel In.

In the end it looks quite a bit neater. I'm not one that wants to hide what happening behind a curtain so I'm OK with this.

Wrapping Up

With the hardware and software finished and an easy way to create trivia cards, here is a video of Think-a-Tron 2020 in action.

Users read the trivia question from a card and "lock-in" their answers via the labeled push buttons. The card is then placed into the slot and the ? button pressed to tell Think-a-Tron to determine the correct answer. After a little thinking time (revealing the "man in the machine") the correct answer choice is displayed on the 5x7 pixel display and the players scores are automatically updated. The answer selection buttons will turn green for a correct choice and red for a wrong pick. Pressing the ? again will reset Think-a-Tron for the next question. Pressing and holding the ? button for more than 5 seconds will reset the scores to 0.

When I look back at my goals for this project I think that I have accomplished at least two of the three.

  1. I want to build something that is clearly a Think-a-Tron derivative. I'll let you be the judge, but I THINK there is a pretty good resemblance.
  2. I would like to maintain the 60's mainframe vibe of the original. I don't think I nailed this one. Think-a-Tron 2020 doesn't scream 60's computer to me. Mind you I'm not unhappy with the look. I get a more 60's alien sci-fi computer vibe. I'm OK with this

  3. Have some fun along the way. You'll have to take my word for this one, but putting Think-a-Tron 2020 together was a blast.