广告

DIY一个自拍相机:树莓派 3 +触摸屏显示器

时间:2018-01-02 阅读:
一个使用树莓派 3加触摸屏显示器 、镜头和SenseHAT的有趣项目

使用树莓派,创建一个桌面“自拍”相机。不需要焊接或定制任何电子零件。应用程序也是超级简单。

一个使用树莓派 3加触摸屏显示器 、镜头和SenseHAT的有趣项目

硬件

整个项目使用了下列的零件:

树莓派3型号B

树莓派触摸屏

树莓派相机

SenseHAT

电源

32GB Micro SD 卡

另外还配搭了定制激光切割和折叠亚克力盒。即使你没有激光切割机和亚克力文件夹,也可以使用其他的外壳替代。

O/S及相关

001ednc20180102

把Raspbian Jessie Lite写入一张Micro SD卡中,然后将主机名由简单的raspberrypi更改为其他名称,编辑根文件系统etc/hostname和etc/hosts文件就可以。这样在网络上会更容易找到主机。

openssh服务器现在默认为禁用,因为我更喜欢通过SSH进行登录,这可以通过在boot partition中创建一个名为ssh的空文件来启用它。

触摸屏技术上是上下倒转安装的,所以要将显示器旋转到正确的方向,有必要编辑config.txt - 也在启动分区,并添加行:

lcd_rotate=2

接下来将Micro SD卡插入Raspberry Pi并接通电源。之后,我建议按照惯例做法,通过登录并输入以下内容更新O / S:

$ sudo apt get update $ sudo apt-get dist-upgrade

请注意,由于我们已将主机名更改为selfiecam,因此可以从另一台Linux计算机使用以下命令登录到Pi:

$ ssh pi@selfiecam.local

由于我们想使用SenseHAT,相机和帧缓冲区,一些有用的Python软件也通过安装:

$ sudo apt-get install sense-hat python-picamera python-pygame

最后,需要启用相机和重新启动,这可以透过raspi-config完成:

$ sudo raspi-config

软件

002ednc20180102

首先,我们需要导入一些库,其中包括上面提到的。

import osimport timeimport pygamefrom picamera import PiCamerafrom sense_hat import SenseHat

我们需要初始化Pygame,它将用来显示图像到帧缓冲区中(显示器)。

pygame.init()

screen = pygame.display.set_mode([800,480])

接下来我们设置摄像机,由于它的物理位置被水平翻转,我们需要通过软件翻转它。

camera = PiCamera()

camera.resolution = (800, 480)

camera.hflip = True

之后配置SenseHAT。

sense = SenseHat()

sense.set_rotation(0)

接下来我们将会定义一个函数,把其中一个文件作为参数,然后使用Pygame来绘制屏幕变成黑色,然后再显示它包含的图像。

def displayImage(file):


image = pygame.image.load(file)
imagerect = image.get_rect()

screen.fill([0, 0, 0])
screen.blit(image, imagerect)
pygame.display.flip()

然后我们定义一个功能,启用视频预览,在SenseHAT LED矩阵上显示3-2-1-0倒计时,截取静止图像前,停止预览,显示图像,並清除LED矩阵。映像文件名中应包含日期和时间。

def getSelfie(): # Start camera video preview

camera.start_preview()    # Commence countdown
sense.show_letter("3", text_colour=[255, 0, 0])    time.sleep(1)
sense.show_letter("2", text_colour=[255, 255, 0])    time.sleep(1)
sense.show_letter("1", text_colour=[0, 255, 0])    time.sleep(1)
sense.show_letter("0", text_colour=[0, 0, 255])    # Capture image and stop preview
filename = time.strftime("/selfies/%Y-%m-%d-%H-%M-%S.jpg")
camera.capture(filename)
camera.stop_preview()    # Display image and clear SenseHAT display
displayImage(filename)
sense.clear()

请注意,LED矩阵上显示的数字颜色是不同的:3 =红色,2 =黄色,1 =绿色,0 =蓝色。

到目前为止,我们只是导入了不同的库和定义函数。接下来,我们将使用displayImage()這个函数在启动时更新触摸屏显示欢迎图像。

displayImage("/usr/local/share/images/Welcome.png")

最后,我们进入程序的主循环。在这里,我们等待来自SenseHAT操纵杆的动作。如果这被按住,我们需要等待它被释放后使用getSelfie()函数。如果它被一直保持在左边,我们直接关机。我们可以忽略其他相关动作。

while True: # Wait for and process joystick events

event = sense.stick.wait_for_event(emptybuffer=True)    if event.direction == "middle" and event.action == "released": 
  getSelfie()    elif event.direction == "left" and event.action == "held":
    os.system("/sbin/shutdown -h now")    else:       pass

运行

/etc/rc.local文件在启动时运行,在这文件添加一行代码防止屏幕自动关闭,接着一秒后会启动自拍照相机应用程序。

sudo sh -c "TERM=linux setterm -blank 0 >/dev/tty0" /usr/local/bin/selfie.py &

重新启动后,我们会看到我们设定的欢迎图像。按下操纵杆时,会显示实时视频预览,并开始倒數计时。

003ednc20180102

在倒数到零时将会拍照,并停止视频预览,图像会显示在屏幕上。

004ednc20180102

最后图像可以从SD卡中复制出来。

如果你想自己做这个项目,可以在GitHub上找到Python脚本和亞克力外壳的设计文件。

(来源:Andrew Back/Designspark)

20160630000123

本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
您可能感兴趣的文章
  • 5G基础设施和对端到端可编程性的需求 展望未来十年,随着5G的出现,无线基础设施将变得更加普遍,甚至与我们日常生活的方方面面完全融为一体。5G延续了先前蜂窝标准(在驱动带宽方面)的模式,但也将其扩展到更多设备和使用模式。本文考虑如何通过具有高性能CPU子系统和包括FPGA可重编程加速硬件处理单元的SoC架构来成功应对5G的独特需求。
  • 拆解:SEW MOVIDRIVE®B变频器MDX61B 变频器配有大量输入和输出,可提供所有的基本功能。可选的通信和技术模块提供快速简便的功能扩展。产品线中较小的单元配备有两个插槽:一个用于编码器连接,另一个用于通信;较大的单元具有第三个未指定用途的扩展插槽。
  • 光学FPGA:是怎样设计和工作的? 基于锗离子注入的硅波导工艺和激光退火工艺,他们实现了可擦除的定向耦合器,进而实现了可编程的硅基集成光路,也就是所谓的光学FPGA。
  • 教你如何用树莓派实现实时人脸检测 本文介绍了如何在树莓派上,使用 OpenCV 和 Python 完成人脸检测项目。
  • SpaceX超级高铁车舱设计竞赛:设计源自年轻人创意 最近纽约市一直在认真讨论对其老化的地铁系统进行现代化改造,这将使纳税人付出巨大开支并付出巨大努力。美国国家铁路客运公司最近也由于各种原因出现多起重大事故,造成了生命损失。增加技术解决方案来改善这两个系统可能会有巨大帮助,但是我们现在是否是时候应该考虑采用像超级高铁创意这样的高级远程旅行技术系统了呢?
  • 浅谈eFPGA市场的各大玩家&商业模式&设计挑战 传统的FGPA厂商进入比较早,基本上每隔3年推新一代的FPGA,并进行全定制电路设计,通常具有最大或接近最大数量的金属层以便获得最高密度的FPGA。但他们有一个显著的限制,就是……
相关推荐
    广告
    近期热点
    广告
    广告
    广告
    可能感兴趣的话题
    广告