诗意相机 一台能够将所拍摄的景象转化为诗歌并打印出来的相机。

作为电子爱好者领域的新手,我们开始了这个项目。以下说明是为完全的初学者准备的,就像我们当时一样。为了便于采购和组装零件,我们简化了一些设计;因此,它比我们拍摄的版本更不紧凑。如果您对电子和编程比较熟悉,我们鼓励您进行更多的实验和改造。

⚠️ 这些说明仍在编写中。⚠️ 请试用并告诉我们哪些地方令人困惑或无法使用。

所需硬件

1. 计算机:Raspberry Pi Zero 2 W 带针脚接口

树莓派是简化版的电脑。它们重量轻、价格低廉、处理能力有限,而且比普通消费电子设备更加脆弱。它对使用的电源要求非常敏感——电源功率太大会烧坏零件,功率太小软件就无法运行。在拔掉电源之前,你还必须手动关闭软件,以防止软件被损坏。

我们选择 Pi Zero 2 是因为它在处理能力(Pi Zeros 太慢)和体积(市面上大多数其他 Pi 都更大)之间取得了平衡。本教程中的接线图适用于所有 Raspberry Pi,但在软件和相机兼容性方面可能存在差异,特别是在较旧的设备上。我们已经用 Pi 3b+ 测试过,运行良好,但 Pi 4 可能需要太多电力,无法作为一个可行的便携式解决方案。

Raspberry Pi Zero 2 通常销售时不带排针(那些 2x20 的黑色金属连接器)。排针可以让你使用跳线轻松地将 Pi 连接到打印机和按钮。如果你购买的 Pi 没有排针,你需要另外购买2x20 排针并自行焊接。如果你不想焊接,可以使用锤入式排针这个安装工具

Raspberry Pis are also recovering from a supply shortage. Check rpilocator.com for live stock notifications on standalone parts (does not list accessory kits).

2. 连接树莓派的配件

3. 摄像头:Raspberry Pi Camera Module 3

大体上很简单直接,但要小心不要损坏硬件。树莓派相机很容易损坏,可能会因为静电而烧坏。我们在制作这个项目的过程中烧坏了 3 个相机。确保在不使用时将其存放在防静电袋中。

如果你要将摄像头连接到 Pi Zero 2,请注意 Zero 2 的摄像头连接卡座也非常脆弱。在制作过程中我们也弄坏了一个 Pi Zero 2 的摄像头卡座,不得不重新购买一个新的 Pi 🥲

我们尚未在老款树莓派摄像头上测试过这些说明。

  • 摄像设备配件:
  • 相机保护壳含三脚架 — 有助于在开发过程中保护精密的相机硬件。
  • 针对 Pi Zero 和 Zero 2 专门设计的摄像头线缆 — 如果您使用较大的 Pi,只需使用摄像头附带的默认线缆即可。如果您在套件中获得了 Zero 2 摄像头线缆,它很可能是约 2 英寸长的短线缆。请确保获得足够长的线缆,以便在放置摄像头时有更大的灵活性。
  • 可选:用于打开/关闭 Pi Zero 2 上精密相机连接器的镊子

4. 收据打印机:带有 TTL 串行连接的迷你热敏打印机

我们在这个项目中使用了 Adafruit 热敏打印机产品线,但它们现已停产。亚马逊和速卖通上有类似的打印机;我们购买的这些打印机可以使用相同的打印机驱动程序(虽然 Adafruit 已不再维护这些驱动程序,但它们仍然可以正常工作)。

Nano Thermal PrinterTiny Thermal Printer更加紧凑,但有略微不同的接线方式

重要的是这款热敏打印机有 TTL 串行连接,所以你可以轻松将其连接到树莓派。在 Amazon 或 Aliexpress 上**搜索"TTL embedded thermal printer"**来找到相关零件。

5. 电池:

如果你想让相机变得便携,你需要一些电池!树莓派需要稳定的 5V 电压和 1.2A 电流,而打印机需要 5-9V 电压,打印时电流约为 2A。

推荐电源:6 节 AA 电池

这不是最轻量的解决方案,但对初学者来说是个友好的起点。

其他可行的解决方案:

  • 把上述电路制作成 PCB,这样只需要连接接插件而不用焊接 — 我们的项目就是这样做的!未来会上传 gerber 文件。
  • 7.2V 锂电池,例如 2 个 18650 型
  • 遥控车用 7.4V 镍氢电池
  • 如果你不需要特别便携,可以买一个便携式电源来给树莓派和打印机供电
  • 如果你不想焊接,你可以用两个独立的电池分别给树莓派和打印机供电。不过,我们在使用常被推荐的 PiSugar 3 电池时遇到了过热问题。

不能工作的电源:

  • 普通 9V 碱性电池不能使用,因为它们无法提供足够的电流
  • 标准充电宝无法为树莓派提供持续供电,导致几分钟后就会关机
  • 将两个设备都插在同一个 5V 充电宝上 — 在打印时它无法承受所需电流。要么树莓派在打印时关机,要么打印机没有足够的电力来打印。

6. 快门按钮和 LED 指示灯

任何 LED 灯+瞬时按钮都可以用作快门按钮。我们用 LED 灯作为状态指示器,用来显示就绪、加载等状态。

  • 带灯按钮。这个按钮没有令人满意的点击感,但内置的 LED 包含了电阻,这一点很方便。
  • 2 条快速连接线,用来方便地将这些按钮连接到树莓派

7. 杂项设备

  • Wire cutter & stripper
  • 电烙铁和配件
  • 电瓶线

软件

这段代码目前使用 OpenAI 的模型将图片转换为诗歌。它还使用了Adafruit 的热敏打印机 Python 库中的热敏打印机驱动程序。

你需要拥有自己的OpenAI 账户和 API 密钥。每个请求需要花费几美分。

目前在树莓派上运行的main.py脚本:

  • 当您点击快门按钮时拍照
  • 将照片发送给 GPT-4 Vision 为照片添加说明文字
  • 在收到字幕后,我们让 GPT-4 把字幕转换成诗
  • 当我们收到诗歌时,用热敏小票打印机把诗歌打印出来

综合说明

本文改编自以下教程:

第一部分. 检查你的树莓派和摄像头是否工作正常

  1. 将摄像头模块连接至树莓派。

  2. 将安装了全新树莓派系统的 SD 卡插入树莓派。

  3. 通过 mini HDMI 将树莓派连接到显示器。

  4. 接通电源。您应该看到树莓派上的绿色指示灯亮起,显示器上会出现启动画面。

  5. 当树莓派启动后,打开终端开始进行修改。

  6. 打开树莓派后,启动终端以开始进行配置更改。

  7. 设置树莓派硬件以接收摄像头和串口输入:

sudo raspi-config
  1. 您需要调整以下设置:

    • Glamor:开启(用于在较新版本的 Raspbian 系统上设置摄像头)
    • 串口:开启(用于访问小票打印机输入)
    • 串口控制台:关闭(具体功能未知)

    根据需要重启系统。

[教程待办:添加基础摄像头测试脚本并展示预期效果]

  1. 安装一些使 Adafruit 热敏打印机工作所需的软件。
$ cd
$ git clone https://github.com/adafruit/zj-58
$ cd zj-58
$ make
$ sudo ./install
  1. 克隆这个包含我们的诗意相机软件的仓库:
$ cd
$ git clone https://github.com/carolynz/poetry-camera-rpi.git
  1. 设置您的热敏打印机,将其连接到电源和树莓派。在本教程中查看图表和说明。 测试它是否正常工作。注意你的打印机的波特率(例如19200)。我们稍后会用到这个。

  2. 打开我们的 poetry-camera-rpi 目录:

$ cd poetry-camera-rpi
  1. 如果你的打印机波特率不同于19200,请打开main.py并将该数字替换为你打印机的波特率:
# main.py:

# 实例化打印机
printer = Adafruit_Thermal('/dev/serial0', 19200, timeout=5)

[TODO] 需要一个测试打印机是否正常工作的安装脚本

第 3 部分. 设置人工智能

  1. 设置 OpenAI 账号并创建 API 密钥。

  2. 导航到你存放 Poetry Camera 代码的目录,并创建一个.env文件,用于存储敏感信息,如你的 OpenAI API 密钥: nano .env

  3. 在 .env 文件中添加你的 API key: OPENAI_API_KEY=pasteyourAPIkeyhere

[TODO] 添加一个 openai 测试脚本

第四部分:实现端到端工作流程

[TODO] 包含接线图

  1. 连接按钮

  2. 运行诗歌相机脚本。

$ python main.py
  1. 检查快门按钮是否点亮,这表明相机已准备好拍摄

  2. 按下快门按钮并等待诗歌打印出来。

[待办] 对不同常见错误消息的故障排查说明

第五部分. 在摄像头开启时自动运行 Poetry Camera 程序

  1. 设置一个 cron 任务让你的 Python 脚本在开机时运行。首先,用默认编辑器打开你的 crontab 文件:
$ crontab -e

2 然后在你的 crontab 中添加以下行,以在电脑启动时运行该脚本。

# 开机时运行诗歌摄像头脚本
@reboot python /home/pi/poetry-camera-rpi/main.py >> /home/pi/poetry-camera-rpi/errors.txt 2>&1

>> {...}errors.txt 2>&1 将任何错误信息写入 errors.txt 以便调试。常见的失败模式是找不到文件。请确保所有文件路径都是绝对路径,并且有正确的用户名和目录名。

  • 重启系统以使其生效
sudo reboot

现在重启您的相机并等待 LED 指示灯亮起!

第 6 部分 制作电源电路

[TODO] 把内容整理一下,并解释步骤 :)

image

第七部分:随时切换 WiFi 网络

相机需要 wifi 才能工作。你可以通过编辑wpa_supplicant.conf来固定设置你的手机热点。如果你想随时连接新的 wifi 网络,只需按照这个简单教程使用即插即用代码。(你可以同时将教程中的 Flask 应用和我们的主相机代码作为两个 cron 任务自动运行。)

要完成上述教程,你需要一个插入 microUSB 接口的第二个 WiFi 适配器。一定要选择一个适用于 Linux/Raspberry Pi 的即插即用 WiFi 适配器。

WiFi 适配器选项,似乎都可以工作:

MicroUSB 转 USB 适配器: