This is one of my electronics projects and it is currently a work in progress.

SimpliciNet -- A Simple Network for Inexpensive Microcontrollers

Table of Contents

Introduction

SimpliciNet is is a simple and easily implemented network architecture for connecting multiple microcontroller controlled devices to the internet through a host computer. The overall goal of SimpliciNet is to encourage more devices that have embedded microcontrollers in them to become network available (albeit through a surrogate host computer.) Both the hardware and software footprint for SimpliciNet devices is quite small.

The overall SimpliciNet architecture diagram is shown below:

SimpliciNet Architecture
A SimpliciNet network consists a single host computer, one or more SimpliciNet hubs, and one or more SimpliciNet devices. The SimpliciNet hub that is connected to the host computer via an RS-232 cable is called the root hub. All other SimpliciNet hubs and devices are connected together using standard Catagory 5 (4 twisted pairs) cables with RJ-45 connectors on each end. The up/down link signalling uses two of the 4 pairs and power/ground use the other two pairs. Thus, SimpliciNet devices that do not need much power, can get all of the power from their SimpliciNet hub; thereby eliminating the need to provide an additional power connection. The host computer runs a piece of software called the SimpliciNet server that talks TCP/IP streams on one end and the SimpliciNet protocols over the dedicated RS-232 serial port on the other end. Since the SimpliciNet server supports the full TCP/IP protocol, the applications are not constrained to reside the host computer, they can reside anywhere on the internet provided there are no intervening firewalls that get in the way.

The basic reason behind SimpliciNet is to have a very low software and hardware footprint. The hardware footprint is a single RS-422 receiver, a single RS-422 driver, a termination resistor, and a female RJ-45 socket. In addition, many SimpliciNet devices can forgo having a power supply plug, since power can be obtained from SimpliciNet hub via the catagory 5 cable. The software foot print inside the SimpliciNet enabled device is quite small as well.

The word SimpliciNet is a contraction of the words SIMPLICity and NETwork. The primary goal in picking the name to not infringe on somebody else's trademark. When I searched for the word in Google®, there were no matches for the word SimpliciNet.

SimpliciNet Catalog

For my convenience, I am keeping a short catalog of SimpliciNet enabled devices listed below:

Hub7
The Hub7 is a 7-port SimpliciNet hub.
Extensible Programmer
The EMDP1 (Extensible Mulitple Device Programmer version 1) is a device that is meant to program a multitude of different integrated circuits.
CNC Controller
My CNC (Computer Numerical Control) project provides a stepper motor controller for small table top mills and lathes.

Hardware

The SimpliciNet hardware is divided into device connect hardware and hub hardware. The device connect hardware is discussed first, followed by hub hardware.

Device Connect Hardware

The basic hardware required for connecting a piece of electronic hardware to SimpliciNet is shown below:

Basic SimpliciNet Connection
Power and ground come in on RJ45 connector N1 pins 1&8 and 2&7 respectively. They are connected to the Vin and GND pins of U3 a low drop out 5-volt voltage regulator along with filter capacitors C1 and C2. The U4 microcontroller TX pin U4 is connected to the U2 line driver pin 1. The U2 differential output pins 2&3 go to the N1 up link pins 4&5. The N1 differential down link pins 3&6 are fed to U1 line receiver pins 1&2 along with the 110 Ohm termination resistor R1. he U1 line driver output is fed to the RX pin of the U4 microcontroller.

Sometimes it is desirable to provide the ability to connect up to either SimpliciNet or directly to an RS-232 port. This requires a couple of extra chips as shown below:

Basic SimpliciNet and RS-232 Connection
{Description goes here}

{This needs to be upgraded to use the 75xxx chip.} Pretty much any RS-422 or RS-485 line driver and receiver chips will work. I typically use DS26LS31's and DS26LS32's because I can get them from Jameco for about $.80 each.

Hub Hardware

There are potentially two kinds of Hubs, a root hub and a non-root hub. A root hub has an RS-232 connector for communicating with the host computer. A non-root hub uses an RJ-45 uplink connector with a Catagory 5 inteconnect cable to talk to the hub above it. A combination hub has both connectors.

The T658A Catagory 5 wiring specification specifies:

Pin Color Pair 10BaseT SimpliciNet Up SimpliciNet Down
1 Green/White 3 TD+ U+ (Out) U+ (In)
2 Green 3 TD- U- (Out) U- (In)
3 Orange/White 2 RD+ D+ (In) D+ (Out)
4 Blue 1 PWR1 PWR1
5 Blue/White 1 PWR2 PWR2
6 Orange 2 RD- D- (In) D- (Out)
7 Brown/White 4 GND1 GND1
8 Brown 4 GND2 GND2
10BaseT uses pair 2 (receive) and pair 3 (transmit) with the other two pairs (1 and 4) left unconnected. SimpliciNet also uses pair 2 (receive) and pair 3 (transmite) for data transmission. In addition, power is put on pair 1 and ground is put on pair 4. If a cross-over cable is accidentally plugged in, no power supply shorting should occur.

To date there is only one SimpliciNet Hub design called the Hub7. The Hub7 is a combination hub. Everything about the Hub7 can be found in a dedicated Hub7 directory.

SimpliciNet Protocols

The SimpliciNet protocol is meant to have have a very low software foot print. The host procoessor is in control at all times. It is responsible for multiplixing the bus between multiple SimpliciNet devices. All communication occurs at 115.2K baud using 8N1 (1 start bit, 8 data bits, No parity, and 1 stop bit) asynchronous signaling.

A small number of codes starting at N (the value of N is TBD) are reserved for the SimpliciNet protocol.

All non-hub devices implement the following simple commands:

Command Code Direction Description
Ping N Ping Query to see if there is any device present
N Receive
Id N+1 Send Get id n byte id string
id1 Receive
... Receive
idn Receive
N Receive
Resume N+2 Send Resume connection
byte, ... Send/Receive
N+3 Send
N Receive
Ignore N+5 Send Ignore
A `ping' command just causes the non-hub device to respond in kind to show that there is a device present. The `id' command is used to find out more about the device. The format of the id string still needs to be designed. Lastly, the `Resume' command starts with a single byte to indicate that bi-direction communication with the device has resumed. After the device receives 'N+2', the device can send an receive any bytes that do not overlap the SimpliciNet command bytes. This continues until the device receives an 'N+3' byte, which causes the device to flush its (small) buffer and send a `N' byte to indicate that it is going silent again.

Hub devices have to implement a different set of commands. These commands are listed below:

Command Code Direction Description
Ping N Ping Query to see if there is any device present
N Receive
Id N+1 Send Get id n byte id string
id1 Receive
... Receive
idn Receive
N Receive
Set Level N+4 Send Set the hub depth to level
level Send
N Receive
Port Select N+5 Send Select port at level
level:port Send
N Receive
The `ping' and `id' commands are the same as the non-hub devices. After the host has ping'ed and id'ed a hub, it sends a `set level' command to tell the hub how deep in the tree it is. The `port select' command tells the hub at a given level to enable bi-directional communication with a given port. All ports at different levels ignore the command. The moment the hub recevies the `N+5' command, it immediately disables all of ...


Copyright (c) 2002 by Wayne C. Gramlich All rights reserved.