Mehr »PS« für Arduino-Plattform • Teil 1 Arduino32: Die jungen Wilden

Die seit Jahren erfolgreiche Arduino-Plattform hat sich längst über die Maker-Szene hinaus im semiprofessionellen und professionellen Umfeld etabliert. Arduino, Raspberry Pi und Co. sind tragende Säulen der Bewegung. In diesem zweiteiligen Beitrag stellen wir Ihnen interessante Kandidaten vor.

Im Beitrag »Maker – Startups – Unternehmen« (Ausgabe 1+3/2016) war beispielhaft gezeigt worden, welche innovativen Anwendungen durch Startups entwickelt werden, wenn sie auf einer breit verfügbaren Basis aufsetzen und sich so auf ihr Kern-Know-kow konzentrieren können [1].

Viele Anwendungen konnten mit dem auf dem Atmel ATmega328 basierenden Arduino schnell und erfolgreich umgesetzt werden, bei manchen machten sich die begrenzten Ressourcen bemerkbar. So war es nicht weiter verwunderlich, dass die Suche nach mehr Rechenleistung und Vernetzung unter Beibehaltung des generellen Konzepts begann. Das Resultat ist eine weiter gewachsene Arduino-Familie, die hier und jetzt näher betrachtet wird mit Schwerpunkt auf den Erweiterungen durch leistungsfähigere 32-bit-Prozessoren. Die Arduino-Kompatibilität wird hingegen eher weiter gefasst verstanden.

Arduino-Familie

Bislang waren wir gewohnt: Arduino-Boards kamen aus Italien. Wer auf eBay nach alternativen Angeboten suchte fand diverse Clones – nicht nur aus China. Mittlerweile sorgen aber die Ardunio-Väter ihrerseits für Verwirrung, weil sich Entwickler und Produzenten im Geiste nicht mehr einig sind. Wer sich den Zwist zumuten will, sei auf [2] verwiesen.

Da es sich im Wesentlichen um einen Streit um Namensrechte handelt, sind die Inhalte vorerst kaum betroffen. Aus besagten Gründen bietet die amerikanische arduino.cc ihre Boards außerhalb der USA mit dem Namen Genuino an. Die Hardware ist unverändert. Dass aber auch das nicht so bleiben muss, zeigen die Äußerungen in [3]. Hingegen bleiben bei der italienischen arduino.org die Bezeichnungen unverändert.Wenn man heute auf die Websites der beiden Arduino-Lager schaut, kann man das in der Tabelle zusammengestellte Typenspektrum mit Gemeinsamkeiten und Unterschieden sehen. Übersprungen wurden die Varianten, die sich nur durch die Bauform unterscheiden (Micro, Mini, LilyPad).

Bei den Grundvarianten gibt es weiterhin Gemeinsamkeiten beider Hersteller. Die hier interessierenden 32-bit-Arduinos stehen einmal auf Basis eines ARM-kompatiblen Mikrocontrollers (Cortex-M0+ oder Cortex-M3) zur Verfügung oder bauen auf einem Linux-Device auf.

Entweder wird ein ATmega32u4 oder ein Cortex-M0 mit einem Atheros AR93xx-SoC kombiniert oder aber gleich auf eine leistungsfähigere Plattform, wie Intel (Quark oder Atom) gesetzt und die Arduino-Funktionalität dort implementiert. Der auf dem Curie-Modul von Intel aufbauende Arduino 101 und der UDOO NEO implementieren die Arduino-Funktionalität auf einem eigenen Core eines Dual-Core-SoC.

Was bringt Arduino32?

Bei der Vorstellung der leistungsfähigen 32-bit-Arduinos gibt es zwei Klassen. Zum einen sind da in erster Linie Arduinos, die mit Hilfe der Arduino-Entwicklungsumgebung programmiert werden können, und auf diese Weise ein einfaches Performance-Upgrade für bestehende Arduino-Anwendungen zulassen. Die zweite Klasse der Controller erschließt sich mit dem Arduino-Formfaktor das Universum der Arduino-Shields, wird selbst aber mit Hilfe einer anderen Entwicklungsumgebung programmiert.

Die in diesem Abschnitt betrachteten Mikrocontroller weisen alle einen 32-bit-Controller auf und sind mit der Arduino-IDE programmierbar. Gegebenenfalls ist mit dem Boardmanager noch der gewünschte Arduino in der Arduino-IDE zu integrieren.

Zur Kennzeichnung der erweiterten Rechenleistung der 32-bit-Arduinos wird das schon in der Vergangenheit verwendete »Sieve of Eratosthenes« als Benchmark herangezogen. Ein Kriterium für den hardwarenahen Einsatz ist das Schaltverhalten der digitalen Pins (GPIO): Ein einfacher Test, der einen Ausgang periodisch ein- und ausschaltet und so den zu untersuchenden Signalverlauf erzeugt.

Arduino Zero/M0/M0-Pro

Im Arduino Zero oder Arduino M0/M0 Pro steckt ein Atmel ATSAMD21G18, das ist ein 32-bit-ARM-Cortex-M0+, der mit 48 MHz getaktet wird. Der Speicher setzt sich aus 256 KB Flash und 32 KB SRAM zusammen. Mit 16 KB Flash wird ein EEPROM emuliert. Zu beachten ist die auf 25.000 limitierte Anzahl der Schreibzyklen des Flash-Speichers [4].

Der Arduino M0 und Zero/M0 Pro unterscheiden sich durch eine beim Zero/M0 Pro implementierte Debug-Schnittstelle. Der Embedded-Debugger (EDBG) von Atmel implementiert ein Interface, um den SAMD21 zu programmieren und den Speicher zu überwachen. Durch die Verwendung des Cortex-M0+ verfügt dieser Arduino über eine stattliche Peripherie. Ein sechskanaliger 12-bit-A/D-Wandler steht neben 
einem 10-bit-D/A-Wandler für analoge Aufgaben zur Verfügung. Zehn Ausgänge können eine 8-bit-PWM bereitstellen und mehrere UARTs, SPI und TWI (I2C) dienen als Standard-Schnittstellen zur Kommunikation mit weiteren Peripheriekomponenten. Zusätzlich weist Arduino Zero/M0/M0 Pro noch eine 32-bit-Echtzeituhr mit Clock- und Kalenderfunktion sowie einen 32-bit-CRC-Generator auf.

Arduino Due

Der Arduino Due verwendet einen Atmel AT91SAM3X8E Mikrocontroller basierend auf einem 32-bit-ARM-Cortex-M3. Getaktet wird die CPU mit 84 MHz. Der Speicher setzt sich aus 512 KB Flash-Speicher und 96 KB SRAM zusammen. Der AT91SAM3X8E weist vier Hardware-U(S)ARTs auf. Über den Native-USB-Port kann dieser Arduino seriell kommunizieren oder stellt einen USB-Host zum Anschluss von Maus, Tastatur und anderer Peripherie zur Verfügung. SPI und TWI (I2C) werden ebenfalls unterstützt [5].

SmartEverything Fox und Radino32

SmartEverything Fox wurde als IoT-Plattform entwickelt. Die Spezialität dieses Boards liegt weniger bei der CPU, hier kommt ein ATSAMD21-Cortex-M0+ zum Einsatz, sondern bei der von diesem Board gebotenen Peripherie (Atmel Crypto Authentication Chipset, Sigfox-Modul, GPS-Modul mit eingebetteter Antenne, Sensoren für Annäherung, Druck rel. Feuchte, Temperatur, Position in Koordinatenraum sowie Interfaces zu NFC, NTAG und Bluetooth Low Energy) [6].

Die Radino-Module der Dresdner Firma In-Circuit sind allesamt Arduino-kompatible Funkmodule. Als CPU dient entweder ein Atmel ATmega32U4 oder ein STM32L151CC, das ist ein 32-bit-ARM-Cortex-M3 von STMicroelectronics, kombiniert mit diversen Funkmodulen wie Wifi oder BLE. Die Funkstrecken sind für die Betrachtungen hier weniger wichtig, obwohl gerade diese für IoT-Anwendung von vorrangiger Bedeutung sind.

Ein kompaktes Radino32-WiFi-Modul ist in Bild 1 zu sehen. Bauform und Pinbelegung aller Radino-Module sind identisch, so dass diese Module hervorragend für die Systemintegration vorbereitet sind. Getaktet wird die CPU mit 24 MHz. Der Speicher setzt sich aus 256 KB Flash, 32 KB RAM und 8 KB EEPROM zusammen.

Vom STM32L151CC wird eine reichhaltige Peripherie bereitgehalten, die von 23 multi-funktionalen GPIOs zur Verfügung gestellt wird: 10-kanaliger 12-bit-A/D-Wandler, ein 12-bit-D/A-Wandler, 15 PWM-Ausgänge, USB 2.0, 3 x USART, 3 x SPI, 2 x I2C, 11 x Timer, CRC, 96-bit-Unique-ID. Zur Installation der Bibliotheken, sie gewährleisten die Arduino-Kompatibilität enthalten aber auch Anwendungsbeispiele, sei auf die Website und das Wiki des Herstellers verwiesen [7].

Für die einfache Inbetriebnahme und die Kontaktierung von Arduino-Shields bietet In-Circuit ein Trägerboard an, das zur Kontaktierung aller Radino-Module geeignet ist. Bild 2 zeigt ein Leonardo-Modul mit RadinoWiFi und RP-SMA-Antenne.

Intel Galileo Gen 2

Galileo ist ein Mikrocontroller-Board, das einen Intel Quark SoC X1000 aufweist, was immerhin eine CPU der 32-bit-Intel Pentium-Klasse ist. Das Galileo-Board verfügt neben den Arduino-I/O-Schnittstellen über eine Reihe von Standard-PC-I/O-Ports wie einen mini-PCI-Express-Slot, einen Ethernet-Port für 100 MBit, Micro-SD-Slot, RS-232- sowie USB-Host- und USB-Client-Port. Bild 3 zeigt das Intel-Galileo-Gen-2-Board [8]. Die Buchsenleisten zum Kontaktieren von Arduino-Shields sind deutlich zu sehen und verdeutlichen die Größe des Boards. Das Galileo-Board ist kompatibel zur Arduino-IDE, kann aber auch mit Hilfe der Intel-XDK-IoT-Edition oder der Eclipse-IDE programmiert werden.

Bei der Installation der Galileo-Umgebung muss man beachten, dass man mit dem Galileo ein komplettes Linux-Device vor sich hat und sich deshalb strikt an die Installationsanleitung von Intel halten sollte [9]. Das herunterzuladende Installationsprogramm installiert die Arduino IDE und das zum Beschreiben der SD-Card erforderliche Programm Win32-Disk-Imager. Das Schreiben der SD-Card selbst muss dann aber noch separat erfolgen.

Die Arduino-Funktionalität wird auf dem Intel Galileo emuliert und zeigt damit ein durchaus unterschiedliches Laufzeitverhalten gegenüber einem auf einem Mikrocontroller ohne Betriebssystem (bare metal) laufenden Arduino-Programm [10].

Intel Edison

Beim Intel Edison handelt es sich um ein SoC, das die folgenden Komponenten aufweist: Dual-Core-Intel-Atom-CPU (getaktet mit 500 MHz), Intel-Quark-Mikrocontroller (getaktet mit 100 MHz), 4 GB eMMC Flash, 1 GB RAM, Broadcom 43340 802.11 a/b/g/n Dual-Band-WiFi (2,4 GHz und 5 GHz) mit Onboard-Antenne sowie Bluetooth Low Energy 4.0 (BLE). Mit dieser Ausstattung ist alles vorhanden, was für ein IoT-Device erforderlich ist. Bild 4 zeigt das kompakte Intel-Edison-SoC mit den Maßen 35,5 mm × 25,0 mm x 3,9 mm [11].

Ein 70-poliger Hirose-Stecker der DF40-Serie verbindet das Computermodul mit einem Trägerbord. Das »Intel Edison Board for Arduino« ist eine solche Möglichkeit und es können so in Kombination mit den entsprechenden Arduino-Shields Arduino-Sketches abgearbeitet werden. An den Arduino-Buchsenleisten ist die Funktionalität weitgehend kompatibel zum Arduino Uno. Außerdem steht auch ein komplettes Linux-Device mit WiFi und BLE zur Verfügung.

Die Arduino IDE sollte aber nicht darüber hinwegtäuschen, dass auch auf dem Edison-Arduino-Board weder jedes Arduino-Shield funktioniert, noch jeder Arduino-Sketch oder jede Arduino-Bibliothek. Zum Laufzeitverhalten gilt das Gleiche, was schon zum Intel Galileo vermerkt wurde [10]. Das dürfte einer der Gründe dafür sein, dass Intel neue, eigene Entwicklungsumgebungen favorisiert: Eine IDE mit dem etwas sperrigen Namen »Intel XDK IoT Edition« für die Programmierung mit Node.js und die genauso kryptisch benannte IoT DK-IDE, bei der es sich um ein konfiguriertes Eclipse-Kepler handelt – inklusive Cross-Compiler-Werkzeugen [12].

Voraussichtlich in der nächsten Ausgabe von DESIGN&ELEKTRONIK präsentieren wir Ihnen weitere Module und die Benchmark-Ergebnisse für alle beschriebenen Varianten.

Über den Autor: 

Dr. Claus Kühnel

war vor seiner Pensionierung bei QIAGEN Instruments für die Entwicklung von Embedded Systemen für Lab Devices verantwortlich.

Er hat diverse Bücher und Fachartikel über Entwicklungen mit Mikrocontrollern geschrieben.

 www.ckuehnel.ch.

Literatur

[1] Claus Kühnel: Maker – Startups – Unternehmen. Design&Elektronik 1/2016, S. 16–19; 3/2016, S. 36–38
[2] Arduino vs. Arduino – der Graben wird tiefer. http://www.heise.de/make/meldung/Arduino-vs-Arduino-der-Graben-wird-tiefer-2764692.html
[3] Arduino.cc Discontinues Selling the Arduino Due. http://21stdigitalhome.blogspot.ch/2016/02/arduinocc-discontinues-selling-arduino.html
[4] Arduino Zero: https://www.arduino.cc/en/Main/ArduinoBoardZero
[5] Arduino Due: http://www.arduino.org/products/boards/4-arduino-boards/arduino-due
[6] SmartEverything Fox: http://www.smarteverything.it/
[7] Radino32 WiFi: http://wiki.in-circuit.de/index.php5?title=radino32_WiFi
[8] Product Brief Intel Galileo Board: http://download.intel.com/support/galileo/sb/galileoprodbrief_329680_003.pdf
[9] Erste Schritte mit der Intel Galileo Technologie: https://software.intel.com/de-de/iot/library/galileo-getting-started
[10] Hand on with the Intel Edison: http://blog.dimitridiakopoulos.com/2014/09/10/hands-on-intel-edison/
[11] Product Brief Intel Edison: http://download.intel.com/support/edison/sb/edison_pb_
331179002.pdf
[12] Intel Edison ausprobiert: Ich seh dich – das Mona-Lisa-Projekt.