Nachdem ich bereits einen Arduino Uno im Einsatz hatte, stolperte ich eher zufällig über den Arduino Nano.

Bei einem Preis von aktuell 7€ bei Amazon kann man da nicht meckern.

Drei Überraschungen erlebte ich mit dem Board allerdings, auf die ich hier hinweisen möchte.

Ansonsten kann ich über den Arduino Nano nur sagen: Er tut, was er soll.
Ich hatte ihn bisher nur zum Erfassen des Luftdrucks im Einsatz, aber weitere Projekte werden folgen...

Lötkolben benötigt

Beim über den obigen Link bestellten Board musste ich die Kontaktreihen links und rechts am Board erst noch anlöten (kam zerlegt; siehe Bild). Kein Beinbruch, aber ich wollte es erwähnt haben

Treiber benötigt

Während das Arduino Uno Board, nachdem ich es per USB an den Mac angestöpselt hatte, mirnichtsdirnichts erkannt wurde, ist für das Arduino Nano-Board ein Treiber notwendig.
Während meiner Recherchen stolperte ich immer nur über einen Treiber von FTDI, der mir allerdings nichts brachte. Scheint sich in meinem Fall um ein Clone mit einem anderen Chip aus Taiwan zu handeln, bei dem dieser Treiber die Sache zum Laufen brachte.


Update: Nach meiner nächsten eBay-Bestellung hatte ich schon wieder einen anderen Chipsatz auf dem Nano-Board. Dieses Mal half dieser Treiber.
Auf jeden Fall ist es immer sehr hilfreich, bei der Treiberrecherche die Hersteller-ID des Boards, das am USB-Anschluss hängt, miteinzubeziehen. Diese ist wie im Screenshot rechts zu sehen über Apfelmenü > Über diesen Mac > Weitere Informationen... beim entsprechenden USB-Gerät zu finden.

Serielle kommunikation mit Perl


Der Nano hängt an meinem Mac und wird mit der Hilfe der Device::SerialPort::Arduino-Bibliothek von Perl-Skripten gesteuert. Einerseits habe ich ein ständig aktives Abfrage-Skript, welches die Luftdruck-Meldungen entgegen nimmt (in weiteren Ausbaustufen eingehende Meldungen per 433MHz-Funkmodul und eingehende MIRF-Meldungen), auf der anderen Seite ein Skript, das Befehle an den Arduino senden kann (z.B. zum Schalten der Funksteckdosen).

Hatte ich bisher für diese Aufgabe einen Arduino Uno verwendet, den ich nun aber anderweitig verwenden möchte, musste ein Nano diese Funktion übernehmen.
Alles im großen und ganzen kein Problem, nur die Sache mit der Befehlsübergabe vom Mac an den Nano brachte mich schier zum verzweifeln: Auf dem Nano kamen nur Hieroglyphen an. Egal, was ich am Nano- und Perl-Code änderte.

Nach Stunden des Probierens stieß ich eher per Zufall darauf, dass ich das Steuerzeichen \0 mitgeben muss. Dann funktioniert alles, wie es auch schon mit dem Nano funktionierte. Seltsam...vielleicht ein Treiber-Problem.
Wie auch immer: Hatte ich Daten zuvor wie folgt an den Arduino Nano gesendet:

$arduino->communicate("TEST123");

so muss ich für den Nano folgendes senden:

$arduino->communicate("\0TEST123\0");

Dies gilt ebenso, wenn ich Device::SerialPort statt Device::SerialPort::Arduino verwende:

$arduino->write("\0TEST123\0");

Ein weiterer Bug (?): Das erste zu sendende Zeichen sollte keine Zahl sein, sonst haben wir wieder Hieroglyphen auf dem Nano:

$arduino->communicate("\012345\0");    # <-- Kommt nicht als "12345" an
$arduino->communicate("\0X12345\0");   # <-- Kommt als "X12345" an

Vielleicht gehe ich irgendetwas komplett falsch an, aber ich hatte recht viel gegoogelt und rumprobiert und kam zu keiner anderen funktionierenden Lösung.