Arduino IDE: Bibliotheksverwaltung

Arduino-IDE: Bibliotheken verwalten

Für viele Einsatzzwecke von ESP32, Arduino und Konsorten muss man die Basisfunktionalitäten, z.B. zum Abfragen von Sensoren, nicht selbst programmieren, sondern kann auf Bibliotheken (engl.: library, oft als lib abgekürzt) zurückgreifen. Die meisten Bibliotheken im Umfeld der offenen Arduino-Plattform stehen auf GitHub (ein Internet-Dienst zur Versionsverwaltung von Software) oder ähnlichen Plattformen unter Open-Source-Lizenzen zur Verfügung (z.B. MIT-Lizenz oder Gnu LPGL) und können über die in die Arduino-IDE integrierte Bibliotheksverwaltung installiert und aktualisiert werden.

Für die meisten Einsatzzwecke gibt es mehrere Bibliotheken von verschiedenen Entwicklern mit unterschiedlichem Funktionsumfang und verschieden guter Dokumentation. Es ist dabei nicht garantiert, dass alle Bibliotheken, die z.B. für den Arduino Uno entwickelt wurden, genauso gut mit dem ESP32 funktionieren, vor allem, wenn es um manche besonders hardwarenahe Zwecke geht.[1]Mir ist das bisher beim Umgang mit LED-Streifen passiert – hier macht sich u.U. die unterschiedliche Spannung (und Timing?) der Steuersignale bemerkbar (Arduino: 5 Volt, ESP32: 3,3 V) – … Continue reading Dann hilft die Suche nach einer an den jeweiligen Mikrocontroller angepassten Version – oft finden sich Angaben in der Dokumentation, mit welchen Mikrocontrollern die Bibliotheken getestet wurden.

Installation von Bibliotheken in der Arduino-IDE

Bibliotheken kann man in der Arduino-IDE auf drei Arten installieren:

  • bequem mit der in die IDE integrierten Bibliotheksverwaltung;
  • manuell durch Herunterladen der Dateien als ZIP-Archiv und kopieren der entpackten Dateien ins Bibliotheks-Verzeichnis der IDE;
  • als Mischform, bei der man das ZIP-Archiv manuell herunterlädt und über die Bibliotheksverwaltung installiert.

Für die Nutzung der Bibliotheken beim späteren Programmieren ist es egal, wie sie installiert wurden.

Installation mit der Bibliotheksverwaltung

Die Bibliotheksverwaltung (Library Manager) gibt es seit Version 1.6.2 der Arduino-IDE.[2]Version 1.6.2 erschien Anfang 2015; aktuell ist im Januar 2021 Version 1.8.13. Man ruft sie über den Menüpunkt Sketch → Bibliothek einbinden → Bibliotheken verwalten… auf – alternativ über Werkzeuge → Bibliotheken verwalten….

Fast alle populären Bibliotheken lassen sich so installieren. Voraussetzung ist, dass die Entwickler ihre Bibliotheken für die Bibliotheksverwaltung registrieren – ansonsten kann man sie über einen der anderen Wege installieren.

Installation der DallasTemperature-Bibliothek
Installation der DallasTemperature-Bibliothek

Um z.B. die Programmbibliothek »DallasTemperature« für den Temperatursensor DS18B20 zu installieren, gibt man im Suchfeld den Sensornamen ein (Markierung (1) im Bild) und erhält eine Liste von mglw. passenden Bibliotheken. Daraus sucht man den gewünschten Eintrag heraus und klickt ihn an. Jetzt kann man – wenn gewünscht – die zu installierende Version auswählen (normalerweise sollte man die voreingestellte aktuelle Version beibehalten) (2) und klickt auf Installieren (3). Will man sich erst einmal informieren, landet man nach einem Klick auf More Info (4) im Browser auf der Lbrary-Homepage und kann dort die Dokumentation lesen (wenn die Entwickler eine erstellt haben).

Installation von Abhängigkeiten
Installation von Abhängigkeiten

Bei der »DallasTemperature«-Lib werden außerdem Abhängigkeiten (dependencies) zu anderen Bibliotheken geprüft. Es wird angeboten, zusätzlich die Bibliothek »OneWire« zu installieren, da »DallasTemperature« diese als Unterbau benötigt. I.d.R. sollte man die zusätzlichen Bibliotheken mitinstallieren.
Nach meiner Erinnerung funktioniert bzw. erfolgt die Abhängigkeitsprüfung nicht bei allen Bibliotheken – dann findet man aber entsprechende Hinweise in der Dokumentation, welche weiteren Bibliotheken vorausgesetzt werden. Spätestens beim Übersetzen eines Programms merkt man, wenn nicht alle benötigten Bibliotheken installiert sind.

Die Bibliothek wird von der IDE heruntergeladen und installiert.

Manuelle Installation

Bibliotheken findet man oft über Suchmaschinen – viele Webseiten mit Beispielprogrammen verlinken auf die Projektseiten der jeweils genutzten Bibliotheken, z.B. bei GitHub. Wenn man will, kann man sie von dort herunterladen und selbst installieren. Das ist dann nötig, wenn die Bibliothek nicht in der Arduino-Bibliotheksverwaltung registriert ist – dann kann sie nicht wie oben beschrieben installiert werden.

Zur Installation muss man den Speicherort kennen, das libraries-Verzeichnis der IDE. Nur Bibliotheken, die dort abgelegt sind, werden beim Übersetzen des Programms eingebunden.

Pfad zum Speichern der Programme
Pfad zum Speichern der Programme (Sketches)

In der Arduino-IDE ist ein Verzeichnis zum Speichern der eigenen Programme (diese werden in der Arduino-Welt oft »Sketch« genannt) eingetragen. Man findet die Angabe über die Menüpunkte Datei → Voreinstellungen → Sketchbook-Speicherort; unter Windows liegt es standardmäßig im Benutzerverzeichnis im Pfad C:\Users\<benutzername>\Documents\Arduino, auf meinem System habe ich es auf K:\code\arduino geändert.

Arduino-Bibliotheksordner im Windows-Explorer
Arduino-Bibliotheksordner im Windows-Explorer

Dort gibt es ein Unterverzeichnis libraries, in dem die vom Benutzer installierten Bibliotheken gespeichert werden. (Im Verzeichnis arduino werden standardmäßig auch alle selbst geschriebenen Programme gespeichert (je Programm in einem eigenen Unterverzeichnis, das nur die Programmdatei enthält – Dateiendung ».ino«), sodass es im Lauf der Zeit dort leider sehr unübersichtlich wird.) Ist das Verzeichnis libraries noch nicht vorhanden, legt man es selbst an.

ZIP-Archiv von GitHub herunterladen
ZIP-Archiv von GitHub herunterladen

Wird auf einer Web-Seite nicht direkt zum Download eines ZIP-Archivs verlinkt (bspw. github.com/PaulStoffregen/OneWire/archive/master.zip für die erwähnte »OneWire«-Bibliothek), sondern die Projektseite bei GitHub genannt (github.com/PaulStoffregen/OneWire/), kann man das ZIP-Archiv von dort nach Klick auf den grünen Button Code → Download ZIP herunterladen (s. Screenshot).

ZIP-Archiv OneWire-master.zip
Zip-Archiv »OneWire-master.zip«

Das Archiv enthält einen Ordner, dessen Name auf »-master« endet. Diesen muss man nach dem Entpacken[3]Falls ein Programm zum Öffnen von ZIP-Dateien fehlt, empfehle ich für Windows das kostenlose und als Open Source verfügbare 7-Zip – Homepage www.7-zip.org. umbenennen und den Teil »-master« aus dem Namen löschen, um den korrekten Namen für den Library-Ordner zu erhalten.

Den Archiv-Inhalt kann man direkt in das libraries-Verzeichnis entpacken. Entpackt man es an eine andere Stelle, kopiert oder verschiebt es mit einem Dateimanager (wie dem Windows-Explorer) dorthin.
Das Umbenennen nicht vergessen: In diesem Beispiel ändert man den Ordnernamen von OneWire-master auf OneWire. Ab sofort kann die Bibliothek in eigenen Programmen genutzt werden.

Der Mittelweg: Bibliothek aus einer Zip-Datei installieren

Bibliothek aus ZIP-Datei installieren
Bibliothek aus ZIP-Datei installieren

Mit der Arduino-IDE kann man auch Bibliotheken direkt aus ZIP-Dateien installieren. Hierzu lädt man zuerst – wie beschrieben – die Archiv-Datei der Bibliothek (im Beispiel oben die Datei OneWire-master.zip) auf den eigenen Rechner herunter. Dann ruft man den Menüpunkt Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen… auf und wählt in dem folgenden Dialog die Archiv-Datei aus.

Die Bibliothek wird installiert – d.h. der Inhalt des ZIP-Archivs wird in den Bibliotheksordner kopiert. Zu beachten ist, dass der resultierende Ordner bei einem Download von Github (ebenso wie der Name der ZIP-Datei) auf »-master« endet. Wie im vorigen Abschnitt beschrieben, muss der Ordner im Bibliotheks-Verzeichnis noch umbenannt werden (»-master« löschen) und kann dann verwendet werden.

Aktualisierungen

Aktualisierungshinweis der Arduino-IDE
Aktualisierungshinweis der Arduino-IDE

Gibt es neue Versionen einer oder mehrerer per Bibliotheksverwaltung installierter Bibliotheken, zeigt die IDE einen entsprechenden Hinweis an.

Bibliotheken mit Aktualisierungen anzeigen
Bibliotheken mit Aktualisierungen anzeigen

Öffnet man dann die Bibliotheksverwaltung und wählt links in der Dropdown-Liste den Punkt »Aktualisierbar« aus, werden alle installierten Bibliotheken angezeigt, für die es ein Update gibt. Wie bei der Installation kann man die gewünschte Version wählen und mit einem Klick auf den Button »Update« die Aktualisierung durchführen.

Hat man eine Bibliothek aus einem heruntergeladenen ZIP-Archiv installiert, muss man sich selbst um Aktualisierungen kümmern – also eine neue Version herunterladen und in den Ordner der Bibliothek entpacken.

Löschenvon Bibliotheken

Zum Löschen (Deinstallieren) nicht mehr benötigter Bibliotheken bietet die Arduino-IDE keine Option. Hierzu verwendet man einfach einen Dateimanager und löscht den Ordner der Bibliothek manuell aus dem libraries-Verzeichnis.

Beispielprogramme im Ordner examples

I.d.R. lieferen die Autoren von Bibliotheken Programmbeispiele mit, anhand derer man die verfügbaren Funktionen ausprobieren kann. Man sieht dort u.a., mit welchen Parametern die jeweiligen Funktionen bzw. Methoden aufgerufen werden. Die Beispiele befinden sich im Unterverzeichnis examples des Bibliotheks-Ordners. Für die »DallasTemperature«-Bibliothek ist das bspw. bei meiner Installation der Ordner K:\code\arduino\libraries\DallasTemperature\examples.

Beispielprogramme der installierten Bibliotheken
Beispielprogramme der installierten Bibliotheken

Man kann die Beispiele auch direkt aus der Arduino-IDE heraus per Menü Datei → Beispiele öffnen. Dort scrollt man etwas nach unten bis zum Abschnitt »Beispiele aus eigenen Bibliotheken« und findet dann hinter den Bibliotheksnamen die Beispielprogramme.

Meist zeigen die Beispiele relativ einfache Anwendungen – was aber oft zum Lernen für die eigenen Einsatzzwecke schon ausreicht. Will man alle Möglichkeiten nutzen, empfiehlt sich ein Blick in den Quellcode. Die Header-Datei (Dateiendung ».h«; im Beispiel die Datei DallasTemperature.h) enthält u.a. Deklarationen der Klassen mit ihren Methoden (Funktionen) und Daten. Die Headerdateien sind die Dateien, die man im Programm per #include-Direktive einbindet, z.B.

#include <OneWire.h>
#include <DallasTemperature.h>

Oder man sieht sich den Programmcode der Bibliothek an, hier die Datei DallasTemperature.cpp. Header-Datei und Programmcode sind entweder direkt im Ordner der jeweiligen Bibliothek gespeichert oder dort im Unterverzeichnis src („src” für source oder source code = Quelltext).
Falls es eine weitergehende Dokumentation gibt, findet man diese i.d.R. auf der Homepage der Bibliothek.

Dieser Text war in großen Teilen seit April 2019 Bestandteil des Beitrags zu den Temperatursensoren DS18B20 und DHT11/DHT22. Da ich den Beitrag zu den Sensoren aber sowieso ergänzen musste und inzwischen auch andere Texte für die jeweils benötigten Bibliotheken auf die Installationsanleitung verweisen, habe ich der Arduino-Bibliotheksverwaltung im Januar 2021 diesen eigenen (deutlich erweiterten) Beitrag gegönnt.
Änderungen:
26.03.2021: Beim Installieren aus einem ZIP-Archiv den Hinweis zum Namensbestandteil »-master« ergänzt. Änderung einiger Formulierungen.

Fußnoten

Fußnoten
1 Mir ist das bisher beim Umgang mit LED-Streifen passiert – hier macht sich u.U. die unterschiedliche Spannung (und Timing?) der Steuersignale bemerkbar (Arduino: 5 Volt, ESP32: 3,3 V) – und bei einer Bibliothek für den Temperatur- und Luftfeuchtigkeitssensor AM2320.
2 Version 1.6.2 erschien Anfang 2015; aktuell ist im Januar 2021 Version 1.8.13.
3 Falls ein Programm zum Öffnen von ZIP-Dateien fehlt, empfehle ich für Windows das kostenlose und als Open Source verfügbare 7-Zip – Homepage www.7-zip.org.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.