树莓派,摄像头拍照,OLED 显示

Posted Li-Yongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派,摄像头拍照,OLED 显示相关的知识,希望对你有一定的参考价值。

摄像头的使用

配置系统使能摄像头功能

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

# 128x64 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

# Initialize library.
disp.begin()

# Clear display.
disp.clear()
disp.display()

while True:
	# take a photo
    os.system("raspistill -o photo.png -w 128 -h 64 -t 3000")
    # Load image based on OLED display height.  Note that image is converted to 1 bit color.
    image = Image.open('photo.png').convert('1')

    # Display image.
    disp.image(image)
    disp.display()
    time.sleep(1)

代码很简单,拍摄一张照片 photo.png,然后显示在 OLED 上。
不由得感叹 Python 就是好啊,几乎不要写多少代码,就能实现很多功能(当然,主要得益于大神们的轮子)。这些内容要放在单片机上,得写摄像头的驱动、OLED 的驱动,搞不好还要对着数据手册看时序图,甚至需要抓波形图 debug。真是人生苦短,我用 Python 呀!
放上一张“清晰的”效果图
在这里插入图片描述

以上是关于树莓派,摄像头拍照,OLED 显示的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 树莓派连接摄像头拍照

树莓派(Raspberry Pi)4B 使用摄像头拍照篇

树莓派(Raspberry Pi)4B 使用摄像头拍照篇

教程记录树莓派Raspberry+motion+摄像头实现拍照录像实时视频功能

树莓派按键中断实现摄像头拍照

树莓派3b+ 使用 motion 进行拍照