Raspberry Pi connect TFT LCD
with Python Library from Adafruit
Hardware
- Raspberry Pi Board ( we use raspberry pi model B )
- TFT LCD ( Adafruit Chip Set ILI9341 or compatible) we use 2.2" TFT LCD from Elec Freaks
Feature:
- TFT01_2.2 SP is a 2.2 "SPI TFT LCD Screen Module, 10pins interface, compatible LCD5110 interface. Not just a LCD break but include SD card (2GB),
- The LCD in the TFT01 is ILI9341. It's a 240 * 320 (resolution), 2.2S inch TFT LCD screen.The LCD has a wide viewing angle, the contrast is also very suitable.
- The display interface is serial, it just needs 5 wires (CS, RS, SCL, SDA, RST) for controlling.
- Replace LCD5110, Support direct plug in ElecFreaks Joystick shield, EFCom, Key Pad Shield etc
- SDcard use hardware SPI interface (CS / MOSI / MISO / SCK), Not solder pins.
Parameter:
- SDO: Serial clock output
- LED: 3.3V IO and Power Supply pin
- SCL: Serial clock input
- SDA / SDI: Serial data input
- DC: Data / Command selection
- RST: Reset, Low level active
- CS: Chip Selection, Low level active
- GND: Ground
- VDD33: 3.3V Power Supply pin
- UTFT Support
Wiring Diagram
Raspberry Pi ( Model B )
|
TFT LCD
|
Pin 3.3V
|
Pin VCC
|
Pin GND
|
Pin GND
|
GPIO18
|
Pin DC
|
GPIO23
|
Pin Reset
|
GPIO10 ( SPI0 MOSI )
|
Pin SDI(MOSI)
|
GPIO11 ( SPI0 SCLK )
|
Pin SCK
|
GPIO08 ( SPI0 CE0 )
|
Pin CS
|
TFT LCD Pinout
Raspberry Pi Pinout
use Python ILI9341 TFT LCD Library from Adafruit
https://github.com/adafruit/Adafruit_Python_ILI9341
Python Code image.py
import Image
import Adafruit_ILI9341 as TFT
import Adafruit_GPIO as GPIO
import Adafruit_GPIO.SPI as SPI
# Raspberry Pi
configuration.
DC = 18
RST = 23
SPI_PORT = 0
SPI_DEVICE = 0
# BeagleBone Black
configuration.
# DC = 'P9_15'
# RST = 'P9_12'
# SPI_PORT = 1
# SPI_DEVICE = 0
# Create TFT LCD
display class.
disp =
TFT.ILI9341(DC, rst=RST, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=64000000))
# Initialize
display.
disp.begin()
# Load an image.
print 'Loading image...'
image = Image.open('cat.jpg')
# Resize the image
and rotate it so it's 240x320 pixels.
image = image.rotate(90).resize((240, 320))
# Draw the image on
the display hardware.
print 'Drawing image'
disp.display(image)
Python Code shapes.py
import Image
import ImageDraw
import ImageFont
import Adafruit_ILI9341 as TFT
import Adafruit_GPIO as GPIO
import Adafruit_GPIO.SPI as SPI
# Raspberry Pi
configuration.
DC = 18
RST = 23
SPI_PORT = 0
SPI_DEVICE = 0
# BeagleBone Black
configuration.
# DC = 'P9_15'
# RST = 'P9_12'
# SPI_PORT = 1
# SPI_DEVICE = 0
# Create TFT LCD
display class.
disp =
TFT.ILI9341(DC, rst=RST, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=64000000))
# Initialize
display.
disp.begin()
# Clear the display
to a red background.
# Can pass any tuple
of red, green, blue values (from 0 to 255 each).
disp.clear((255, 0, 0))
# Alternatively can
clear to a black screen by calling:
# disp.clear()
# Get a PIL Draw
object to start drawing on the display buffer.
draw = disp.draw()
# Draw some shapes.
# Draw a blue
ellipse with a green outline.
draw.ellipse((10, 10, 110, 80), outline=(0,255,0), fill=(0,0,255))
# Draw a purple
rectangle with yellow outline.
draw.rectangle((10, 90, 110, 160), outline=(255,255,0), fill=(255,0,255))
# Draw a white X.
draw.line((10, 170, 110, 230), fill=(255,255,255))
draw.line((10, 230, 110, 170), fill=(255,255,255))
# Draw a cyan
triangle with a black outline.
draw.polygon([(10, 275), (110, 240), (110, 310)], outline=(0,0,0), fill=(0,255,255))
# Load default font.
font =
ImageFont.load_default()
# Alternatively load
a TTF font.
# Some other nice
fonts to try: http://www.dafont.com/bitmap.php
#font =
ImageFont.truetype('Minecraftia.ttf', 16)
# Define a function
to create rotated text. Unfortunately
PIL doesn't have good
# native support for
rotated fonts, but this function can be used to make a
# text image and
rotate it so it's easy to paste in the buffer.
def draw_rotated_text(image,
text, position, angle, font, fill=(255,255,255)):
# Get rendered font width and height.
draw = ImageDraw.Draw(image)
width, height = draw.textsize(text,
font=font)
# Create a new image with transparent
background to store the text.
textimage = Image.new('RGBA', (width, height), (0,0,0,0))
# Render the text.
textdraw = ImageDraw.Draw(textimage)
textdraw.text((0,0), text, font=font,
fill=fill)
# Rotate the text image.
rotated = textimage.rotate(angle, expand=1)
# Paste the text into the image, using it as
a mask for transparency.
image.paste(rotated, position, rotated)
# Write two lines of
white text on the buffer, rotated 90 degrees counter clockwise.
draw_rotated_text(disp.buffer,
'Hello
World!', (150, 120), 90, font, fill=(255,255,255))
draw_rotated_text(disp.buffer,
'This
is a line of text.', (170, 90), 90, font, fill=(255,255,255))
# Write buffer to
display hardware, must be called to make things visible on the
# display!
disp.display()
Don't forget Disable blacklist
blacklist file
/etc/modprobe.d/raspi-blacklist.conf
nano /etc/modprobe.d/raspi-blacklist.conf # blacklist spi and i2c by default (many users don't need them) #blacklist spi-bcm2708 #blacklist i2c-bcm2708
Reference
Adafruit 2.2” TFT connect BeagleBone Black ( or Raspberry Pi
)
Adafruit Raspberry Pi TFT Python Library _ILI9341
2.2" TFT LCD from Elec Freaks
Wiring Diagram
Code form GitHub
Enable SPI for Raspberry Pi
http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html<< บทความต่อไป >>
My Website
email : info@softpowergroup.net Tel .081-6452400