Archimede: a board for industrial applications based on .NET Micro Framework
(This post was originally published on the online magazine TinyCLR.it)
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.
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”.
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 “normally–open” 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.
No comments yet.