This repository has been archived on 2024-05-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
PiDisplay/README.md
T

79 lines
3.3 KiB
Markdown

# PiDisplay
Setup and use the 1.3" OLED Display HAT for Raspberry Pi by Waveshare
The **[1.3" OLED Display HAT for Raspberry Pi](https://www.waveshare.com/product/modules/oleds-lcds/oled/1.3inch-oled-hat.htm)** is a display the
same size of a [Raspberry 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,
so 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 via the GPIO. It is a 128x64 1.3" blue OLED display with a 5-way
joystick on one side, and 3 buttons on the other:
* Driver: SH1106
* Interface: 4-wire SPI, 3-wire SPI, I2C
* Operating voltage: 3.3V
The display has some jumpers at the back to be soldered to enable/disable the interfaces it uses.
It is a no-brainer 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
haven't explore them.
_**Note: The following steps are deduced from the documents provided by the manufacturer. I performed them
in the exact order listed below, but I'm not sure if that is absolutely 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
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
Well I'm not too sure about what is the point to install python-pip then remove it......
* `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... :stuck_out_tongue_closed_eyes:
* `cd` to the subfolder containing the Python samples.
* `sudo python demo.py`
## Next step
The original Python code in this repo is adopted from `demo.py` provided by the manufacturer, which is no good for 'production' use. Because your Pi will be too busy looking for button inputs instead of doing anything else useful.
The latest version utilize GPIO input detection instead of busy wait, which is much more reasonable CPU-wise.