Project STRUIX takes it's name from the Latin translation for "stack" or "heap". Both as a metaphor and architecture for physical computing, STRUIX circuit boards are layered together and connected by threaded post fasteners that not only provide the physical structure of the system, but also act as the electrical connection between them. Each board layer has a specific function. Whether it be CPU, power supply, XBEE support or user defined, the possibilities are endless. The fasteners and circuit boards can be quickly assembled by hand, allowing experimentation with different configurations, but can also be easily ruggedized for field application once the system is working as the designer intends.
Circuit Board Layout:
STRUIX borrows the topology of the Lilypad Arduino. The 22 pad, 50mm diameter circuit board makes a compact platform --. The "sewtap" perimeter pads can be either single or double sided. To make the circuit boards stackable, the perimeter pads are drilled with 3mm holes. This is the only major modification to the Lilypad topology.
The Buss System:
STRUIX imposes a de-facto buss standard around the Lilypad topology. While these are commonly used buss systems in the Arduino family, STRUIX enforces them. The parallel processing methodology is dependent on the order and usage of the various buss systems. The specific buses defined are the Power,TWI (I2C), SPI & Serial/CPU.
- Power buss - Power is distributed along the +/- pads. The location of the power connections is enforced in the STRUIX system to allow boards to be stacked.
TWI (I2C) buss - Is the backbone for board intercommunication. The buss is automatically hardware arbitrated by the CPU board according to I2C protocol. CPU's can be both master and slave on the I2C buss and can co-exist with other I2C devices on the buss. The PowerPad board provides convenient termination for the I2C buss.
SPI buss - Connects with SPI based devices, but is primarily intended to drive locally connected SD memory cards. The clock, data-in & data-out pins on the CPU board are reserved as well as three other digital input signals for CS (chip select), CD (chip detect) and WP (write protect) - according to the Arduino SD library standard.
Serial/CPU - The CPU serial buss is available on the perimeter pads, but also on the programming header, arranged vertically, near the center of the CPU board. In addition to the serial IO lines, power input, ground and reset signals are on the header to facilitate programming via standard Arduino-PC or XBEE wireless connections. The vertical arrangement of the serial connection allows boards, such as GPS or XBEE to be directly connected to the CPU without taking up perimeter connections.
Power used the +/- pads (between D4 & D5).
I2C uses the A5 (SCL) and A4 (SDA) pads.
SPI uses D11 (MOSI), D12 (MISO) & D13 (SCK) pads for basic service. STRUIX defines D8 (CS), D9 (CD) & D10 (as optional WP), which is compatible with the Arduino SD card library.
Serial/CPU uses D0 (Rx) and D1(Tx), both on the perimeter pads and on the programming header. Looking from the top, going from B to G, the programming header pins are GND1, GND2, Vcc, Rx, Tx, DTR. It should be noted that Rx & Tx are from the CPU's point of view.
Analog reference (VRef) is connected to Vcc.
That leaves digital pins D2, D3, D4, D5, D6 & D7 open for general purpose I/O. Pins A0, A1, A2 & A3 are available for for general purpose analog or interrpupt input.
Localized & Global Buss Structures:
Fastener posts can be either conductive or non-conductive. Conductive posts make the signal connection between layers and provide structure. Non-conductive posts provide only physical structure. Conductive posts can be continued, layer by layer, to make global signal connections - such as the power buss, or I2C buss. By using non-conductive posts in conjunction with conductive ones, localized buss structures can be created within the stack for use with individual groups of circuit boards - such as using the SPI buss for local CPU SD card memory.