smARtBUS Open I/O
smARtBUS Open I/O it’s the solution we propose to the Open Source Hardware community to solve the problem of the communication between different platforms.
Why an Open BUS?
When we started engineering the project smARtDUINO, the basic idea was to separate the CPU and USB functions from the rest of the board, that include voltage regulator and connections, to create a platform that can be moved from prototyping to production easily.
During this process, we studied and tested many different prototyping boards and a large quantity of shields. What we realized is that in many cases, these products can share resources, cooperate and work together in a mixed environment but, to reach this result, it’s mandatory to create custom cables, soldering, adapting and, in many case, modify the boards to solve hardware conflicts.
We understood that this is a limit and that there are not clear solutions on the market, focusing on this important problem.
Most of the development boards available on the market, and the related extras like shields, share the same basic signals:
- power voltage usually regulated to 5V and 3.3V plus an external source voltage and a common ground
- one or more SPI interfaces
- one or more reset channels
- an I2C connection
As Arduino™ is standard de facto, many producer of new development boards adopted the so called Arduino™’s form factor, in order to offer the capability of host some of the many available shields made for the Arduino™. This form factor it’s interesting but not really ideal for advanced prototyping, as well as production.
Others created custom board designs, in many case compatible with popular softwares like, again, the solution proposed by Arduino™ but, the customer that adopt the solution will have the limit of a small availability of extras and shields. This require even more customization.
Finally, change platform become complex and sometimes expensive, as can need to adopt a full new set of tools.
Al these problems can be solved adopting a common solution for the transportation of the signals and with the production of modules that adopt the common bus, or adapters that allow to convert existing tools to the common bus.
This is why we proposed the smARtBUS Open I/O.
Analyzing a large set of different development boards and tools, we collected data related to the most common signals. According to the results, the minim quantity of signals required to be carried on the bus to be able to support the largest possible tools, include:
- at least 3 level of voltage plus ground = 4 lines
- at least a full set of SPI data bus = 5 lines
- at least a serial I2C bus = 2 llines
- at least one serial TTL channel = 2 lines
- at least 20 general purpose I/O channels = 20 lines
33 channels are the minimum quantity to be adopted for a basic bus that allow different platforms to communicate.
The most common solution for transfer data on a bus, from one component of the system to a different one, it’s trough connectors.
The scope of this bus it’s mainly to connect different board and a connecting solution board-to-board it’s more indicated, compared to wires-to-board or wires-to-wires solutions.
The connector chosen for the smARtBUS Open I/O it’s the HIROSE DF9-31.
This connector have been selected after a test of over 20 different solutions, for the following main reasons:
- It’s one of the few of this class of connectors to offer an optimal structure to prevent mis-insertions and this is very important for the design of products that must be available to a large group of users with many different levels of skills and knowledge; it’s impossible, even breaking it, to insert this connector in the wrong way.
- It’s very common, as it’s the connector selected by VESA as standard for the FPDI-1, the interface standard for LCD panels.
- The 1mm pitch allow skilled operators to perform manual soldering easily.
- The stacking height of 4.3 mm it’s ideal for boards that host not only low power components but also mid range discrete components; adopting 1mm thickness for the PCBs, a stack of two boards it’s only 1/4″ thick.
- The length of 19.3mm (0.76″) allow to design boards smaller than 1″.
Another important benefit of this solution is the large availability of compatible connectors. Using a compatible product, the cost of a set necessary to implement a smARtBUS BASIC, that include 2 headers and 2 receptacle, it’s lower than US$ 0,80 and the cost of a simple set of receptacles used to implement a plug-in module, like the many smARtMODs, it cost only US$0,30.
The original datasheet of the Hirose DF9 connector it’s available in the download area or following this link.
BASIC and FULL
During the design of the smARtBUS, one problem it was to choose what kind of development environment support and how. Carry on the bus less signals, mainly less general purpose I/Os, allow to design a smaller and cheaper solution. Perhaps, carry a large quantity of signals allow to support almost every platform available but, in most of the case, only a small part are used, with a waste of space and money.
The solution chosen is to separate the BUS in two parts, that can work together, as well as separated.
smARtBUS BASIC it’s based on the use of 2 connectors: the first one dedicated to transport the power and the communication and functional signals, named smARtBUS A, the second one, smARtBUS B, it’s dedicated to general purpose I/Os.
The smARtBUS BASIC carry the following signals:
- Power signals including +5V, +3.3V, +VIN and GND
- 2 SPI bus, one including the slave selection pin (SS)
- 2 separated reset signals (main and auxiliary)
- USB signals D+ and D-
- Analog and Digital reference voltages (IOREF and AREF)
- I2C serial bus
- TXLED and RXLED signals (can also be used for TTL serial communication)
- 27 general purpose I/Os signals (B01 to B27)
The smARtBUS FULL, in addition, carry these signals:
- 27 general purpose I/Os signals (C01 to C27)
- 27 general purpose I/Os signals (D01 to D27)
The adoption of the smARtBUS FULL allow to carry the power signals, 2 spi , 1 i2c, 1 usb buses, data transfer signals and reference voltages plus up to 81 different general purpose I/Os.
The Pin Out
Discussing the pin out chosen for the smARtBUS Open I/O, it’s important first to answer to some common question:
Why two connectors and not just one?
It was possible, as the selected connector offer 31 terminations, do reduce the signals carried from minimum calculated of 33, for a basic bus, to reduce the costs and the space but there are few points that made this choice not ideal:
- one single connector will not offer sufficient support to the board and will not offer balance; this require to always fix the boards; instead, the use of two connectors offer a very good balance and sufficient strength to allow to use the fixing tools only when the development it’s finished.
- The adoption of two connectors allow to separate the “functional” signals, that are common to almost every development tool, from the general purpose I/Os and this allow to design simpler products and, if the developer want it and the custom project doesn’t require the use of general purpose I/Os, a product can adopt only one connector.
- The use of two connectors for each module of the bus, as described in the design section, with different pitch between the smARtBUS A-B and C-D, offer further protection from the mis-use, as it’s impossible to plug a smARtBUS dedicated to the general purpose I/Os over a smARtBUS dedicated to the power signals.
The power signals require particular attention.
All the connectors of this category, for board-to-board application, are rated to carry at most 0.5A on every contact. For the general purpose I/Os, this is more than enough. For example, the Atmel AVRs are capable of 40mA load on the digital outputs, less than 1/10th of the connector’s maximum rate.
For a bus intended to carry the signals over an high quantity of device, this rating it’s too low but, if a connector with highest current rate was adopted, the dimensions and the costs were rising as well.
The solution adopted for the smARtBUS Open I/O it’s to use more than one contact to carry the power signals.
- 2 contacts are dedicated to the +3.3V power signal, rated 1A
- 4 contacts are dedicate to the +5V power signal, rated 2A
- 4 contacts are dedicated to the external power source +VIN, rated 2A
- Up to 16 contacts (on the smARtBUS FULL, 8 contacts on the smARtBUS BASIC) are dedicated to the common ground GND, rated up to 8A (4A for the smARtBUS BASIC)
Using more contacts for the power signals, it can be possible to adopt a smaller connector and to design more flexible systems.
This is the resulting pinout for the smARtBUS BASIC:
An example of basic design for the smARtBUS Open I/O are the extensions available in the smARtDUINO project:
smARtBUS AB, it’s a board extension for the smARtBUS BASIC
smARtBUS CD it’s a board extension for the only additional signals of the smARtBUS FULL
smARtBUS FULL it’s a board extension for the full bus
The Eagle’s design packages for these 3 boards are available in the download area or trough the following links:
Dimensions and design rules
The smARtBUS is based on the standard minimum size of 1×1″ (25,4×25,4mm). The connectors are positioned ad the center of the basic area, and fixing holes are available at the corners, according to the following measures:
A clearance area has been defined as well, in order to ensure that smARtHOSTs and other modules will not cause incompatibility. A basic available area of 1,5×1,5″ (38,1×38,1mm) is dedicated to standard smARtHOSTs and to eventual smARtCOREs that require more space. The bottom and lef area (from top view) are restricted, in order to make possible to have at least to common fixed sides. It’s suggested to keep free the bottom side (from top view) and to use the left side for external connections, like USB, power plugs etc.
The smARtBUS FULL adopt a larger area, based on the sizes 1×2,5″ (25,4×63,5mm):
A PDF document with these dimensions it’s available in the download area or following this link.
An Eagle’s file with the dimensions and the holes already positioned it’s available in the download area or following this link.
Practical use of the smARtBUS
The best way to show how to practical use the smARtBUS, it’s the example based on the Arduino™’s form factor (Arduino™ UNO).
The simple solution to match the names of the channels on the smARtBUS with the names used in a development platform, it’s to use practical cheat sheets.