使用 Steam 控制器无线控制乐高电机

使用 Steam 控制器无线控制乐高电机

当我年轻的时候,我一直想拥有乐高科技套装来建造很酷的东西。 带有旋转炮塔的自主坦克,可以发射乐高积木。 但后来我没有这样的一套。

甚至连普通的乐高积木都没有。 我只有一个朋友,他的兄弟拥有所有这些昂贵的玩具。

现在我有一个那个年纪的儿子了。 他建造的坦克......愚蠢地向前直到撞到墙上🙂

现在,是时候展示 ESP32 和烙铁的魔力了 - 让我们为他们组装合适的遥控器!

不,我当然知道这种遥控器的存在。 但它们都不适合我。 它们要么是采用 80 年代技术的红外线,要么太大。 或者很贵的。 最重要的是,我将无法告诉我的儿子其中任何一个:“我是专门为你做的!”

因此,让我们制作一个新的、改进的遥控器来统治每个人!

使用 Steam 控制器无线控制乐高电机

主要成份:

  • ESP32-WROOM-32D | ESPXNUMX-WROOM-XNUMXD WiFi、BLE 和带 I/O 的处理器 - 足以控制两个 马达 и 引领.
  • DRV8833 | 双H桥,为电机提供足够的功率。
  • TPS62162 | 将电压降至 17V,焊接 WSON-8 2x2mm 外壳时也能带来乐趣
  • CP2104 | 用于 ESP32 编程
  • 连接器 用于连接电机和二极管。 剪断电线并将其焊接在底部,然后将乐高连接器粘在顶部。

所有这些都将放置在一个相当小的板上 - 这是它在 EasyEDA 编辑器中的外观:

使用 Steam 控制器无线控制乐高电机

标题照片中可见的电线不是为了纠正某些错误,而是为了通过 USB 供电。 对于电机来说可能还不够,但不幸的是,来自中国的联系还没有来找我。 因此,我首先检查 LED 的运行情况。 为了照片美观,我只是将电机的连接器放在板上。

我的开发板 1.1 版本(与 EasyEDA 上已有的 1.2 版本不同)没有 LED,因此我将两个反并联二极管焊接到输出,这样我就可以看到发生了什么。 如果仔细观察,视频显示一对二极管0603交替导通,指示向前/向后移动。

至于遥控器,一开始我只是想组装一个带有按钮的附加板和另一个 ESP32 - 一个经典的遥控器。

然而,后来我想起 Steam 控制器具有蓝牙低功耗 (BLE) 操作模式。 我决定处理这个问题,几个小时后我学会了如何从控制器接收数据包。

为此,您只需寻找一个自称为 SteamController 的 HID 设备并连接到它。 然后使用 Valve 和一些未记录的服务 未记录的命令,允许传输数据包。

使用 Steam 控制器无线控制乐高电机

我还遇到了我手动解析的未记录的报告格式。

使用 Steam 控制器无线控制乐高电机

大约一个小时后,我清楚了标志和值的含义,并且我设法使用 Steam 控制器和 ESP32 使 LED 闪烁。 ˙_(ツ)_/˙

商品资料

v1.0: “尝试方法”
- 我选择了错误的电压调节器的第一个选项。 TPS62291 只能承受高达 6V 的电压。我当时正在并行开发多个项目,我忘记了该设备需要在 9V 下工作。

v1.1: “够好了”
- 此选项在视频中可见,并且一切正常

v1.2: “最终的”
- 在输出中添加了 LED 指示灯,并优化了电路板的尺寸和布局

以下简短视频显示了连接阶段(通电后 1-3 秒)和电机输出的控制。 乐高连接器尚未连接。 它将进入其他连接器旁边的空白区域,并用白色矩形标记。

我儿子现在经常使用这个控制器来控制他组装的机器。

在压力测试过程中,我只遇到了一个问题:我以为电机驱动器的“快衰减”模式[快速衰减]效果最好,但正因为如此,运行几秒钟后,电机速度下降了很多。 所以我更改了代码,使其使用“慢速衰减”[slow Decay]。

使用 Steam 控制器无线控制乐高电机

虽然我不确定 DRV 是如何工作的,也不知道为什么电机一开始旋转很快,然后 10 秒后它开始逐渐减慢。 也许 MOSFET 正在升温并且它们的电阻上升太多。

我希望这个如何轻松使用 Arduino 的示例能够启发其他人,并让他们向孩子们介绍电子产品。

来源: habr.com

添加评论