ChainDuino PRIMO (discontinued)


Have you ever wanted to connect lots of Arduino boards using just Cat5?
Now you can.

Ship date for pre-order is May 1st, 2015.

Do I need galvanic isolation?

The isolated RS485 chip is recommended for use where nodes will connect to external power supplies, such as use with large electric motors, etc.

The non-isolated RS485 chip is best for applications where the node will be powered by the bus, such as for use creating a network of remote sensors, etc.

What are the assembly options?

If you are new to soldering, you should choose the fully assembled option.  This is ready to go, just plug it in!

SMD only kits for the Primo do not include headers or the ATMEGA328 MCU.  All SMD parts are pre-soldered onto the board, except the DC connector.

The SMD only + RJ45 kit includes (2) 8-pin RJ45 jacks, but they are not soldered to the board.

The SMD only + IDC8 kit includes the IDC (insulation displacement) connector + 2×4 pin right angle header, but it is not soldered to the board.

Clear selection
SKU: CD-PRM. Categories: , .
Save $1.50 each on 3+ units.

Product Description

The ChainDuino is a daisy-chainable, Arduino™ compatible development board that allows you to easily connect multiple boards together with standard Cat5 cable. The boards communicate using built-in RS-485 circuitry, and share power using passive PoE+ over the same Cat5 cable! Adding boards to the chain is as simple as programming them with the Arduino™ IDE, and plugging them in.  ChainDuino PRIMO is based on the Arduino UNO and features the ATMEGA328p micro-controller.

Check out the ChainDuino kickstarter page for more detailed info on the ChainDuino


Last Updated January 27th, 2015
Note: This is a work in progress, and is NOT complete.


ChainDuino Platform Overview

The ChainDuino is an Arduino™-compatible development board that is designed to allow multiple boards to be easily networked together in a daisy-chain configuration using standard Cat5 wiring.   Dual RJ45 connectors allow multiple boards to be easily connected together.  Boards communicate using onboard half-duplex RS-485 circuitry and share DC power over a standard twisted pair Cat5 cable.

ChainDuino PRIMO & MEGA Boards

The ChainDuino PRIMO is loosely based on the Arduino™ UNO, in that it features the same ATMEGA328p MCU, PCB shape, and IO pin headers.  The ChainDuino MEGA is similarly based on the official Arduino MEGA, and features the same ATMEGA2560 MCU and PCB shape.  The USB circuitry was removed from both ChainDuino boards to make room for the RS-485 components and switching DC-DC power supply.  A 6-pin FTDI header was added in lieu of the USB-serial converter (ATMEGA16U4) for programming.  In addition, the ChainDuino also features the typical 6-pin ICSP header, which is located in the same place as most official Arduino™ boards.  The ChainDuino can accept DC power up to 24 volts.

 Example Sketch

This example sketch is what will ship with the Kickstarter PRIMO boards.  Before loading this sketch onto any ChainDuino board, be sure to change the station number in the sketch so each board has a different station number.  The master is 1, and slave nodes are anything else, such as station 2 or 3 or 4, etc.

This sketch is a simple ChainDuino Blink example, where the slaves will pulse (fade) red if they do not SEE a master on the network.  If they do see a master, they will blink green quickly every 5 seconds to acknowledge they are receiving the heartbeat from the master.

Note: This is very rough example program, it needs a lot of work.  The intent of this sketch was to be able to use the same sketch for all nodes, and simply adjust the station number accordingly before uploading to each node.  It can be confusing to remember which software version is on each node when testing code, so I wanted a way to stay working within a single file when making and quickly testing small changes.


Links to needed libraries:

The Arduino Inter Chip Serial Communication library can be found here.
Link to library: Arduino Inter Chip Serial Communication Library

We recommend the Adafruit Neopixel library to control these LEDs, but there are many other options.
Link to library: Adafruit NeoPixel Library

Download the ChainDuino Example Sketch:

Kickstarter Demo ChainDuino Sketch (select Arduino UNO within the Arduino IDE)

Isolated Ground Planes & Galvanic Isolation Info (please read)

Dual Isolated Ground Planes:

Throughout this document, 2 separate ground planes found on the ChainDuino are mentioned, referred to as the “BUS-side” and “MCU-side”.  The BUS-side is the ground plane located around the RJ45 ports and RS485 circuitry. The MCU-side ground plane includes the remainder of the board, including the ATMEGA chip, and DC jack.  Both sides of the board have their own separate voltage regulators.  An isolated board will have no electrical connection between these 2 power regions, while a non-isolated board has these 2 power regions merged together.  These power regions can be see in red & blue in the image below.

Galvanic Isolation:

To protect against possible ground faults and ground potential rise, the ChainDuino features optional galvanic isolation.  The PCB has dual isolated power supplies and ground planes, and an isolated RS-485 chip.  The BUS-power region of the board is always powered via the Cat5 cable.  The MCU-power region of the board can be optionally be powered from the Cat5 cable by closing the 2 jumpers near the center of the board (JP0+JP1), or it can be powered via an external power supply using the 5.5mm DC jack and disconnecting the power jumpers JP0+JP1.  It is important to note that powering the MCU via the Cat5 circumvents Galvanic Isolation, and care must be taken to prevent a potentially hazardous situation.

If all boards on the network are to be powered by the bus, then isolation is not required as there is only (1) power supply and only (1) earth ground.  However, nodes that will be connected to their own local power supply, or connected to another earth ground, or connected to a component that is connected to another ground, MUST use galvanic isolation for safety reasons. This is especially important if nodes are located significant distances away from each other.  The galvanic isolation option is also a great way to protect a computer by isolating it from the bus when using a FTDI serial to USB converter to communicate with the bus.


Powering the Bus

If you have not yet read the above section on galvanic isolation, do it now.

The ChainDuino can function in 3 ways in regard to power.

Power Injector: The DC jack on the chainduino can be used to inject power to the entire bus.  This would also power the node’s MCU.  This node would be non-isolated, but that is OK since there is only 1 earth ground.  Both power jumpers are closed, or shorted with solder joints on the bottom of the board.  Each bus requires 1 node to inject power to function.

Non-isolated: The ChainDuino can also be powered entirely from the bus, such as a remote node intended for hosting various sensors.  These nodes cannot be connected to any other power sources or grounding points.  Both power jumpers should be closed.

Isolated: In this mode, both the power jumpers must be disconnected, or OPEN.  The node will need it’s own power source to the DC jack since it will NOT be obtaining power from the bus.  The on-board regulator can be utilized locally or it can be bypassed if 5v is available from some other nearby regulated source.  It is important to note that the BUS-side of the ChainDuino will still be powered by the bus, and the BUS power LED will illuminate even when the ChainDuino MCU Power LED does not indicate power.  This is normal, as each side of the board is electrically isolated, and independent.  Also worth noting, is that the bus voltage does not have to match the voltage of an isolated node.  For example, the bus could be operating on 24 volts while an isolated node has a 9 volt power supply on the MCU side.


Status LEDs (incomplete)

bus power

mcu power




GV headers (incomplete)


Bus Length & Number of Stations

The maximum bus length and maximum number of stations will vary by application.  Bus lengths of up to 1500ft or greater are possible when using a 24v DC supply.  When using a 12v DC supply, a bus length of about 500ft is conservative.

A single bus can support and power 25+ stations, depending on several factors, including the total distance, the current requirements of each node, the placement of nodes along the bus, and style of copper wire used.

Many more stations are possible when nodes are used in isolation mode, since the MCU of these nodes is powered locally instead of drawing power from the Cat5 bus cable.

Estimates assume a maximum power rating of 25 watts total using 2-pairs of a Cat5 cable. Optionally, a 50 watt power supply can be used in the center of the bus, which would allow for 25 watts in either direction available to the nodes.

For best results on bus lengths exceeding 200 ft, it is recommended to use solid Cat5 instead of stranded Cat5.  When using very poor quality stranded wire, you may have reliability issues after 250 feet.  Solid cable is similarly recommended for many PoE applications, and we found that solid cable more than tripled the maximum bus length.

 RS485 IC Info and Connection to MCU

Isolated ChainDuino: The isolated version of the ChainDuino features a texas instruments ISO3082 IC for RS485 communication. This chip is a Half-duplex RS485 low-power transceiver featuring galvanic isolation.  The chip can be thought of as 2 separate circuits with isolators in the middle.  Both sides of this chip need 5v and ground connections, as if they were separate chips.  The bus-side of the RS485 IC gets 5v from a linear regulator.  Normally, 24v to 5v would generate a lot of heat in a linear regulator, but since the RS485 chip is low-power, only 10-15% of regulator rated current is utilized.  The MCU-side of the RS485 chip is powered from the on-board 5v switching regulator.

The datasheet for the ISO3082 can be found here.
Link to ISO3082 datasheet


RE/DE Arduino pin options: The receive and transmit enable pins are, by default, tied together and connected to Arduino pin 2.  This pin can be changed to pin 4 easily by cutting the trace on the normally closed 3 way solder joint (SJ6), and carefully shorting the RE/DE to pin4.
Warning: connecting any of the user customizable connections to more than (1) Arduino pin WILL ruin both of those pins.  Be sure to disconnect default connections before connecting to anything else!


RE/DE Seperation: The RE+DE pins of the RS485 IC are tied together, which is what most libraries will expect.  You can separate these pins by cutting the trace at SJ11 (between the 2 test points).  Cutting this trace will cause RE to no longer be tied to DE.  Remember that DE is still connected by default to pin2 when you cut SJ11, unless you also cut the trace at SJ6. After both of these traces are cut, headers can be soldered near SJ11 for easier custom connections of the RE and DE pins.
Warning: connecting any of the user customizable connections to more than (1) Arduino pin WILL ruin both of those pins.  Be sure to disconnect default connections before connecting to anything else!


Non-Isolated version of ChainDuino: The PCB for the ChainDuino features footprints for both an isolated RS485 chip, and a non-isolated RS485 chip.  This is to allow for significant cost savings on nodes that will only be used in non-isolated mode, such as a large network of sensors.  Some of the pads for both footprints are common, and the footprints do share the same piece of PCB space.  On ChainDuino boards with the non-isolated chip, the 5v bus-side linear regulator (and the regulator caps/diode) can be omitted.  When the bus-side regulator is omitted, 5v needs to be provided to the bus-side for the RS485 chip to receive power by shorting SJ3.


 Programming the ChainDuino (ICSP & FTDI headers)

The ChainDuino features the standard 6 pin ICSP header found on the Arduino, and also the same FTDI header found on the Arduino Pro.  The ChainDuino ships with the Arduino UNO bootloader, and may have a chainduino sketch depending on the quantity of boards in your order.  It is recommended to use the Arduino ICSC library for RS485 half-duplex communication via the onboard UART, but there are many other libraries that provide similar functionality such as the various Modbus libraries.

The Arduino Inter Chip Serial Communication library can be found here.
Link to library: Arduino Inter Chip Serial Communication Library


RJ45 Cat5 Cable Wiring

It is recommended to use EIA/TIA standard 568b for the ChainDuino, as shown below.  This is the same wiring configuration found in most Ethernet patch cables.  Solid wire is highly recommended for runs longer than 200 ft.


 IDC Cat5 Cable Wiring (insulation displacement connector)

By using the included IDC connector, you can connect a ChainDuino node to an existing Cat5 cable, without cutting the wire.  Also worth noting is that since the cable is not severed when using the IDC connector, the node can also be removed later without interrupting the operation of the bus.  Solid wire is highly recommended for runs longer than 200 ft.


RS485 Termination & Bias Resistors (revise)

RS485 networks can sometimes require termination and bias resistors to avoid problems caused by “reflections” and mild interference from various external factors.  For most cases, you will NOT need to adjust any dip settings, even for runs of several hundred feet.  However, if you do experience dropped packets, especially on very long runs, the appropriate resistors needed are built-in to every ChainDuino unit.

Termination resistors (dip3 or SJ8): The first remedy you should try is enabling the termination resistors.  The termination resistors should only be enabled at the ends of the bus, so this would be on the first and last node ONLY.  To enable the termination resistor on the end nodes, move the dip switch 3 to the on position (usually up towards the RS485 chip).  Optionally, you can also enable the same resistor by shorting SJ8 on the bottom of the board.  Some ChainDuino models may not have the dip switch populated.

Bias Resistors (dip2+dip4 or S7J+SJ9): The 2nd remedy you can try to improve performance is by enabling the bias resistors on ONLY 1 node.  We recommend the node FARTHEST from the power supply.  Do not enable these on more than 1 node to stay within RS485 specs.  The bias resistors can be enabled by dip switches 2 + 4.  Optinoally, you can enable the same resistors by shorting SJ7 + SJ9 on the bottom of the board.  Some ChainDuino models may not have the dip switch populated.


WS2812b RGB LEDs (A1 by default)

The ChainDuino has (2) WS2812b RGB LEDs onboard.  Most ChainDuino boards have the RGB LEDs connected to A1 by default, but can be tied to other Arduino pins easily with solder joints on the bottom of the board.  The pin options are PD5, PD6, PD7, and A1 (sometimes manually soldered to A1 prior to shipment).
Warning: connecting any of the user customizable connections to more than (1) Arduino pin WILL ruin both of those pins.  Be sure to disconnect default connections before connecting to anything else!

Note: WS2812b RGB 5050 LEDs will use over 50mA each on full white brightness.  Using both of these at full brightness white would put an extra 100mA load on your bus, please keep this in mind when using lots of nodes.  In most cases, a brightness value on each color of less than 50 (of 255 max) will be more than enough.  This works out to about 20% power if you are using all 3 colors (white) or less than 7% of full power if you use a single color.

We recommend the Adafruit Neopixel library to control these LEDs, but there are many other options.
Link to library: Adafruit NeoPixel Library


Voltage Divider (optional pin A0 via SJ5)

Since the ChainDuino bus can span very large distances which can cause a voltage drop over the Cat5 cable, it can be useful to know the voltage of a remote ChainDuino node. On non-isolated nodes (nodes powered by the bus) a voltage divider circuit is available to tie to an analog Arduino pin (A0). The voltage divider circuit uses 1m & 100k ohm resistors and a ratio of 11:1. The voltage divider is NOT connected by default. The circuit is cable of measuring DC voltage up to 55 volts. For example, 55 volts would read 5v on the analog pin, etc.

Note: The voltage divider is designed for non-isolated nodes that share power with the cat5 bus power. If you enable this feature on an isolated node, you will simply be reading the voltage of the local power supply of the node, and not the voltage of the bus.

The schematic for this circuit is based on an article from Starting Electronics
Link to article: Measuring Voltage with Arduino

i2c Header & Pullup Resistors (optional via SJ10)

There is a 4pin i2c header has the following pinout, from the ATMEGA chip, GND, 5v, SDA, SCL.

Optional 4.7k resistor pull-ups can be connected to the i2c pins AD4 and AD5 by closing the the 3-way solder joint SJ10.

Vin to Shields (optional via SJ4)

The 24v power rail from the bus is not connected to the Arduino Vin pin by default since some shields may be expecting 12 volts or less.  You can connect this pin manually with SJ4.

 SMD Assembly Guide


Design Files

The schematic needs some work, but here are the design files for anyone who needs them in the mean time.

ChainDuino 3.1.1 Design files (eagle cad 7)

Additional Information

Galvanic Isolation

Isolated RS485 IC, Non-isolated RS485 IC (subtract $4.00)

Assembly & Parts

Fully Assembled, SMD only + RJ45 Kit (subtract $6.00), SMD only + IDC kit (subtract $8.00)


There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.