对于我们大多数人来说,面部遮盖物也阻碍了我们进行口头交流的能力。我已经看到很多人说话时放下口罩,但不幸的是,这削弱了他们使用口罩的能力。我们如何在保持鼻子和嘴巴遮盖的同时清晰地表达自己?
在本文中,我们将向您展示如何使用树莓派和 8x8 灵活的 NeoPixel 矩阵构建滚动文本面罩。对于该项目,我们还将针对 16 像素和 32 像素宽的矩阵提供 2 种版本。布面罩应具有半透明的顶层,并完全覆盖您的嘴和鼻子。请在清洗面罩之前取下所有电子设备。
树莓派滚动文本面罩如何工作?
戴上口罩,遮住您的鼻子和嘴,打开电源,导航到本地网页的前端,然后输入文本以滚动您的面罩。
您需要什么
树莓派 3
电源 / 键盘 / 鼠标 / 显示器 / HDMI 电缆 (适用于树莓派)
具有可单独寻址的 LED 的 8x8 柔性 NeoPixel 矩阵 或连接 2 个灵活的 8x8 NeoPixels 创建 16x8 矩阵 或 32x8 Flexible NeoPixel Matrix 用于面罩版本
1N4001 二极管
带热缩管的焊接套件
助焊剂
剪线钳 / 剥线钳
迷你热风枪或吹风机
小面包板
跨接线组 (M 到 F , M 到 M 和 F 到 F)
半透明的布面罩前层
小型移动电源充电器
带鳄鱼夹的测试引线组
迷你或微型 USB 电缆
可选:面罩支架 - 轻轻将口罩稍微远离您的嘴,以帮助呼吸。
可选:带有墙插的 5V 电源
第 1 部分:设置 NeoPixel 矩阵
在此步骤中,我们将执行基本的接线并运行 Adafruit 的 NeoPixel Uberguide 提供的示例代码。 NeoPixel 矩阵需要单独的 5 伏电源。为了使该项目可移动,我正在使用 5V 移动电源充电器。
1 通过柔性 NeoPixel 矩阵连接 GND 电源输入至面包板接地线。(M 对 M 线)
2 将 NeoPixel 矩阵的第二个 GND (DIN 旁边的连接) 连接到面包板上的接地线。 NeoPixel Matrix 实际上需要连接 2 根 GND 线,一根在 5V 红线旁边,另一根 GND 线在 DIN 旁边。请将两者都连接到 GND 。
3 将树莓派的任何 GND 引脚连接到面包板上的接地线。
4 将 5V 电源的地线连接到面包板的地线。
5 将正极端子 (电源输入) 从 NeoPixel 矩阵连接到二极管阴极 (带有条纹的一面)
6 将电源的正极端子连接到二极管阳极 (无条纹的一面)。
7 将 GPIO 21 连接到 NeoPixel 矩阵的 DIN (数据输入)。 (M 对 F 线)
为了使用 5V 移动电源充电器为 NeoPixel 矩阵供电,我使用了一根旧的 microUSB 电缆,并切断了 microUSB 的一端 (保留 USB),剥去了电线,露出了红色 (电源) 和黑色 (接地) 线。
如果您还没有准备好切断 USB 线,请使用 [传统 5V 电源] 为 NeoPixel 供电。(https://amzn.to/3kQV8uZ)
对于此步骤中的接线,我使用带鳄鱼夹的测试线将剥开的 USB 电缆连接到 NeoPixel 矩阵上的电源输入。我最后将 USB 插入移动电源充电器。
完成接线后,让我们使用 Adafruit 的测试代码测试矩阵。
1 引导您的树莓派。如果您还没有 microSD 卡,请参阅我们的文章如何首次设置树莓派或如何进行无头树莓派安装。
2 打开终端。可以按 CTRL + T 。
3 安装必需的依赖项。
sudo pip3 install rpi_ws281x adafruit python-neopixel
sudo python3 -m pip install --force-reinstall adafruit-blinka
4 克隆此存储库以获取源代码:
git clone https://github.com/carolinedunn/scrollingTextMask
5 导航到 scrollingTextMask 文件夹。
cd scrollingTextMask
6 运行测试代码 fillMatrix.py
sudo python3 fillMatrix.py
如果您的 NeoPixel 矩阵亮起,表示红色,绿色,蓝色,彩虹,恭喜,您的 NeoPixel 矩阵正在工作,可以继续进行下一步。否则,请返回并排除连接故障。
故障排除技巧:
如果树莓派上的 GPIO 引脚 21 不起作用,则可以将 GPIO 输出更改为 10,12 或 18。使用 Geany 或 Thonny (在文件管理器中单击鼠标右键) 从 scrollingTextMask 文件夹中打开 fillMatrix.py,并更新 GPIO 输出。不要按 Geany 或 Thonny 的 Run 按钮。请记住,如果您选择更改 ** fillMatrix.py ** 中的 GPIO 输出,则在学习本教程时,您将需要对其他文件进行相同的更改。
7 按 Ctrl-C 停止脚本。
在此步骤的最后,您应该有一个基本的 NeoPixel 矩阵可以完全点亮。
第 2 部分:测试滚动文本
在本节中,我们将测试 NeoPixel 矩阵的滚动文本功能。
1 如果您从” 第 1 部分” 打开了” 终端”,但仍在”scrollingTextMask” 目录中,请运行”testMsg.py”。
sudo python3 testMsg.py
您应该在矩阵上滚动看到” 欢迎使用 Tom 的硬件” 文字。
2 ** 按 Ctrl-X ** 停止 python 代码。
有关 testMsg.py 的代码注释
- 如果您将 fillMatrix.py 中的 GPIO 从 21 更改了,则还需要进行相应的更改。
- 滚动文本设置为” 欢迎使用 Tom 的硬件”。下一步将提示您滚动文本。
- “矩阵亮度” 可以设置为 1.0 ,以获得最大亮度。
- “scrollSpeed” 调整矩阵上显示的文本速度。较小的数字可以更快地滚动文本,而较大的数字可以更慢地滚动文本。
- “TextColor” 是文本的 RGB 颜色。默认情况下,我们将文本颜色设置为白色 (255 、 255 、 255),但是您可以根据自己的喜好更改颜色。
自定义树莓派滚动面罩上的文本:
3 在同一终端和同一目录中运行 testMsgInput.py。
sudo python3 testMsgInput.py
4 该代码应自动提示您输入自己的文本。 ** 输入 hello ** 或您选择的短语。
设置树莓派滚动文本蒙版的字体 (可选)
您可能会注意到,矩阵上的字母 (字体) 与本教程示例视频中看到的略有不同。示例代码使用树莓派 OS 中包含的默认字体,而视频使用 ** 5x7 ** 字体。您可以下载用于个人使用的字体 5.7.ttf,然后将其安装到树莓派中。
2 打开一个新终端,然后导航到包含 5x7.tff 和 enter:** 的文件夹
sudo cp 5x7.ttf/usr/share/fonts/truetype
3 ** 用 Geany 打开 testMsgInput.py **
4 在”font = ImageFont.truetype (“LiberationMono-Regular.ttf”, 8)” 之前添加 *#*,以注释掉第 26 行
5 取消注释第 28 行,通过删除 # 将字体设置为 5x7.ttf
6 保存 testMsgInput.py
7 再次运行 testMsgInput.py
sudo python3 testMsgInput.py
输入您选择的单词或短语。
树莓派滚动文本蒙版的 Flask 前端网页
在此步骤中,我们将通过创建一个方便的前端 Flask 网站来为矩阵输入滚动文本,从而使我们的解决方案可移动。
1 如果您完成了可选步骤来更改字体 (在上一步中),请在文件 app.py 中进行相同的更改。
2 在您的终端上,导航到 scrollingTextMask 目录,然后使用命令 (sudo python3 app.py
) 运行 app.py。
3 ** LaunchChromium ** 浏览器。
4 导航到”http://raspberrypi:5000"(假设”raspberrypi” 是您的主机名) 或 **”localhost:5000”**
5 输入您选择的单词或短语,以在矩阵上滚动。
6 在另一台设备上测试。如果您看到两次在矩阵上滚动输入,请转到另一台计算机或手机 (在同一 WiFi 网络上),然后输入 “http://raspberrypi:5000“。再次,我们假设 raspberrypi 是您的主机名。
7 输入您选择的文本。如果看到文本再次在矩阵上滚动两次,则可以设置该脚本以在启动时启动。您可以通过更改重复数 = 2 来调整输入的文本在矩阵上滚动的次数。如果您更改重复数 = 1 ,则每次进入网页时,文本仅滚动一次。如果您希望文本无限滚动,请改用上一步中的 ** testMsgInput.py **,但请记住, testMsgInput.py 没有 html 界面。请等待直到文本完全完成滚动为止在输入另一个短语之前。在上一个短语完成显示之前输入其他文本将导致错误。
* 如果您希望对前端网页进行更改,则 HTML 代码位于 /home/pi/scrollingTextMask/templates/index.html 。
将 app.py 设置为在启动时运行:
在此步骤中,我们将设置 Pi 以始终运行 ** app.py ** 代码以在引导时运行。
1 打开终端
2 输入
sudo nano /home/pi/.bashrc
3 在.bashrc 的底部输入以下文本
sudo python3 /home/pi/scrollingTextMask/app.py
4 按 Ctrl-X 退出,按 Y 保存。
5 关闭您的 Pi。
第 3 部分:使用树莓派滚动文本蒙版移动
在这一步中,我们使解决方案真正具有移动性。在关闭树莓派并完全退出上一步的情况下,我们首先要注意我们的接线,必要时请拍照。
1 拆卸所有接线。
2 ** 将二极管的阴极和阳极正确焊接在矩阵的电源输入和 USB 电缆之间。
3 用热缩管覆盖裸露的电线。用吹风机或热风枪密封热缩管。
4 将地线从 NeoPixel 焊接到 USB 电缆。您可能需要在接地线之间添加一小段电线,以使 + 线平整。用热缩管覆盖裸露的电线。用吹风机或热风枪密封热缩管。
焊接完成后,您的 NeoPixel 矩阵电源输入应具有 USB 连接。
5 ** 接下来,使用 2 条公对公电线将 DIN 和 GND 连接到树莓派。将 DIN 连接到 GPIO 21 (或者如果您在上一步中更改了 GPIO 引脚)。将 GND 连接到树莓派上的任何 GND 引脚。
6 将 NeoPixel 矩阵轻轻地滑入面罩中,带有透明的织物正面,注意不要断开任何电线。
7 ** 打开您的 Pi 和 NeoPixel USB **。如果具有 2 个 USB 输出,则可以用一个移动电源充电器为 Pi 和 NeoPixel 供电。 树莓派 4 可以通过带有 USB C 型输出的移动电源充电器供电。
8 pi 启动后,转到同一 WiFi 网络上的任何计算机或移动设备,并浏览到”http://raspberrypi:5000“,然后输入单词或短语。
如果您输入的文字在您的面罩上滚动,那么恭喜!您已经完成了这个项目!
对于真正的移动解决方案 _,如果您拥有移动计划和具有热点功能的智能手机,则可以从家庭 WiFi 上摆脱束缚。
1 在您的智能手机上,启用热点功能。
2 在树莓派桌面上,将 WiFi 设置为智能手机的热点,然后输入手机的热点密码。
3 在智能手机上的浏览器中,导航至” [** http://raspberrypi:5000 **](http://raspberrypi:5000 /)**”** 并访问您的前端网页。
奖金配置
我为该项目提供了 2 个其他版本的 Python 文件,用于 16 像素和 32 像素宽的配置。
要为树莓派滚动文本蒙版制作 16x8 NeoPixel 矩阵,您将需要 2 个灵活的 8x8 NeoPixel 矩阵。第二个 NeoPixel 矩阵将由第一个矩阵供电,不需要第二个电源。
1 将主 NeoPixel 的 DOUT 连接至第二个 NeoPixel 矩阵的 DIN。
2 将两个 8x8 NeoPixels 矩阵并排排列,并用电气胶带将其固定在适当的位置。
3 将 NeoPixel 对插入半透明顶层的织物布面罩中。请记住,您将需要一个末端为 3.1 英寸高的布面罩,以适合 NeoPixels 。
4 启动您的 Pi 和主要的 NeoPixel 矩阵。
5 从您的终端运行 Python 代码 16-textMsg.py :
sudo python3 /home/pi/scrollingTextMask/16Matrix/16-testMsgInput.py
6 如果对 8x8 矩阵的代码进行了任何更改 (字体,文本颜色,滚动速度),则需要对 16Matrix 文件夹中的文件进行相同的更改。
7 像配置 8x8 矩阵一样,通过配置 16-app.py 继续设置。
适用于树莓派滚动文本蒙版的 32x8 NeoPixel 矩阵
32x8 灵活 NeoPixel 矩阵可以立即购买,并可以使用与 8x8 矩阵相同的配置进行连接。 32x8 NeoPixel Matrix 太宽,无法安装在面罩内,但可以很好地安装在面罩上方。
1 按照第 1 部分中的步骤连接您的灵活的 32x8 NeoPixel 矩阵。
2 从终端运行 Python 代码 32-textMsg.py:
sudo python3 /home/pi/scrollingTextMask/32Matrix/32-testMsgInput.py
3 如果对 8x8 矩阵的代码进行了任何更改 (字体,文本颜色,滚动速度),则需要对 32Matrix 文件夹中的文件进行相同的更改
4 像配置 8x8 矩阵一样,通过配置 32-app.py 继续设置。
5 用半透明织物包裹矩阵的前部,并将热胶粘在面罩上。
6 启动您的 Pi 和主要的 NeoPixel 矩阵。
此外,如果您想显示表冠的静态图像,可以使用文件 32-crown.py 。运行代码:
sudo python3 /home/pi/scrollingTextMask/32Matrix/32-crown.py
结论:
我们希望您发现本教程既有趣又有用。这个专案带来了新的含义:” 写在你的脸上。”