Die ILI9341 Displays sind in verschiedensten Ausführungen verfügbar. Die ILI9341 Displays unterscheiden sich dabei in Größe, Auflösung und optional mit Touch Funktion. In diesem Beispiel werden lediglich die Display Funktionen ausgeführt.

In diesem Tasmota Beispiel wurde ein ESP8266 ESP-12S, platziert auf einem ESP8266 Programmer in Kombination mit einem ILI9341 2,4″ Display verwendet. An dieser Stelle sei erwähnt dieses Tutorial ist für jedweden ESP8266 (mit entsprechenden GPIO’s) und für alle ILI9341 Anzeigenmodule verwendbar.

Für die Versierten unter Euch

zur GPIO Konfiguration

Anschluß ESP8266 ILI9341

Tasmota Display Firmware Flashen

Insofern der verwendete ESP8266 nicht in Kombination mit einem USB TTL Konverter auf beispielsweise einem NodeMCU, Wemos oder ähnlichem Entwicklerboard verbaut ist bedarf es einer entsprechenden Verbindung mit einem USB TTL Konverter.

In Kombination mit einem USB TTL Konverter muss neben der

  • Spannungsversorgung
    • ESP8266 VCC verbunden mit 3V3 USB TTL Konverter
    • ESP8266 GND verbunden mit GND USB TTL Konverter
  • serielle UART Schnittstelle
    • ESP8266 RX verbunden mit TX USB TTL Konverter
    • ESP8266 TX verbunden mit RX USB TTL Konverter

zusätzlich der Flashmodus durch GPIO0 Low Level – mit einfachen Worten mit GND verbunden werden – aktiviert werden. Im Folgenden den USB TTL Konverter mit dem PC oder MAC verbinden.

Install Tasmota / Tasmota Webinstaller

Bereits seit geraumer Zeit gibt es Tasmota Install, ein Tasmota Firmware Installer der ein einfaches ESP Flashen ermöglicht. Unter obigen Link erfolgt die Installation der Tasmota Firmware komfortabel über eine grafische Benutzeroberfläche innerhalb gängiger Browser.

Die Tasmota Firmware Installation erfolgt dabei in einfachen Schritten

Auswahl der Tasmota Firmware

Die Tasmota Firmware ist in einer Vielzahl als Binary Download, je nach ESP Modul, sowie Anwendung verfügbar. Im Bezug unseres Beispiels kommt die Tasmota Display Firmware zum Einsatz. Hier sind zum einen die notwendigen ILI9341 Treiber implementiert, als auch die notwendige Display Klasse zur Ausführung von typischen Displaybefehlen. Dementsprechend im Drop Down des Tasmota Webinstaller Tasmota Display auswählen.

Verbindung zum USB TTL Konverter herstellen

Nachdem die Tasmota Display Firmware ausgewählt wurde, muß durch Klick auf den Button Connect im Tasmota Webinstaller die Verbindung zum USB TTL Konverter hergestellt werden. Üblicherweise öffnet sich ein Fenster zur Auswahl verfügbarer serieller Schnittstellen, sollte dies nicht erfolgen bitte Browsereinstellungen prüfen (oft erscheint neben oder innerhalb der Browseradressleiste ein roter Warnhinweis gegebenenfalls den Hinweis durch klick aufrufen und Einstellungen durchführen).

Selbstredend variiert die Bezeichnung des USB TTL Konverters (typische sind CP21…, CH340, USBTTL, usw.) entsprechend auswählen und Button Verbinden klicken.

Tasmota Display Firmware Installation starten

Nachdem die Verbindung zum USB TTL Konverter hergestellt wurde erscheint das Tasmota Device Dashboard, heir durch klicken auf INSTALL TASMOTA DISPLAY bestätigen.

ESP8266 Flashspeicher löschen

Es erfolgt der Dialog zum Löschen der etwaig im Flashspeicher des ESP8266 vorhandenen Firmware, es ist ratsam diese Option zu aktivieren, insbesondere wenn auf dem ESP8266 bereits eine Tasmota Firmware installiert war, da sonst eine “Art” Update durchgeführt wird. Im Detail werden dann vorherige Konfigurationen übernommen und die Firmware aktualisiert. Durch klicken auf NEXT wird das Löschen des Flashspeicher ausgeführt.

Tasmota Installation ausführen

Nachdem der Flashspeicher erfolgreich gelöscht wurde erscheint der Dialog zur Ausführung der Tasmota Installation. Durch Klick auf Install wird die Installation initiiert und es erfolgt die Ausgabe des prozentualen Fortschritts.

Je nach USB TTL Konverter / Verbindungsgeschwindigkeit dauert die Installation zwischen 30 Sekunden bis 2 Minuten. Nachdem die Tasmota Firmware erfolgreich auf den Flashspeicher gepackt wurde erscheint der Hinweis der erfolgreichen Installation. Der ESP8266 ist nun ein Tasmota ESP8266 Modul. Bitte beachten durch klicken auf NEXT wird ein Reboot ausgeführt, sollte der GPIO0 immer noch mit GND verbunden sein startet der ESP8266 wieder im Flashmodus, das heißt die folgende WLan Konfiguration wird nicht aufgerufen.

Tasmota SoftAP / Access Point Verbindung

Insofern der ESP8266 sich nicht mehr im Flashmodus befindet (GND und GPIO0 sind nicht verbunden) führt nun der Tasmota ESP8266 einen Netzwerkscan durch.

Sollte dies nicht erfolgen,

  • den ESP8266 von der Spannungsversorgung trennen
  • GPIO0 und GND Verbindung trennen
  • den ESP8266 erneut mit Spannung versorgen
  • im PC oder MAC erscheint ein neuer Tasmota_???? AP, mit diesem eine WLan Verbindung herstellen
  • sollte sich kein Browserfenster öffnen, ein neues Browserfenster öffnen
  • Tasmota Webinterface über http://192.168.4.1 öffnen BITTE beachten da dies keine sichere Verbindung ist könnte der Browser die Verbindung ablehnen, Warnhinweis beachten und Einstellungen durchführen / Zugriff gewähren.

Tasmota WLan Einstellungen

Nach erfolgreichem Netzwerkscan werden sämtliche im Empfangsbereich des ESP8266 verfügbaren WLan Netzwerke erfasst. Durch Auswahl im DropDown Network entsprechendes Netzwerk auswählen und im Textfeld Password das entsprechend Password eingeben. Durch Klicken auf CONNECT werden die Netzwerkparameter in der Tasmota Firmware gespeichert.

Tasmota Client Verbindung

Die Tasmota Firmware initiiert einen Neustart jedoch nun als WLan Client in dem zuvor angegebenen Netzwerk. Dementsprechend ist darauf zu achten das der PC oder MAC sich ebenfalls in diesem WLan Netzwerk befindet.

Durch Klick auf VISIT DEVICE wird nun ein neuer Browser Tab mit dem Verweis auf die Client IP Adresse – zugewiesen durch den DHCP Server des Routers – geöffnet. Unter der nun in der Adressleiste des Browsers gezeigten IP Adresse ist das Tasmota Interface / Modul erreichbar.

Tasmota Konfiguration

Innerhalb der Tasmota Display Firmware ist das Sonoff Basic Modul als Standard bzw. Fallback Modul hinterlegt. Dementsprechend muß nun die Tasmota Modul Konfiguration entsprechend geändert werden, sodass die benötigten ESP8266 GPIO’s im Weiteren zur Konfiguration bereitgestellt werden.

Hierzu Klick auf

  1. Configuration
  2. Configure Module
  3. im Module type Drop Down Generic (0) auswählen
  4. Button Save klicken

Die Tasmota Firmware speichert die Parameter und initiiert einen Neustart.

ILI9341 Display Tasmota Konfiguration

Nach dem Neustart muss erneut die Tasmota Modul Konfiguration durch Klick auf

  • Configuration
  • Configure Module

aufgerufen werden.

Innerhalb der Module parameters

  • D3 GPIO0 auf Reset
  • D4 GPIO2 auf ILI9341 DC
  • D2 GPIO4 auf Backlight
  • D6 GPIO12 auf SPI MISO
  • D7 GPIO13 auf SPI MOSI
  • D5 GPIO14 auf SPI CLK
  • D8 GPIO15 auf ILI9341 CS

setzen und durch Klicken auf Save speichern. Die Funktionen, bzw. Erläuterungen zu den GPIO’s werden im folgenden Anschluss ESP8266 und ILI9341 Display ausgeführt.

Anschluss ESP8266 und ILI9341 Display

Der Anschluss des ILI9341 Display an einen ESP8266 steht selbstredend in Abhängigkeit der im Vorfeld beschriebenen Tasmota GPIO Konfiguration zum Betrieb der SPI Schnittstelle sowie individuellen ILI9341 Ein- und Ausgänge. Selbstredend ist sowohl der ESP8266 als auch das ILI9341 Display vor Beginn der Verbindungsherstellung von der Spannungsversorgung zu trennen.

ILI9341 PinESP8266 GPIOBeschreibung Funktion
VCC 3,3VSpannungsversorgung des ILI9341 Display Moduls sollte direkt, keinesfalls über einen ESP8266 GPIO erfolgen. Bei einem ESP8266 basierenden Board mit Spannungskonverter kann selbstredend der 3V3 Pin verwendet werden.
GNDGND
CSGPIO15Chip Select Pin des ILI9341 Display benötigt ein Low Level zur Aktivierung
ResetGPIO0Reset Pin des ILI9341 TFT ist aktiv bei Low Level, diesbezüglich eignet sich der GPIO0 sehr gut, da dieser im üblichen Betrieb stets über einen High Level verfügt und lediglich beim Reset Aufruf auf Low Level gezogen wird
DC/RSGPIO2LCD Registrierung erfolgt durch High Level und RS (Ready to Send) wird durch Low Level aktiviert. Ähnlich wie bereits beim GPIO0 wird hier auch die HIGH Level Eigenschaft des GPIO2 beim üblichen ESP8266 Betrieb genutzt, das LCD Display wird registriert / initiiert. Die Tasmota Firmware schaltet beim Senden von Displaydaten den GPIO2 auf LOW.
SDI/MOSIGPIO13SPI MOSI Pin zum Schreiben der Daten über die SPI Schnittstelle
SCKGPIO14SPI Bus Clock wird vom ESP8266 bzw. über die Tasmota Firmware zur Synchronisation der SPI Schnittstelle verwendet
LEDGPIO4ist im eigentlichen lediglich ein Schaltsignal um die Hintergrundbelechtung des Displays zu aktivieren, bzw. deaktivieren. Zu beachten ist dabei, dies erfolgt nicht automatisch sondern wird im Betrieb über einen ON Button im Webinterface dargestellt. Mit einfachen Worten ist die Hintergrundbeleuchtung des Displays deaktiviert wird selbstredend auf dem Display nichts dargestellt.
SDO/MISOGPIO12SPI MISO Pin zum Empfangen von Daten über die SPI Schnittstelle
ILI9341 Display ESP8266 Anschluss

Sollten bei der Anbindung des ILI9341 Display an einen ESP8266 anstatt von GPIO0 und GPIO2 andere GPIO’s verwendet werden, ist bei der Initiierung des Displays auf den notwendigen High Level zu achten, andernfalls wird das Display weder initiiert, bzw. befindet sich das Display im Dauerreset.

Tasmota ILI9341 Display aktivieren

Im Grunde ist das ILI9341 in Kombination mit dem Tasmota ESP8266 Modul einsatzbereit. Sobald das Tasmota Modul mit Spannung versorgt wird mittels Browser unter Angabe der IP Adresse das Tasmota Webinterface öffnen. Basierend auf die vorgenannte Tasmota GPIO Konfiguration die LED Hintergrundbelechtung des Displays durch Klick auf den Button Toggle aktivieren. Üblicherweise wird selbstredend noch nichts auf dem Display angezeigt.

Tasmota Display Text

Der Einsatz eines Display unter Tasmota ist sehr vielschichtig, ob Statusmeldungen Sensorwerte oder gar grafische Elemente im Grunde ist nahezu alles möglich. In diesem Beispiel beschränken wir uns jedoch auf die Inbetriebnahme des ILI9341 Display unter Tasmota und die einfache Darstellung von Text.

Das direkte Senden von Text erfolgt dabei über die Tasmota Console, hierzu lediglich auf den Button Console klicken. Die Tasmota Console unterteilt sich in ein Ausgabefenster für Statusmeldungen und einer Befehlszeile im unteren Bereich. Über dieses Befehlszeile können sämtliche Tasmota Commands gesetzt und ausgeführt werden. Dabei wird lediglich das Tasmota Command in die Befehlszeile eingegeben und durch drücken der Taste ENTER ausgeführt.

Das für uns relevante Tasmota Command ist DisplayText gefolgt von dem jeweilig darzustellenden Text,

DisplayText Zeige diesen Text an

gefolgt vom Drücken der Taste ENTER.

Abschliessend noch ein kleiner Hinweis zur grundlegenden Konfiguration des ILI9341 Display über die Tasmota Console, gibt man in die Befehlszeile

Display

ein und drückt die Taste ENTER, werden im Ausgabefenster die aktuellen Parameter ausgegeben

RSL: RESULT = {"Display":{"Model":4,"Type":1,"Width":320,"Height":240,"Mode":0,"Dimmer":100,"Size":1,"Font":1,"Rotate":0,"Invert":0,"Refresh":2,"Cols":[16,8],"Rows":2}}

Diese Parameter können direkt über die Tasmota Console gesetzt werden, einfach DisplayParamater, also beispielsweise

DisplayRotate 1

dreht den Inhalt um 90°, ….

Die gesamte Tasmota Display Funktion hier detailliert zu erörtern würde den Rahmen “ein wenig” sprengen, diesbezüglich sei auf die Dokumentation Tasmota Displays verwiesen.

5 thoughts on “Tasmota ESP8266 ILI9341 SPI Display Beispiel”

  1. Moin,
    klasse Tutorial. Ich habe eben ein Wemos D1 Mini mit Tasmota Display geflasht, habe aber nach Umstellung auf “Generic 0” nicht die Auswahl ILI9341 DC bei den GPIOs.
    Egal, ob ich “Tasmoto Display” aus dem Release oder Development-Bereich flashe.
    Irgendeine Idee?
    Gruß
    Poldi

  2. Hi Poldi,
    also zunächst mal die SPI Gpio’s setzen und speichern
    dann mal in der Console
    mal DisplayModel 4
    eingeben + ENTER Taste

    dann Neustart ausführen und nochmal in die Configuration
    jetzt müsste die GPIO2 Auswahl ILI9341 DC verfügbar sein

    Grüße
    Markus

  3. Hi… Kann mich dem Problem von Poldi nur anschließen. Nach diesem Tutorial funktioniert das so nicht.

    Habe den ESP8266 Geflasht mit der Tasmota Display, Wifi verbunden, dann auf Generic umgestellt, gpios vergeben etc. DisplayModel bleibt immer auf 0 stehen, lässt sich nicht ändern, Konfiguration steht auch nur spi xxxx also nichts mit ili9341.

    was mache ich falsch ??

  4. bin leider nicht im Büro, also die Konsole gibt bei
    der Eingabe DisplayModel 4
    immer DisplayModel 0
    zurück?
    Ab Version Tasmota 13.4.4 hat sich die Display Integration ein wenig geändert, bzw. wurde erweitert,
    nun muss ein entsprechender display.ini descriptor file ABER wenn ich nicht ganz daneben liege funzt das ILI9341 sogar noch ohne
    display.ini descriptor file.
    So oder so unabhängig vom display.ini descriptor file den CS GPIO in der GPIO Konfiguration auf
    Option A 3
    setzen
    Der descriptor file ist auch kein großes Thema GEHT ABER NUR BEI 4MB Firmware Versionen also mit Manage File System,
    einfach in Manage File System dort auf edit create new File
    dort folgendes einfügen

    :H,ILI9341,240,320,16,SPI,1,*,*,*,*,*,*,*,40
    :S,2,1,1,0,40,20
    :I
    EF,3,03,80,02
    CF,3,00,C1,30
    ED,4,64,03,12,81
    E8,3,85,00,78
    CB,5,39,2C,00,34,02
    F7,1,20
    EA,2,00,00
    C0,1,23
    C1,1,10
    C5,2,3e,28
    C7,1,86
    36,1,48
    37,1,00
    3A,1,55
    B1,2,00,18
    B6,3,08,82,27
    F2,1,00
    26,1,01
    E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00
    E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F
    11,80
    29,80
    :o,28
    :O,29
    :A,2A,2B,2C,16
    :R,36
    :0,48,00,00,00
    :1,28,00,00,01
    :2,88,00,00,02
    :3,E8,00,00,03
    :i,20,21
    #

    als display.ini speichern
    Modul neu starten

    Grüße
    Markus

Schreibe einen Kommentar