骑在龟背上监测保护区的树莓派

为了引起人们对野生动物面临威胁的关注,动物保护技术组织Arribada的创始人戴维斯设计并制作了多款低成本的野生动物观察工具。从可以唤醒并检测动物路过的自动相机,到可以在特定动物出现时发出警报的设备……他认为设备成本不应该成为帮助极度濒危动物的障碍。

在龟背上拍摄的照片

挑战

Arribada的第一个项目是监测绿海龟,他们需要一套强大但成本不高的设备,可以在偏远的地方使用,而且不需要人为干预。这个设备将显示渔业和人类活动对绿海龟的影响,以及为这种濒危物种引入什么样的保护措施提供线索。

为了追踪海龟,Arribada 的解决方案需要能够在海龟游动的深度下防水,以及能够在没有人为干预的情况下可靠地运行。它还需要既经济又易于被当地研究团队使用。

解决方案

最终的成品,将Raspberry Pi Zero和Raspberry Pi相机模块封装在了一个轻巧的防水外壳中。这可以无害地附着在海龟的壳上,以跟踪它在海浪下的旅程。设备将捕获照片、视频和位置信息。一旦视频录制完成,设备就会从海龟的壳上脱离。这样既不影响海龟的活动,又可以拍下海龟们的行为。

其中的一个挑战是,GPS定位只有在海龟浮出水面时才有效。但在游动中,海龟浮出水面的时间通常不到两秒,根本来不及唤醒监控设备以获得三角定位,因此Arribada开发了自己的Horizon Assted-GPS标签,作为基于树莓派Zero套件的关键部分。

戴维斯表示:“你可以想象在Raspberry Pi设备上为海龟运行AI模型的好处,我们可以唤醒设备,捕获场景,处理场景,我们甚至可以让设备做出一些明智的选择,这值得记录吗?回去睡觉还是应该留下来?”

除了做出“继续监控”或“进入睡眠周期”的决定之外,使用 Raspberry Pi 还可以获得机器学习优势。比如下载新模型,训练模型,调整和审查视频内容。Arribada可以用很低的成本完成这一切,因为树莓派非常实惠。

这种方法已经让Arribada成为一个成熟的研究合作伙伴,动物保护组织对Edge ML将要做的事情表现出了“真正的兴趣”。已经不只在海龟身上使用它。”

一个由树莓派驱动的设备正在南极洲监视企鹅

另外,有一些项目需要定制的解决方案。塞浦路斯的情况就是这样,该国历史最悠久的动物保护机构 —— 海龟保护协会(SPoT)就热衷于使用LoRa无线电通信来监测捕鱼活动。

而Arribada基于船只的LoRaWAN网关就可以提供当地捕鱼活动的详细信息,并报告该国沿海五个重要海龟繁殖地的任何潜在威胁。塞浦路斯的通信法规要求SIM卡在使用四个月后进行注册,这使得在那里用蜂窝通信很麻烦,因此使用树莓派4和树莓派以太网供电帽来设置LoRaWAN。这种设置也意味着船主不用为船上的跟踪系统支付任何费用。一根8米高的天线就能搞定一个强大的监控系统,可以清晰地发现半径15公里内的任何渔船。

结果

Arribada用树莓派收集的视频理清了海龟的数量,并揭示了它们的筑巢地点。支持了在一年中的特定时间禁止进入特定海滩和沿海区域的论点 —— 这是对这种濒危物种的重要保护。

以前,环保主义者需要的许多摄影工具都标价很高,以至于研究项目要么变得不可行,要么最终在范围上受到严重限制。高昂的费用让很多项目只能进行一次监测,而不是重复监测以跟踪一段时间的变化。

防水外壳通常是套件中最昂贵的部分

用不到50英镑的树莓派相机(带有树莓派Zero或Zero W),而不是500英镑的商业相机。意味着可以部署更多设备,覆盖更大的范围,从而提供更准确的统计结果。在大多数情况下,3D打印的防水外壳是每个套件中最昂贵的元素。随着最新树莓派相机硬件的出现,Arribada能够对图像和视频捕捉能力进行巨大的改进。

Arribada还赢得了企鹅观察项目的肯定,这是一个广泛的研究项目,监测世界不同地区的企鹅数量。Arribada由Python控制的树莓派相机装置比企鹅学家以前用的商用相机便宜至少三倍。费用的减少意味着研究团队不用太过计较设备的放置地点,把设备留在原地进行远程监测也更加放心,因为有些设备不可避免地会受到损坏。

事实上,这些硬件设备对温度的适应能力令人印象深刻,在Arribada团队进行维护之前,企鹅观察相机在南极度过了三个冬天。他们能够检索到三年的照片,并发现树莓派的设备每天都能可靠地拍摄并保存一张照片。这些照片直接促成了人们对气候变化和企鹅栖息地丧失的思考和讨论。

Arribada的官网:

https://arribada.org/

用Pi-Timolo和树莓派做一个夜视摄像头

安德鲁·格雷戈里 (Andrew Gregory) 发现,后花园的狗经常深夜叫唤。

于是他用树莓派做了一个夜间摄像头,来拍下那个不断引发狗叫的神秘访客。

要放在室外,少不了一个防雨且有一定强度的容器,这里他用到了几块厚木板。

市场上有一系列适用于 Raspberry Pi 的摄像头,比如:Pi Camera Module 3、Raspberry Pi Global Shutter Camera、Raspberry Pi High Quality Camera 和各种热敏模块。

但当访客在夜间到来,最好用的是 Pimoroni 等厂商提供的夜视摄像头。

关于树莓派的选择,作者用到了Raspberry Pi Zero W,比较轻便,兼容性也很好。

这个摄像头设在后花园,距离足够近,可以通过家庭 Wi-Fi 网络即可获取视频流。

但作者不想拉电源线,所以需要电池供电。

事后看来,最好是选择 USB 电池组——这种电池组可以即插即用到任何设备,并具有一定程度的保护作用。

作者选择了 1200mAh,3.7 V LiPo 电池,它裸露且易碎,无法直接连接到 Raspberry Pi Zero W。所以需要给 Raspberry Pi Zero 添加一个 LiPo SHIM(这需要一些焊接)。

本文提到的树莓派电池连接板,相关地址:

把供电模块、摄像头、树莓派都接好后的状态,差不多是这样。

装好系统,通电联网,登录系统执行如下命令进行测试:

raspistill -v -o test.jpg

如果一切顺利,你会看到一个图像在屏幕上闪了一两秒钟,然后颜色会变暗。那是因为夜视摄像头模块使用红外线(大多数摄像头模块会过滤掉这层光谱)。

作者在这里使用的软件包为 Pi-Timolo(Raspberry Pi Time、Motion 和 Low light),由 Claude Pageau 开发。 

可以执行如下命令安装(最好是update系统以后):

curl -L https://raw.github.com/pageauc/pi-timolo/master/source/pi-timolo-install.sh | bash

然后到一个设置界面,自行操作即可。

不过与 Raspberry Pi Camera Module 3 的 12MP 相比,夜视摄像头上的 5MP 传感器还是有些很小,因此作者很想找到一些红外 LED 并制作自己的摄像头模块。

来自:HackSpace 第 66 期

树莓派推出可自动对焦的相机模块Camera Module 3

Raspberry Pi 近日推出了一个新的相机模块,名字非常直白简单,就叫 Camera Module 3。该模块也是 2016 年发布的 Camera Module 2 的升级版。

新模块使用了索尼 IMX708 传感器(Oppo Find X2 同款传感器)、具有 1200 万像素(前代 Camera Module 2 则是 800 万像素)、最高可拍摄 1080P @50 帧的视频、新模块支持高动态范围(HDR)摄影和自动对焦,并且可以输出 RAW10 文件格式。

综合上面这些数据来看,Camera Module 3 应该能够拍摄出具有更多细节的照片(尤其是在弱光下),自动对焦采用相位检测自动对焦(PDAF)系统,并且能够对 5 厘米到无穷远距离的物体进行对焦。相比之下,以前版本的相机模块则是定焦镜头。不过新增加的这些功能也让 Camera Module 3 比前代版本厚了一些。

树莓派此次共推出了四个不同的 Camera Module 3 模块,分为标准视角、广角,以及用于夜间摄影的 NoIR 版本:

  • Camera Module 3:25 美元
  • Camera Module 3 广角:35 美元
  • Camera Module 3 NoIR:25 美元
  • Camera Module 3 NoIR 广角:35 美元

目前这些模块均已在官网发售,有需求的用户可以跳转了解并购买。

官方图片样张:

树莓派摄像头学习必备 —— Picamera2 测试版发布

最近发布的 Raspberry Pi OS 映像,终于预装了Picamera2库的 beta 版本。它是旧 PiCamera 库的替代,也是未来树莓派摄像头的官方首选开发库。

从早期版本开始,PiCamera 就非常受用户欢迎,因为它提供了一种非常简单而开放的Raspberry Pi 摄像头调用方式,让大家远离了专有和闭源的摄像头API(比如Broadcom的)。

Picamera2 主要特点

1、支持命令行驱动,你可以将 Picamera2 的命令直接通过Python 解释器或 Python 脚本调用。
2、使用OpenGL加速硬件辅助渲染,或在X windows未运行时使用DRM/KMS进行高速渲染。
3、支持将现成的 Picamera2 组件嵌入到 Qt 应用程序中。
4、原生支持 numpy,使其与 OpenCV、TensorFlow 和其他 Python 库一起使用非常自然。
5、所有源代码都可以在Picamera2 GitHub 页面上获得,或者作为libcamera 项目的一部分。
6、支持所有官方树莓派相机,也支持一些第三方相机

还有一些功能,例如视频编码和录制(可自定义输出对象),同时录制音频和视频的能力。在摄像头图像上显示叠加层等等。

要了解更多信息,请查阅大量示例脚本应用程序,或查阅我们的Picamera2 用户手册

Picamera2 可以在 TensorFlow 的帮助下检测和圈出狗

安装和升级

Picamera2 仅在最近的 Bullseye (新的树莓派系统代号)上受支持。

Buster 或更早的版本不支持它,Raspberry Pi OS Legacy 也不支持。所有这些用户都只能继续使用旧的 PiCamera 库。

在最新的 Bullseye 系统上已经安装了 Picamera2。

需要命令行安装的话可以输入:

sudo apt install -y python3-picamera2

树莓派操作系统

Raspberry Pi OS 用户会发现新的系统中, Picamera2 已经完整安装,包括 Qt 和 OpenGL。

Raspberry Pi OS Lite 默认随 Picamera2 一起安装,但没有 Qt 和 OpenGL。原因是用 Raspberry Pi OS Lite 的低配Pi 运行基于 X Windows 的应用程序或通过 X Windows 显示堆栈进行渲染会比较卡。

如果需要在Raspberry Pi OS Lite上使用 Qt 和 OpenGL,可以这么安装。

sudo apt install -y python3-pyqt5 python3-opengl

如果你用的是未安装 Picamera2 的较早版本的 Bullseye,又不用 Qt 和 OpenGL 的话,安装它的命令:

sudo apt install -y python3-picamera2 –-no-install-recommends

之前通过 pip 安装过 Picamera2 的用户

一些用户可能以前使用pip,那需要先卸载再安装。当然,你可以继续用pip的方式。

如何尝试 Picamera2?

有一些示例脚本很有帮助,你可以下载并运行它们:

git clone https://github.com/raspberrypi/picamera2.git

python picamera2/examples/preview.py

在 Python 解释器中输入 Picamera2 指令

提示

如果遇到任何困难,请注意以下几点:

  • Raspberry Pi 3 或更早版本设备的用户将需要重新启用 Glamour(如果他们以前没有这样做)才能使用任何 X Windows/OpenGL 预览功能。
  • libcamera 在控制台窗口中可以非常“健谈”。如果这让你感到困扰,请在运行 Python 之前键入:export LIBCAMERA_LOG_LEVELS=*:3(或将其放入.bashrc)。
  • Picamera2使用一种特定类型的 Linux 系统内存,称为 CMA 内存。系统资源不足的话会有问题。

如果有任何其他问题或疑问,可加入树莓派摄像头论坛讨论。

树莓派摄像头Picamera2库公测中

作者:大卫·普洛曼

如果你使用过任何 Raspberry Pi 相机,你可能对Picamera很熟悉,这是一个出色的 Python 库,旨在轻松操作 Raspberry Pi 的拍摄功能。

但你可能也知道,随着我们最近转向更开放和更标准的 Linux API,Picamera库(建立在专有的 Broadcom 相机堆栈之上)将来不会再支持了。

带有Raspberry Pi HQ 摄像头的Raspberry Pi 4

最初的Picamera库是第三方软件,由 Dave Jones 开发。事实证明该库在我们的用户中非常受欢迎,因此我们承诺提供替代品。命名为Picamera2的新库正在由 Raspberry Pi 在剑桥内部开发,最终将成为官方支持的软件包。

所以今天我们要宣布Picamera2的第一个预览版

在 Bullseye 桌面上运行的Picamera2示例

预览版是什么意思?

我们所说的预览版是指正在进行的工作。它已经有很多你可以尝试的功能,但仍然缺少一些重要的东西,在我们更广泛地发布该库之前,功能和API 的许多方面也会发生变化。

当前版本中支持的功能包括:

  • 你可以配置和启动摄像头,并接收多个图像流。
  • Picamera2支持预览窗口,无论是独立的还是嵌入在Qt应用程序中。
  • 可以查询和设置相机参数。
  • 你可以将全分辨率图像捕获为JPEGPNG
  • 或者,你可以将它们捕获为numpy数组,以提供给图像分析程序。

但有一个明显缺失的功能,就是我们仍在使用 Raspberry Pi 的硬件h.264编码器进行视频录制。如果你想使用Picamera2从 Python 录制视频,那现在还无法做到,可能还需要“几周”的时间。

如果你有兴趣查看新的Picamera2库(预览版),我们也很想听到相关反馈。比如不该忽略的功能,或者可以优化的地方。

我能用它做什么?

最好的解释可能只是显示一些代码片段!第一个示例启动一个预览窗口,然后进行全分辨率的JPEG捕获:

from qt_gl_preview import *
from picamera2 import *
import time

picam2 = Picamera2()
preview = QtGlPreview(picam2)

preview_config = picam2.preview_configuration()
capture_config = picam2.still_configuration()
picam2.configure(preview_config)

picam2.start()
time.sleep(2)

picam2.switch_mode_and_capture_file(capture_config, "capture.jpg")

在下一个示例中,我们捕获预览图像并将它们传递给OpenCV,以查看它是否可以使用Haar 级联检测图像中的任何人脸。

一位树莓派博主的脸部识别测试

它会在找到的任何人脸周围绘制检测框,并再次在预览窗口中显示图像:

#!/usr/bin/python3

import cv2

from null_preview import *
from picamera2 import *

# Grab images as numpy arrays and leave everything else to OpenCV.

face_detector = cv2.CascadeClassifier("/usr/local/lib/python3.9/dist-packages/cv2/data/haarcascade_frontalface_default.xml")
cv2.startWindowThread()

picam2 = Picamera2()
preview = NullPreview(picam2)
picam2.configure(picam2.preview_configuration(main={"size": (640, 480)}))
picam2.start()

while True:
    im = picam2.capture_array()

    grey = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
    faces = face_detector.detectMultiScale(grey, 1.1, 5)

    for (x, y, w, h) in faces:
        cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255, 0))

    cv2.imshow("Camera", im)

除了这两个之外,我们还创建了 20 多个小示例脚本作为非正式教程,并帮助人们探索此预览版本中可用的功能。在适当的时候,一旦事情变化的速度稳定下来,我们将努力扩展这些信息并添加一些更正式的文档和教程。

我该如何尝试?

你可以在 Github 上找到Picamera2 的预览版,并且存储库README.md提供了完整的安装说明。

但是,预览版不适合胆小的人。由于Picamera2是建立在libcamera自己的 Python 绑定之上的,这些绑定目前处于原始阶段,因此目前的安装涉及libcamera库的一个特殊版本,需要手动编译它。

目前还无法通过包管理器或其他机制安装Picamera2的预览版。你必须从源代码构建它。如果你对此感到不自在,最好等待稳定版本。

但是,如果你有机会查看示例代码并尝试使用该库,我们将非常感谢任何有用的建议。我将密切关注相机论坛上的讨论,以便尝试回答你遇到的任何问题。

树莓派加高清摄像头能拍电影?

说起电影拍摄用的摄影器材,以往都是高端设备。

再不济也得是5000RMB左右DV才行,树莓派加摄像头不到1000RMB的成本,也可以做电影摄像机了?

老外还真做了一个,成片看着还挺像回事。

视频地址:

https://mp.weixin.qq.com/s/wggwwXqFFGUtFk2G5NfMwQ

以上视频是使用Raspberry Pi 高品质相机和 6mm 镜头在 4GB树莓派4B上拍摄的。它以 12位RAW DNG、2028×1080、24fps 格式拍摄,并使用 DaVinci Resolve 编辑 RAW 素材。

对电影制作和编程的热情

该项目的作者多年来一直使用 Raspberry Pi 产品,最终他们把自己对电影制作和编程的热情结合进去了。

这位电影制作人表示:

对于那些懂行的人来说,高端摄像机通常使用较好的编解码器(比如RAW)结合大量手动控制来拍摄高清视频(4K+),以便在后期处理图像时可以游刃有余。

开箱即用的 Raspberry Pi 提供了非常友好的摄影体验,具有自动白平衡、自动曝光、高效的 h264/jpeg 编解码器等便利功能。这些功能可满足各种一般应用的需求,但对于高端视频工作而言,这些功能通常是你控制图像质量的障碍。

因此,他们将拍摄高端视频的最佳元素与 Raspberry Pi 提供的易用性相结合。

看起来奏效了,他们做出的设备能够与售价 1000 美元左右的相机拍出类似效果。

Davinci Resolve编辑套件运行中

项目地址:

https://github.com/schoolpost/cinepi

Raspberry Pi官方的高品质摄像头来了

为满足用户需求,树莓派基金会在2020年5月初发布了一套高品质(HQ)摄像头。

该摄像头可同时支持工业和消费级应用,例如安防或者野生动物拍摄等需要视觉高保真的场景。 

技术指标:

  • 1230万像素Sony IMX477传感器
  • 1.55μm×1.55μm像素尺寸– IMX219的像素面积的两倍
  • 背照式传感器架构,提高了灵敏度
  • 支持现成的C和CS卡口镜头(包括C-CS适配器)
  • 可调节的后焦距(12.5~22.4 毫米)
  • 三脚架安装1/4″-20

系统兼容:

从 Raspberry Pi 1 Model B 开始,此相机模块几乎与所有型号的树莓派开发板兼容(安装有最新操作系统)。

镜头规格:

默认模组不包含镜头,所以需要额外购买。树莓派官方认证的经销商会提供两个选择:6mm 焦距的CS卡口镜头,售价 25 美元;以及 16mm 焦距的C卡口镜头,售价 50 美元。

外挂式搭配:

摄影圈的朋友们有福了。

月黑风高无遁逃 —— 用树莓派自制夜视仪

小时候,我花了很多时间玩“细胞分裂”。这个游戏经常要在阴影中徘徊,光线和声音是完成各种任务的重要因素。

游戏中最让人印象深刻的就是情报员 Sam Fisher 戴的夜视仪。因此我一直对能在黑暗中看清事物而着迷,并有了打造便携式夜视设备的想法。

功能要求:

能在黑暗中观察事物(2米到5米)
有图形界面可操作
10个不同功能的按钮
方便的手柄
可调整到最佳视角。
可保存实时视频
可拍照

主要思路:

这个夜视仪核心是红外摄像头(红外线可让你在黑暗中拍摄照片和视频),我买了一个旧的手持式相机闪光灯作为夜视仪的基础。

树莓派Zero小巧,放在这个闪光灯壳子里很完美,有足够的空间支持HyperPixel屏幕和摄像头。而且它还有一个倾斜手柄,这意味着你可以调整夜视角度并且随身携带。

所需硬件:

1、树莓派 Zero W

2、树莓派摄像头 NoIR Camera V2

3、触摸屏 HyperPixel 4.0

代码地址:

https://github.com/IoToutpost/Night-Vision

把程序部署完成之后,可以在桌面放置一个快捷方式,以便随时启动。

十个按钮的功能:

预览 10秒

预览 30秒

预览60秒

预览5分钟

预览10分钟

预览15分钟

拍照

捕捉一个10秒视频

保持预览(没有时间限制)

离开/关闭

因为默认的灰色在黑暗中太亮了,于是作者把按钮改为黑色背景和绿色字体。

编者按:这里用到的HyperPixel 4.0触摸屏似乎与2019年8月发布的Raspbian Buster不太兼容,建议使用Raspbian Stretch。

原先的手持式相机闪光灯没地方展示触摸屏,作者用小刀将其顶部塑料一点一点切掉,这才有了一个不规则的显示区。DIY真是锻炼人啊……

相关视频地址:

https://v.qq.com/x/page/w0917ae6ohs.html

素材:Tecoed.co.uk

作者:TeCoEd

编译:王文文,前51CTO安全频道主编,RedHat认证工程师,华为HCIP-IoT认证工程师。

带摄像功能的树莓派水下潜航器

作者:长空无名

永远不要低估创客对树莓派的热情以及对其潜能的挖掘。

比如一位名叫 叶夫根尼·特卡琴科(Ievgenii Tkachenko)的朋友最近就完成了一个挑战,他做了一个带摄像功能的无人潜航器,并且在努力改进它的原型。

在 “Discovery 探索频道”发明家节目的启发下,Ievgenii 学到了很多。

“对我来说,这是一个很有意义的工程挑战。”他说。

“尽管陷入了反复试验的过程中,但迄今为止的结果令人印象深刻。”

能潜水的树莓派

在 Ievgenii 的印象中,这个项目是从零星的想法开始的。他解释说:“我知道我在这个项目中至少应该具备什么 —— 比如运动系统、灯光、摄像头和陀螺仪,以及外部的手机控制。”

“但我不知道该用什么东西来开发并驱动无人潜艇,而且我的预算也有限制。”

考虑到这一点,他的第一个举措是选择了Raspberry Pi 3B,这可以完美控制电机,二极管和陀螺仪,同时从摄像机采集视频流并且从终端接收命令。

壳中的 Raspberry Pi 3 用锂电池做电源,该电池也为 LED 和电机供电

“我真的很惊讶,这个小板子上能跑一个功能齐全的类 unix 操作系统,而且像 Node.js这样的软件可以很容易地在上面跑起来,”他告诉我们。

“它有控制输入和输出的针脚,还有很多配套软件库。有以太网端口、无线网卡和摄像头,即插即用。没有比它更好的解决方案了。”

LED连接到散热器以防止过热,脉冲驱动用于闪光灯控制

Ievgenii 与一位朋友合作,打算为这些组件做合适的外壳。其中包括一根能在水下传输数据的双绞线、一个电子速度控制装置、一个带有脉冲驱动器的LED和一块电池。四个 确保能在水中工作的马达。

把配件装入准备好的外壳之后,他们在浴缸和湖里进行了测试。

流媒体视频

岸上的路由器通过 RJ45 连接器和以太网电缆连接到Raspberry Pi,Ievgenii开发了一个 Android 应用程序,通过 IP 地址和端口连接到Raspberry Pi。

这允许通过触摸屏控制移动,或者使用支持 Android 系统的手柄。当它启动并运行时,Pi 将视频从摄像机传输到 Android 应用程序。

“实时视频流不简单,我花了很多时间在解决方案上”,但有线连接意味着潜航器目前在线缆长度允许的范围内活动。

相机放置在这个透明防水的盒子里,并附在防水外壳的前部

从这个意义上说,它并不完美。Ievgenii 承认:“操控无人潜航器很困难,它需要增加一个额外的控制板和几个电动机,以便保持平衡。”

但是,除了想把这个项目用可靠的 C++ 代码来写,并用USB连接4K摄像头探访水下世界之外,他还看到了这个项目的未来的潜力。

他指出:“类似的无人潜航器用于船只检查,也可以用于救援队或科学目的。”

“它们可以用来探索巨大的海洋世界,而不需要人类为其训练和冒险。事实上,现在我已了解树莓派,我可以用它创造几乎任何东西,从无线电玩具车到智能家居。”

来自:The MagPi 80

编译:IoT前哨站

用树莓派构建一个婴儿监视器

香港很湿热,即便是晚上,许多人为了更舒适,在家里也使用空调。当我的大儿子还是一个小婴儿的时候,他卧室的空调还是需要手动控制的,没有温度自动调节的功能。它的控制器只有开或者关,让空调整个晚上持续运行会导致房间过冷,并且也浪费能源和钱。

我决定使用一个基于树莓派的物联网解决方案去修复这个问题。后来我进一步为它添加了一个婴儿监视器插件。在这篇文章中,我将解释我是如何做的,它的代码在 我的 GitHub 页面上。

设计空调控制器

解决我的问题的第一个部分是使用了一个 Orvibo S20 可通过 WiFi 连接的智能插头和智能手机应用程序。虽然这样可以让我通过远程来控制空调,但是它还是手动处理的,而我希望尝试让它自动化。我在 Instructables 上找到了一个满足我的需求的项目:他使用树莓派从一个AM2302 传感器上测量附近的温度和湿度,并将它们记录到一个 MySQL 数据库中。

使用压接头将温度/湿度传感器连接到树莓派的相应 GPIO 针脚上。幸运的是,AM2302 传感器有一个用于读取的 开源软件,并且同时提供了 Python 示例。

与我的项目放在一起的用于 AM2302 传感器 接口的软件已经更新了,并且我使用的原始代码现在应该已经过时了,停止维护了。这个代码是由一个小的二进制组成,用于连接到传感器以及解释读取并返回正确值的 Python 脚本。

将传感器连接到树莓派,这些 Python 代码能够正确地返回温度和湿度读数。将 Python 连接到 MySQL 数据库很简单,并且也有大量的使用 python-mysql 绑定的代码示例。因为我需要持续地监视温度和湿度,所以我写软件来实现这些。

事实上,最终我用了两个解决方案,一是作为一个持续运行的进程,周期性(一般是间隔一分钟)地获取传感器数据,另一种是让 Python 脚本运行一次然后退出。我决定使用第二种方法,并使用 cron 去每分钟调用一次这个脚本。之所以选择这种方法的主要原因是,(通过循环实现的)持续的脚本偶尔会不返回读数,这将导致尝试读取传感器的进程出现堆积,最终可能会导致系统挂起而缺乏可用资源。

我也找到了可以用程序来控制我的智能插头的一个 Perl 脚本。它是解决这种问题所需的一部分,因此当某些温度/湿度达到触发条件,将触发这个 Perl 脚本。在做了一些测试之后,我决定去设计一个独立的 checking 脚本,从 MySQL 去拉取最新的数据,然后根据返回的值去设置智能开关为开或关。将插头控制逻辑与传感器读取脚本分开,意味着它们是各自独立运行的,就算是传感器读取脚本写的有问题也没事。

配置一个打开/关闭空调的温度值是很有意义的,因此,我将这些值转移到控制脚本读取的配置文件中。我也发现,虽然传感器的值一般都很准确,但是,偶尔也会出现返回不正确读数的情况。这个传感器脚本被修改为不向 MySQL 数据库中写入与前值差异非常大的值。同样也在配置文件中写入了连续读取的温度/湿度之间允许的最大差异值,如果读取的值处于这些限制值以外,这些值写不会提交到数据库中。

虽然,做这个自动调节器似乎花费了很多努力,但是,这意味着,记录到 MySQL 数据库的数据是有效的、可用于进一步去分析识别用户使用模式的有用数据。可以用多种图形方式去展示来自 MySQL 数据库中的数据,而我决定使用 Google Chart 在一个 Web 页面上显示数据。

添加一个婴儿监视摄像头

树莓派开放的性能意味着我可以不断地为它增加功能 —— 并且我有大量的未使用的可用 GPIO 针脚。我的下一个创意是去添加一个摄像头模块,将它放在孩子的卧室中,配置它去监视婴儿。

我需要一个能够在黑暗环境中工作的摄像头,而 Pi Noir 摄像头模块是非常适合这种条件的。Pi Noir 除了没有红外过滤之外,同样也是树莓派常用的摄像头模块。这意味着它在白天时的图像可能有点偏紫色,但是它可以在黑暗中借助红外灯来显示图像。

现在我需要一个红外光源。由于树莓派非常流行,并且进入门槛很低,因此它有大量的外围配件和插件。也有适合它的各种红外光源,我注意到的其中一个是 Bright Pi。它可以从树莓派上供电,并且它很适合为树莓派的摄像头模块提供红外光和普通光。它唯一的缺点是太考验我的焊接技能了。

我的焊接技能还是不错的,但是可能花费的时间比其他人更长。我成功地连接了外壳上所有的红外 LEDs,并将它们连接到树莓派的 GPIO 针脚上。这意味着树莓派能够编程控制红外 LED 是否点亮,以及它的亮度。

通过一个 Web 流去公开捕获的视频也很有意义,因为这样我就可以从 Web 页面上查看温度和湿度的读数图表。进一步研究之后,我选择了一个使用 M-JPEG 捕获器的 流软件。通过 Web 页面公开 JPG 源,我可以在我的智能手机上去连接摄像头查看程序,去查看摄像头的输出。

做最后的修饰

没有哪个树莓派项目都已经完成了还没有为它选择一个合适的外壳,并且它有各种零件。在大量搜索和比较之后,有了一个显然的 赢家:SmartPi 的乐高积木式外壳。乐高的兼容性可以让我去安装温度/湿度传感器和摄像头。下面是最终的成果图:

在这以后,我对我的这个作品作了一些改变和更新:

    • 我将它从树莓派 2 Model B 升级到了树莓派 3,这意味着我可以使用 USB WiFi 模块。
    • 我用一个 TP-Link HS110 智能插头替换了 Orvibo S20。
    • 我也将树莓派插到了一个智能插头上,这样我就可以远程重启/重置它了。
    • 我从树莓派上将 MySQL 数据库移走了,它现在运行在一个 NAS 设备上的容器中。
    • 我增加了一个非常 灵活的三角夹,这样我就可以调整到最佳角度。
    • 我重新编译了 USB WiFi 模块,禁用了板载 LED 指示灯,这就是升级到树莓派 3 的其中一个好处。
    • 我因此为我的第二个孩子设计了另外一个监视器。
    • 因为没有时间去折腾,我为我的第三个孩子购买了夜用摄像头。

想学习更多的东西吗?所有的代码都在 我的 GitHub 页面上。

(https://github.com/jervine/rpi-temp-humid-monitor)

想分享你的树莓派项目吗?将你的故事和创意发送给我们。

via: https://opensource.com/article/18/3/build-baby-monitor-raspberry-pi
作者:Jonathan Ervine 译者:qhwdw 校对:wxy 来自:Linux中国