The Tapuino has gone through several iterations, this post is a revisit of the build instructions containing these updates.
DISCLAIMER: If you build this and it blows up your C64, sets your house on fire, kidnaps your dog or any other negative occurrence, I take no responsibility for this or accept no liability whatsoever. That said, I will do my best to help troubleshoot any builds (I do take responsibility for all positive occurrences ;)).
I would highly suggest that you read this entire post at least once before building the Tapuino!
Note: code and hardware design files can be found on my GitHub at: https://github.com/sweetlilmre/tapuino
So lets get started. Firstly a bill of materials:
- Arduino Nano V3
- 16x2 LCD Display with I2C backpack
- SD Card module with built-in level conversion
- 40 wire Dupont female-female 'ribbon'
- Piece of vero board. The one I got was 100mm wide x 200mm long. This is also known as strip board and must be the kind with strips of copper (as opposed to individual 'cells')
- 32 pin (16x2) WIDE dip socket (this is what the Nano will plug into) or 2x15 female headers
- 6 pin (3x2) dip socket (for the opto-coupler)
- A strip of male pin headers
- A strip of male right-angle pin headers
- 2 strips of female pin headers (sockets)
- 1x 430 Ohm resistor
- 4x Tactile switches (6x6)
- 1x 4N25 Opto-coupler
- Some jumper wire (I use single core wire from a piece of telephone cable)
|Tapuino V2 schematic|
So lets build the main board first. You'll want to put it together like this:
|Top view of the main board|
Note the minimum dimensions of the board: 29x17. You may wish to make the board larger to allow for mounting holes.
Before you assemble:
The Nano has 2x15 pins and the socket is 2x16 so if you use the socket make sure the extra pins are on the right (in the diagram above after the D12 and D13 pins), or use 2x15 pin female headers.
R1 = 430 Ohm
Green blocks = straight header pins.
Grey blocks = female headers
Break the header pins into appropriate size groups:
and cut the female pin headers to size (mine were 40 pin, so cut down to 8 pins):
|Bottom view of the main board|
The lighter yellow bits are where the vero board has been cut. It is essential that you check that these tracks are cut properly. Use a multimeter to test for continuity between the tracks once cut. To cut the tracks on my prototype I used a small sharp drill bit that was luckily a perfect fit.
Please take note of the cut track between the two pins of R1 (under the resistor).
I would suggest that you solder in this order:
- 32 pin wide socket (or 2x15 pin female headers)
- 6 pin dip
- 2x3 pin header group next to the 6 pin dip
- Remaining pin headers
- Jumper wires
Feel free to extend the pin headers to access additional pins on the Nano if you like, I just wanted to keep it simple for wire-up later and expose only the pins necessary.
Next up is the button board, this is the much simpler V2 button board that uses internal pullups on the Nano and so doesn't need any resistors:
|Top view of the button board|
Note the minimum dimensions of the board: 20 x 13. You may wish to make the board larger to allow for mounting holes.
Green pin headers are right angle.The pinouts of the green pin headers, left to right are as follows: GND, BTN1, BTN2, BTN3, BTN4
|Bottom view of the button board|
Take careful note of the track to cut: on the 4th track (from the left) to isolate button 3 from button 1
- ground line (top most line) there are 4 jumper wires of 4, 6, 6, 6 tracks in length.
Now lets install the components and connect it all up.
Firstly install the 4N25 opto-coupler into the 6 pin socket, noting where pin 1 is according to the vero board schematic. Here is a picture with the correct orientation:
|Installing the 4N25 opto-coupler|
Note the small dot on the chip, this indicates pin 1. The chip should be oriented such that pin 1 connects through to the 440 Ohm resistor (R1).
Next the Nano:
|Installing the Nano|
As discussed above, the Nano has 2x15 pins and the socket 2x16 pins. If you chose to use the 32 pin socket, care must be taken to place the Nano correctly. The Nano must be aligned so that the empty socket pins are on the right most pins of the socket as per the image above i.e. the Nano is mounted as close as possible to the opto-coupler.
If you trace out the circuit you will observe that the 2x3 pin headers between the opto and the Nano expose a ground and power rail (left is GND, right is PWR). You will use these rails to provide power to the LCD, SD Card and Button breakout boards.
Connect according to the legend in the main board image, here is a guide:
- Power and Ground go to the rails described above
- Nano A5 goes to SCL
- Nano A4 goes to SDA
- Power and Ground go to the rails described above
- Nano D13 goes to SCK
- Nano D12 goes to MISO
- Nano D11 goes to MOSI
- Nano D10 goes to SS
- Ground go to the rail described above
- Nano A3 goes to BTN1
- Nano A2 goes to BTN2
- Nano A1 goes to BTN3
- Nano A0 goes to BTN4
|CN2 to Tapuino connector pinout|
You will need to break out 8 pins from a pin header.
Solder the C2N connector to the pins in the following manner:
- GND to PIN 1
- PWR to PIN 2
- READ to PIN 3
- MOTOR to PIN 4
- SENSE to PIN 5
- WRITE to PIN 8
Your connector should look like the one above, the colour to pin map in my case is:
- Black (GND) to PIN 1
- Green (PWR) to PIN 2
- White (READ) to PIN 3
- Red (MOTOR) to PIN 4
- Blue (SENSE) to PIN 5
- Brown (WRITE) to PIN8
|C2N connected to the Tapuino|
PIN 1 (GND) is connected to the left-most pin of the female pin header.
Now all that is left to do is flash the sketch to the Nano, disconnect it from USB, insert an SD Card with TAP files, connect the Tapuino to the C64 and enjoy!
The U.I. is controlled as follows:
BTN 1 is SELECT
BTN 2 is ABORT (during a load) or BACK one directory if browsing
BTN 3 is PREVIOUS
BTN 4 is NEXT
If you have directories on your SD card they will be indicated by an arrow in the right-most column of the LCD where the filename is displayed. Long filenames are now supported!
Caution: Do not connect the Nano to both the C64 and PC. Also check all soldering very carefully for shorts before wiring up to your beloved machine!
The astute reader will note that the bus connector has 2 additional pins that are not connected: CTRL1 and CTRL2. These are used in the MUX board to allow switching between the C64 and a real Datasette as a target device and will be covered in a future blog.
Hope you enjoyed this, it was a helluva post to write!