Schnellstart mit dem NanoESP für Arduino Neulinge

 

In diesem Artikel finden Sie Auszüge aus einem meiner ersten Bücher „Schnellstart mit dem Arduino Uno“. Ich habe den Text etwas für das NanoESP-Board angepasst. Screenshots etc. können aber immer noch Text für einen anderen Arduino enthalten. Gedacht ist dieser Artikel vor allem für diejenigen, die sich für das NanoESP-Board (Pretzelboard) interessieren, aber noch nie mit Arduino gearbeitet haben. 

Teil 1: Schnellstart

Schnellstart

Ich schätze es juckt Ihnen schon seit dem Öffnen des Paketes in den Fingern, ein Programm auf Ihrem Arduino auszuprobieren. Deshalb gibt es hier noch vor anderen wichtigen Informationen eine Schnellstartanleitung und ein paar Beispiele.

Sollten Sie allerdings auf Probleme stoßen, finden Sie später noch eine ausführlichere Anleitung für die Installation. Aber mit etwas Vorerfahrung reichen die folgenden Schritte für den ersten Erfolg.

  1. Aktuelle Software von http://www.arduino.cc/en/Main/software laden und installieren
  2. Treiber herunterladen und installieren (iot.fkainka.de/driver)
  3. Controller anschließen (microUSB-Kabel)
  4. Arduino-Programmierumgebung starten
  5. Unter Tools > Board die verwendete Hardware (Arduino Nano) auswählen
  6. Unter Tools > Serieller Port den entsprechenden COM-Port wählen
  7. Unter Datei > Beispiele > 01.Basics > Blink Beispiel laden
  8. Den Upload-Button klicken
  9. Auf die Meldung „Upload abgeschlossen“ warten
  10. Die LED „D3“ auf dem Board blinkt – Fertig!
Die Umgebung nach erfolgreichem Upload

Die Umgebung nach erfolgreichem Upload

Herzlichen Glückwunsch! Auf Ihren Arduino läuft nun ein funktionsfähiges Programm.

Drei weitere Beispiele

Für die folgenden drei Beispiele brauchen Sie keine zusätzliche Hardware, nur ein kleines Stück Verbindungsdraht. Sie bekommen anhand der Beispiele einen ersten Eindruck von den Möglichkeiten des Arduino-Controllers. Die Beispiele sind in die Arduino-Software integriert und werden nur minimal variiert. Dadurch können nicht viele Fehler passieren und Sie sammeln erste Erfahrungen. Falls doch etwas schief geht finden Sie Hilfe auf den letzten Seiten dieses Handbuches.

1. Button

Das nächste Beispiel finden Sie unter

Datei > Beispiele > 02.Digital > DigitalInputPullup.

Hier wird demonstriert, wie Sie mit einem Schalter eine LED schalten können, ohne externe Pullup-Widerstände zu benötigen.

Das Button Programm

Das Button Programm

Nach einem erfolgreichen Upload können Sie mit einer Drahtbrücke eine Verbindung vom digital Pin D2 (nicht A2) zu einem GND-Pin herstellen. Sie sehen, dass die LED leuchtet. Wenn Sie die Verbindung trennen, geht die LED wieder aus. Zusätzlich sendet das Programm den aktuellen Button-Status an den Serial Monitor (auch Terminal genannt), den Sie mit dem Symbol oben rechts starten können. Immer wenn Sie die Drahtverbindung herstellen wird eine 0 gesendet, ansonsten eine 1.

2. Spannung messen

Das folgende Beispiel finden Sie unter

Datei > Beispiele > 01.Basics > ReadAnalogVoltage.

In diesem Sketch wird eine analoge Spannung gemessen und das Ergebnis an das Terminal gesendet.

Analoge Werte im Serial Monitor

Analoge Werte im Serial Monitor

Nach dem Upload können Sie im Serial Monitor eine Menge Werte sehen, die aber relativ wild hin und her flackern. Diese Änderungen liegen daran, dass der Port offen ist und alle möglichen uns umgebenden Störfelder erfasst. Sie können aber eine Drahtverbindung vom analogen Pin A0 zu einem GND-Pin herstellen. Nun wird  0.00 angezeigt, also 0 Volt. Wenn Sie das Drahtende statt in den GND-Pins in den 5-V-Pin stecken, werden Sie 5.00 lesen können. Das ist das Maximum, das der Controller mit der gegenwärtigen Einstellung messen kann. Sie können auch mal probieren was passiert, wenn Sie anstelle des 5-V-Pins den 3,3-V-Pin benutzen.

 

3. Blinkfrequenz steuern

Im folgenden Programm wird wieder eine Spannung gemessen. Der Controller wertet das Ergebnis diesmal aber selbständig aus und berechnet die Blinkfrequenz der L-LED. Laden Sie das Beispiel

Datei > Beispiele > 03.Analog > AnalogInput

in Ihren Controller.

Das AnalogInput Programm

Das AnalogInput Programm

Wenn Sie noch eine Drahtbrücke vom A0 zum 5-V-Pin stecken haben, blinkt die LED ca. einmal pro Sekunde. Wenn Sie den 3.3-V-Pin benutzen, blinkt die LED deutlich schneller. Bei offenem Pin ändert sich die Blinkfrequenz ständig und unregelmäßig und beim GND-Pin bleibt die LED vollständig aus. Der Controller im Hintergrund hat aus der gemessenen Spannung eine Zeit berechnet nach der sich der Zustand der LED jedes Mal wechselt. Mit einem Lichtsensor könnte man so z.B. eine automatisierte Steuerung von Warnsignalen programmieren, aber dazu später mehr.

 

Teil 2: Hintergrundwissen

Einleitung

Arduino ist ein Schlagwort, an dem man in der Mikrocontroller-Welt nicht mehr vorbei kommt. Aber was steckt eigentlich hinter diesem Namen?

Geschaffen wurde die Arduino-Plattform vor allem für Künstler, Designer und Bastler. Die Mischung aus leicht verständlicher Software und einer unkomplizierten Hardware macht den Einstieg besonders einfach. Was aber macht Arduino gegenüber anderen Entwicklungsplattformen mit ähnlichen Ansprüchen so besonders? Dazu folgendes:

Die Software ist nicht nur einfach und übersichtlich, sie ist auch auf allen gängigen Betriebssystemen nutzbar (Windows, OSX, Linux). Das komplexere AVR-C wurde zu einem etwas übersichtlicheren Arduino-C vereinfacht. Dennoch kann C-Code direkt in ein Programm eingefügt werden, sodass erfahrenere Programmierer auf keine Funktionen verzichten müssen. Zudem können Sie auch C-Libraries einbinden. Diese werden in der großen Arduino-Community offen verbreitet und machen komplizierte Prozeduren für jedermann zugänglich.

Dieses modulare Konzept wurde auch in der Hardware konsequent weitergeführt. Nicht nur, dass Programmer und Controller auf eine Platine integriert wurden, das Board lässt sich zu zusätzlich noch mit sogenannten Shields um elementare Funktionen erweitern. Egal ob man sein System vom Internet aus zugänglich machen möchte oder eine eigene Funkkommunikation zwischen verschiedenen Controllern aufbauen möchte, ein vorgefertigtes Shield steht schon bereit und erspart das Planen einer eigenen Hardwareerweiterung. Natürlich ist es trotzdem noch möglich, schnell mit einem Steckboard ein paar Versuche zusammen zu stecken oder sogar sein eigenes Shield zu bauen.

Ein weiterer großer Pluspunkt: Die gesamte Soft- und Hardware ist Open-Source. Das bedeutet jeder kann die vorliegenden Beispiele, Programme und Tools frei nutzen. Und jeder darf seine eigene Library oder Hardware entwickeln und dennoch den Arduino-Bootloader und die Software benutzen.

Alles in allem bietet Arduino die ideale Plattform um Ihrer Kreativität freien Lauf zu lassen.

Die Software

Installieren und Verbinden

Unter Windows ist die Software-Installation ist im Grunde ganz einfach. Die aktuelle Version findet Sie immer unter: http://www.arduino.cc/en/Main/software. Es handelt sich dabei um eine einfache Installationsdatei. Das Programm zu starten würde jetzt noch nicht viel bringen, denn Sie müssen erst den Treiber des Boards installieren.

Wenn Sie das Board per USB mit dem Rechner verbinden, versucht der PC in der Regel, den Treiber selbst zu finden und zu installieren. Das wird in den meisten Fällen aber zu keinem Ergebnis führen. Sie müssen zunächst einmal den Treiber von der Webseite www.iot.fkainka.de/driver herunterladen, und installieren.  Im Gerätemanager Gerätemanager (Start > Systemsteuerung > System  > Gerätemanager) können Sie dann die aktuelle COM-Schnittstelle des Boards finden. Diese sollten Sie sich für später merken.

Der Gerätemanager

Der Gerätemanager

Nach der erfolgreichen Treiber-Installation können Sie nun die Arduino-Software starten und anschließend eine Verbindung zu Ihrem Board herstellen. Das geht ganz einfach indem Sie Tools > Board > Arduino Nano auswählen und anschließend unter Tools > Serieller Port den bei der Installation vergebenen Port auswählen. Es werden automatisch mögliche COM-Schnittstellen angezeigt.

Die möglichen COM-Schnittstellen

Die möglichen COM-Schnittstellen

Ob der Verbindungsaufbau erfolgreich war, sehen Sie erst, wenn Sie Ihr erstes Programm übertragen. Deswegen laden Sie einfach durch Klick auf Datei > Beispiele > 01.Basics > Blink ein Beispiel und übertragen es anschließend mit dem Upload-Button in der Symbolleiste. Das Programm wird nun kompiliert und anschließend auf den Controller geladen. Sie sollten die RX-LED auf Ihrem Controller während des Upload-Vorgangs unregelmäßig blinken sehen. War der Vorgang erfolgreich, erscheint nach kurzer Wartezeit die Meldung „Upload abgeschlossen“. Das bedeutet der Verbindungsaufbau war erfolgreich. Außerdem können Sie die D3-LED im Sekundentakt blinken sehen.

Die Umgebung nach erfolgreichem Upload

Die Umgebung nach erfolgreichem Upload

Die Programmierumgebung

Nach einer erfolgreichen Installation können Sie die Arduino-Programmierumgebung starten. Sie sehen einen Bildschirm der unabhängig vom Betriebssystem in etwa dem untern Bild entspricht. Die mit Zahlen markierten Bereiche werde Ich hier kurz erläutern.

Die Programmierumgebung

Die Programmierumgebung

  1. Quelltext: Hier wird später Ihr Programm (Sketch) stehen
  2. Symbolleiste: Hier finden Sie die wichtigsten Funktionen für den Schnellzugriff. Von links nach rechts finden Sie dort: Überprüfen (durchsucht das Programm nach Fehlern), Upload (Programm auf Controller übertragen), Neu, Öffnen, Speichern und rechts den „Serial Monitor“ (Terminalprogramm).
  3. Menü: In dieser Zeile finden Sie erweiterte Funktionen. Die Arduino-Entwickler haben kleine Tools eingebaut, die den Einstieg erleichtern und Programme übersichtlicher gestalten. Entsprechende Tastenkombinationen für den Schnellzugriff stehen direkt hinter den Menüeinträgen. Einige besondere Funktionen sind es wert, genauer unter die Lupe genommen zu werden:
    1. Datei
      1. Beispiele: Hier finden Sie einen großen Stapel von sortierten Beispielen für Einstiger und Fortgeschrittene.
      2. Upload mit Programmer: Hierbei handelt es sich um eine Sonderfunktion für externe Programmiergeräte (z.B. STK500).
    2. Bearbeiten
      1. Für Forum kopieren: Das Programm wird in ein für Arduino-Foren geeignetes Format umgewandelt und in die Zwischenablage kopiert. Farben und Formate bleiben erhalten und die Darstellung übersichtlich.
      2. Als HTML kopieren: Das Programm wird in HTML-Quelltext umgewandelt und in die Zwischenablage kopiert. Dadurch hat man es einfacher den Quelltext auf Webseiten zu veröffentlichen.
  • Kommentieren: Möchte man einen ganzen Bereich auskommentieren hilft diese Funktion weiter. Vor allen markierten Zeilen wird // eingefügt, sodass diese beim Kompilieren nicht interpretiert werden.
  1. Einrücken/Ausrücken: Um die Übersichtlichkeit zu behalten ist es üblich, zusammenhängende Bereiche einzurücken. Mit dieser Funktion müssen Sie nicht jede Zeile einzeln bearbeiten.
  1. Sketch
    1. Sketchordner anzeigen: Öffnet den Ordner, in den Sie ihr Programm (Sketch) gespeichert haben.
    2. Datei hinzufügen: Hier können Sie externe Ressource Ihrem Programm hinzufügen.
  • Library importieren: In diesem Untermenü können Sie im entsprechenden Ordner gespeicherte Libraries zu Ihrem Programm hinzufügen.
  1. Tools
    1. Automatisch formatieren: Schafft mit einem Klick ein übersichtlicheres Programm.
    2. Sketch archivieren: Hier können Sie Ihr Programm und alle zusätzlichen Ressourcen in eine Zip-Datei speichern.
  • Kodierung reparieren und neu laden: Lädt den zuletzt gespeicherten Stand neu
  1. Programmer: Hier können Sie Ihren externen Programmer wählen, falls Sie einen benutzen.
  2. Bootloader installieren: Mit einem externen Programmer und dieser Funktion können Sie den Arduino Bootloader auf einen anderen Controller überspielen.

 

  1. Sketch-Leiste: In dieser Leiste finden Sie Ihre sogenannten Sketches (Ihre Programme). In einem Untermenü auf der rechten Seite finden Sie weitere Funktionen.
  2. Debug-Fenster: Dieser Bereich zeigt Ihnen Informationen und Fehlermeldungen an.
  3. Informations-Zeile: In dieser Leiste finden Sie Informationen zu dem aktuell gewählten Controller und COM-Port. Die Zahl links gibt an, in welcher Zeile sich der Cursors gerade befindet.

Grundstruktur eines Programms

Ihre erste Verbindung war erfolgreich, dann ist es nun an der Zeit, sich mit den Grundstrukturen eines Arduino-Programms zu beschäftigen. Sie sollten zur Veranschaulichung das Beispiel Datei > Beispiele > 01.Basics > BareMinimum laden. Es erscheint folgender Quelltext:

void setup() {

  // put your setup code here, to run once:

}

 

void loop() {

  // put your main code here, to run repeatedly:

}

 

Bei diesen Zeilen handelt es sich um die Programmteile, die mindestens vorhanden sein müssen, damit sich der Text ein Arduino-Programm nennen darf. Die Grundstruktur bestehen aus zwei Prozeduren: setup und loop.

 

Setup: In diese Prozedur gehören alle Voreinstellungen des Programms. Hier werden beispielsweise Ports konfiguriert oder serielle Schnittstellen initialisiert.

 

Loop: Hierbei handelt es sich um die Hauptprozedur. Alles was zwischen diesen eckigen Klammern steht wird Schritt für Schritt ausgeführt. Ist das Ende der Prozedur erreicht beginnt sie von vorne. Daher auch der Name loop (Schleife).

Alles was sonst noch an Text und Zeichen dort steht gehört zu der Syntax der Programmiersprache. Unter Syntax versteht man quasi die Grammatik, die festlegt, wie etwas geschrieben werden muss, damit es in ausführbaren Code übersetzt werden kann. Ein Ausschnitt aus der Syntax-Beschreibung klärt über die hier vorkommenden Schreibweisen auf:

  • Durch geschweifte Klammern {} werden zusammengehörige Programmteile, wie z.B. Prozeduren, Schleifen oder IF-Anweisungen gegenüber anderen Teilen abgegrenzt.
  • void (deutsch: leer) steht vor Funktionen, die keinen Wert zurückgeben (Prozeduren genannt). Gibt eine Funktion einen Wert zurück, muss der Typ des Wertes angegeben werden (z.B. int berechnen() {})
  • zwischen den runden Klammern einer Prozedur/Funktion können Sie Parameter angeben, die der Prozedur übergeben werden müssen (z.b. void berechnen (int zahl1) {} ).
  • Texte die hinter // stehen sind Kommentare und haben keinen Einfluss auf den Programmablauf.

Die Grundstruktur eines Programms wäre damit geklärt. Besonders praktisch an diesem Beispiel:  Sie können es immer öffnen und unter einem anderen Namen speichern, wenn Sie ein neues Projekt beginnen wollen.