GuangXingLiu

一蓑一笠一孤舟,一丈丝纶一鱼钩,一曲高歌一樽酒,一人独钓一江秋.

Raspberry Pi B使用I2C接口Grove OLED(Seeed)显示屏

 一 首先介绍使用python来驱动Seeed的OLED.


(1) OLED与树莓派连线

树莓派自带的26个排针接口里面就有一组I2C接口:GPIO0(SDA) ,GPIO1(SCL)。



然后看一下我使用的OLED的接口(SCL, SDA, 5V, GND):

$709F77465B2318AE.jpg


各个口的功能与树莓派的IO口连线分别如下:

GND接树莓派的GND

5V接树莓派的5V POWER口,就是电源口

SCL 接 GPIO1

SDA 接 GPIO0


(2) 打开树莓派的spi口

树莓派默认的SPI和I2C口都是被禁用的,使用之前必须先打开

首先是ssh登陆到树莓派上:

1.vi /etc/modprobe.d/raspi-blacklist.conf
2.blacklist spi-bcm2708           #如果要用SPI使用#号注释掉这行
3.#blacklist i2c-bcm2708         #使用I2C就注释掉这行


保存后重启树莓派,sudo reboot,之后,激活端口:

sudo modprobe i2c-dev


这样就会打开树莓派的I2C口。


查看端口列表,成功开启I2C后,可在 /dev/ 目录看到 /dev/i2c-0 和 /dev/i2c-1

ls /dev/i2c*

为I2C端口开启权限:

$sudo chmod o+rw /dev/i2c*
 
至此,已成功开启 Raspberry Pi 的 I2C 端口,注意每次重启都要重新执行 modprobe 和 chmod 命令来激活端口和修改权限,如果觉得麻烦,可以编辑 /etc/rc.local 加入启动项,自动执行上述操作。



(3) 使用python开始驱动I2C口的OLED

还是用ssh登陆到树莓派上,安装一些并要的软件,如果因为网络安装不成功,请重复该命令:
 

sudo apt-get update
sudo apt-get install build-essential python-dev python-pip
sudo pip install RPi.GPIO
sudo apt-get install python-imaging python-smbus
sudo apt-get install git
 
下面是国外友人提供的python库
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install
   
下面就可以使用python来驱动这个OLED了。

cd examples

里面有两个例子,image.py 和 shapes.py。

其实这两个里面都有bug,本次用的屏幕是128*64的,但是里面的例子是128*32的,所以,需要修改。我说过,我的文章是需要有计算机基础的,所以,不详说如何修改。就当作思考题吧。

修改完毕后,执行:

sudo python image.py

应该有一只猫的头像了。






-------------------------------------------------------------------------------

Q&A:

1. 为什么出现类似下面的报错呢:

Traceback (most recent call last):
  File "i3.py", line 27, in <module>
    disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
  File "/usr/local/lib/python2.7/dist-packages/Adafruit_SSD1306-1.0.0-py2.7.egg/Adafruit_SSD1306/SSD1306.py", line 230, in __init__
    gpio, spi, i2c_bus, i2c_address)
  File "/usr/local/lib/python2.7/dist-packages/Adafruit_SSD1306-1.0.0-py2.7.egg/Adafruit_SSD1306/SSD1306.py", line 97, in __init__
    self._i2c = I2C.Device(i2c_address, i2c_bus)
  File "/usr/local/lib/python2.7/dist-packages/Adafruit_GPIO-0.5.5-py2.7.egg/Adafruit_GPIO/I2C.py", line 68, in __init__
    self._bus = smbus.SMBus(busnum)
IOError: [Errno 2] No such file or directory



那是因为,I2C的端口,你只是打开了,但是并没有激活,每次机器重启,都要激活,你可以把激活命令加到启动项。


发表评论:

Powered By Z-BlogPHP 1.7.0