Programmierbare Hardwarecontroller gibt es bereits seit geraumer Zeit. Leider waren diese Controller früher teuer und für Laien kaum verständlich. Die erfolgreiche Plattform Arduino hat dies geändert und selbst Anfänger haben spielerisch den Umgang mit den Programmiersprachen C / C++ und den benötigten Hardwareschnittstellen gelernt. UDOO geht einen Schritt weiter und vereint einen Computer mit einem Hardwarecontroller auf einer Platine. Damit ist es möglich, die Hardware der Platine über diverse Betriebssysteme zu steuern, was die Bewältigung komplexer Aufgaben ermöglicht.
In diesem Artikel erfahren Sie, wie die verschiedenen Komponenten von UDOO gemeinsam genutzt werden können, um Projekte aller Art zu realisieren.
Kapitelübersicht
1.Das Projekt
In diesem Artikel zeige ich ein möglichst simples Beispiel, welches dennoch alle wichtigen Komponenten von UDOO involviert. Das folgende Beispiel zeigt die Ansteuerung einer LED über eine Android-Applikation. Dazu benötigen wir eine Serverapplikation, die auf dem installierten Betriebssystem von UDOO läuft und auf Kommandos der Android-Applikation wartet. Nach Empfang des Kommandos auf dem Server muss dieses interpretiert und die entsprechende Aktion ausgeführt werden. Die Ausführung dieser Aktion wird vom Hardwarecontroller kontrolliert – es muss also die interne Schnittstelle zwischen Computer und Hardwarecontroller genutzt werden.
Um das Zusammenspiel obiger Komponenten zu gewährleisten, realisieren wir folgende Punkte:
- Android-Applikation, die Kommandos an den UDOO-Server schickt
- Rasperry-Server, welcher die Kommandos empfängt und an den Arduino-Teil des UDOO weiterleitet
- Arduino-Hardwarecontroller, welcher die Kommandos empfängt und die LED ein- oder ausschaltet
Im den folgenden Abschnitten erläutere ich Ihnen das Vorgehen zur Realisierung der einzelnen Punkte. Das folgende Schema zeigt die Idee des Projekts und die beteiligten Komponenten auf.
2.Der Hardwarecontroller
Der wohl wichtigste Schritt ist die Ansteuerung der LED durch den Hardwarecontroller, welcher eigentlich eine Arduino-Platine ist. Um eine Vorstellung zu erhalten, welche Anschlüsse der UDOO besitzt, empfehlen wir ihnen das Pinout-PDF Dokument anzuschauen.
Damit eine LED leuchtet, muss sie mit Strom versorgt werden. Die Stromversorgung einer LED bedarf in unserem Fall keiner grossen Rechnungen, da die Ausgangsgrössen von UDOO klein genug sind. Die LED kann also kurzzeitig ohne Widerstand betrieben werden, ohne dass sie Schaden nimmt. Bei einem langfristigen Betrieb der LED kann ein Wiederstand von ca. 220 Ohm eingesetzt werden.
In unserem Beispiel verwenden wir eine rote LED, welche direkt auf den UDOO Pins angeschlossen wird (Pin 13). Das längere Beinchen der LED (die Anode) muss hierbei an Pin 13 angeschlossen werden, das Kürzere (die Kathode) an den unnummerierten Pin neben Pin 13 (Ground).
Um die LED zum Leuchten zu bringen, muss lediglich eine Spannung an Pin 13 anliegen. Da wir die LED nur ein- bzw.
ausschalten möchten, unterscheiden wir ausschliesslich zwischen HIGH
(5V) oder LOW
(0V).
Der folgende Code erledigt zwei Aufgaben. Er liest laufend Daten vom Serial-Port und entscheidet dabei, ob die LED nun ein- oder ausgeschaltet werden muss. Dabei wird jeweils ein Byte gelesen und überprüft. Ist der Wert grösser als 0 wird die LED eingeschaltet (Zeile 30), ansonsten wird sie ausgeschaltet (Zeile 32).
3.Der Server
Der Server-Teil, welcher auf dem Rasperry-Teil des UDOO läuft, macht nichts anderes als Daten via Netzwerk (in unserem Fall WLAN) zu empfangen und an den internen Serial-Port weiterzuleiten. Dieser dient als Brücke zwischen dem Rasperry- und dem Arduino-Teil des UDOO.
Obwohl diese Aufgabe mit wenigen Zeilen Code lösbar ist, werden wir hier auf ein bestehendes und frei verfügbares Projekt zurückgreifen. Der Carmadillo-Server erledigt genau diese Aufgabe.
Nachfolgend der relvante Code-Teil des Cardmadillo-Servers, welcher die Daten weiterleitet. Es handelt sich hierbei
um einen Ausschnitt aus der Datei UDPReceiveCommandServer.java
.
4.Die Android-Applikation
Die Android-Applikation zeigt lediglich einen Toggle-Button an, mit welchem das Ein- bzw. Ausschaltkommando an den Server gesendet wird. Der folgende Ausschnitt zeigt ihnen die Android-Activity, welche den Button enthält und vom User bedient wird. Da diese App sehr einfach ist, verzichte ich darauf, den gesamten App-Code einzufügen.
Zusätzlich zur Activity habe ich einen Thread programmiert, welcher sich um das eigentliche Senden kümmert. Dieser Thread sendet die Daten an den UDOO.
5.Zusammenfassung
Das hier vorgestellte Beispiel dient hauptsächlich dem Verständnis und zeigt die Möglichkeiten von UDOO auf. Selbstverständlich kann die Hardware auch direkt angesteuert werden, was den gesamten Code auf wenige Zeilen beschränkt. Grundsätzlich ist das Prinzip jedoch immer gleich und mit gezeigtem Beispiel werden bereits alle relevanten Bereiche abgedeckt. Eine kurze Suche nach Arduino-UDOO-Projekten im Internet zeigt die enorme Vielseitigkeit dieser kleinen Platine. Falls Sie obiges Beispiel abgeschreckt haben sollte, dann schauen Sie die Basic Tutorials von Arduino Arduino Guides an. Sie werden sehen, dass es auch viel einfacher geht.