ESP32 - LCD I2C

Dieses Tutorial zeigt Ihnen, wie Sie den ESP32 mit einem 16x2-LCD-I2C unter MicroPython verwenden. Sie lernen:

ESP32 MicroPython und 16x2-LCD-I2C

Erforderliche Hardware

1×38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow
1×(Alternativ) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativ) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativ) ESP32 Uno-form board
1×(Alternativ) ESP32 S3 Uno-form board
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×LCD I2C Display 3.3V
1×(Alternativ) LCD I2C 20x4
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Kaufhinweis: Die meisten LCD I2C-Displays auf dem Markt sind 5V-Displays. Sie funktionieren möglicherweise mit diesem Board, aber das ist nicht sicher und kann das Board beschädigen. Wir empfehlen dringend, das oben empfohlene 3.3V LCD I2C-Display zu verwenden.

Überblick über LCD I2C 16x2

Das 16x2-LCD-I2C ist ein Bildschirm mit 16 Spalten und 2 Zeilen. Es verfügt über eine I2C-Schnittstelle und ein Potentiometer zum Einstellen des Bildschirmkontrasts.

Pinbelegung

Das LCD I2C verwendet eine I2C-Schnittstelle und hat 4 Pins.

  • GND-Pin: mit GND (0 Volt) verbinden.
  • VCC-Pin: zur Stromversorgung mit VCC (5 Volt) verbinden.
  • SDA-Pin: überträgt das I2C-Datensignal.
  • SCL-Pin: überträgt das I2C-Taktsignal.
LCD I2C Pinbelegung

LCD-Koordinaten

Das LCD I2C 16x2 umfasst 16 Spalten und 2 Zeilen. Die Nummerierung von Spalten und Zeilen beginnt bei 0.

ESP32 MicroPython LCD I2C Koordinaten

Verdrahtungsdiagramm

  • So verbinden Sie ESP32 und LCD I2C über ein Breadboard (Stromversorgung über USB-Kabel)
ESP32 MicroPython LCD I2C Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

  • So verbinden Sie ESP32 und LCD I2C über ein Breadboard (Stromversorgung über Vin-Pin)
ESP32 MicroPython LCD-Display Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

So verbinden Sie ESP32 und LCD I2C
So verdrahten Sie ESP32 und LCD I2C
LCD I2C ESP32
VCC Vin 5V
GND GND
SDA GPIO21 (SDA)
SCL GPIO22 (SCL)

ESP32 MicroPython-Code

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-micropython/esp32-micropython-lcd-i2c */ from machine import I2C, Pin from DIYables_MicroPython_LCD_I2C import LCD_I2C import utime # The I2C address of your LCD (Update if different) I2C_ADDR = 0x27 # Use the address found using the I2C scanner # Define the number of rows and columns on your LCD LCD_ROWS = 2 LCD_COLS = 16 # Initialize I2C i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000) # Initialize LCD lcd = LCD_I2C(i2c, I2C_ADDR, LCD_ROWS, LCD_COLS) # Setup function lcd.backlight_on() lcd.clear() # Main loop function while True: lcd.clear() lcd.set_cursor(3, 0) # Move the cursor to column 3, row 0 (first row) lcd.print("DIYables") lcd.set_cursor(0, 1) # Move the cursor to column 0, row 1 (second row) lcd.print("www.diyables.io") utime.sleep(2) lcd.clear() lcd.set_cursor(0, 0) # Move to the beginning of the first row lcd.print("Int: ") lcd.print(str(1234)) # Print integer lcd.set_cursor(0, 1) # Move to the beginning of the second row lcd.print("Float: ") lcd.print(str(56.78)) # Print float utime.sleep(2)

Schnelle Schritte

So richten Sie Ihren MicroPython-Code auf dem ESP32 mit der Thonny IDE ein und führen ihn aus:

  • Stellen Sie sicher, dass die Thonny IDE auf Ihrem Computer installiert ist.
  • Vergewissern Sie sich, dass die MicroPython-Firmware auf Ihrem ESP32-Board installiert ist.
  • Wenn Sie zum ersten Mal einen ESP32 mit MicroPython verwenden, lesen Sie die Anleitung ESP32 MicroPython Erste Schritte mit Schritt-für-Schritt-Anweisungen.
  • Verbinden Sie das LCD-I2C-Display gemäß dem Schaltplan mit dem ESP32.
  • Verbinden Sie das ESP32-Board über ein USB-Kabel mit Ihrem Computer.
  • Öffnen Sie die Thonny IDE auf Ihrem Computer.
  • Gehen Sie in der Thonny IDE zu Tools Options.
  • Wählen Sie im Tab Interpreter aus dem Dropdown-Menü MicroPython (ESP32) aus.
  • Stellen Sie sicher, dass der richtige Port ausgewählt ist. Die Thonny IDE erkennt ihn normalerweise automatisch, eventuell müssen Sie ihn aber manuell auswählen (z. B. COM12 unter Windows oder /dev/ttyACM0 unter Linux).
  • Navigieren Sie in der Thonny IDE zu Tools Manage packages.
  • Suchen Sie nach “DIYables-MicroPython-LCD-I2C” und finden Sie die von DIYables erstellte LCD-I2C-Bibliothek.
  • Klicken Sie auf DIYables-MicroPython-LCD-I2C und dann auf die Schaltfläche Install, um die LCD-I2C-Bibliothek zu installieren.
ESP32 MicroPython LCD-I2C-Bibliothek
  • Kopieren Sie den bereitgestellten MicroPython-Code und fügen Sie ihn in den Editor von Thonny ein.
  • Speichern Sie den Code auf Ihrem ESP32:
    • Klicken Sie auf die Schaltfläche Save oder drücken Sie Ctrl+S.
    • Wählen Sie im Speicherdialog MicroPython device.
    • Nennen Sie die Datei main.py.
  • Klicken Sie auf die grüne Schaltfläche Run (oder drücken Sie F5), um das Skript auszuführen.
  • Sehen Sie sich das Ergebnis auf dem LCD-Display an.
ESP32 MicroPython LCD 16x2

Mehr mit dem LCD

Benutzerdefinierte Zeichen auf dem LCD anzeigen

Um Sonderzeichen oder Symbole (wie ein Herz oder einen Angry Bird) auf einem LCD anzuzeigen, benötigen Sie einen Zeichengenerator. Der Grund dafür ist, dass die Funktion lcd.print() nur Standard-ASCII-Zeichen anzeigen kann.

Das LCD 16x2 kann 32 Zeichen anzeigen, angeordnet in 16 Positionen pro Zeile über 2 Zeilen. Jedes Zeichen besteht aus 40 Pixeln, die in 8 Zeilen und 5 Spalten organisiert sind.

ESP32 MicroPython LCD 16x2 Pixel

Der Zeichengenerator erstellt ein Zeichen (40 Pixel). Sie müssen nur diese Schritte befolgen:

Click on each pixel to select/deselect


Copy below custom character code
Replace the heart in the below code
/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-micropython/esp32-micropython-lcd-i2c */ from machine import I2C, Pin from DIYables_MicroPython_LCD_I2C import LCD_I2C import utime # The I2C address of your LCD (Update if different) I2C_ADDR = 0x27 # Define the number of rows and columns on your LCD LCD_ROWS = 2 LCD_COLS = 16 # Initialize I2C i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000) # Initialize LCD lcd = LCD_I2C(i2c, I2C_ADDR, LCD_ROWS, LCD_COLS) # Define custom character 0 (heart shape) heart = [ 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 ] # Create the custom character at location 0 lcd.custom_char(0, heart) # Display the custom character lcd.print("Custom Char: ") lcd.print_custom_char(0) # Display the custom character stored at location 0

Auf dem Bildschirm angezeigtes Ergebnis:

LCD benutzerdefiniertes Zeichen

Mehrere benutzerdefinierte Zeichen auf dem LCD anzeigen

Wir können bis zu 8 Sonderzeichen erstellen (von 0 bis 7). So erstellen und zeigen Sie drei dieser Zeichen an.

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-micropython/esp32-micropython-lcd-i2c */ from machine import I2C, Pin from DIYables_MicroPython_LCD_I2C import LCD_I2C import utime # The I2C address of your LCD (Update if different) I2C_ADDR = 0x27 # Define the number of rows and columns on your LCD LCD_ROWS = 2 LCD_COLS = 16 # Initialize I2C i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000) # Initialize LCD lcd = LCD_I2C(i2c, I2C_ADDR, LCD_ROWS, LCD_COLS) # Define custom character 0 (heart shape) heart = [ 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 ] # Define custom character 1 (arrow pointing upwards) arrow_up = [ 0b00100, 0b01110, 0b11111, 0b00100, 0b00100, 0b00100, 0b00100, 0b00100 ] # Define custom character 2 (arrow pointing downwards) arrow_down = [ 0b00100, 0b00100, 0b00100, 0b00100, 0b00100, 0b11111, 0b01110, 0b00100 ] # Create the custom character at location 0 lcd.custom_char(0, heart) lcd.custom_char(1, arrow_up) lcd.custom_char(2, arrow_down) # Display the custom character lcd.set_cursor(0, 0) # Move the cursor to column 0, row 0 (first row) lcd.print_custom_char(0) # Display the custom character stored at location 0 lcd.set_cursor(5, 0) # Move the cursor to column 5, row 0 (first row) lcd.print_custom_char(1) # Display the custom character stored at location 0 lcd.set_cursor(10, 0) # Move the cursor to column 10, row 0 (first row) lcd.print_custom_char(2) # Display the custom character stored at location 0

Auf dem LCD-Bildschirm angezeigtes Ergebnis:

LCD mehrere benutzerdefinierte Zeichen

Zusammenfassung: So verwenden Sie benutzerdefinierte Zeichen auf einem LCD

  • Binärcode erstellen: Verwenden Sie das bereitgestellte Tool, um den Binärcode für Ihr benutzerdefiniertes Zeichen zu erzeugen.
  • Code notieren: Kopieren Sie den Binärcode aus dem Tool.
heart = [ 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 ]
  • Erstellen Sie ein benutzerdefiniertes Zeichen und legen Sie es an einer Position von 0 bis 7 ab
lcd.custom_char(0, heart)
  • Zeigen Sie ein benutzerdefiniertes Symbol auf dem LCD-Display an.
lcd.print_custom_char(0) # Display the custom character stored at location 0

Fehlerbehebung beim LCD I2C

Wenn Sie Probleme haben, Text auf Ihrem LCD-I2C-Bildschirm anzuzeigen, versuchen Sie Folgendes:

  • Helligkeit einstellen: Drehen Sie das Potentiometer auf der Rückseite des LCD, um die Helligkeit zu erhöhen oder zu verringern.
  • I2C-Adresse prüfen: Die I2C-Adresse des LCD kann je nach Hersteller variieren. Übliche Adressen sind 0x27 und 0x3F. Probieren Sie diese Adressen aus, um zu sehen, ob eine davon funktioniert. Falls nicht, können Sie den folgenden I2C-Scanner-Code auf dem ESP32-Board ausführen, um die richtige I2C-Adresse zu ermitteln.
/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-micropython/esp32-micropython-lcd-i2c */ from machine import I2C, Pin import utime i2c = I2C(1, scl=Pin(22), sda=Pin(21)) print('Scanning I2C bus...') devices = i2c.scan() if len(devices) == 0: print("No I2C devices found") else: print('I2C devices found:',len(devices)) for device in devices: print("Decimal address: ",device," | Hex address: ",hex(device)) utime.sleep(2)

Das in der Shell unten in Thonny angezeigte Ergebnis:

Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Scanning I2C bus... I2C devices found: 1 Decimal address: 39 | Hex address: 0x27
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!