Nextion Display - Teil 1 - Grundlagen und Workflow

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks.

Nextion Display - Teil 1 - Grundlagen und Workflow
Nextion Display - Teil 1 - Grundlagen und Workflow
  • Matthias Kleine
  • 29.10.2017
  • Hardware
  • Nextion

Schon öfter wurde nun ich nun gefragt, ob ich mal zeigen könnte wie die Nextion Displays funktionieren und was man damit alles anstellen kann. Besonder schön ist eigentlich, dass man für die Gestaltung der Oberfläche mit Photoshop (oder einem anderen Bildbearbeitungsprogramm) und der IDE von Nextion schon sehr weit kommt und ganz einfach anschauliche Oberflächen zusammenbauen kann. Im ersten Teil gehe ich genauer auf das Display ein, wie man die Logiken auf das Display bekommt und diese dann über die serielle Schnittstelle verändern kann. Alles in allem gar nicht so viel aufwändiger als irgendwelche 7-Segment-Anzeigen, aber dafür extrem viel schöner!

Was wird benötigt?

  • Eine Nextion-Display (in meinem Fall das NX3224T024)
  • Ein Wemos D1 Mini
  • Eine Micro-SD-Karte
  • Einen laufenden MQTT-Server
  • Ein Windows PC oder eine virtuelle Maschine mit Windows

Aihasd 7.0" NX8048P070 Nextion Intelligent HMI USART UART Serial TFT LCD Module Display Capactive Touch Panel Touch Screen pannel (NX8048P070-011C) **

AZDelivery 3 x D1 Mini NodeMcu mit ESP8266-12F WLAN Module CH340G Lua kompatibel mit Arduino inklusive E-Book! **

SanDisk Ultra 32GB microSDHC Speicherkarte + Adapter bis zu 98 MB/Sek., Class 10, U1, A1, FFP **

NX3224T024 **

Video

Hausbau-Kurs

Befehle

Hier mein Arduino-Script zum weiter ausbauen. Genutzt wird aktuell SoftSerial, da der Wemos nur eine einzelne Schnittstelle hat, welche bereits über USB genutzt wird. Mit ein paar Handgriffen kann man wohl auf die internerne UART umschalten - dazu aber wahrscheinlich mehr im nächsten Video.

Wenn man nun eine Nachricht an “inTopic” per MQTT sendet, wird diese im Textfeld über dem Button dargestellt.

#define SoftSerial mySerial

#include <SPI.h>
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <PubSubClient.h>
//#include <Nextion.h>

const char* mqtt_server = "192.168.178.11";
const char* ssid = "PlitschPlatsch";
const char* password = "PASSWORD";

WiFiClient net;
PubSubClient client(net);

#define CO2_TX D1
#define CO2_RX D2

SoftwareSerial SoftSerial(CO2_RX, CO2_TX); // RX, TX

void setup() {
  pinMode(BUILTIN_LED, OUTPUT);

  Serial.begin(9600);
  SoftSerial.begin(9600);

  delay(500);

  connect();
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  delay(500);
}

void connect() {
  Serial.println("Connecting Wifi");

  WiFi.mode(WIFI_AP_STA);
  WiFi.begin(ssid, password);

  // WiFi
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    WiFi.begin(ssid, password);
  }

  Serial.println("Connecting MQTT");

  // MQTT
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void callback(char* topic, byte* payload, unsigned int length) {
  SoftSerial.print("t0.txt=\"");

  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
    SoftSerial.print((char)payload[i]);
  }
  Serial.println();

  SoftSerial.print("\"");
  SoftSerial.write(0xff);
  SoftSerial.write(0xff);
  SoftSerial.write(0xff);
}

void reconnect() {
  while (!client.connected()) {
    String clientId = "WemosNextion-";
    clientId += String(random(0xffff), HEX);

    if (client.connect(clientId.c_str())) {
      client.subscribe("inTopic");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");

      delay(5000);
    }
  }
}
Du willst mehr?

Smart-Home-Trainings von A-Z

Steig noch tiefer in die Themen ein und meistere Deine Projekte! Über 13.000 Teilnehmer konnten sich schon von der Qualität der Online-Kurse überzeugen.

ioBroker-Master-Kurs

ioBroker-Master-Kurs

Mehr Infos
Hausbau-Kurs

Hausbau mit KNX

Mehr Infos
Lox-Kurs

Lox-Kurs

Mehr Infos
Node-RED-Master-Kurs

Node-RED-Master-Kurs

Mehr Infos