2.23inch OLED HAT

来自Waveshare Wiki
Eng34讨论 | 贡献2022年2月28日 (一) 18:58的版本
跳转至: 导航搜索
2.23inch-OLED-HAT
{{{name2}}}
{{{name3}}}
功能简介
特性 无特性,不解释
显示尺寸 2.23英寸
分辨率 128×32
' 无特性,不解释
' 无特性,不解释
接口 I2C SPI OLED

说明

提供树莓派、STM32、Arduino示例程序,并实现常用屏幕操作功能:画点、画线、画矩形、画圆,可以控制它们的大小、宽度、填充,可以显示字符串。

产品参数

  • 驱动芯片: SSD1305
  • 支持接口: I2C、SPI、OLED
  • 分辨率: 128*32
  • 显示尺寸: 2.23inch
  • 像素大小: 0.41 x 0.39(mm)
  • 显示颜色: 白色
  • 工作电压: 3.3V
  • 工作温度:-40~70℃

功能引脚

功能引脚 描述
VCC 电源正
GND 电源地
DIN 数据输入
CLK 时钟输入
CS 片选(低有效)
DC 寄存器/数据选择
RST 复位(低有效)

硬件配置


2.23inch-OLED-HAT-2.jpg
模块出厂默认使用SPI通信模式, 即BS1,BS2,DIN,CLK,CS,DS默认将0R电阻接上方两个焊盘。如上图所示的焊接方式,则是选择I2C的通信方式,具体硬件连接见下表:
注:上图为硬件上的焊接, 下表为实际的硬件连接

通信方式 BS1 BS2 DIN CLK CS DC
SPI GND NC MOSI SCLK CS DC
I2C 3V3 DIN SDA SCL GND GND

工作原理:

  • SSD1305是一款132*64像素的OLED控制器,但该OLED只有128*32个像素点,所以该屏只用到了SSD1305缓存区的前一部分;
  • 该OLED支持8bit 8080并行、SPI和I2C等通信方式,但考虑到该模块的尺寸,以及节省微控制器宝贵的IO资源,故舍弃了8bit 8080并行方式,支持I2C与SPI的通信方式。

通信协议介绍

I2C介绍

  • 2.23inch-OLED-HAT-3.jpg
  • 在I2C通信时,先发送一个7bit的从设备地址+1bit的读写位,等待设备的响应。
  • 在从设备应答后,接着发送一个控制字节,该字节决定了后面发送的字节是命令还是数据,然后再等待从设备应答。
  • 在从设备再次应答之后,若发送命令,则只发送一字节的命令。若发送数据,可以只发送一个字节,也可以多个字节的数据连着发送,视情况而定。
  • 详见Datasheet Page22 Figure 8-6。

SPI介绍

  • 2.23inch-OLED-HAT-4.jpg
  • 如上图所示,SDIN 上的数据按 MSB 在前 LSB 在后为次序在每个 SCLK 的上升沿到来时被移入一个 8-bit 移位寄 存器。
  • D/C#在每第 8 个时钟被采样,并且移位寄存器里的数据被写入图形显示内存(GDDRAM) 或者命令寄存器,在同样的计数时钟下。
  • 在串行模式下,仅允许写操作。 在 4-wireSPI 模式下的写操作过程。
  • 详见Datasheet Page21 Figure 8-5。

树莓派

提供C语言与python例程

开启SPI接口

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

RPI open spi.png

  • 重启树莓派:
sudo reboot
  • 检查 /boot/config.txt,可以看到 'dtparam=spi=on' 已被写入

RPI open spi 1.jpg

  • 为了确保 SPI 没有被占用,建议其他的驱动覆盖暂时先关闭。可以使用 ls /dev/spi* 来检查 SPI 占用情况,终端输出 /dev/spidev0.0 和 /dev/spidev0.1 表示 SPI 情况正常

RPI open spi 2.jpg

开启I2C接口

  • 打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 
选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动

RPI open i2c.png
然后重启树莓派:

sudo reboot

安装库

如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用

BCM2835

#打开树莓派终端,并运行以下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz 
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/

wiringPi

#打开树莓派终端,并运行以下指令
cd
sudo apt-get install wiringpi
#对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
# 运行gpio -v会出现2.52版本,如果没有出现说明安装出错

#Bullseye分支系统使用如下命令:
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v
# 运行gpio -v会出现2.70版本,如果没有出现说明安装出错

lgpio

#打开树莓派终端,并运行以下指令
wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
sudo make install

# 更多的可以参考官网:https://github.com/gpiozero/lg

python

#打开树莓派终端,并运行以下指令
#python2
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-pil
sudo apt-get install python-numpy
sudo pip install RPi.GPIO
sudo pip install spidev
sudo pip install Adafruit-PureIO
#python3
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev
sudo pip3 install Adafruit-PureIO

下载例程

  • 在树莓派终端运行:
sudo apt-get install p7zip-full
wget http://www.waveshare.net/w/upload/c/c5/2.23inch-OLED-HAT-Code.7z
7z x 2.23inch-OLED-HAT-Code.7z 
sudo chmod 777 -R  2.23inch-OLED-HAT-Code
cd 2.23inch-OLED-HAT-Code/
  • 树莓派例程使用(以下SPI例程为例)
  • 滚动显示是将SSD1305的RAM中的所有像素点都启用了(132X64),通过滚动在屏幕(128X32)中显示出来。
  • 滚动例程提供两种滚动方式,只能二选一或者都不选,设置成'1'即可。
#define VERTICAL 1 
#define HORIZONTAL 0

基于BCM2835的使用

#正常显示
cd Without scrolling/Raspberry\ Pi/SPI/bcm2835
make clean
make
sudo ./oled
#滚动显示
cd Scroll/Raspberry\ Pi/SPI/bcm2835
make clean
make
sudo ./oled

基于WiringPi的使用

#正常显示
cd Without scrolling/Raspberry\ Pi/SPI/wiringPi
make clean
make
sudo ./oled
#滚动显示
cd Scroll/Raspberry\ Pi/SPI/wiringPi
make clean
make
sudo ./oled

基于Python的使用

#正常显示
cd Without scrolling/Raspberry\ Pi/SPI/python
sudo python3 stats.py
sudo ./oled
#滚动显示
cd Scroll/Raspberry\ Pi/SPI/python
sudo python3 stats.py

例程使用的注意事项

WiringPi和Python例程是通过读写linux系统的设备文件操作,而BCM2835则是树莓派cpu芯片的库函数,操作的为寄存器,因此若先使用了BCM2835库,WiringPi和Python的例程则会使用失败,此时重启系统可以运行。

Arduino的使用

硬件配置

该例程使用的开发板为:UNO PLUS

IIC连接方式

功能引脚 开发板
VCC 3V3
GND GND
DIN SDA/D14
CLK SCL/D15

SPI连接方式

功能引脚 开发板
VCC 3V3
GND GND
DIN D11 (MOSI)
CLK D13 (SCK)
CS D10
DC D8
RST D9

软件配置

安装编译软件(Windows教程)

arduino IDE 安装教程

运行程序

  • 正常显示
    • 在我们提供的资料里面下载程序,并解压,再进入2.23inch-OLED-HAT-Code\Without scrolling\Arduino\SPI\oled目录下

双击打开oled.ino文件。
选择你的开发板,跟对应的端口。

2.23inch OLED Arduino1.png

进行编译下载,如下图:
2.23inch OLED Arduino2.png

下载成功后,屏幕就有正常显示了。

  • 滚动显示
    • 在我们提供的资料里面下载程序,并解压,再进入2.23inch-OLED-HAT-Code\Scroll\Arduino\SPI\oled目录下

双击打开oled.ino文件。
选择你的开发板,跟对应的端口。

2.23inch OLED Arduino1.png

进行编译下载,如下图:
2.23inch OLED Arduino2.png

下载成功后,屏幕就会滚动显示了。

数组制作

  • 请使用Image2Lcd打开黑白图片,并配置如下:
  • 输出数据类型:C语言数据(*.c)
  • 扫描方式:水平扫描
  • 输出灰度:单色
  • 最大宽度和高度:128 32 (这两个为OLED的最大分辨率)
  • 2.23inch-OLED-HAT-5.jpg
  • 例程效果演示:
  • 2.23inch-OLED-HAT-6.jpg
  • 2.23inch-OLED-HAT-7.jpg
  • 2.23inch-OLED-HAT-8.jpg
  • 2.23inch-OLED-HAT-9.jpg

售后

联系人:黄工
QQ:2850151199
EMAIL:2850151199@qq.com
电话:0755-83040712
微信:扫下方二维码添加
Service20-Weichat.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证