摄像头的使用
配置系统使能摄像头功能
pi@raspberrypi:~ $ sudo raspi-config
配置完成后,系统会提示重启,重启完成后,摄像头就可以使用了
简单测试一下
pi@raspberrypi:~ $ raspistill -v -o test.jpg
还可以录视频
pi@raspberrypi:~ $ raspivid -o test.h264 -t 5000
OLED 的使用
我使用的 OLED 是 IIC 接口的,连线比较简单,如下: 同样是使能系统的 IIC 功能
pi@raspberrypi:~ $ sudo raspi-config
硬件连好之后,使用命令检测系统是否能够识别到 IIC 设备
pi@raspberrypi:~ $ sudo i2cdetect -y -a 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
3c 就是我们 OLED 屏幕的 IIC 地址,说明硬件连接正确。
下面我们使用 Python 让 OLED 显示图像,我们使用的是 Adafruit_Python_SSD1306 库,因为我们的 OLED 的驱动芯片是 SSD1306
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
这里面有一些例子,我们可以测试下:
$ cd Adafruit_Python_SSD1306/examples/
$ python3 shapes.py
可以看到图像显示成功了😏,不过我们发现 hello world 显示的有点不太清晰。那是因为,代码里默认使用的是 128 x 32 的分辨率,我们给他改成 128 *64
把 128_32 注释掉,启用 128_64。
再显示一次
$ cd Adafruit_Python_SSD1306/examples/
$ python3 shapes.py
这样就显示正常了。 这个库里面还有显示图像、系统信息的例子,大家可以自行测试一下。
摄像头 + OLED
我们把 Adafruit 中显示图像的例子稍微修改一下,让 OLED 显示摄像头拍摄的图像 image.py
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
disp.begin()
disp.clear()
disp.display()
while True:
os.system("raspistill -o photo.png -w 128 -h 64 -t 3000")
image = Image.open('photo.png').convert('1')
disp.image(image)
disp.display()
time.sleep(1)
代码很简单,拍摄一张照片 photo.png,然后显示在 OLED 上。 不由得感叹 Python 就是好啊,几乎不要写多少代码,就能实现很多功能(当然,主要得益于大神们的轮子)。这些内容要放在单片机上,得写摄像头的驱动、OLED 的驱动,搞不好还要对着数据手册看时序图,甚至需要抓波形图 debug。真是人生苦短,我用 Python 呀! 放上一张“清晰的”效果图
|