树莓派1.3寸OLED显示屏使用教程

产品简介

提供树莓派和Jetson nano示例程序

产品参数

  • 驱动芯片: SH1106
  • 支持接口: 3-wire SPI, 4-wire SPI, I2C
  • 分辨率: 128*64
  • 显示尺寸: 1.3inch
  • 外形尺寸: 65mm*30mm
  • 显示颜色: 蓝色
  • 视角: >160°
  • 工作温度: -20°C ~ 70°C
  • 存储温度: -30°C ~ 80°C

功能引脚

功能引脚树莓派接口(BCM)描述
KEY1P21按键1GPIO
KEY2P20按键2GPIO
KEY3P16按键3GPIO
摇杆UPP6摇杆上
摇杆DownP19摇杆下
摇杆LeftP5摇杆左
摇杆RightP26摇杆右
摇杆PressP13摇杆按下
SCLKP11/SCLKSPI时钟线
MOSIP10/MOSISPI数据线
SCLP3/SCL1I2C时钟线
SDAP2/SDA1I2C数据线
DCP24数据/命令选择
CSP8/CE0片选
RSTP25复位

硬件配置

OLED模块提供三种驱动接口:分别为3-wire SPI、4-wire SPI 和I2C接口,模块背面有六个可选择焊接的电阻, 通过电子的选择来选择相应的通信方式, 如图:

模块出厂默认使用4线SPI通信模式, 即BS0,BS1,DC,CS,CLK,DIN默认接0(1和0不全代表电平,只是电阻接上或者接下的焊接方式,具体硬件链接见下表):
注:上图为硬件上的焊接, 下表为实际的硬件连接

通信方式BS1/BS0CSDCDINCLK
3-wire SPI0/1CS1MOSISCLK
4-wire SPI0/0CSDCMOSISCLK
I2C1/001SDASCL

具体硬件配置,如下:

  • 使用4线SPI:

即出厂程序设置:BS0与BS1接0连接到地,CS接0连接到树莓派CE0(使能管脚),D/C接0连接到树莓派的P24(数据/命令管脚),DIN接0连接至树莓派MOSI,CLK接0连接至树莓派SCLK;

  • 使用3线SPI:

BS0接1连接到VCC,BS1接0连接至GND,CS接0连接至树莓派CE0,D/C接1连接值GND,DIN接0连接至树莓派MOSI,CLK接0来连接至树莓派SCLK;

  • 使用I2C:

BS0接0连接至GND,BS1接1连接至VCC(3.3V),CS接1连接GND,D/C接1来连接至GND,DIN接1连接至树莓派SDA,CLK接1连接至树莓派SCL;使用I2C时:DC的高低状态可以控制从设备的地址,这里接到了GND,那么I2C的7位地址为:0x3C

树莓派

提供C语言与python例程

开启SPI接口

  • 打开树莓派终端,输入以下指令进入配置界面
  1. sudo raspi-config
  2. 选择Interfacing Options -> SPI -> Yes 开启SPI接口


然后重启树莓派:

  1. sudo reboot

请确保SPI没有被其他的设备占用,你可以在/boot/config.txt中间检查

打开I2C接口

在终端执行:

  1. sudo raspi-config
  2. 选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动


然后重启树莓派:

  1. sudo reboot

安装库

  • 安装BCM2835, 打开树莓派终端,并运行以下指令
  1. wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
  2. tar zxvf bcm2835-1.60.tar.gz
  3. cd bcm2835-1.60/
  4. sudo ./configure && sudo make && sudo make check && sudo make install
  5. # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
  • 安装wiringPi
  1. sudo apt-get install wiringpi
  2. #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
  3. wget https://project-downloads.drogon.net/wiringpi-latest.deb
  4. sudo dpkg -i wiringpi-latest.deb
  5. gpio -v
  6. # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
  • python
  1. sudo apt-get update
  2. sudo apt-get install python-pip
  3. sudo pip install RPi.GPIO
  4. sudo apt-get install python-smbus
  5. sudo pip install spidev

下载例程

在树莓派终端运行:

  1. sudo apt-get install p7zip-full
  2. wget http://www.waveshare.net/w/upload/5/53/1.3inch-OLED-HAT-Code.7z
  3. 7z x 1.3inch-OLED-HAT-Code.7z -r -o./1.3inch-OLED-HAT-Code
  4. sudo chmod 777 -R 1.3inch-OLED-HAT-Code
  5. cd 1.3inch-OLED-HAT-Code/RaspberryPi/

运行测试程序

  • C语言
  1. cd C
  2. make clean
  3. make
  4. sudo ./main
  • python
  1. #python2
  2. cd python2
  3. sudo python main.py
  4. sudo python key_demo.py
  5. #python3
  6. cd python3
  7. sudo python3 main.py
  8. sudo python3 key_demo.py
  • 对于树莓派4B及raspbian_lite-2019-06-20系统之后需要设置如下,按键才能正常输入
  1. sudo nano /boot/config.txt
  2. #添加如下:
  3. gpio=6,19,5,26,13,21,20,16=pu

I2C控制

  • 默认使用的4线SPI,如果硬件上修改成I2C的,需要修改程序

C语言

打开C\obj\DEV_Config.h,把如下:

  1. #define USE_SPI 1
  2. #define USE_IIC 0

改成

  1. #define USE_SPI 0
  2. #define USE_IIC 1

然后重新执行:

  1. make clean
  2. make
  3. sudo ./main

python

打开python2/config.py,把如下:

  1. Device_SPI = 1
  2. Device_I2C = 0

改成

  1. Device_SPI = 0
  2. Device_I2C = 1

然后重新执行:

  1. sudo python main.py

python3同理

Jetson nano

安装库

安装函数库

  • 打开终端界面,输入以下指令安装相应的函数库
  1. sudo apt-get update
  2. sudo apt-get install python3-pip
  3. sudo pip3 install Jetson.GPIO
  4. sudo groupadd -f -r gpio
  5. sudo usermod -a -G gpio your_user_name
  6. sudo cp /opt/nvidia/jetson-gpio/etc/99-gpio.rules /etc/udev/rules.d/
  7. sudo udevadm control --reload-rules && sudo udevadm trigger

【注意】your_user_name 是你使用的用户名,比如说 waveshare

  • 安装I2C
  1. sudo apt-get install python-smbus
  • 安装图像处理库:
  1. sudo apt-get install python3-pil
  2. sudo apt-get install python3-numpy

下载程序

  1. sudo apt-get install p7zip
  2. wget http://www.waveshare.net/w/upload/5/53/1.3inch-OLED-HAT-Code.7z
  3. 7z x 1.3inch-OLED-HAT-Code.7z
  4. sudo chmod 777 -R 1.3inch-OLED-HAT-Code
  5. cd 1.3inch-OLED-HAT-Code/JetsonNano/

运行测试程序

由于JetsonNano的GPIO驱动能力弱,只能使用SPI进行控制

  • C语言
  1. cd C
  2. make clean
  3. make
  4. sudo ./main
  • python
  1. #python2
  2. cd python2
  3. sudo python main.py
  4. sudo python key_demo.py
  5. #python3
  6. cd python3
  7. sudo python3 main.py
  8. sudo python3 key_demo.py