Building the BASIC Engine
Wonder whether you have the skills to assemble an intricate device such as the BASIC Engine? You probably do, because it’s way easier than you might think! It all depends on the right technique.
For instance, it is possible to solder a 0.5mm-pitch SMD chip using a soldering iron, provided you have decent tools, a steady hand and years of practice.
It is equally possible to solder the exact same chip using solder wire, an 80-euro iron/heat gun combo from eBay and jittery hands, without having ever done that before. It just takes two minutes longer, during which you can contemplate how much time you have saved by not practicing soldering. In Assembly, you can find a video showing the entire process.
Tip
|
If you use this technique, pretend you have soldered the chips with an iron for maximum street credibility. |
But first you have to get your hands on the required parts and tools.
Components
The BASIC Engine does not use any obsolete components that may be difficult to obtain. Nevertheless, you will have to put in at least three orders to get all required parts.
I would recommend to get the circuit board from JLCPCB or Smart Prototyping, the VS23S010D-L chip from TME, and all other parts from AliExpress. AE usually has the lowest price, and this project is all about the cheap.
You will usually have to order more components than you actually intend to use, because
-
they are only offered in larger quantities,
-
you may want to save on shipping in case you decide to build more BASIC Engines,
-
you are likely to break or lose a few parts while building the device, or
-
all of the above.
Note
|
Unless noted otherwise, all links lead to suppliers and components I have bought myself in the past and that have received the "Good Enough for BASIC Engine" seal of approval. Nevertheless you order at your own risk, and I cannot be held responsible for the quality of the services or products provided to you. I am not affiliated with any of the linked suppliers. |
Required components
Qty | Name | Package | Where to get it | Links |
---|---|---|---|---|
1 |
Circuit Board |
Any board house |
||
1 |
VS23S010D-L video controller |
TME (small quantities), VLSI (for large orders) |
||
1 |
ESP-12F or ESP-12E microcontroller module |
AliExpress, eBay, Amazon, various smaller retailers |
||
8 |
Resistor 10K |
1206 |
Generic part |
|
1 |
Resistor 1M |
1206 |
Generic part |
AliExpress: 1 |
1 |
Resistor 75 Ohms |
1206 |
Generic part |
AliExpress: 1, 2 (untested supplier) |
2 |
Resistor 1K |
1206 |
Generic part |
AliExpress: 1 |
8 |
Capacitor 100nF |
1206 |
Generic part |
|
2 |
Capacitor 56pF |
1206 |
Generic part |
AliExpress: 1 |
1 |
Electrolytic capacitor 10uF (Revision 1 board only!) |
THT |
Generic part |
|
2 |
Electrolytic Capacitor 220uF (Revision 1 board only!) |
THT |
Generic part |
AliExpress: 1 |
1 |
Capacitor 10uF (Revision 2 board only!) |
1206 |
Generic part |
|
2 |
Capacitor 22uF (Revision 2 board only!) |
1206 |
Generic part |
|
2 |
RCA connectors |
THT |
Generic, but often overpriced part |
AliExpress: 1 (untested supplier); no longer available: red, yellow |
1 |
Micro-USB connector |
SMT |
Generic, but often overpriced part |
|
1 |
Regulator AMS1117 3.3V |
SOT-223 |
Generic, sometimes overpriced part |
AliExpress: 1 |
1 |
74HC04 hex inverter |
SOIC-14 |
Generic part |
|
1 |
Crystal 3.579545 MHz (NTSC) or 4.433619 MHz (PAL) |
HC49-S |
Generic part |
AliExpress: NTSC, PAL (untested supplier) |
1 |
PS/2 keyboard connector (female) |
THT |
AliExpress, some distributors |
Not strictly required, but strongly recommended components
You should really have these, but if you can’t get your hands on them right away, you can go ahead and add them later.
Qty | Name | Package | Who can supply it | Links |
---|---|---|---|---|
1 |
Pin header 1x7 (programming header) |
Generic part |
AliExpress: 1 (1x40 headers, cut them to size) |
|
1 |
MicroSD socket |
SMT |
AliExpress, eBay |
|
1 |
Push button 6x6x4.3 mm |
THT |
Generic part |
|
1 |
PCF8575TS I2C I/O extender |
SSOP-24 |
Generic part; AliExpress recommended for price |
AliExpress: 1 |
1 |
Raspberry Pi 3 case |
Generic part |
Optional components
If you do not need the functions associated with these parts, you can leave them out, but your BASIC Engine will be slightly less cool.
Qty | Name | Package | Who can supply it | Links |
---|---|---|---|---|
1 |
Pin header 1x3 pins (alternative power supply) |
AliExpress recommended for price |
see "Pin header 1x7" |
|
1 |
USB A connector (alternative keyboard connector) |
THT |
Generic part |
|
1 |
Pin header 2x20 pins (expansion connector) |
AliExpress recommended for price |
AliExpress: 1 (2x40 headers, cut them in half) |
|
1 |
PlayStation controller connector (female) |
AliExpress |
Ordering the PCB
If you have never had a custom circuit board made, you may find the multitude of options you are presented with on the board house’s ordering page confusing. The good news is that you do not have to worry about most of them, because they have been set to reasonable defaults already.
If you order with JLCPCB or Smart Prototyping using the links above, all you have
to do is upload the ZIP file containing the Gerber files
that you can find on Github in the PCB repository’s
release section (basicengine-gerber-<revision>.zip
) and specify the dimensions of the board (85x56 mm). All other
options can be left as is.
(Just to be on safe side: At the time of writing these options were: 2 layers, 1.6 mm thickness, HASL with lead, 1oz copper weight, material FR4.)
Tools required
If you have no equipment, these are the items you will need to obtain:
Soldering tools
-
Temperature-controlled soldering iron (recommended: generic 937D+ or similar device from eBay).
-
Heat gun (recommended: generic 858D+ or similar device from eBay).
-
Solder wire (0.5mm with rosin core).
-
A set of pointy-tipped tweezers. (You only need one, but they are cheap, and this way you can find out which style you like best.)
-
Reading glasses (if above 40).
-
A lecture on which ends of the tools get hot (if below 10, or a really big nerd).
These should not set you back more than a hundred euros.
Warning
|
If you watch too many YouTube videos, you may come across a
substance called "solder paste". Stay away from it. It is intended to be
used in mass production, and is entirely useless when building things by
hand, especially if small-pitch components are involved. It also gets into every crack and stays there for weeks, while still managing to "go bad" if not stored properly. Oh, and have I mentioned it’s poisonous? Just stay away from it. |
Programming tools
These are used to flash the firmware into the microcontroller module.
Qty | Name | Package | Who can supply it | Links |
---|---|---|---|---|
1 |
USB-to-serial converter |
AliExpress, eBay |
||
7 |
Dupont wires female/female (for wiring the converter to the programming header) |
AliExpress, eBay |
AliExpress: 1 (untested supplier), 2 (untested supplier) |
You also need some sort of computer, ideally running Linux, but others may work as well.
Assembly
Even though it uses some small-pitch components, the BASIC Engine has been designed to be easy to assemble.
Check the one-hour silent video below to see how to build a BASIC Engine using a soldering iron, a heat gun, tweezers, solder wire and side cutters, without fancy tools, mad soldering skills and with only a minimal amount of patience:
Note
|
This video shows assembly of a rev1 board. In rev2, the electrolytic capacitors C9, C11 and C12 have been replaced with SMD parts. Also, a 22R resistor is mounted as R6, which should be 75R (see PCB Errata). |
PCB Errata
Revision 2 of the PCB contains one error:
-
R6 value is given as "22R", should be "75R".
Revision 1 of the PCB contains two errors:
-
R6 value is given as "22R", should be "75R".
-
C3 and C4 values are given as "10p", should be "56p".
Software installation
Firmware binaries
Binaries are available on Github in the firmware repository. They can be uploaded to the system via the serial port, using esptool:
esptool -cd ck -cb 921600 -cp /dev/ttyUSB0 -ca 0 -cf ttbasic-<version>.bin
If a version of Engine BASIC is already installed, the firmware can be updated from SD card using the command
FLASH "ttbasic-<version>.bin"
If you are interested in the latest features, you can also download
nightly builds of
the current Git master branch. The files called
basicengine-firmware-default-...
contain the default firmware
(recommended), while the files called basicengine-firmware-net-...
contain the network-enabled build.
Sound font
The sound font file 1mgm.sf2
must be copied to the SD card or the internal flash memory for wavetable synthesizer
sound to work.
Expansion connector pinout
Schematics
BASIC Engine rev2 schematics in PDF format