real-time nodes

ubiquitous autonomous control systems



 

What is a "real-time node"?

A "real-time node" is a module that plugs straddles an arduino control board that is chock-full of sensors, digital and analog I/O expansion, geo-location, audio interfacing and  battery charging functionality.  Let us introduce you to the first device in our range - the "FCT01"!

 

This powerful module plugs directly onto an Arduino Uno, Due, Mega or similarly compatible controller board, with the entire I/O space "transparently" bought through the board so that compatible Arduino shields can seamlessly stack.

 

 

 

Arduino I/O are not only "bought through" the module, they are also connected in parallel on the module to rugged dynamically configurable I/O expansion that can be accessed by the Arduino serial interface and controlled in sketches through simple function calls. In this way ...even the simplest Arduino can have the full I/O capability of the Arduino Mega.

 

The I/O is 3V3, capable of driving up to 16mA high and 8mA low TTL Levels. They are also capable of reliably driving 5.0V TTL logic devices. Those I/O not immediately connected to an underlying Arduino pin provides for "hot-socketing", also known as "hot-plug" or "hot-swap", which provides for tolerance to board level insertion and removal and arbitrary power up sequencing.

 

Each board has an impressive array of sensors and interfaces on board for geo-location, motion, temperature, thermocouple, communications, capacitive, reluctance, analogue to digital and digital to analogue conversion, microphone and speaker audio interfaces. It also has an inbuilt 2Amp lithium ion battery charger and automatic charging/swap over should the primary power be lost. The unit has been designed to be directly powered from the solar, or by the innovative 28V internal power supplies that can be configured to operate over the high speed serial links. The Unit can provide the power to the Arduino.  

 

 

Up until this point, the FCT01 operates like a "super-shield" - integrating a massive amount of functionality into a single design, whilst ensuring that allowance is made for using other Arduino Shields through providing for additional stacking. However ... the module comes into its own when it seamlessly breaks the "stacking" paradigm, whilst at the same time allowing a single Arduino to have access to the full capabilities of up to 10 FCT01s - all clock synchronized and designed for repeatable, deterministic, periodic sampling of the ENTIRE I/O potentially. All ten can be potentially be powered by a single FCT01 board over a proprietary power and Data sharing interface implemented on eSATA cables. This means that a single FCT01 system could potentially stretch 20m in 3Dimensional space.

Each FCT01 has a local 2amp Li-Ion recharger and associated battery interface that can recharge from the high speed serial interface. This means the units have the ability to power H-Bridge Shields and Servos or stepper motors that require high power drain peaks - operating in an "anorobic" mode. High quality, fast ADC and DAC channels improve the implementation of motor control loops over PWM.

 

Expanding the Capabilities of Arduino

 

Each FCT01 has its own low level high speed dedicated signal processing hardware for control loops, a 32bit softcore microprocessor for  reading peripherals and passing these onto the serial stream for the Arduino. If more than one arduino is required ... this is catered for as each FCT01 can have its own local Arduino plugged into it.

  

The high speed serial architecture can be likened to a 100kHz sample Loop carrying 25,000 bits of information in both directions.

There are two such interfaces in on every board - each interface having a maximum of five FCT01 modules on it. This amounts to potentially two continuous rings of data of 50kbit 100kHz samples!

Each module has a 5kbit window allocated per sample. This window contains the latest data and ownership information (who does what) - and is synchronised to a master module time stamp. The FCT01 CPU picks out the data from the stream that the Arduino wants - or monitors it against specified conditions and reports triggers to the arduino. There are many low level services on each card performing high speed tasks like PWM, UART or SPI that can be configured onto I/O ports - eliminating the need for high speed intervention by the Arduino. Likewise for a number of "generic PID controller algorithms" which can take any ADC input and send it to any DAC output IN THE SYSTEM. The coefficients associated with each PID controller are totally configurable by the Arduino - again eliminating the low level high performance task - whilst retaining the capability.

 

 

STILL UNDER CONSTRUCTION ...