UDOO

Die perfekte Verbindung von Linux und Arduino

Seite: 3/3

Anbieter zum Thema

Kommunikation zwischen den beiden Prozessoren

Die Frage, mit der sich die meisten Ingenieure beschäftigen werden, ist die, wie die Kommunikation zwischen den beiden Prozessoren sichergestellt werden soll. Hierauf gibt es eine Reihe von Antworten, aber die einfachste Möglichkeit von allen bietet die serielle USB-UART-Verbindung, die dauerhaft vorhanden ist. Innerhalb einer Arduino-Anwendung können Daten auf den seriellen Anschluss geschrieben werden. Bei eigenständigen Anwendungen wird dies typischerweise für Überwachungs- und Debug-Anwendungen verwendet. Dies erfolgt mit der Anweisung Serial.println. Eine Linux-Anwendung wiederum kann die vorhandenen Daten lesen und geeignete Steuerentscheidungen treffen.

Alarmsystem für eine offene Kühlschranktür

Mit einem einfachen Beispiel soll die Kommunikation von einem Arduino-Skript aus zu einer auf dem i.MX6 laufenden Python-Anwendung veranschaulicht werden. Dabei handelt es sich um ein einfaches Alarmsystem, mit dem eine Kühlschranktür überwacht und geprüft wird, ob die Tür offen gelassen wurde. Ein auf der Kühlschranktür befindlicher Schalter wird mit dem digitalen Pin 2 verbunden. Anschließend schreibt das Arduino-Skript in den gemeinsam genutzten seriellen Anschluss entweder eine „0“, wenn die Tür geschlossen ist, oder eine „1“, wenn die Tür offen steht.

Gleichzeitig liest ein Python-Programm fortlaufend die seriellen Daten, um so den Status der Kühlschranktür zu bestimmen. Steht die Tür offen, sendet das Python-Programm über Gmail eine Warn-E-Mail. Nach dem Versand wird ein logisches Flag gesetzt, damit nicht fortlaufend E-Mails geschickt werden, bis die Tür geschlossen ist. Dieses Flag wird zurückgesetzt, sobald die Tür wieder geschlossen ist.

Das Arduino-Skript basiert auf dem sogenannten Digital Read-Code, der in den „Grundlegenden Beispielen“ in der IDE von Arduino enthalten ist. Die Geschwindigkeit des Anschlusses ist auf 9600 Baud gesetzt. In den Code wird eine kurze Verzögerung von 2 Sekunden zwischen dem Lesen des Schalters eingefügt. Zwischen Pin 2 und Masse wird ein Druckschalter verbunden. Nach erfolgter Eingabe des Codes kann dieser von der IDE aus auf den SAM3X8E hochgeladen werden; die Ausführung beginnt unverzüglich. Die Anwendung läuft dann bis zu einem Reset kontinuierlich.

Der Python-Beispielcode kann mit jedem geeigneten Editor eingegeben und für ein einfaches Wiederfinden auf dem Desktop gespeichert werden. Bei dieser Anwendung werden die Standardbibliotheken pySerial und smtplib genutzt. Gegebenenfalls müssen diese zunächst in die Python-Konfiguration importiert werden. Das Ganze ist eine einfache Befehlszeilenaufgabe.

Der erste Teil des Programms stellt die Anschlussgeschwindigkeit ein und beginnt mit dem Auslesen der Daten aus dem seriellen USB-Anschluss, der als /dev/ttymxc3 gekennzeichnet ist. Es sind einfach die E-Mail-Adresse, die E-Mail-Adresse des Anwenders bei Gmail sowie die Passwörter durch die eigenen Angaben zu ersetzen.

Der Python-Code kann über die Befehlszeile ausgeführt werden. Er läuft, bis er angehalten wird. Zu beachten ist, dass bei einer Verwendung der IDE von Arduino zur Überwachung des seriellen Anschlusses der Python-Code beendet wird. Das kann immerhin jedoch eine praktische Debug-Methode sein, wenn überprüft werden soll, ob der korrekte Wert in den SAM3X8E geschrieben wird.

Durch die Kombination des leistungsstarken i.MX6-Prozessors mit dem SAM3X8E von Arduino, der sich durch seine einfache Konnektivität in der Praxis auszeichnet, hebt UDOO das Einplatinencomputerdesign auf eine neue Ebene und bietet dabei Ingenieuren und Herstellern auf der ganzen Welt noch mehr Flexibilität und Kreativität.

* Ira Suku ist Direktor für den Halbleiterbereich bei Digi-Key

(ID:42921844)