78 lines
2.9 KiB
Markdown
78 lines
2.9 KiB
Markdown
# PiDisplay
|
|
Setup and use the Pi OLED HAT by Waveshare
|
|
|
|
The **1.3" OLED Display HAT for [Raspberry Pi](https://www.raspberrypi.org/)** is a display HAT as the
|
|
same size of a [Pi Zero](https://www.raspberrypi.org/products/raspberry-pi-zero/). The information
|
|
provided by the manufacturer [Waveshare Electronics](https://www.waveshare.com/) is somewhat awkward,
|
|
I decided to document my journey here, along with the Python script I adopted to control the display.
|
|
|
|
## Hardware
|
|
The display attaches to a Pi Zero via the GPIO. It is a 128 x 64 1.3" blue OLED display with a 5-ways
|
|
joystick on one side, and 3 buttons on the other:
|
|
* Driver: SH1106
|
|
* Interface: 4-wire SPI, 3-wire SPI, I2C
|
|
* Display color: blue
|
|
* Resolution: 128 x 64
|
|
* Operating voltage: 3.3V
|
|
|
|
The display has some jumpers at the back to be soldered to enable/disable the interfaces it uses.
|
|
I decided to use the default 4-wire SPI which require no soldering at all.
|
|
|
|
## Setup
|
|
I decided to use Python to control my display. There are other options from the manufacturer but I
|
|
didn't explore them.
|
|
|
|
_**Note: The following steps are deduced from the documents from the manufacturer. I performed them
|
|
in the exact order listed below, but I'm not sure if the ordering is necessary**_
|
|
|
|
### Prepare raspbian
|
|
* `sudo apt-get update`
|
|
* `sudo apt-get install python-dev`
|
|
|
|
### Install RPi.GPIO
|
|
* Download RPi.GPIO from [https://pypi.python.org/pypi/RPi.GPIO](https://pypi.python.org/pypi/RPi.GPIO) to somewhere.
|
|
* Extract the content (`tar xvfz RPi.GPIO-x.y.z.tar.gz`)
|
|
* `cd RPi.GPIO-x.y.z`
|
|
* `sudo python setup.py install`
|
|
|
|
### Install spidev
|
|
* Download spidev from [https://pypi.python.org/pypi/spidev](https://pypi.python.org/pypi/spidev) to somewhere.
|
|
* Extract the content (`tar xvfz spidev-x.y.tar.gz`)
|
|
* `sudo apt-get install python-smbus`
|
|
* `sudo apt-get install python-serial`
|
|
* `cd spidev-x.y`
|
|
* `sudo python setup.py install`
|
|
|
|
### Install Python Imaging
|
|
* `sudo apt-get install python-imaging`
|
|
|
|
### Enable the SPI interface
|
|
* `sudo raspi-config`
|
|
* Go to '5 Interfacing Options'
|
|
* Go to 'P4 SPI'
|
|
* Choose 'Yes'
|
|
|
|
### Enable the I2C interface
|
|
I'm not sure if this is necessary, but well what the hack...
|
|
* `sudo raspi-config`
|
|
* Go to '5 Interfacing Options'
|
|
* Go to 'P5 I2C'
|
|
* Choose 'Yes'
|
|
|
|
### Install the luma.oled driver
|
|
* `sudo apt-get install python-pip libfreetype6-dev libjpeg-dev`
|
|
* `sudo -H pip install --upgrade pip`
|
|
* `sudo apt-get purge python-pip`
|
|
* `sudo -H pip install --upgrade luma.oled`
|
|
|
|
## Test
|
|
That's it, the display is ready to use.
|
|
|
|
### Sample python app
|
|
* Download the sample apps from [https://www.waveshare.com/wiki/File:1.3inch-OLED-HAT-Code.7z](https://www.waveshare.com/wiki/File:1.3inch-OLED-HAT-Code.7z) to somewhere
|
|
* Extract the content somehow, I'm too lazy to find out how to handle 7z on Linux...
|
|
* `cd` to the subfolder containing the Python samples
|
|
* `sudo python demo.py`
|
|
|
|
## Next step
|
|
The Python code in this repo are adopted by me from `demo.py` provided by the manufacturer. |