诗意相机 一台能够将所拍摄的景象转化为诗歌并打印出来的相机。
作为电子爱好者领域的新手,我们开始了这个项目。以下说明是为完全的初学者准备的,就像我们当时一样。为了便于采购和组装零件,我们简化了一些设计;因此,它比我们拍摄的版本更不紧凑。如果您对电子和编程比较熟悉,我们鼓励您进行更多的实验和改造。
⚠️ 这些说明仍在编写中。⚠️ 请试用并告诉我们哪些地方令人困惑或无法使用。
所需硬件
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. 连接树莓派的配件
- Vilros提供包含以下所有配件的套装
- 5V MicroUSB电源适配器
- 保护壳
- 32GB MicroSD卡(用于安装操作系统)
- 散热片(防止过热,非常重要!)
- MicroUSB转USB适配器,用于连接罗技键盘的无线接收器
- MiniHDMI转HDMI适配器,用于连接显示器
- 键盘和鼠标: 我们推荐使用这款罗技无线键盘触控板组合,因为它只占用树莓派的一个USB接口。
- 外接显示器: 用于查看和编程树莓派的软件。虽然不是必需品,但对初学者来说比通过SSH连接树莓派更友好。本教程的所有说明都假设你使用外接显示器。
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 Printer或Tiny Thermal Printer更加紧凑,但有略微不同的接线方式。
重要的是这款热敏打印机有 TTL 串行连接,所以你可以轻松将其连接到树莓派。在 Amazon 或 Aliexpress 上**搜索"TTL embedded thermal printer"**来找到相关零件。
亚马逊上类似的小票打印机:
收据打印机配件:
母 DC 电源适配器用于将打印机连接到电源
剪线钳、剥线钳、用于接线的小螺丝刀
收银纸:EcoChit 热敏收银纸,2.25 英寸(无酚,可回收)
不要使用普通小票纸!它通常含有双酚 A,这对儿童和生殖健康尤其有害。
5. 电池:
如果你想让相机变得便携,你需要一些电池!树莓派需要稳定的 5V 电压和 1.2A 电流,而打印机需要 5-9V 电压,打印时电流约为 2A。
推荐电源:6 节 AA 电池
这不是最轻量的解决方案,但对初学者来说是个友好的起点。
- 6 节 5 号电池盒(带 DC 插头)
- 6 节 5 号电池 — 可充电镍氢电池(如 Eneloop)提供 7.2V 电压,一次性碱性电池(如 Duracell)提供 9V 电压。两种都可以用。当然,不要混合使用电池!
- 用于控制电路供电的 DC 插孔内联电源开关
- DC 线路接线端子用于将电池连接到电路
- 降压(buck)转换器 — 5V @ 3A 输出 将电池电压降低到 5V 以供 Raspberry Pi 使用
- MicroUSB 外壳给树莓派供电,或者拆开一条 MicroUSB 线
- 烙铁
其他可行的解决方案:
- 把上述电路制作成 PCB,这样只需要连接接插件而不用焊接 — 我们的项目就是这样做的!未来会上传 gerber 文件。
- 7.2V 锂电池,例如 2 个 18650 型
- 遥控车用 7.4V 镍氢电池
- 如果你不需要特别便携,可以买一个便携式电源来给树莓派和打印机供电
- 如果你不想焊接,你可以用两个独立的电池分别给树莓派和打印机供电。不过,我们在使用常被推荐的 PiSugar 3 电池时遇到了过热问题。
不能工作的电源:
- 普通 9V 碱性电池不能使用,因为它们无法提供足够的电流
- 标准充电宝无法为树莓派提供持续供电,导致几分钟后就会关机
- 将两个设备都插在同一个 5V 充电宝上 — 在打印时它无法承受所需电流。要么树莓派在打印时关机,要么打印机没有足够的电力来打印。
6. 快门按钮和 LED 指示灯
任何 LED 灯+瞬时按钮都可以用作快门按钮。我们用 LED 灯作为状态指示器,用来显示就绪、加载等状态。
7. 杂项设备
- Wire cutter & stripper
- 电烙铁和配件
- 电瓶线
软件
这段代码目前使用 OpenAI 的模型将图片转换为诗歌。它还使用了Adafruit 的热敏打印机 Python 库中的热敏打印机驱动程序。
你需要拥有自己的OpenAI 账户和 API 密钥。每个请求需要花费几美分。
目前在树莓派上运行的main.py
脚本:
- 当您点击快门按钮时拍照
- 将照片发送给 GPT-4 Vision 为照片添加说明文字
- 在收到字幕后,我们让 GPT-4 把字幕转换成诗
- 当我们收到诗歌时,用热敏小票打印机把诗歌打印出来
综合说明
本文改编自以下教程:
第一部分. 检查你的树莓派和摄像头是否工作正常
将摄像头模块连接至树莓派。
将安装了全新树莓派系统的 SD 卡插入树莓派。
通过 mini HDMI 将树莓派连接到显示器。
接通电源。您应该看到树莓派上的绿色指示灯亮起,显示器上会出现启动画面。
当树莓派启动后,打开终端开始进行修改。
打开树莓派后,启动终端以开始进行配置更改。
设置树莓派硬件以接收摄像头和串口输入:
sudo raspi-config
您需要调整以下设置:
- Glamor:开启(用于在较新版本的 Raspbian 系统上设置摄像头)
- 串口:开启(用于访问小票打印机输入)
- 串口控制台:关闭(具体功能未知)
根据需要重启系统。
[教程待办:添加基础摄像头测试脚本并展示预期效果]
- 安装一些使 Adafruit 热敏打印机工作所需的软件。
$ cd
$ git clone https://github.com/adafruit/zj-58
$ cd zj-58
$ make
$ sudo ./install
- 克隆这个包含我们的诗意相机软件的仓库:
$ cd
$ git clone https://github.com/carolynz/poetry-camera-rpi.git
设置您的热敏打印机,将其连接到电源和树莓派。在本教程中查看图表和说明。 测试它是否正常工作。注意你的打印机的波特率(例如
19200
)。我们稍后会用到这个。打开我们的
poetry-camera-rpi
目录:
$ cd poetry-camera-rpi
- 如果你的打印机波特率不同于
19200
,请打开main.py
并将该数字替换为你打印机的波特率:
# main.py:
# 实例化打印机
printer = Adafruit_Thermal('/dev/serial0', 19200, timeout=5)
[TODO] 需要一个测试打印机是否正常工作的安装脚本
第 3 部分. 设置人工智能
设置 OpenAI 账号并创建 API 密钥。
导航到你存放 Poetry Camera 代码的目录,并创建一个
.env
文件,用于存储敏感信息,如你的 OpenAI API 密钥:nano .env
在 .env 文件中添加你的 API key:
OPENAI_API_KEY=pasteyourAPIkeyhere
[TODO] 添加一个 openai 测试脚本
第四部分:实现端到端工作流程
[TODO] 包含接线图
连接按钮
运行诗歌相机脚本。
$ python main.py
检查快门按钮是否点亮,这表明相机已准备好拍摄
按下快门按钮并等待诗歌打印出来。
[待办] 对不同常见错误消息的故障排查说明
第五部分. 在摄像头开启时自动运行 Poetry Camera 程序
- 设置一个
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] 把内容整理一下,并解释步骤 :)
第七部分:随时切换 WiFi 网络
相机需要 wifi 才能工作。你可以通过编辑wpa_supplicant.conf
来固定设置你的手机热点。如果你想随时连接新的 wifi 网络,只需按照这个简单教程使用即插即用代码。(你可以同时将教程中的 Flask 应用和我们的主相机代码作为两个 cron 任务自动运行。)
要完成上述教程,你需要一个插入 microUSB 接口的第二个 WiFi 适配器。一定要选择一个适用于 Linux/Raspberry Pi 的即插即用 WiFi 适配器。
WiFi 适配器选项,似乎都可以工作:
MicroUSB 转 USB 适配器: