In your Pack
In your pack you should have the following.
1x TZXDuino Shield
1x 1602 I2C LCD
1x Arduino Nano
1x 8 pin IC Socket
1x SD Card Socket
1x 10uf Capacitor (C1)
1x 47nf Capacitor (C2)
1x 220uf Capacitor (C3)
3x 1800 Ohm Resistors (R1-3 Brown, Grey, Red, Gold)
3x 3300 Ohm Resistors (R4-6 Orange, Orange, Red, Gold)
1x 10 Ohm Resistor (R7 Brown, Black, Black, Gold)
1x PJ-307 3.5mm Stereo Jack Socket
5x 6mm x 6mm Momentary Tactile Push Buttons
8x Plastic washers
A fix to the shield
The first production run of the TZXDuino shield had a flaw in the design where if you use the standard Spectrum mono cables your Spectrum will not be able register the playback. There is a simple fix to this issue though.
Take your TZXDuino sheild and locate where the 3.5mm audio socket goes.
Between the 2 sets of 2 horizontal drill holes is a track of copper that needs to be cut with a sharp knife. This will ensure that the output is in mono that your Spectrum will register.
With this done we you can now get on to building the board.
Building the board
As the board is unpopulated it’s probably best to solder the most difficult piece the SD card slot. This is the only SMD piece on the board to its best to take time and care when soldering.
It’s important to get the resistors in the right place. R1, R2, R3 are 1800 Ohm or 1.8kOhm resistors and in this case are marked Brown, Grey, Red, Gold, yours may be different but there are many apps and websites that will allow you to enter in the colours to get the resistance value.
R4, R5, R6 are marked Orange, Orange, Red, Gold.
The capacitors C1 and C3 have to be soldered in the correct way round. Each have a white stripe vertically down one side to indicate the negative pin. DO NOT solder this into the hole marked + on the board.
C2 will work either way round so there is nothing to worry about with that.
Make sure you insert the 8pin socket the correct way round so that when it comes time to inserting the LM386N amplifier chip you slot it in the right way.
The final fiddly bit is connecting the pins to the Arduino Nano. If you have a prototyping board I would recommend you insert the pins into that to hold them steady or if you don’t you can dry insert them into the shield and then place the Nano on top to hold them into place.
Everything else is fairly straight forward apart from the LCD. I used 4 right angle pins pointing outwards and 4 female to female 10cm Dupont wires to connect them (remember Gnd to Gnd , +5v to VCC SDA to SDA, SCL to SCL and adjust the potentiometer at the back of the LCD to adjust the contrast of the lettering).
Uploading the Firmware
Once everything is soldered on board you will need to upload the TZXDuino firmware to the Nano.
If you don’t like the way the buttons are configured in the standard firmware (S5=Play, S4=Stop, S3=Up, S2=Down, S1=Root) you can always change the firmware.
Go to the lines:
#define btnPlay 17 //Play Button
#define btnStop 16 //Stop Button
#define btnUp 15 //Menu Up button
#define btnDown 14 //Menu Down button
And alter them as you see fit.
S5 is connected to pin 17 so if you want that to be the up button you would change it to
S4 = Pin 16
S3 = Pin 15
S2 = Pin 14
I changed mine to the following.
#define btnPlay 14 //Play Button
#define btnStop 15 //Stop Button
#define btnUp 16 //Menu Up button
#define btnDown 17 //Menu Down button
If you have difficulty with the LCD screen then you may have to change the line
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3f,16,2); // set the LCD address to 0x3f for a 16 chars and 2 line display
As not all I2C boards use the same address. In my experience it is one or the other.