1.3寸OLED屏使用教程

产品简介

提供树莓派、STM32、arduino例程

产品参数

  • 工作电压: 3.3V/5V
  • 通信接口: 3-wire SPI, 4-wire SPI, I2C
  • 屏幕类型: OLED
  • 控制芯片: SH1106
  • 分辨率: 128*64(Pixel)
  • 显示尺寸: 14.7(H)x 29.42(V)(mm)
  • 像素大小: 0.21 x 0.21 (mm)
  • 产品尺寸: 40.5 x 37.5(mm)
  • 显示颜色: 蓝色
  • 工作温度: -20°C ~ 70°C
  • 存储温度: -30°C ~ 80°C
  • 视角: >160°

功能引脚

功能引脚描述
VCC3.3V/5V电源正
GND电源地
NCNC
DINSPI数据输入
CLKSPI时钟输入
CS片选,低电平有效
RST复位

硬件配置

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



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

通信方式BS1/BS0
3-wire SPI0/1
4-wire SPI0/0
I2C1/0

具体硬件配置,如下:

  • 使用4线SPI:

即出厂程序设置:BS0与BS1接0连接到地,DIN接0连接至树莓派MOSI,CLK接0连接至树莓派SCLK;

  • 使用3线SPI:

BS0接1连接到VCC,BS1接0连接至GND,DIN接0连接至树莓派MOSI,CLK接0来连接至树莓派SCLK;

  • 使用I2C:

BS0接0连接至GND,BS1接1连接至VCC(3.3V),DIN接0连接至树莓派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中间检查

安装库

  • 安装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

硬件连接

默认使用的4线SPI



LCDRPi引脚号BCM
VCC3.3V3.3V
GNDGNDGND
DIN19MOSI
CLK23SCLK
CS24CE0
DC18P24
RST22P25

下载例程

在树莓派终端运行:

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

运行测试程序

  • C语言
  1. cd c
  2. make clean
  3. make
  4. sudo ./main
  5. #预期效果
  6. #显示数字和英文
  7. #显示时间
  • python
  1. cd python
  2. sudo python main.py
  3. #预期效果
  4. #显示英文和中文
  5. #显示图片

I2C控制

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



LCDRPi引脚号BCM
VCC3.3V3.3V
GNDGNDGND
DIN3SDA
CLK5SCL
CS24CE0
DC18P24
RST22P25

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

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

  1. Device_SPI = 1
  2. Device_I2C = 0

改成

  1. Device_SPI = 0
  2. Device_I2C = 1

然后重新执行:

  1. sudo python main.py

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-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. #python3
  5. cd python3
  6. sudo python3 main.py

STM32

  • 本例程使用的开发板为 Open103R 开发板 ,主控为STM32F103RCT6,程序是基于标准库

硬件连接

把 OLED 模块连接到 Open103R 开发板 SPI2 接口。

OLEDSTM32
VCC3.3V
GNDGND
DINPB15
CLKPB13
CSPB12
DCPC6
RSTPC2

下载程序,找到STM32程序文件目录并打开STM32工程。注意使用前先确保电脑已经安装好keil5软件。 确认好开发板型号,并连接好下载器。点击编译,然后点击下载将程序下载到开发板即可

预期效果

  1. 显示数字和英文
  2. 显示时间

Arduino

  • 本例程使用的开发板为Arduino UNO

硬件连接

由于我们提供的示例程序是基于Arduino UNO,所以对应给出的硬件连接也是基于Arduino UNO. 如果你要连接屏幕到别的Arduino开发板,请先确认您的开发板接口是否兼容Arduino UNO. 如果不兼容UNO,需要修改硬件连接方式,以实际开发板引脚为准。

OLEDUNO
VCC5V
GNDGND
DIND11
CLKD13
CSD10
DCD8
RSTD9

打开工程,选择开发板型号和对应COM口,然后点击编译并下载即可。

预期效果

  1. 显示图片
  2. 显示时间