The slides from my presentation „Introduction to Arduino“ at the IoT Meetup Zurich.
Download: Introduction to Arduino (PDF, 1.2 MB)
Thanks for joining this event!
Das Blog zum Buch "Arduino Praxiseinstieg" ..
The slides from my presentation „Introduction to Arduino“ at the IoT Meetup Zurich.
Download: Introduction to Arduino (PDF, 1.2 MB)
Thanks for joining this event!
Ende Mai 2012 wurde das neuste Arduino Board, der Arduino Leonardo, inklusive der neuen IDE Version 1.0.1 veröffentlicht. Der Arduino Leonardo unterscheidet sich vom Vorgängermodellen hauptsächlich durch den anderen Microcontroller-Typen und die unterschiedliche Bauform des USB-Anschlusses. Beim Arduino Leonardo wird ein ATmega32u4 Microcontroller verwendet, welcher auch die Kommunikation über die USB-Schnittstelle übernimmt. Dadurch konnte der bisher verwendete zusätzliche Controller für die USB-Kommunikation aus dem Design entfernt werden.
Mit dem neuen Microcontroller kann das Leonardo-Board standardmässig als USB-Device, als Maus oder Keyboard, betrieben werden.
Die Firma Boxtec, welche in der Schweiz Arduino-Produkte vertreibt, hat mir freundlicherweise ein Arduino Leonardo Board zum Test zur Verfügung gestellt.
Besten Dank dafür.
Der Arduino Leonardo wird, wie die anderen Arduino-Boards, in einer formschönen Kartonschachtel geliefert, welche auch direkt als Gehäuse verwendet werden kann.
Das Leonardo-Board hat die gleichen Abmessungen wie das Standardboard Arduino Uno. Optisch fällt auf den ersten Blick auf dass der USB-Stecker kleiner ist, der Reset-Knopf an einem anderen Ort platziert ist und ein Microcontroller mit einer Gehäuseform für die Oberflächenmontage verwendet wurde. Alle technischen Änderungen des Arduino Leonardo sind im Getting-Started-Dokument auf der Arduino-Website übersichtlich aufgelistet.
Voraussetzungen
Für die erfolgreiche Inbetriebnahme und Nutzung des Arduino Leonardo sind folgende Voraussetzungen zu erfüllen:
Der USB-Stecker Micro-B ist eine kleinere Bauform als die Bauformen der bisherigen Arduino-Boards. Beim Kauf eines Leonardo sollte somit auch gleichzeitig ein entsprechende Kabel mitbestellt werden.
Die kürzlich freigebene Version 1.0.1 der Arduino-Entwicklungsumgebung unterstützt standardmässig das neue Arduino Leonardo Board. Vor der ersten Inbetriebnahme muss die neue IDE installiert werden.
Inbetriebnahme
Der erste Schritt der Inbetriebnahme ist erwähnt die Installation der IDE mit Version 1.0.1. Die Inbetriebnahme der Hardware des Arduino Leonardo erfolgt auf die gleiche Weise wie bei den früheren Arduino-Boards. USB-Kabel am Arduino Leonardo und am Rechner anschliessen und dann die Anweisungen auf dem Bildschirm befolgen. Beim ersten Anschliessen eines Arduino Leonardo meldet dass System dass ein neuer Treiber installiert werden muss. Üblicherweise versucht das System den Treiber automatisch zu installieren. Mein Windows 7-Rechner hat zwar das neue Board erkannt, konnte den Treiber nicht korrekt installieren.
Gemäss Anleitung zum Arduino Leonardo muss der Treiber in diesem Fall manuell nachinstalliert werden. Im Device Manager (Start>Control Panel>Hardware) kann durch Rechtsklick auf das gelistete Leonardo-Board ein Update der Software (Treiber) gestartet werden. Im anschliessenden Installationsablauf wird keine automatische Treibersuche gewählt, sondern die Auswahl des Treibers von einem spezifischen Pfad durchgeführt. Der Treiber liegt im Ordner /drivers der im ersten Schritt installierten Arduino IDE 1.0.1. Nach Auswahl und Bestätigung des Treiberpfades wird der Leonardo-Treiber installiert.
Nach erfolgreicher Installation meldet die Installationsroutine
Im Gerätemanager wird nun das Arduino Leonardo Board erkannt und kann über den USB-Port genutzt werden.
In der soeben installierten IDE 1.0.1 wird nun der Arduino Leonardo in der Liste der Boards aufgelistet und in den installierten Codebeispielen gibt es unter Punkt 09.USB(Leonardo) einen Ordner mit Beispielen für Maus-und Keyboard-Emulation.
Diese neue USB-Funktionen mit denen man ein Leonardo als Maus, Keyboard oder Joystick verwenden kann, bieten zusätzliche Einsatzmöglichkeiten. Die bereits erwähnten Beispiele liefern dazu dem Anwender einen ersten Eindruck und Beispiele, welche als Grundlage für eigene Anwendungen genutzt werden können.
Anschlussbelegung:
Die Anzahl der Anschlusspins auf den Buchsenleisten und die Position der Buchsenleisten wurde beim Arduino Leonardo nicht geändert. Aber die Anschlussbelegung der einzelnen Pins hat sich aber teilweise geändert und muss bei der Verwendung von einem bestehenden Shield oder beim Einsatz einer Lösung für Arduino Uno beachtet werden.
Nachfolgende Tabelle zeigt die Unterschiede der Pins zwischen Arduino Uno und Arduino Leonardo:
| Bezeichnung | Uno | Leonardo |
| A06-A11 | – | D4,6,8,9,10,12 |
| PWM | D3,5,6,9,10,11 | D3,5,6,9,10,11,13 |
| SPI | D10,11,12,13 | ICSP Stecker |
| TWI (I2C) | A04,05 und SCL, SDA | D2,3 und SCL, SDA |
Durch die unterschiedliche Anschlussbelegung, speziell des I2C-Bus und der SPI-Schnittstelle, können etliche Standardshields nicht mehr genutzt werden. Zu erwähnen sind hier SD Card Shields und älterer Versionen des Ethernet Shield, welche den SPI-Bus über die Pins 10 bis 13 nutzen.
Nachtrag: das aktuelle Ethernet Shield (Version 6) nutzt den SPI-Bus welcher über den ICSP-Stecker vom Arduino-Board geliefert wird.
Testanwendung:
Meine Testanwendung ist ein kleiner Datenlogger, welche über die serielle Schnittstelle einen Temperaturwert in eine Textdatei schreibt. Das Leonardo Board arbeitet dabei als Keyboard. Auf dem angeschlossenen Rechner muss dazu keine Software installiert werden. Der Datenlogger nutze ich gerade, da ich verschiedene Tests mit Sensoren mache und auf diese Art einfach Messdaten in einer Textdatei speichern kann.
Wie im Getting-Started Guide unter „Good Coding Practice“ beschrieben ist, sollte beachtet werden, dass bei Einsatz des Leonardo als Keyboard, das Programmieren des Boards schwierig sein kann.
if the Mouse or Keyboard library is constantly running, it will be difficult to program your board. Functions such as Mouse.move() and Keyboard.print() will move your cursor…. and should only be called when you are ready to handle them. It is recommended to use a control system to turn this functionality on, like a physical switch.
Um den Logger zu deaktivieren, habe ich dazu einen Schalter an Pin 2 angeschlossen. Im Code wird dieser jeweils abgefragt und, falls der Schalter eingeschaltet ist, wird die Keyboard-Funktionalität aktiviert und Daten geschrieben.
// Schalter abfragen
int buttonState = digitalRead(buttonPin);
// Wenn Signal = HIGH
if (buttonState == HIGH)
{
...
}
Die komplette Loggerfunktion liest einen Analogsignal von einem LM35 Temperatursensor ein und sendet die Daten an die Textdatei. Nach dem Senden des Temperaturwertes wird mit einer zusätzlichen Keyboard-Anweisung (Strg-s) die Datei gespeichert. Nach einer Verzögerung von 2 Sekunden beginnt die Messung wieder von Anfang an.
const int buttonPin = 2;
float valTemp;
int TempPin = 0;
void setup() {
// Eingang für Schalter:
pinMode(buttonPin, INPUT);
// Keyboard Initialisierung
Keyboard.begin();
}
void loop()
{
// Schalter abfragen
int buttonState = digitalRead(buttonPin);
// Wenn Signal = HIGH
if (buttonState == HIGH)
{
// Analogwert einlesen
valTemp = analogRead(TempPin);
// Umwandlung 0-100 Grad
valTemp = (5.0 * valTemp * 100.0)/1024.0;
Keyboard.println(valTemp);
// Speichern
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('s');
delay(100);
Keyboard.releaseAll();
}
delay(2000);
}
Im Texteditor auf dem Desktop wird nun alle 2 Sekunden ein Messwert gespeichert.
Fazit:
Das neue Arduino Leonardo Board bietet mit den neuen Funktionen viele zusätzliche Anwendungsmöglichkeiten. Dank den vorhandenen Anleitungen ist eine Inbetriebnahme problemlos durchzuführen. Mit den mitgelieferten Beispielen für Keyboard-und Mausemulation kann man sofort mit eigenen Experimenten beginnen.
Obwohl der Arduino Leonardo die gleiche Bauform und die gleichen Buchsenleisten besitzt, ist das neue Board nicht kompatibel mit dem Standardboard. Die Anschlussbelegung hat sich bei verschiedenen Funktionen geändert und viele bisherige Shields können ohne Anpassung nicht mehr genutzt werden. Neben der elektrischen Inkompatibilität können auch etliche Bibliotheken durch die veränderte Pinbelegung nicht mehr genutzt werden
Neben dem von mir getesteten Arduino Leonardo mit Headers ist auch eine Leonardo-Version ohne Headers und Buchse für Stromversorgung verfügbar. Diese Bauform ist noch etwas kostengünstiger und eignet sich für Lowcost-Anwendungen und Anwendungsfälle mit geringer Bauhöhe oder knappem Platzbedarf.
Abschliessend kann man sagen dass das neue Arduino Leonardo Board durch die erweitere Funktionalität als USB-Device neue Möglichkeiten bietet. Für Standardanwendungen und für Einsteiger ist das Board nicht geeignet da der Leonardo nicht voll kompatibel mit den bisherigen Standardboards ist.