Erste Schritte mit Teensy 3.x

Inhalt

Die Teensy 3.x Boards, entwickelt von Paul Stoffregen, sind eine leistungsfähige und kostengünstige Mikrocontrollerplattform die auf ARM-Cortex Chips basiert. Im Vergleich mit Arduinos haben sie leistungsfähigere Prozessoren, mehr und flexiblere IOs und einen kleineren Formfaktor.

Dieser Artikel beschreibt die wenigen notwendigen Schritte, um mit der Arduino IDE für Teensy Boards zu entwickeln.

Installation

Für die Verwendung der Teensy Boards ist neben der Arduino IDE (getestet wurde Version 1.6.13) noch eine Software namens Teensyduino notwendig. Der Download erfolgt von der Herstellerwebseite

https://www.pjrc.com/teensy/td_download.html

Die Installation geschieht wiefolgt

  1. Schließen der Arduino IDE
  2. Ausführen des Teensyduino Installationsprogramms
  3. Auswahl des Arduino-Ordners, für den Teensyduino installiert werden soll. Dieser wird normalerweise automatisch gewählt.
  4. Es können eine ganze Menge von (teilweise gut optimierten) Bibliotheken für Teensy und Arduino installiert werden. (empfohlen)
  5. Durchführung der Installation

Nach erfolgreicher Installation stehen in der Arduino IDE im Menü Tools-> Boards eine Reihe von Teensy-Boards zur Verfügung:

Uploading Sketches

Wenn nun ein Teensy Board am Computer angesteckt ist und das entsprechende Board und Port im Menu ausgewählt wurde, kann wie gewohnt der Upload auf das Board vorgenommen werden. Einziger Unterschied beim Upload ist, dass für den Upload zusätzliches ein kleines Hilfsprogramm geöffnet wird, mit welchem der tatsächliche Upload geschieht. Normalerweise sind hierfür keine weiteren manuellen Schritte notwendig.

Weiterführende Links

Erste Schritte mit dem NodeMCU

Inhalte

  • Der NodeMCU und seine Programmierung mit der Arduino IDE

Einführung

Der NodeMCU ist eine günstige (ca. 8 Euro) Mikrocontroller-Plattform basierend auf einem ESP8266 Mikroprozessor. Besonderheit dieser Plattform ist ein WiFi-Stack, mit dem ein Mikrocontroller einfach in ein WLan-Netzwerk integriert werden kann um dort als Datenquelle oder -Senke aufgaben zu übernehmen.

In diesem Artikel wird beschrieben, wie der NodeMCU 1.0 (auch bekannt als NodeMCU v2) in Arduino in Betrieb genommen werden kann. Weiters gibt es ein paar Hinweise, wie die Stabilität im Betrieb erhöht werden kann.

Installation

Um den NodeMCU in der Arduino-IDE in Betrieb nehmen zu können, muss die ESP8266 Toolchain (Compiler, …) nachinstalliert werden. Dies ist Dank des Arduino Board Managers relativ einfach.

  1. Öffnen der Arduino Preferences (Menü: File -> Preferences oder alternativ mit dem Tastaturbefehl STRG + Komma (,) )
  2. Beim Punkt „Additional Boards Manager URL“ folgende Zeile eintragen:
  3. Öffnen des „Board Managers“ (Menü Tools -> Board -> Boards Manager…)
  4. In der der Suchmaske „ESP8266“ eingeben. Es erscheint der Punkt „esp8266 by esp8266 Community
  5. Auf den „Install“ Button klicken. Es sollte nun Download und Installation folgen.

Eine erfolgreiche Installation sollte wiefolgt aussehen:

Nun kann der NodeMCU am Rechner angeschlossen werden.

Programmierung des ESP8266 in Arduino

In Arduino steht nun der NodeMCU als verfügbares Board im Tools-Menü zur Verfügung.

Wenn man eines der Boards (bei uns NodeMCU 1.0 (ESP-12e Module))hier auswählt, erscheinen nun unter den Examples eine Reihe von Beispielen, die vorher nicht angezeigt wurden:

Um die Funktionstüchtigkeit des Boards zu testen, kann man einmal den Blink-Sketch auswählen und wie üblich mittels Upload auf das Board spielen.

Nach dem Upload sollte eine der OnBoard-LEDs blinken.

Hinweise zur Betriebsstabilität

Die ESP8266 Plattform, auf welcher der NodeMCU basiert, ist zwar sehr günstig, aber auch manchmal eine Herausforderung um einen stabilen Betrieb zu erreichen.

Vor allem eine stabile Spannungsversorgung ist unbedingt notwendig, da der ESP-Chip sehr empfindlich auf Schwankungen reagiert. Der Chip startet sich dabie unvorhergesehen neu, was sehr lästig sein kann.

Verwendung eines guten USB-Kabels

Manche Kabel haben die Eigenschaft, dass sie aufgrund von schlechter Verarbeitung einen relevanten Spannungsabfall verursachen. Teilweise treten diese erratischen Verhaltensweisen erst in Kombination mit anderen Komponenten auf (z.B. erst, wenn das Board auf einem Steckbrett verwendet wird).

Mit der Verwendung eines qualitativ guten Kabels konnte zumindest in einem getesten Fall ein stabiler Betrieb erreicht werden.

Verwendung von Stützkondensatoren an der Spannungsversorgung

Die zusätzliche Anbring eines Kondensators kann sich positiv im Betrieb des Boards äußern, vor allem wenn Funk-Verbindungen (WiFi) eingesetzt wird. Beim senden von WiFi-Befehlen wird kurzfristig viel Energie (ca. 250mA) benötigt, die manche Spannungsversorgungen nicht ausreichend schnell zur Verfügung stellen können. Ein Stützkondensator kann hier helfen.

Weiterführende Links

ESP8266 Allgemein

Stabiler Betrieb

 

Denken in Programmcode

Was ist Programmieren?

Programmieren bedeutet, Aufgabenstellungen zu lösen. Fast immer wird dabei ein Gesamtproblem in kleine Teilprobleme zerlegt, die Schritt für Schritt abgearbeitet werden. Kernbegriffe hierfür sind Prozeduren und Variablen.

Ein abstraktes Beispiel (ohne Programmcode):

Betrachten wir die Aufgabenstellung „Kuchen backen“ . Wir haben hierfür ein Kochrezept und benötigen eine Reihe von Zutaten:

  • 1/4L Milch
  • 250g Mehl
  • 3 Eier
  • 250g Zucker
  • 150g Butter

Das Kochrezept sieht wiefolgt aus:

  1. Verrühre Butter, Eier und Zucker. Gib die resultierende Masse in einen Topf.
  2. Vermenge die Masse im Topf mit der Milch und dem Mehl. Gib das Ergebnis dieser Masse in eine Backform
  3. Backe die Masse in der Form bei 180°
  4. Warte 45 Minuten. Nimm die Form aus dem Backrohr und stürze den Kuchen heraus.

Analyse

Wir können im Rezept mehrere Dinge identifizieren

  • Zutaten
  • Vorgänge

Vorgänge benötigen meistens Zutaten, um durchgeführt werden zu können. Oft sind die Ergebnisse von Vorgängen ein Produkt, dass in weiteren Schritten verwendet wird. So kommen wir in dieser Aufgabe „Kuchen backen“ von einzelnen Zutaten zu einem fertigen Kuchen.

Terminologie für das Programmieren

Das oben formulierte Rezept ist eine Abfolge von Anweisungen, die in einer vorgegebenen Reihenfolge abgearbeitet werden. Ein Konzept, um eine Aufgabenstellung zu lösen nennt man Algorithmus.

Das Kochrezept oben ist in einer für Menschen verständlichen Sprache verfasst. Um einen Algorithmus auf einem Computer ausführen zu können benötigen wir Programmiersprachen. In der Informatik werden die Zutaten als variable oder konstante Daten (Variablen, Konstanten) bezeichnet. Die Vorgänge werden z.B. als Prozedur, Methode oder Funktion bezeichnet.

Das Rezept als Programmcode

Das oben genannte Rezept wird nun in einer Pseudo-Programmiersprache aufgeschrieben:

Analyse

In der ersten Zeile benennen wir eine Prozedur mit dem Namen kuchenBacken.  Diese Prozedur definiert einen Block an Programmcode, der mit geschwungenen Klammern { } umschlossen wird. Alles, was zwischen diesen Klammern steht gehört zum Körper der Prozedur kuchenBacken.

In den Zeilen 3 bis 7 werden mehrere Variablen (milch, eier,  …) angelegt. Variabel sind sie deswegen, weil ihnen ein beliebiger Wert zugewiesen werden kann. Die Zuweisung erfolgt nach dem Schema  name = WERT;

Wird später die Variable name aufgerufen, so wird tatsächlich der dieser Variable zugewiesene Wert verwendet.

Das Semikolon (Strichpunkt ; ) am Ende dient dazu, die Anweisungen voneinander abzugrenzen.

In Zeile 9 wird eine weitere Prozedur namens vermischen(eier, butter, zucker)  aufgerufen. Der Vorgang vermischen  selbst ist hier nicht weiter beschrieben. Er benötigt aber mehrere Zutaten (Eier, Butter, Zucker), um ausgeführt werden zu können. Die Prozedur vermischen  übernimmt also in den runden Klammern mehrere Parameter. Die Prozedur vermischen hat als Ergebnis eine Masse. Damit diese nicht verloren geht, wird diese in eine Variable mit Namen masse gespeichert. Die Zuweisung dieser Variable erfolgt analog wie oben mittels = .

In Zeile 10 wird eine weitere Prozedur vermengen aufgerufen. Diese verwendet als Parameter die Variable masse  (die als Inhalt das Ergebnis der vorigen Operation) beinhaltet, sowie mehl  und milch . Das Ergebnis dieser Prozedur wird in die Variable teig  gespeichert.

In den folgenden Codezeilen werden weitere Prozeduren aufgerufen, die unterschiedliche Arbeitsschritte repräsentieren.

Zuletzt soll mit der Anweisung rueckgabe kuchen  symbolisch beschrieben werden, dass das Ergebnis  kuchen  der ganzen Prozedur kuchenBacken nun an denjenigen zurückgegeben wird, der den Prozess kuchenBacken angestoßen hat.

Zusammenfassung und Ausblick

Dieses Beispiel zeigt stark vereinfacht das Konezpt von Programmierung. Es demonstiert, wie ein Prozess in mehrere Anweisungen zerteilt wird. Teilergebnisses des Prozesses werden in späteren Schritten weiterverwendet. Am Ende steht ein ein Produkt, das zurückgegeben wird.

In weiterer Folge werden anderer Aufgabenstellungen mit einer richtigen Programmiersprache lösen.