亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Arduino的蓝牙变焦OBS 控制器

发布时间:2021-10-06
分享到:

基于Arduino的蓝牙变焦OBS 控制器

发布时间:2021-10-06
分享到:

为了方便在线会议、在线直播等的管理,我构建了这个蓝牙版本的控制器。以避免悬挂电缆。这将需要具有蓝牙功能的控制器,而不是廉价的 Arduino Pro Micro、可充电电池和充电电路。因此,如果电缆不打扰您,您不妨坚持我的原始设计,但无线总是好的。

在研究如何制作蓝牙版本时,发现人们为 OBS(开放广播工作室)制作了非常相似的控制器,用于管理多个视频源。这可以像 Zoom 一样通过特殊的热键组合进行控制,实际上可以使用专业的控制器来获得整洁的总和。但是,您所要做的就是重新定义由不同按钮生成的组合键,以便我的控制器与 OBS 一起操作 - 或者就此而言,与任何其他接受热键的程序(包括 Teams、Google Classroom 和其他电话会议解决方案)一起操作。

补给品
您可能想要改变设计,但这里是我使用的耗材:

  • ESP-WROOM-32 开发板。这是几个配置,但 30 针面包板友好版本是最容易使用的。
  • 6 或 7 个按钮。为我使用的那些搜索“12mm 圆形按钮开关”或“PBS-33b”。各种卖家提供一套 6 种不同的颜色,但您也可以从某些来源获得橙色。
  • 5 针旋转编码器。
  • 2 个 3 毫米 LED - 绿色和蓝色(或您的偏好)。

电阻:

  • 1k 2-off
  • 4.7k 4-off
  • 27k 1 折
  • 100k 1-off
  • 503035 锂聚合物电池,带 2 针 JST 连接器。
  • 匹配 JST 套接字。
  • TP4056 充电器模块。
  • 3.3k 0603 或 0805 表面贴装电阻器。
  • 3mm 红/绿 LED,共阳极。
  • MicroUSB 分线板。
  • DPDT 微型滑动开关。
  • MicroUSB 引线。
  • 20 路(或更多)彩虹带状电缆。
  • 项目箱。我使用的是 AliExpress 的 125x80x32mm,但您可以使用任何一种,也可以自己制作。我的没有螺丝。如果您的相同,则需要 4 个 M3.5x20mm。
  • 自粘橡胶脚。

至于工具和用品,我用过:

  • 烙铁、焊锡、剪线钳和剥线钳、螺丝刀、活动扳手等。
  • 钻头。阶梯锥形钻头非常适合将导向孔扩大到按钮所需的尺寸。
  • 针锉,用于塑造滑动开关和 microUSB 连接器所需的孔径。
  • 热熔胶枪、强力胶和 2 部分环氧树脂胶。
  • 标签打印机。

ESP-WROOM-32 支持电容式触摸输入,如果您愿意,您可以用自粘铜箔代替按钮来制作触摸板。事实上,在盒子和按钮到来之前,我使用这种方法进行初始开发,所有东西都简单地安装在一块纸板上。它运行良好,但我更喜欢按钮的积极感觉 - 在管理复杂的 Zoom 会话时,您不希望因不小心刷到触摸板而发生任何事故。

第 1 步:设计

经过一些研究,似乎现成且相当便宜的 ESP-WROOM-32 微控制器最适合我的需求。它内置蓝牙,可以直接从单个锂聚合物电池运行。

最初,在找到合适的盒子之前,我将 ESP-WROOM-32 安装在一张带有 6 个触摸板和一个旋转控制器的卡片上,作为概念证明和软件开发。不幸的是,直到我卸下微控制器并将其安装在最终版本中之前,我才想到给它拍照(上图)。

我还需要加入一个充电电路。在之前的一个项目中,我使用了一个非常便宜的 TP4056 充电器模块,但我后来读到在锂电池为负载供电时给它充电并不是一个好主意。我们一直使用笔记本电脑、平板电脑和手机都这样做,但它们有一个更复杂的充电控制器。当电池消耗的电流降至 mAHr 容量的 10% 时,TP4056 终止充电,但如果负载也消耗电流,这可能永远不会发生,从而导致过度充电。如果长时间保持这种状态,电池可能会损坏,最坏的情况是会着火。

解决方法是只在开关关闭时充电。在这种状态下,电池仅连接到充电模块,实际上 microUSB 端口将为 ESP-WROOM-32 和充电器供电,因此您可以根据需要继续 Zoom 会话。

第 2 步:构建

除非您使用裸模块,否则大多数供应商的 ESP-WROOM-32 都带有已焊接在面包板上的排针。这将需要一个更深的盒子,所以我移除了排针。不可能一次加热所有引脚以将它们拆焊,因此最简单的方法是使用锋利的刀片将引脚接头的黑色塑料沿其长度从板子上移开。继续,直到它从别针上下来。然后,您可以轻松地将引脚一根一根地拆下。

要在盒子上为按钮和旋转编码器打孔,我发现的最简单的方法是使用阶梯锥钻。(如果您没有遇到这些,请在 eBay 上搜索。)这使您可以非常干净地将一个小导向孔一次扩大一两毫米。它有一个标准的六角轴,因此您可以在柱钻中使用它,或者用手使用通用螺丝刀手柄。

希望如果您为 LED 钻 3 毫米的孔,它们将紧密贴合并且可以用一滴强力胶固定。如果它们有点松,你必须在胶水凝固时小心地定位它们。

对于开关和 MicroUSB 分线板的孔,我钻了一个导孔,然后用针锉将其放大并成形。

MicroUSB 分线板有安装孔,但将其粘贴到位可能更容易。但是,在您连接并测试它之前不要这样做。(稍后我会告诉你原因。)为了承受插入 MicroUSB 引线的力,你需要使用两部分环氧树脂胶,并且在胶水凝固时需要将引线插入其中以确保其正确定位. 我不建议使用强力胶,因为分线板可能无法与盒子底部充分齐平以使其抓握,并且它很容易进入插座,损坏插座和插入其中的导线。(我是从痛苦的经历中说出来的!)

充电模块最容易用热熔胶固定到位。我本可以对 ESP-WROOM-32 做同样的事情,但选择将它拧到盒子底部的一个安装衬套上。但是不要犯我的错误 - 螺钉头有点太大并损坏了相邻的启动按钮。幸运的是,这通常不需要。

电池用双面胶带固定。我将一个 JST 插座焊接到一块带状板以进行连接。焊接电池连接似乎不是一个好主意,因为我可能在接线中犯了错误。

除了按钮和旋转编码器之外,在将它们固定到位之前将它们连接起来并进行测试可能是最简单的。

第 3 步:接线

一根彩虹带状电缆是连接按钮和旋转编码器的最简单和最简洁的方式。备用链可用于所有其他连接。

如果您使用 PBS-33b 按钮,您可能会发现塑料很容易变软。确保在焊接前对电线进行镀锡,并在尽可能短的时间内对按钮引脚加热和焊接。我不记得我原来的变焦控制盒有这个问题,所以我怀疑有多个制造商使用不同的塑料。

带状电缆可以很容易地对所有其他按钮和旋转控制器连接以及与 LED 的连接进行颜色编码。我使用的配色方案(如图所示)并不是最好的,所以我建议你使用下面总结的方案:

颜色 接线 ESP-WROOM-32别针 备注
黑色的 地面 地线  
棕色的 按钮 1 13  
红色的 按钮 2 12  
橘子 按钮 3 14  
黄色 按钮 4 27  
绿 按钮 5 33  
蓝色 按钮 6 32  
紫色 按钮 7 35 4k7 上拉至 3.3V
灰色的 旋转编码器 C 34 4k7 上拉至 3.3V
白色的 旋转编码器 B 39 4k7 上拉至 3.3V
黑色的 旋转编码器 A 36 4k7 上拉至 3.3V
棕色的 蓝色 LED 2 通过 1k 到蓝色 LED 阳极,LED 阴极到 Gnd
红色的 3.3V 3.3V 1k 到绿色 LED 阳极,阴极到 Gnd

从大约 20 厘米长的带状电缆中,除去 13 股以外的所有股线,一侧为黑色,另一侧为红色。我发现使用热熔胶将其钉在按钮之间的盒盖内侧很有帮助。然后,您可以根据需要向后拉并修剪股线。

接地连接
首先将以下所有内容连接在一起:

  • 每个按钮上有一个针脚
  • 在旋转编码器上,一侧3的中间销,以及
  • 另一侧的 2 个引脚之一。
  • 您可以使用带状电缆的备用股线或实芯连接线。将带状电缆一侧的黑色股线连接到这些连接之一。

按钮和旋转编码器

  • 接下来的 7 股将是棕色到紫色。依次将它们连接到 7 个按钮上的其他引脚。(从盒子的前面开始,我对最上面一行的按钮 1、3 和 5(从左到右)和最下面的一行 2、4、6 和 7 进行了编号。)
  • 将灰线连接到旋转控制器一侧的两个未连接引脚。
  • 旋转编码器的方向使三个引脚在左侧,将白线连接到三个引脚的顶部,将下一条黑线连接到底部。
  • 旋转编码器的另外两侧有两个安装标签。这些都没有使用。

发光二极管

  • 修剪两个 LED 的较短引线并将它们焊接在一起。
  • 修剪并焊接一个 1K 电阻到 LED 的每个较长引线。
  • 将下一条棕色线连接到蓝色 LED 上电阻器的另一端。
  • 将下一条红线连接到绿色 LED 上电阻器的另一端。

上拉电阻
ESP-WROOM-32 上的大多数引脚都有内部上拉电阻,当它们用作输入时可以进行配置。这些是确保在未按下按钮时引脚看到登录“1”所必需的。但是,我们用于按钮 7 的输入和用于旋转编码器的三个输入没有上拉,我们必须提供自己的。

取四个 4k7 电阻。将一个焊接到按钮 7(已经有一条紫色线连接到它),另外三个焊接到旋转编码器上的三个非接地引脚(您已经焊接了灰色、白色和黑色电线)。将所有四个电阻器的自由端焊接在一起,并将它们连接到已经连接到绿色 LED 上的电阻器的红线。

ESP-WROOM-32
最后,将所有 13 股线的另一端焊接到 ESP-WROOM-32,如上表所示。

不过仍然需要连接 LiPo 电池和充电器,但您已经有足够的东西可以测试了。

第 4 步:编程和测试

要对 ESP-WROOM-32 进行编程,您需要下载并安装 Arduino IDE(集成开发环境)。可从https://www.arduino.cc/en/software免费下载

此外,下载此步骤附带的文件 BTZoomButtons.ino。如果你双击这个文件(无论你在哪里下载它),它应该启动 Arduino IDE 并创建一个同名的草图(减去 .ino 后缀)。

如果这不起作用,请启动 Arduino IDE。它将创建一个名称为今天日期的骨架草图。将其另存为 BTZoomButtons。关闭 Arduino IDE,然后将 BTZoomButtons.ino 复制到草图文件夹中,覆盖现有文件。如果您使用默认文件路径安装 IDE,它应该是 My Documents\Arduino\BTZoomButtons。

重新启动 IDE。如果它没有与 BTZoomButtons 草图一起启动,请单击文件下拉菜单并选择 Sketchbook,您应该在其中找到它。您现在必须安装它需要的库。

要安装 ESP-WROOM-32 的库,请单击工具下拉菜单并选择板,然后选择板管理器。滚动浏览提供的板库,直到您来到 Espressif Systems 的 esp32。将鼠标悬停在它上面,然后单击安装。

您还需要一个软件库。再次单击工具,然后单击管理库。这类似于板库,但有更多可供选择。在搜索框中,输入 esp32,然后滚动列表,直到您来到 Neil Kolban 的 ESP32 BLE Arduino。以同样的方式安装它。

您现在需要选择正确的电路板。在 Tools - Board 下,选择 ESP32 Arduino,然后选择 ESP32 Dev Module。

您还需要选择正确的 com 端口。在将 ESP-WROOM-32 连接到您的计算机之前,在 Arduino IDE 中,选择工具 - 端口并注意显示的 COM 端口。通过单击其他任何地方来关闭此菜单,然后使用 microUSB 导线并将 ESP-WROOM-32 连接到计算机上的 USB 端口。再次选择工具 - 端口,应该会显示另一个 COM 端口。选择这个。(如果 ESP-WROOM-32 上的红色电源 LED 亮起但没有更多 COM 端口出现,则您的 microUSB 线可能是充电线,而不是数据/同步线。)

您现在可以上传代码。在 Sketch 下,单击编译。这将需要一两分钟,最后它应该上传草图,并以百分比显示进度。然后蓝色 LED 应闪烁两次以显示草图正在运行。

BTZoomButtons.ino

第 5 步:使用 Zoom 进行测试

如果您要使用移动电源和 MicroUSB 电缆或从您的计算机为 ESP-WROOM-32 供电,您的 Zoom 控制盒非常有用,但这在某种程度上会破坏使其无线化的目的。

在您的计算机上,在设置、设备下,确保蓝牙已打开,然后单击添加蓝牙或其他设备。选择蓝牙作为要添加的设备类型。您应该会看到 ZoomBox。点击它进行连接。缩放框上的蓝色 LED 应在短暂暂停后亮起,表明它已连接。

首先,检查音量控制是否有效。按下旋钮可静音或取消静音。现在您可以检查按钮是否有效。

启动 Zoom,然后单击右上角的设置齿轮图标并选择键盘快捷键。针对您要使用的每个快捷方式,选中启用全局快捷方式复选框。这意味着即使您当前正在与另一个程序交互,Zoom 也会识别并操作键盘快捷键。如果某个快捷键组合与您可能同时使用的另一个程序所使用的组合键发生冲突,您可以选择该组合键并进行更改。然后,您必须更改 Arduino 草图以匹配。

您现在可以开始 Zoom 会议并查看所有按钮。

第 6 步:电池和充电器

设置充电电流
通常销售的充电器模块通常被编程为 1A 的充电电流,这对于 500mAHr 锂聚合物电池来说太多了。需要一点点精细的焊接来改变这一点。小心,这并不难,但作为替代方案,您可以使用用于小型遥控四轴飞行器或类似产品的 3.7V 锂聚合物电池,或者使用更大容量 (1000mAHr) 的电池之一。两者都应该能够承受更快的充电速度。

要降低充电速率,请在 TP4056 模块上找到 R3,在照片中标记为绿色。它可能会被标记为 122 (1.2k),这是 1A 充电率的值。如果有疑问,可以用万用表检查它的值,并通过检查两端分别连接到标记为4056的芯片的两个中间引脚来确认它是正确的。我建议使用3.3k电阻来提供充电电流360mA 或者您可以使用 2.7k 电阻器在 440mA 时稍微快一点充电。

通过在整个电阻器上使用一个相对较大的热烙铁来移除 R3,或者两端交替直到它消失。或者在上面放一块焊锡丝,将烙铁的热量散布到两端。不要用力,否则您可能会抬起铜电路轨道,使安装更换件变得更加困难。

从焊盘上擦去多余的焊料,只留下一点,然后用助焊剂笔添加助焊剂(表面贴装焊接必不可少)。将更换的表面贴装电阻放置到位,跨越两个焊盘。在用一把小螺丝刀轻轻按压它的同时,用烙铁上的细尖将焊料熔化在一个焊盘上。如有必要,再添加一点焊料。(4 只手中有 3 只手的人通常会发现这很容易,但普通人仍然可以稍加耐心地做到这一点。)在电阻器的另一端重复 - 但如果您成功焊接第一个,则不需要螺丝刀结尾。用放大镜检查两端,并检查焊料是否已经流到电阻器的每一端。

充电状态 LED
TP4056 模块有 2 个 LED(在照片中以各自的颜色环绕)以指示充电或充电完成。您可以将带有 LED 的模块安装在盒子的孔后面,以使其可见,或者甚至可以使用光管。我选择移除它们并用 3mm 红/绿共阳极 LED 替换它们。

要做到这一点,请按照拆除上面的电阻器的方式拆除 LED。使用细漆包铜线,将相邻的两个裸露焊盘中的任何一个连接到 LED 公共阳极(中间最长的引线),将原始蓝色 LED 的另一个焊盘连接到 LED 3 根导线中最短的一个,并将 LED 的另一个焊盘连接到原来的红色 LED 到剩余的引线。

第 7 步:电源接线

其余部分最容易根据上面的原理图连接起来。

要连接到 ESP-WROOM-32 上的 microUSB 插座,您需要一根 microUSB 导线。从插头上切下几英寸,然后去除外绝缘层,露出 4 根颜色编码的电线。在去除外绝缘层时,请务必小心不要剪断任何电线。您可以丢弃屏幕,缠绕在所有电线上。

该开关有 2 排 3 针。中间的两个是进入 ESP-WROOM-32 的。一排一端和另一排另一端的外引脚连接到充电器模块。

对于电池充电水平的粗略指示,在 ESP-WROOM-32 上,在 D15 和 VIN 之间连接一个 27K 电阻器,从 D15 到 GND 连接一个 100K 电阻器。

使用数字万用表,测量充电器上 OUT - 和 OUT + 之间的电压。将其除以 OUT - 和 D15(2 个电阻的连接点)之间的电压。您应该得到 0.79 区域内的值。

在 Arduino 草图中,靠近顶部,您会发现一条线

#define BATTDIVIDER 0.775

将数字(这是我得到的)更改为您得到的值,然后重新编译并重新上传草图。

当电池电量下降到 10% 时,蓝色 LED 将每秒闪烁一次,如果每秒闪烁两次,则您迫切需要将其充电。

第 8 步:故障查找

如果它不能立即工作,首先要做的是仔细检查您的接线。是否有焊锡条或绞合线导致短路?所有的焊点都很好吗?

如果蓝色 LED 持续闪烁,这可能意味着一个(或多个)上拉电阻丢失或未正确连接。如果您选择在 ESP-WROOM-32 上使用不同的引脚或添加任何按钮,也许您使用了另一个没有内部上拉的引脚。

作为初始测试,或者如果您不确定所有按钮是否正常工作,请在 Arduino 草图的第 44 行附近找到一行

//#定义测试

删除双斜线,重新编译重新上传。在建立蓝牙连接之前启动记事本或文字处理器。

7 个按钮中的每一个现在都应该生成一个字母 a - f。

第 9 步:修改
更改代码
如果您想将它与 OBS 或其他程序而不是 Zoom 一起使用,在草图的末尾,您会找到一系列 case 语句。这些定义了为 7 个按钮中的每一个的每个热键功能按下和释放的键。根据需要更改它们。

如果您愿意,可以很容易地添加一个在 Zoom 和 Teams 或 Google Classroom 之间切换的开关。我将把它留给读者作为练习。

更多或更少的按钮
如果你想要更少的按钮,你可以让 ESP-WROOM-32 上的相关引脚断开连接 - 但你仍然需要按钮 7 上的上拉,除非你一直删除草图中的按钮 7 定义,并更改定义数字按钮。

如果您想要更多按钮,请在 ESP-WROOM-32 上根据需要选择尽可能多的输入。此引脚分配参考将帮助您选择。增加NUMBUTTONS的定义,看到BTN7的地方,按需增加。此外,将热键定义添加到 case 语句中。如果你想要更多的按钮,ESP-WROOM-32 开发板有 36 个引脚而不是 30 个引脚。

没有音量控制
如果你不想包括音量控制,你需要做的就是找到

#定义音量

并用双斜线作为前缀。

触控
如果您想使用触摸控制而不是按钮,请找到该行

//定义触摸

并删除双斜线。除了不支持触摸的 35(按钮 7)之外,将为触摸输入配置相同的引脚。如果你想要 7 个触摸板,第 7 个需要连接到引脚 20。

增强的电池控制
我说过在为 ESP-WROOM-32 供电时给电池充电是个坏主意。如果您担心自己不会总是记住这一点,并可能将其打开并充电一周,本文将介绍您应该怎么做。

电池电量计非常粗糙且准备就绪。如果你想要更准确的东西,你可以尝试包括一个 MAX17043 模块。你可以从速卖通那里便宜地买到一个,或者从英国卖家那里买得更快,但要贵一些。

以上就是这个项目的全部内容了,有问题欢迎留言交流。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论