BeagleBone Black bringt die Einfachheit der Arduino-Konnektivität zu Embedded Linux
Zur Verfügung gestellt von Europäische Fachredakteure von DigiKey
2013-09-18
Das Raspberry Pi hat seit seiner Markteinführung im vergangenen Jahr einen wesentlichen Beitrag zur Elektronik-Industrie geleistet. Ursprünglich als kostengünstiger Computer für den Einsatz im Unterricht positioniert, wurde es schnell von professionellen Ingenieuren als Prototypen- und Evaluierungsplattform im Mainstream-Elektronikmarkt entdeckt. Neben der Verwendung im Unterricht zur Vermittlung der Computertechnik, hat das Pi eine große Fangemeinde von Elektronik-Enthusiasten und Bastlern, etwas, das in dieser Form seit einer sehr langen Zeit nicht mehr gesehen wurde. Angesichts des "Aufruhrs", den das Pi erzeugt hat, wäre es leicht zu glauben, dass nichts ähnliches in der Vergangenheit zur Verfügung stand. Doch ähnliche Boards, wie etwa das Arduino, stehen seit langer Zeit zur Verfügung und haben einen großen Kundenstamm mit einer starken Gemeinschaft von Web-basierten Programmierressourcen, um die Entwicklung zu unterstützen. Es gibt natürlich einige grundlegende Unterschiede zwischen den beiden Platinen. Das Arduino verwendet einen 8 Bit AVR-Mikrocontroller von Atmel, bietet ausreichend IO zur Verbindung mit realen Anwendungen und enthält zusätzlich eine extrem einfach zu bedienende integrierte Entwicklungsumgebung (IDE). Das Arduino ist ein idealer Ausgangspunkt, um nicht nur eingebettete Mikrocontroller-Programmierung mit Hilfe einer C-ähnlichen Sprache sondern auch die Grundlagen der Elektronik zu lernen. Im Gegensatz dazu verwendet das Raspberry Pi einen 32 Bit ARM®-basierten SoC und ist mehr auf die Vermittlung der Grundlagen von High-Level-Computersprachen und Betriebssystemen, wie Linux, in Schulen und anderen höheren Bildungseinrichtungen konzentriert. Linux-Unterstützung steht auf einer Vielzahl von Embedded-Entwicklungsplatinen zur Verfügung und bietet viele Vorteile gegenüber weniger leistungsfähigen 8 Bit Boards. Es bringt auch die Möglichkeit, den Prozessor für mehrere laufende Programme und Tasks zu teilen. Ein Linux-basiertes Beispiel ist das Beagleboard-XM, eine echte Open-Source-Entwicklungsplatine, unterstützt von Texas Instruments. Allerdings ist es die neueste Linux-Entwicklungsplatine von Texas Instruments, die erhebliches Interesse erregt. Die BeagleBone Black, eingeführt im April 2013, wird als ernsthafte Konkurrenz zum Raspberry Pi betrachtet. Sie ist durch die Verbindung und Interaktion mit realen Anwendungen eine ideale Plattform für das Erlernen des Umgangs mit Linux und zum Erlernen der Grundlagen der Elektronik. Das BeagleBone-Format, Ende 2011 ins Leben gerufen, beinhaltet nicht nur die meisten der Fähigkeiten des Beagleboard-XM in einem kleinen Kreditkartenformat, sondern enthält auch zwei zweireihige 46-polige Anschlüsse mit Standard-Footprint für eine Reihe von Erweiterungsmodulen, die auch als "Capes" bezeichnet werden. Ähnlich wie die mit dem Arduino verwendeten "Shields", bieten sie eine Vielzahl von Plug-in-Boards um die I/O-Möglichkeiten zu erweitern.

Die BeagleBone Black bietet einen TI Sitara™ AM3359 ARM-Cortex-A8-Mikroprozessor mit 1 GHz (2000 DMIPS), die Raspberry Pi dagegen nur 720 MHz. Beachtenswert ist, dass die Black zusätzlich zu den 512 MB DDR3 bei 400 MHz auch über einen integrierten 2 GB Flash-Speicher verfügt. Ein Mikro-HDMI-Stecker (Typ D), Ethernet- und USB-Ports sind ebenfalls enthalten. Die Platine wird zudem über eine einzige 5 V DC-Stromquelle versorgt. Die Stromversorgung kann zudem auch über den USB-Anschluss erfolgen, da der Verbrauch nur max. 250 mA beträgt.
Die Black-Platine verfügt über eine umfangreiche vorinstallierte Software und ist sofort einsatzfähig. Sofort nach Anschluss von Strom, HDMI, Ethernet und USB-Tastatur/-Maus startet die Platine die Angstrom Linux-Distribution, anschließend wird der Gnome-Desktop angezeigt. Während des Boot-Vorgangs leuchten die 4 benutzerseitigen LEDs (USR0 – 3) auf und bestätigen die Aktivität. Mit den drei bereitgestellten Browsern (Chromium, Firefox und Epiphany) können Sie innerhalb von Sekunden im Internet surfen. Es gibt keine Notwendigkeit eine Flash-SD-Karte einzufügen und mit dem Download der Distribution zu jonglieren, bevor Sie das Board zum ersten Mal laufen lassen können, wie es beim Raspberry Pi erforderlich ist. Angstrom Linux ist für die meisten Entwickler und Enthusiasten zwar die richtige Wahl, die Black-Platine kann dank der ARM v7-Architektur, die in dem Cortex-A8-basierten Gerät verwendet wird, jedoch auch mit Ubuntu oder Android laufen. Ein weiteres Argument für die Verwendung von Linux auf einer Entwicklungsplatine ist die zusätzliche Konnektivität, die durch die Ethernet-Schnittstelle geboten wird. Daher bietet die Verwendung von FTP, SSH, Telnet und anderen Remote-Access-Diensten eine große Flexibilität bei den Verbindungen und die Möglichkeit der Verbindung mit dem Black-eigenen Webserver.

In Bezug auf die Entwicklungswerkzeuge ist das Black ebenfalls gut ausgestattet. Ein Python-Interpreter und C/C++-Compiler sind vorab geladenen, zusammen mit einer lokalen Replik der Cloud9-IDE, die für die Ausführung von Node.js vorkonfiguriert wurde. Weiterhin ist die auf Node.js basierte Bonescript Library enthalten, die eine Reihe von mit Arduino vergleichbaren Funktionen für die Verbindung mit der Hardware bietet. Allen Nutzern, die die Funktion „digitalWrite“ von Arduino kennen, werden diese und ähnliche Funktionen, die in Bonescript enthalten sind, bekannt vorkommen. Die Community auf beagleboard.org stellt eine nützliche Ressource für Projektbeispiele, hilfreiche Foren und Hardware-/Software-Dokumentation dar.

Diese Werkzeuge und die Möglichkeit, seine umfangreiche GPIO zu verwenden, machen das Black zu einer idealen Plattform für den Einsatz in der IT-Ausbildung und für das Erlernen der Grundlagen der Elektronik. Die BeagleBone Black bietet insgesamt 92 verfügbare Pins in den doppelreihigen Stiftleisten P8 und P9. Mit bereits mehr GPIO verfügbar, als auf dem Arduino oder Raspberry Pi, dienen diese Steckleisten auch als Verbindungen zu den Erweiterungs-"Capes". Die Pins können viele verschiedene Funktionen übernehmen – von der Steuerung von I/O, dem Lesen von Sensoren, dem Betrieb von Relais bis hin zur Steuerung von LEDs. Diese Capes sind von einer Vielzahl von Drittanbietern verfügbar und bieten alles, von einer einfachen Brettschaltung und einem LCD-Bildschirm bis hin zu einem umfassenden Cape, das in Projekten für die Steuerung von Unterwasserfahrzeugen eingesetzt wird. Die Community-Site beaglebonecapes.com, von CircuitCo, dem Hersteller des BeagleBone Black, angeboten, führt eine Liste kompatibler "Capes", die als getestet und voll kompatibel bewertet wurden. Technisch gesehen können bis zu 4 Capes aufeinander gesteckt werden, solange sich keine Konflikte in der GPIO-Verwendung ergeben. Auch ist zu beachten, dass es für die GPIO mehrere Möglichkeiten gibt, konfiguriert oder gemultiplext zu werden. Verschiedene Betriebssysteme können die GPIO in verschiedenen Modi betreiben. Die Standard-Multiplexmodus mit Angstrom Linux ist Modus 7. Der Linux-Signalname für einen bestimmten Pin ist nicht der gleiche wie die auf der Platine markierte Pin-Nummer.
Die einfachste Möglichkeit, mit dieser GPIO zu experimentieren, ist die Verwendung der Cloud9 IDE. Cloud9 startet automatisch beim Booten, und der Zugriff erfolgt über den Black-eigenen Webserver. Der Epiphany-Browser scheint die IDE beim Start automatisch zu finden, aber jeder Browser kann auf Port 3000 der IP-Adresse des BeagleBone Black eingestelllt werden. Die Anwendung ist zwar mit der IDE von Arduino vergleichbar, allerdings muss hier kein Code auf die Platine geladen werden. Er wird automatisch im Dateisystem gespeichert. Der Webserver von Black bietet mehrere nützliche Seiten, über die Sie Zugriff auf die Cloud9 IDE und einige einfache Bonescript Code-Beispiele erhalten, die interaktiv mit der Platine verwendet werden können.

Wie die meisten traditionellen IDE für eingebettete Anwendungen verfügt auch Cloud9 über Arbeitsbereiche für die Bearbeitung, Validierung, das Debuggen und Testen von Code. Das Schreiben von Code ist ein interaktiver Prozess, der die Prüfung von Variablen und Syntax während der Eingabe umfasst. Der Debug-Prozess ist weit anspruchsvoller als der des Arduino, mit dem vollen Gebrauch von Haltepunkten, Watch-Variablen und Einzelschrittausführung. Cloud9 bietet eine Vielzahl einfacher Beispiele, die in node.js JavaScript geschrieben wurden und die Bonescript Library umfassen. Das Code-Beispiel „blinked.js“ (siehe Abbildung 5) aktiviert eine der benutzerseitigen LEDs (USR3). Dies kann auf die Verwendung einer der GPIO-Pins erweitert werden, indem eine LED und ein zugehöriger Pullup/Strombegrenzungs-Widerstand dem entsprechenden GPIO-Pin hinzugefügt und die Zuweisung von ledPin zum jeweiligen GPIO geändert wird, z.B. bone.P8_3. Als Einstiegs-IDE bietet die Cloud9 eine schnelle und einfache Möglichkeit, kurze Code-Projekte zu schreiben, diese auszuführen und zu debuggen. Das An-/Ausschalten einer LED scheint zwar eine einfache Aufgabe zu sein, es ist jedoch ein wichtiger Schritt, um sich mit der Platine umfassend vertraut zu machen. Dies betrifft insbesondere Software-Entwickler, die sich zum ersten Mal mit Entwicklungen von Praxisanwendungen beschäftigen.

Die Verwendung von node.js JavaScript scheint die bevorzugte Art der Programmierung der BeagleBone Black zu sein. Sie bietet jedenfalls eine einfache Einführung für alle, die nicht mit Programmierung oder anspruchsvolleren Programmiersprachen vertraut sind. Sie stellt aber auch eine einfache Möglichkeit dar, schnell einen Prototyp zu entwickeln. Wer jedoch über eine größere Programmierungserfahrung verfügt und auf ein komplexeres Design aus ist, kann auf die unterstützten Programmiersprachen Python und C zurückgreifen. So wie Bonescript die mit Arduino vergleichbaren digitalen und analoge I/O-Befehle in node.js hinzufügt, ist die PyBBIO Library für Python-Entwickler verfügbar.
Auf die GPIO kann zudem direkt aus dem Linux-Betriebssystem heraus zugegriffen werden. Dies kann direkt über die Platine oder über Remote-Zugriff via SSH erfolgen. Es erfordert zunächst eine korrekte Linux-Signalbezeichnung, die von einem speziellen GPIO-Pin erkannt wird. Weiterhin erfordert es fundierte Kenntnisse über die Arbeit auf Linux-Befehlszeilenebene. Jede GPIO-Pin verfügt, wenn sie verwendet wird, über ein Verzeichnis im Parent-Verzeichnis /sys/class, das die Linux-Signalbezeichnung enthält. So können potenzielle Signal/GPIO-Konflikte erkannt werden, wenn eines oder mehrere Capes verwendet werden. Steckverbinder P8 - Pin 16 wird als GPIO46 (siehe Abbildung 6) identifiziert. Im Screenshot ist zu erkennen, dass kein Verzeichnis gpio46 vorhanden ist, daher ist das Signal zur Verwendung verfügbar. Bei der Steuerung einer LED, die mit dem Pin verbunden ist, können Sie diese durch Hinzufügen einer 1 in die Linux-Wertetabelle anschalten und mit 0 abschalten. Vergessen Sie nach der Verwendung nicht, den Export des Verzeichnisses rückgängig zu machen (‘unexport’), um die Verwendung des Pins freizugeben. Diese Shell-Befehle können auch in die Python-Anweisungen aufgenommen werden.

Egal ob Sie ein unerfahrener Entwickler eingebetteter Anwendungen sind, der ein neues Projekt durch Verwendung einer hervorragend dokumentierten Open-Source-Plattform beschleunigen möchte, oder ein Elektronikenthusiast, der nur etwas Spaß haben will, die BeagleBone Black stellt eine hervorragende Auswahl dar, auf der Sie Ihre Designs aufbauen können.
Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.




