Mittwoch, 19. Februar 2020

Raspberry Pi - Adafruit Mini PiTFT 135x240 Color TFT Add-on


Das Mini-PiTFT Display von Adafruit bietet ein 240x135 Pixel großes IPS-Farbdisplay und wird per SPI-Port angesteuert. Es hat zwei taktile Tasten auf GPIO-Pins und auf der Unterseite gibt es einen Qwiic/STEMMA QT-Anschluss für I2C-Sensoren.


Für das Display gibt es einen Kernel-Treiber und eine Python-Bibliothek, so kann man sich eine Konsolenausgabe einrichten oder man kann sich nach belieben Bilder, Text mit der Python-Imaging-Bibliothek anzeigen lassen.



Installation und Python-Setup

Die Installation an sich ist relativ einfach, man steckt das Display auf die Pins des Raspberry Pi und installiert die folgenden Module, damit es angesprochen werden kann.

Python Installation of RGB Display Library
  • sudo apt-get install python3-pip
  • sudo pip3 install adafruit-circuitpython-rgb-display
  • sudo pip3 install --upgrade --force-reinstall spidev
DejaVu TTF Font
  • sudo apt-get install ttf-dejavu
Pillow Library
  • sudo apt-get install python3-pil
NumPy Library
  • sudo apt-get install python3-numpy
Anschließemd kann das folgende Demo Script "rgb_display_minipitfttest.py" ausgeführt werden.
  • sudo python3 rgb_display_minipitfttest.py
Wichtig: SPI-Port muss aktiviert sein!

Mit Hilfe von  raspi-config non-interactively bekommt man den SPI-Status:
  • sudo raspi-config nonint get_spi 
  • returns 0 (enabled) or 1 (disabled)

Aktivieren von SPI mit:
  • sudo raspi-config nonint do_spi 0

import digitalio
import board

from adafruit_rgb_display.rgb import color565
import adafruit_rgb_display.st7789 as st7789

# Configuration for CS and DC pins for Raspberry Pi
cs_pin = digitalio.DigitalInOut(board.CE0)
dc_pin = digitalio.DigitalInOut(board.D25)
reset_pin = None
BAUDRATE = 64000000   # The pi can be very fast!
# Create the ST7789 display:
display = st7789.ST7789(board.SPI(), cs=cs_pin, dc=dc_pin, rst=reset_pin, baudrate=BAUDRATE,
                        width=135, height=240, x_offset=53, y_offset=40)

backlight = digitalio.DigitalInOut(board.D22)
backlight.switch_to_output()
backlight.value = True
buttonA = digitalio.DigitalInOut(board.D23)
buttonB = digitalio.DigitalInOut(board.D24)
buttonA.switch_to_input()
buttonB.switch_to_input()

# Main loop:
while True:
    if buttonA.value and buttonB.value:
        backlight.value = False              # turn off backlight
    else:
        backlight.value = True               # turn on backlight
    if buttonB.value and not buttonA.value:  # just button A pressed
        display.fill(color565(255, 0, 0))    # red
    if buttonA.value and not buttonB.value:  # just button B pressed
        display.fill(color565(0, 0, 255))    # blue
    if not buttonA.value and not buttonB.value:      # none pressed
        display.fill(color565(0, 255, 0))    # green


Quelle:

 

Pin Belegung des Displays

  • 5.0V - Connected to the display backlight
  • 3.3V - Connected to the display power and also the STEMMA QT / Qwiic connector
  • GND - Ground for everything
  • SDA & SCL - I2C data for the STEMMA QT / Qwiic connector. Not used by buttons or display
  • GPIO22 - Used to turn the backlight on and off. If you never want to turn the backlight off, cut the small jumper on the bottom of the PiTFT to free up GPIO22
  • GPIO23 & GPIO24 - Connected to the two front buttons. These pins have 10K pullups to 3.3V so when the button is pressed, you will read a LOW voltage on these pins
  • SCK, MOSI, CE0 & GPIO25 - These are the display control pins. Note that MISO is not connected even though it is a SPI pin because you cannot read back from the display.

Not used: GPIO4, GPIO17, GPIO18, GPIO27

If you are using the 240x135 1.14" (small rectangular) Mini PiTFT, you can attach other hardware to the Pi on those pins if you use a stacking header - it will go through the 2x12 connector on the Mini PiTFT.