树莓派在许多使用场景下并不需要接一台专用显示器,如需要查看树莓派上的一些信息可以通过手机、电脑登录到树莓派上操作,但总归不够便利。

下面介绍两款 OLED 小屏(均为 SSD1306 芯片驱动)可以直接插到树莓派 GPIO 上,配有 Python 源码让树莓派玩家可以轻松用它来显示任何图文或动画内容。

1、Pi OLED 128×32 OLED 屏幕扩展(I2C)

Pi OLED 配备 0.9 英寸迷你单色屏,128×32 分辨率,白光像素点。拥有极高的对比度,显示清晰极易辨识。OLED 仅使用树莓派的 I2C 和电源引脚,无需独立供电,即插即用。(查看详情,购买链接)

2、“复古小电视” OLED 屏

带有 3D 打印外壳的 OLED 小屏,分辨率 128×64。通过 I2C 连接到树莓派,无需独立供电。(购买链接)

一、启用树莓派的I2C功能

sudo apt-get install -y python-smbus

sudo apt-get install -y i2c-tools

sudo raspi-config

按照下面的步骤设置开启 I2C 功能。

重启树莓派。

sudo reboot

二、安装 Adafruit-SSD1306 库

Adafruit-SSD1306 是基于 Python 的 OLED 库,可以用于 128×64、128×32 像素 SSD1306 芯片控制的屏幕。

使用下面的命令安装。

sudo python -m pip install --upgrade pip setuptools wheel

注意,如果这一步出现错误提示“TypeError: unsupported operand type(s) for -=: ‘Retry’ and ‘int’”,可以尝试卸载后重新安装 pip 来解决。

sudo apt-get remove python-pip python3-pip

sudo apt-get install python-pip python3-pip

安装 PIL 库,有一些图片处理的程序会用到这个。

sudo apt-get install python-pil python3-pil

使用 pip 安装 Adafruit-SSD1306 库。

sudo pip install Adafruit-SSD1306

再下载一份包含代码示例的库后面要用。

cd ~

git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git

这里顺便提一下,如果上面的 pip 安装 Adafruit-SSD1306 库遇到网络问题,那么也可以在下载完这份代码之后运行下面的命令安装(可选):

cd Adafruit_Python_SSD1306

sudo python setup.py install

进到示例目录,可以看到有一些已经准备好了的代码,后面将屏幕接好之后可以直接运行看效果。

cd ~/Adafruit_Python_SSD1306/examples/

三、连接屏幕

对于 Pi OLED 屏幕扩展,直接安插在 GPIO 如图所示位置(物理引脚编号1-6号)。

对于“小电视”屏幕,根据屏幕 PCB 上引脚的功能标注接到树莓派上对应的 GPIO 上即可。

屏幕 GND 接树莓派 GND

屏幕 VCC 接树莓派 3V3

屏幕 SDA 接树莓派 SDA

屏幕 SCL 接树莓派 SCL

注意一定不要接反 VCC 和 GND,否则会烧坏屏幕。

下面通过命令检测是否识别到 I2C 设备。

sudo i2cdetect -y 1

将显示已连接设备的 I2C 地址,不同的屏幕地址可能会不一样,通过这个步骤可以确认一下。

注意,如果你正在使用的是初代树莓派(256MB的树莓派1代B),那么需要用这个命令:

sudo i2cdetect -y 0

四、编程和运行

为了快速上手,我们可以直接使用示例代码。其中有一个文件名为 stats.py 的程序,用来显示树莓派的 IP、CPU Load、内存和磁盘使用情况。先拿这个来试试看。

将之前下载的源码复制到用户目录,用编辑器打开。

cd ~

sudo cp ~/Adafruit_Python_SSD1306/examples/stats.py ~/

sudo nano stats.py

可以看到这份示例已经包含了多种屏幕参数的初始化方法。

# 128x32 display with hardware I2C:

disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)

# 128x64 display with hardware I2C:

# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

# Note you can change the I2C address by passing an i2c_address parameter like:

# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, i2c_address=0x3C)

你可以根据实际所用的屏幕来修改这些参数,例如 SSD1306_128_32 代表 128×32 分辨率屏幕的初始化方法,适用于本篇介绍的 Pi OLED 128×32 OLED 屏幕扩展,SSD1306_128_64 适用于“复古小电视” OLED 屏。i2c_address 用于配置屏幕的地址,默认为 0x3C。

运行示例代码,可看到运行效果。

sudo python stats.py

同样的方法再试试 image.py 这个示例效果如下。

通过修改 image.py 中的初始化参数,调整为 128×64 分辨率之后。

disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

屏幕上的图片、形状、文本和字体都是由 PIL(Python Imaging Library)的模块 Image, ImageDraw, and ImageFont 来实现的。如有兴趣可以试试其他代码示例,并学习自己设计图文来显示。

五、设置开机运行

为了让 stats.py 能够开机自动运行,我们可以做下面的配置,这样我们就可以不用通过工具或路由器去查找树莓派的 IP 地址等信息了。

修改 /etc/rc.local 文件。

sudo nano /etc/rc.local

在 exit 0 前面增加一行:

sudo python /home/pi/stats.py &

编辑好之后按下 Ctrl+O 保存,再按下 Ctrl+X 退出。重启树莓派验证一下是否生效吧!

sudo reboot

六、提高显示速率(可选,不推荐)

为了更好的显示性能,例如显示动画时如对帧率有要求,可以通过修改下面的参数将 I2C 频率从默认的 100KHz 或 400KHz 提升到 1MHz。

sudo nano /boot/config.txt

在文件末添加一行:

dtparam=i2c_baudrate=1000000

– 全文完 –

python oled库_在树莓派上使用 SSD1306 OLED 屏幕相关推荐

  1. 树莓派实验室python人脸识别_在树莓派上实现人脸识别

    原标题:在树莓派上实现人脸识别 本文为 AI 研习社编译的技术博客,原标题 Facial Recognition & Identification On Raspberry Pi,作者为 Ad ...

  2. python 天气预报地图_在树莓派上用 python 做一个炫酷的天气预报

    #encoding: utf-8 importpygameimporttimeimportweatherAPIimportSystemInfofrom datetime importdatetime# ...

  3. python制作电子相册_电子相册 · 树莓派终极学习套件教程 · 看云

    我们前面爬取了图片,然后将图片保存到了本地.现在我们利用这些图片做一个手势识别控制的电子相册. 当手左右滑动时切换图片. 首先导入必要的库 ```python # -*- coding:utf-8 - ...

  4. python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)...

    最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...

  5. python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器python代码实现及常见问题(全面简单易懂)...

    最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...

  6. 在树莓派上进行python编程_在树莓派上用Python控制LED

    所需材料 一个已经安装配置好了的树莓派 连接控制树莓派所用的其他必须设备 200Ω电阻 x 8 led x 8 面包板及连接线若干 电路连接 电路图 按照电路图所示,在面包板上进行连接. 编写程序 安 ...

  7. python 音乐库_如何将您的音乐库上传到Google Play音乐

    python 音乐库 Google Play Music offers an unlimited music streaming subscription paired with YouTube Re ...

  8. python gis库_使用开放的python库自动化GIS和遥感工作流

    python gis库 Over my career I've worked on many geospatial related projects using the ArcGIS platform ...

  9. python并行运算库_最佳并行绘图Python库简介:“ HiPlot”

    python并行运算库 HiPlot is Facebook's Python library to support visualization of high-dimensional data ta ...

最新文章

  1. processing图片粒子化_个人见到的processing(优质且全的教程,一定看原文)
  2. 数据结构---树,堆排序
  3. iOS 11 适配集锦
  4. 2 年 6 个月 11 天,外包到阿里的修仙之路!| 原力计划
  5. 十步完成windows服务的安装
  6. [转载]android debug工具集(挺全的)
  7. 50预训练权重_MMDetection笔记:修改预训练模型权重类别数
  8. 信息熵--决策树的建立算法ID3中使用
  9. [图]礼仪大赛策划方案:使用PPT,如何打造一场专业而又经济的礼仪大赛呢?
  10. 线性同余法产生1000个随机数
  11. [指导]HP ProBook/EliteBook/Zbook系列笔记本clover安装黑苹果
  12. 交换机组播风暴_cisco 交换机端口广播风暴设置(非常详细)
  13. zookeeper-集群-选举机制
  14. 《青玉案·元夕》 辛弃疾
  15. CentOS6.5--修改系统语言为中文或英文,文件夹切换语言
  16. LiveRTMP推送RTSP视频源进行RTMP直播
  17. php表单数据类型,form表单中enctype属性的三种类型
  18. DOSBOX运行程序
  19. 连接linux服务器ip地址设置方法,linux下配置ip地址的方法
  20. 商汤已通过港交所IPO聆讯,占市场份额11%,募资10亿美元

热门文章

  1. QT制作TCP客户端
  2. 互联网晚报 | 一季度全国居民人均可支配收入10870元;郑渊洁称维权艰难将不再发表作品;苹果版余额宝上线,年利率4.15%...
  3. 与或非的总结和几种好用的赋值
  4. 模板匹配-论文-代码
  5. eBay好评有什么用?
  6. 魅族16th-指纹不灵敏
  7. OpenGL Shader 自动瘦脸与眼睛放大
  8. OpenSSL中的大数接口与基于其的自用RSA加密接口设计
  9. 客户端工具MySQL使用
  10. 【每日一练】后台管理系统小案例