Archimede: a board for industrial applications based on .NET Micro Framework

(This post was originally published on the online magazine TinyCLR.it)

Archimede Starter Kit

Archimede Starter Kit

Let’s say that Archimede is not just a card, but a suite of hardware and software components which help to create a true modular platform; the kit that we evaluated had included, in addition to the mainboard itself, the base-board, on which his mainboard, 3 I/O modules and an external card for prototyping / testing with some components assembled from “laboratory” (2 buttons, a potentiometer, a LED, a reader iButton, a temperature sensor, a serial port DB9, a brightness sensor and a buzzer), all mounted on a wooden tablet which makes the kit (as well as aesthetically pleasing) sturdy and easily transportable.

The whole thing was also accompanied by an SDK really very comprehensive and well written, and some detailed and comprehensive documentation, complete with schematics and topological, and “Getting Started” guide accompanied by instructions and photos for the installation and first test of the kit, written both in Italian and in English, a level of support that frankly we had never before seen in other cards based on the .NET Micro Framework.

Experiment board

Experiment board

Features

Already from a first visual inspection it is clear that the most suitable use of Archimede is the realization of industrial applications; this impression is mainly suggested by the DIN rail enclosure, but it is confirmed by a more detailed analysis of the components installed on the boards that make up the platform. As already mentioned, the core of the platform is the motherboard that contains, in addition to the microcontroller, USB connector for debugging, a socket for micro-SD card, a reset button and various connectors for power supply, JTAG debugger, and further expansion, including a Gadgeteer socket (not populated in the data that we have evaluated), marked on the schematic as “V / P / S / Y”.

The installed microcontroller is the well known STM32F4, variant STM32F407ZGT6 144-pin. In the standard configuration by Seletronica this is distributed with firmware derived from the open firmware of the GHI for the so-called Cerb-Family (largely made up of the base of porting Oberon Mountaineer Group). This choice, widely shared, it can benefit from the know-how and support that developed around the boards FEZ-Cerberus, FEZ-Cerb40 and FEZ-CerbuinoBee, and at the same time allows you to enjoy all the updates periodically issued by GHI. In principle, although we have not conducted tests in this sense, Archimede would allow no major problems using the firmware that equips the Netduino2 or cards Mountaineer, although any differences in terms of pinout expected may need to work on some source file-level Porting Kit before compiling an image “flashable”.

As anticipated, the mainboard is grafted to 90°, with a connector at step 0.1” to a row as long as the entire board, at the center of abase” board divided into 12 channels, each of which is constituted by a modular subset of the same data base designed to accommodate different components depending on the intended use of each of the 12 channels. Besides the possible housing of special “interface boards” produced by the same Seletronica (for RS232, 2-channel ADC, I2C / 1-Wire, DAC and double relay at this time, in addition to an interesting Ethernet module with ENCJ28 that we are still unable to evaluate), it should be reamrked that the base-board already contains two internal channels respectively populated with a relay (AZ692-071-52 dimensioned in such a way as to allow also switching power loads, being marked as 250V -8A) and a pair of opto-isolated inputs (TLP290).
As evidence of great care in the design of aspects related to the industrial use of the device, it should be noted that all of the I/O channels designed to drive digital outputs are characterized by stages of adaptation consisting of the cascade inverter with hysteresis M74HC14TTR (more suitable for others without hysteresis for use in hostile” environments by an electromagnetic point of view) and inverter modules darlington ULQ2003D1013T, as for example channel already populated with the relay (but of course the same is true for all 12 channels) provides the use of two varistors (already present in the channel pre-populated and dimensioned to around 36V / 1mA) for the “surge protection” of the load.
Supervision Demo

Supervision Demo

SDK Software

The same care and quality found in the hardware implementation of the device is in the SDK released from Seletronica to support the Archimedes platform. In particular, the SDK includes all the sources of the “driver” for the various devices as well as the enum” related to the mapping of symbolic pinout.

As an example, here is a sample that enables / disables the built-in relays respectively activating the switch red or black on the tested card. Since the experimental board the pair of terminals belonging to the “normallyopen” the relay is connected to the buzzer, this will produce a beep when you press the red button activated and deactivated by pressing the black button. As external” dependencies we have the GHI.OSHW assemblies.Hardware and, of course, Seletronica.NETMF.UPC:

using System;
using Microsoft.SPOT;
using System.Threading;
using Seletronica.NETMF.UPC;

namespace SampleToggleBuzzerThroughSwitches
{
    public class Program
    {
        static DigitalOutput _relay = new DigitalOutput(Seletronica.NETMF.UPC.Enums.Output.OUT_C11);
        static DigitalInput _switchRed = new DigitalInput(Seletronica.NETMF.UPC.Enums.Opto.OPTO_B12);
        static DigitalInput _switchBlack = new DigitalInput(Seletronica.NETMF.UPC.Enums.Opto.OPTO_A12);

        static bool _latestSwitchRedState;
        static bool _latestSwitchBlackState;

        public static void Main()
        {
            Debug.Print("Firmware Avviato");

            _latestSwitchRedState = _switchRed.IsOn();
            _latestSwitchBlackState = _switchBlack.IsOn();

            while (true)
            {
                bool switchRedOn=_switchRed.IsOn();
                bool switchBlackOn=_switchBlack.IsOn();

                if (switchRedOn && !_latestSwitchRedState)
                {
                    _relay.On();
                }
                else if (switchBlackOn && !_latestSwitchBlackState)
                {
                    _relay.Off();
                }

                _latestSwitchRedState = switchRedOn;
                _latestSwitchBlackState = switchBlackOn;

                Thread.Sleep(10);
            }
        }

    }
}

As a conclusion of this first part of the review of this amazing product we will also point out that the Starter Kit Archimede is now on sale at a promotional price of 99 on Seletronica’s site and SDK contains a sample for Windows /. NET, complete with source code, which allows to interact by a simple but effective GUI with all of the devices on the board of experimentation:

In the next part of the review we will analyze in detail the interface modules already released and deepen the issues related to programming platform aimed at the development of industrial applications.