• 在树莓派上使用 SSD1306 OLED 屏幕


    原文地址:https://shumeipai.nxez.com/2019/04/29/use-the-ssd1306-oled-display-on-the-raspberry-pi.html

    树莓派在许多使用场景下并不需要接一台专用显示器,如需要查看树莓派上的一些信息可以通过手机、电脑登录到树莓派上操作,但总归不够便利。
    下面介绍两款 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功能

    1
    2
    3
    sudo apt-get install -y python-smbus
    sudo apt-get install -y i2c-tools
    sudo raspi-config

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

    重启树莓派。

    1
    sudo reboot

    二、安装 Adafruit-SSD1306 库

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

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

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

    1
    2
    sudo apt-get remove python-pip python3-pip
    sudo apt-get install python-pip python3-pip

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

    1
    sudo apt-get install python-pil python3-pil

    使用 pip 安装 Adafruit-SSD1306 库。

    1
    sudo pip install Adafruit-SSD1306

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

    1
    2
    cd ~
    git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git

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

    1
    2
    cd Adafruit_Python_SSD1306
    sudo python setup.py install

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

    1
    cd ~/Adafruit_Python_SSD1306/examples/

    三、连接屏幕

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

    对于“小电视”屏幕,根据屏幕 PCB 上引脚的功能标注接到树莓派上对应的 GPIO 上即可。
    屏幕 GND 接树莓派 GND
    屏幕 VCC 接树莓派 3V3
    屏幕 SDA 接树莓派 SDA
    屏幕 SCL 接树莓派 SCL
    注意一定不要接反 VCC 和 GND,否则会烧坏屏幕。

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

    1
    sudo i2cdetect -y 1

    将显示已连接设备的 I2C 地址,不同的屏幕地址可能会不一样,通过这个步骤可以确认一下。
    注意,如果你正在使用的是初代树莓派(256MB的树莓派1代B),那么需要用这个命令:

    1
    sudo i2cdetect -y 0

    四、编程和运行

    为了快速上手,我们可以直接使用示例代码。其中有一个文件名为 stats.py 的程序,用来显示树莓派的 IP、CPU Load、内存和磁盘使用情况。先拿这个来试试看。
    将之前下载的源码复制到用户目录,用编辑器打开。

    1
    2
    3
    cd ~
    sudo cp ~/Adafruit_Python_SSD1306/examples/stats.py ~/
    sudo nano stats.py

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

    1
    2
    3
    4
    5
    6
    7
    8
    # 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。

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

    1
    sudo python stats.py

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

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

    1
    disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)


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

    五、设置开机运行

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

    1
    sudo nano /etc/rc.local

    在 exit 0 前面增加一行:

    1
    sudo python /home/pi/stats.py &


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

    1
    sudo reboot

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

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

    1
    sudo nano /boot/config.txt

    在文件末添加一行:

    dtparam=i2c_baudrate=1000000
  • 相关阅读:
    socket---tcp初始化配置
    IIS安装扩展
    一、效率开发
    Asp.net Core 3.1 之NLog使用扩展
    一文揭秘如何利用AndroidGodEye 打造Android应用性能测试监控
    安卓app功能或自动化测试覆盖率统计(不用instrumentation启动app)
    性能测试系列四 压测常见的关注指标以及监控分析工具
    性能测试系列三 压测方式简单总结 和压测指标的来源
    性能测试系列二 何时介入性能测试
    性能测试系列一(性能测试基础知识)
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/13902432.html
Copyright © 2020-2023  润新知