2.23inch OLED HAT
来自Waveshare Wiki
| ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
说明
提供树莓派、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 | 复位(低有效) |
硬件配置
模块出厂默认使用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 |
- I2C通信,硬件修改如下:
- SSD1305是一款132*64像素的OLED控制器,但该OLED只有128*32个像素点,所以该屏只用到了SSD1305缓存区的前一部分;
- 该OLED支持8bit 8080并行、SPI和I2C等通信方式,但考虑到该模块的尺寸,以及节省微控制器宝贵的IO资源,故舍弃了8bit 8080并行方式,支持I2C与SPI的通信方式。
通信协议介绍
I2C介绍
- 在I2C通信时,先发送一个7bit的从设备地址+1bit的读写位,等待设备的响应。
- 在从设备应答后,接着发送一个控制字节,该字节决定了后面发送的字节是命令还是数据,然后再等待从设备应答。
- 在从设备再次应答之后,若发送命令,则只发送一字节的命令。若发送数据,可以只发送一个字节,也可以多个字节的数据连着发送,视情况而定。
- 详见Datasheet Page22 Figure 8-6。
SPI介绍
树莓派
提供C语言与python例程
开启SPI接口
- 打开树莓派终端,输入以下指令进入配置界面:
sudo raspi-config 选择Interfacing Options -> SPI -> Yes 开启SPI接口
- 重启树莓派:
sudo reboot
- 检查 /boot/config.txt,可以看到 'dtparam=spi=on' 已被写入
- 为了确保 SPI 没有被占用,建议其他的驱动覆盖暂时先关闭。可以使用 ls /dev/spi* 来检查 SPI 占用情况,终端输出 /dev/spidev0.0 和 /dev/spidev0.1 表示 SPI 情况正常
开启I2C接口
- 打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动
sudo reboot
安装库
如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用,python库可以不安装,直接运行程序即可
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
#打开树莓派终端,并运行以下指令 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 spidev sudo pip3 install smbus
下载例程
- 在树莓派终端运行:
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
基于C的使用
#正常显示 cd Without scrolling/Raspberry\ Pi/SPI/c make clean make sudo ./main #滚动显示 cd Scroll/Raspberry\ Pi/SPI/c make clean make sudo ./main
基于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教程)
运行程序
- 正常显示
- 在我们提供的资料里面下载程序,并解压,再进入2.23inch-OLED-HAT-Code\Without scrolling\Arduino\SPI\oled目录下
- 在我们提供的资料里面下载程序,并解压,再进入2.23inch-OLED-HAT-Code\Without scrolling\Arduino\SPI\oled目录下
双击打开oled.ino文件。
选择你的开发板,跟对应的端口。
进行编译下载,如下图:
下载成功后,屏幕就有正常显示了。
- 滚动显示
- 在我们提供的资料里面下载程序,并解压,再进入2.23inch-OLED-HAT-Code\Scroll\Arduino\SPI\oled目录下
- 在我们提供的资料里面下载程序,并解压,再进入2.23inch-OLED-HAT-Code\Scroll\Arduino\SPI\oled目录下
双击打开oled.ino文件。
选择你的开发板,跟对应的端口。
进行编译下载,如下图:
下载成功后,屏幕就会滚动显示了。