Aus Raspberry Pi Geek 06/2021

Den ESP8266 mit dem NodeMCU-Board programmieren (Seite 2)

Dazu verbinden Sie als Erstes das Board mit einem entsprechenden Display. Im Beispiel kommt ein vierzeiliger Bildschirm mit 20 Zeichen pro Zeile zum Einsatz; ein entsprechendes Modell gibt es für 5,50 Euro bei AZ-Delivery [3]. Abbildung 2 zeigt den Testaufbau; die Tabelle “LCD-Anbindung” beschreibt, welche Pins des NodeMCU-Boards und des Displays Sie verbinden müssen.

Abbildung 2: Der Testaufbau mit dem Display.

Abbildung 2: Der Testaufbau mit dem Display.

NodeMCU-Display

D0

D4

D1

D5

D2

D6

D3

D7

D4

E

D5

RS

G

VSS,V0,RW,K

3V

VDD,A

Das Programm für die Textausgabe zeigt Listing 3. Nach dem Laden aller nötigen Bibliotheken definieren wir einige Konstanten, die das Programm lesbarer machen. Für ssid und password setzen Sie die entsprechenden Daten für Ihr WLAN ein. Die Zeilen 10 und 11 initialisieren das Display und den Webserver.

Die Funktion handleRoot erzeugt eine einfache HTML-Seite zur Texteingabe. Die Substring-Operationen am Ende der Funktion positionieren die Zeichenkette aus dem HTTP-Request an den korrekten Stellen des Displays. Die Funktion setup definiert die Geometrie des Displays, stellt die Verbindung zum WLAN her und startet den Webserver. Der Webserver reagiert nur auf Requests direkt auf /.

Sobald das Programm startet, gibt es auf der seriellen Konsole die IP-Adresse des ESP8266 aus. Um die serielle Konsole aus der Arduino IDE heraus zu starten, klicken Sie bitte auf das Lupen-Symbol oben rechts. Stellen Sie die Konsole auf die im Programm definierte Geschwindigkeit ein (115200).

Unter Umständen kommt der ESP8266 so schnell hoch, dass Sie die Ausgabe nicht mehr sehen können. In diesem Fall starten Sie den Mikrocontroller über den Reset-Schalter auf dem NodeMCU-Board einfach noch einmal.

Geben Sie nun die IP-Adresse des ESP8266 in einen Webbrowser ein. Anschließend füllen Sie das entsprechende Feld mit einem beliebigen Text. Nachdem Sie auf SEND geklickt haben, erscheint der Text auf dem Display. Da das Programm mit einem GET-Request arbeitet, ist es relativ leicht, einen HTTP-Request zu erzeugen, um das Display mit Daten zu versorgen.

Listing 3

Daten per GET-Request übertragen

#include <LiquidCrystal.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
const char* ssid = "SSID";
const char* password = "Passwort";
const int rs = D5, en = D4, d4 = D0, d5 = D1, d6 = D2, d7 = D3;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
ESP8266WebServer server(80);
void handleRoot() {
  String page ="";
  page += "<HTML><HEAD></HEAD></HTML>";
  page += "<BODY><FORM ACTION ='/' METHOD='GET'>";
  page += "<TEXTAREA NAME='text' ROWS='1' COLS='80'>";
  page += server.arg("text");
  page += "</TEXTAREA><BR>";
  page += "<BUTTON TYPE='SUBMIT'>SEND</BUTTON><FORM/><BODY/><HTML/>";
  server.send(200, "text/html",page);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(server.arg("text").substring(0,19));
  lcd.setCursor(0, 1);
  lcd.print(server.arg("text").substring(20,39));
  lcd.setCursor(0, 2);
  lcd.print(server.arg("text").substring(40,59));
  lcd.setCursor(0, 3);
  lcd.print(server.arg("text").substring(60,79));
}
void setup() {
  lcd.begin(20, 4);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  server.on("/", handleRoot);
  server.begin();
}
void loop() {
  server.handleClient();
}

Fazit

Wer den ESP8266 schon einmal ohne NodeMCU-Board programmiert hat, der weiß, welche Komplikationen dabei auftreten könnten. Die pfiffige Platine erleichtert vieles. So brauchen Sie sich beispielsweise nicht um die richtige Betriebsspannung zu kümmern. Sie stöpseln einfach das Board an den USB-Port des PCs und legen los. Gerade für Einsteiger eignet sich diese Variante sehr gut.

Dank des niedrigen Einstiegspreises von gerade einmal 6 Euro können Sie mit dem NodeMCU auch einfach einmal ausprobieren, ob Ihnen das Programmieren von Mikrocontrollern liegt. Dieser Artikel hat vorgestellt, wie sich das Board mit C programmieren lässt. Daneben gibt es noch eine Vielzahl weiterer Möglichkeiten. (jlu)

Der Autor

Martin Mohr hat die komplette Entwicklung der modernen Computertechnik live miterlebt. Nach einem Informatikstudium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte seine alte Liebe zur Elektronik wieder.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben