The InterSceptre MCU extension board opens doors (and ports!) for you
Fitted in a suitable case, you’ll be able right from the start to develop a prototype that you can use ‘properly’ in a installation, with no trailing wires or bits of sticky tape holding everything together. Now that’s what you call fast, convenient prototyping!
This is article is part of a large project published in 2010 & 2011 covering several articles:
- The Sceptre - hardware (main article)
- The Sceptre - software
- Debugging the Sceptre over JTAG
- The InterSceptre - I/O expansion board (this article)
- The Sceptre meets Arduino
- The Sceptre meets Oberon
- Graphic display shield for the Sceptre
So there we have the broad specifications for the InterSceptre, the Sceptre extension board with multiple interfaces. And even though the development of the InterSceptre was inspired by the Sceptre, the board can be used with any other microcontroller, provided it is fitted to a board that’ll fit into the space reserved for the Sceptre. The InterSceptre operates from 3.3 V and 5 V, so it’s perfectly suited to PICs, AVRs, and other popular MCUs.
So what has InterSceptre got to offer? Well, quite a lot, actually:
- 2 RS‑232 ports
- 2 RS‑485 ports (or one RS‑422 port)
- DMX512 port
- MIDI input/output
- I2C port
- SPI (or PS/2) port
- space for a WIZnet Internet module
- four analogue outputs (DAC)
- analogue inputs (ADC)
- digital I/Os (logic, PWM)
- four LEDs
- JTAG connector
- holder for a button cell
- small prototyping space
- extension connectors
- 5 V power supply
All this on a PCB that fits exactly into an attractive, Italian-designed case measuring 18 x 20 x 5.4 cm.
Be aware that you can’t use all of these facilities at the same time. Even though the Sceptre offers lots of peripherals, it only has fifty pins, which means that certain functions are obliged to share pins. Nevertheless, we’ve done everything we can to make InterSceptre as flexible as possible. In any case, there are very few applications that would require everything to be used at once.
The InterSceptre extension board circuit diagram is available in the downloads below. Given the number of ports implemented, the circuit is pretty huge, but easy enough to follow.
RS-232, RS-485 & RS-422
The RS‑232 and RS‑485 ports share two 9-way sub-D connectors. We opted for male connectors to ensure compatibility with PC serial ports. On the microcontroller side, the four ports are connected to terminal strips that let you choose which will be used with a given COM port. The Sceptre has only two UARTs, one of which is more or less reserved for the Bluetooth module (although the latter can be disconnected), but it’s always possible to produce UARTs in software (bit banging). For microcontrollers with more UARTs, the ports are available to them.
Two DIP switches let you economize the output select pin for applications that only transmit in RS‑485. Two other switches offer the possibility of connecting terminating resistors if needed.
The Sceptre’s USB connector is shared by a serial port and the USB port. We’ve taken advantage of the InterSceptre to add a special USB connector for the Sceptre’s USB serial port. What’s more, this is the InterSceptre’s only surface-mount component.
One of the two RS‑485 ports is also wired to an XLR connector for DMX512 applications. The DMX512 standard specifies a 5-pin female connector for a DMX transmitter, but many applications use 3-pin XLR cables. The InterSceptre PCB lets you fit either, so as to keep everyone happy.
Musical Instrument Digital Interface (MIDI)
The MIDI port consists of just an input and an output. To save a bit of space on the PCB, we haven’t made provision for a MIDI THRU port. Given that the InterSceptre can operate from 3.3 V and 5 V, two DIP switches are provided to allow the MIDI standard’s 5 mA output current to be maintained in either case. Not to worry even if the switches have been set to the 3.3 V position with the board running on 5 V — in this instance, the output current is only around 10 mA, which is more than acceptable for the majority of opto-isolators, even (or perhaps especially?) older ones.
The MIDI port shares the same microcontroller ports as the RS‑232 and RS-485 ports.
SPI, PS/2 and Internet
For experiments with an SPI port, the InterSceptre offers a 6-pin mini-DIN connector. This connector is wired to be compatible with the PS/2 port, allowing you to connect a keyboard or mouse, or even both. Note that it is highly inadvisable to hot connect or disconnect equipment to this port.
The SPI port is shared by the WIZnet WIZ812MJ Internet module. This module, which implements a hardware TCP/IP stack, offers several microcontroller interfaces, including the SPI we’re using here (as the Sceptre doesn’t have a parallel port).
The Internet module is powered from 3.3 V, but accepts signals up to 5 V. The output signal (MISO and INT) levels may then be too low for a microcontroller powered at 5 V. This is why we’ve added two simple voltage boosters. These may adversely affect the maximum communication speed possible, so if the whole circuit can run off 3.3 V, it’s undoubtedly preferable to not fit them and to bridge out transistors Q1 and Q2.
Note to that InterSceptre does not offer a 3.3 V supply, as this is already available on the Sceptre. So a microcontroller running on 5 V will also need to provide the 3.3 V rail if it is intended to use the Internet module.
DAC and MUX
The Sceptre has a 10-bit digital/analogue converter (DAC). To make it a bit more powerful, we’ve added a 4-channel analogue demultiplexer. In this way, InterSceptre has four analogue outputs, available on the 25-way sub-D connector K22.
The gain of the output stages is adjustable (a bit too much, really, for reasons of simplicity) and they are powered from 5 V, at all times, which means a 3.3 V system can produce (nearly) 5 V analogue signals. The gain is adjusted using 25-turn presets. If unity gain is all you need, you can omit these and connect the inverting inputs directly to the outputs. This will save you a bit of money.
The (de)multiplexer IC6 in fact contains two multiplexers so, as we don’t like wasting precious resources, the unused multiplexer is accessible on an 8-way terminal strip, which lets you connect this multiplexer to the DAC output or one of the Sceptre’s analogue inputs — or both.
I2C and GPIO
The Sceptre has two I²C ports, one of which is readily accessible without disturbing the other functions too much. This is the port we’ve connected to a 6-pin RJ11 connector via a voltage booster. In this way, it is possible to connect a 3.3 V I²C peripheral (for example a Nunchuck controller for the Nintendo WII games console) to an InterSceptre running at 5 V (or 3.3 V); it also works the other way round. The very handy Pocket terminal that goes with the Running-in Bench runs on 5 V, so it can be used with the Sceptre running on 3.3 V. The Pocket terminal offers an LCD display, five push-buttons, and a rotary encoder, driven via I²C.
The level shifter used comes from a Philips (or NXP) application note. It’s both simple and ingenious, as it’s bidirectional. For example, let’s take the SDA signal (P0.3) and assume that the power rail is 3.3 V while the output voltage is 5 V (so all the jumpers are in positions 1 and 2). If SDA (in output mode) on the source of FET Q3 is at 0 V, Q3 conducts and hence the output (drain) is also at 0 V. If SDA is at 3.3 V, Q3 is turned off and the output is at 5 V thanks to pull-up resistor R21.
The other way round, when SDA is in input mode, it’s a bit more ingenious. If the drain is at 0 V, the spurious diode in Q3 conducts and takes Q3 source, and hence SDA, towards 0 V. This causes Vgs to rise, the FET starts to conduct, and SDA goes to 0 V. If the drain is at 5 V, pull-up resistor R34 ensures that the SDA input sees a level of 3.3 V.
The I²C port is also connected to a Microchip port expansion IC. This IC is compatible with 3.3 V and 5 V, so no voltage boosters are needed. It offers 16 programmable I/Os with interrupts and lots of other possibilities too. As it’s an I²C port device (it is also available in an SPI version), it requires a programmable address. This is obtained using three switches, even though an I²C address consists of seven bits. The chip itself adds the missing four MSBs, hence its address is 0010xxx, where xxx represents the position of the three switches (0x20 to 0x27 in hex).
The chip’s port A is accessible on the 25-way sub-D connector; port B is connected to 9-way terminal strip K23.
JTAG, LEDs, and other connectors
The JTAG connector is wired to the standard defined by and for ARM, i.e. 20 contacts with (optional) pull-up resistors. To put the Sceptre into JTAG mode, jumper JP7 must be set and the board rebooted.
Four LEDs (to be fitted at 90° underneath the Sceptre, otherwise they can’t be seen) share a number of the JTAG port’s signals. If this causes difficulties with JTAG communication, don’t be afraid to remove them.
25-way sub-D connector K22 gives access to a selection of the microcontroller’s various ports. So we find the PWM outputs, certain analogue inputs, the analogue outputs, a number of interrupts, and some basic I/Os. Each of the signals is protected by a small current-limiting resistor. This protection is rudimentary, so be careful all the same, and don’t hot (dis)connect equipment.
The 34-way extension terminal strip K20 gives access to the microcontroller’s other signals. Here, there’s no protection at all, so you need to take great care. This terminal strip is opposite a little area with mounting holes where you can fit a few components to create an interface you need. A row of holes each side of the microcontroller board gives you direct access to all the processor’s signals.
Power supply and battery
During application development, the Sceptre will be connected to a computer via a USB cable connected either directly to the Sceptre, or via the InterSceptre. In this situation, the USB port can provide all the power. For applications where no USB connection is possible or necessary, or if more power is needed than can be supplied by a USB port, a 5 V supply is available via the InterSceptre. We have made provision for two possible regulator types (a 7805 or a low-voltage-drop 1117-style), which, for some unknown reason, do not have the same pin-outs. So take care how you fit the regulator!
The on-board supply takes priority over the 5 V from the USB ports by way of diode D4, making the regulator output voltage around 0.3 V higher than the USB port voltage. The other diodes (D2, D5, and the other D2 in the Sceptre) take care of the rest. One important detail not to be overlooked: when fed from a USB port, the InterSceptre’s 5 V rail isn’t in fact quite 5 V, but more like 4.7 V. When self-powered, however, the 5 V rail really is 5 V.
The InterSceptre operating voltage Vcc is selected by means of JP2. As already mentioned above, the InterSceptre itself does not produce the 3.3 V, it comes from the Sceptre. If you are not using a Sceptre, you’ll have to make provision for a 3.3 V rail if you need one.
One minor drawback with the Sceptre is the absence of the battery voltage on the extension connectors — but it does have its own battery. If you use a different microcontroller board without its own battery, a button cell holder is available on the InterSceptre. Attention! If you connect the Sceptre battery to the InterSceptre, don’t fit a battery in the BAT1 holder as well!
You can connect a switch to JP9 to let you turn off the Sceptre power. This can be handy where the Sceptre is being powered from a battery. Don’t forget to link the Sceptre switch contacts to the InterSceptre ones, which are just underneath.
InterSceptre uses only non-SMD components (except for the USB connector) and so is easy to wire up. No need to fit the parts you don’t need — particularly the connectors, which can be quite expensive.
The InterSceptre PCB has been designed to fit into a case which, in addition to providing protection, also lets you use the unit directly within a final application without its looking like a bodge.
The case we’ve chosen is a Teko 935.5 (white) or 935.9 (black), which comprises two plastic shells (handy for the Sceptre’s Bluetooth) and two aluminium front panels held in place by the shells. The shells fix together using a pair of screws.
Like the Sceptre, InterSceptre is also an open-source, open hardware project. So below you can find the Eagle files for the circuit diagram and PCB, the components list. For software please refer to the Sceptre page.
- Compatible with all types of microcontroller
- 2 × RS-232, 2 × RS-485
- DMX512 compatible
- 4 analogue outputs
- I2C, SPI, PS/2
- Digital I/Os (logic, PWM)
- JTAG for Sceptre
- Operates on 3.3 V and 5 V