Lego使用Steam Controller进行无线电机控制



小时候,我一直想拥有Lego Technics套件,从中收集各种酷炫的东西。带有旋转炮塔的自动坦克发射乐高积木。但是那时我没有这样的一套。

甚至连来自Lego的普通砖都没有。我只有一个朋友,他的兄弟拥有所有这些昂贵的玩具。

现在,我有一个自己年龄的儿子。然后他制造的坦克……会愚蠢地向前伸出,直到撞到墙为止:)

现在,ESP32和烙铁的魔力到来了,我们将为他们组装合适的遥控器!

不,我当然知道这种遥控器的存在。但其中没有一个完全适合我。它们要么是80年代的红外技术,要么太大了。还是很贵。最重要的是-我不能对儿子说任何一个:“我特别为你做的!”

因此,让我们制作一个新的,经过改进的遥控器来统治所有人!



配料:

  • ESP32-WROOM-32D | WiFi,BLE和带有I / O的处理器-足以控制两个电机和一个LED
  • DRV8833 | 双H桥,具有足够的电机功率。
  • TPS62162 | 降低电压至17 V,以及在焊接外壳WSON-8时的娱乐性2×2 mm
  • CP2104 | 用于编程ESP32
  • . , Lego .

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



不需要在标题图片中看到电线即可修复任何错误,而可以通过USB供电。对于电动机来说,这可能还不够,但是,不幸的是,仍然没有来自中国的联系。因此,我首先检查LED的操作。为了使照片更美,我只是将电机的连接器放在板上。

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



至于控制面板,起初我只是想收集一个带有按钮的附加板和另一个ESP32-一个经典的遥控器。

但是,然后我想起了Steam控制器具有蓝牙低功耗模式(BLE)。我决定解决此问题,几个小时后,我学习了如何从控制器接收数据包。

为此,只需搜索自称为SteamController的HID设备并连接到该设备即可。然后使用Valve的无证服务以及一些允许数据包传输的无证命令



我还遇到了一个未记录的报告格式,我手动对其进行了解析。



大约一个小时后,标志和值的含义对我来说变得清晰了,我设法使用Steam控制器和ESP32使LED闪烁。¯\ _(ツ)_ /¯

档案



v1.0: “试用方法”
-我选择了错误的稳压器的第一个选项。 TPS62291只能将电压提高到6V。我并行开发了多个项目,但我忘记了该设备需要使用

9V。v1.1: “足够好”
-此选项在广告中可见,并且一切正常,

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

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



我儿子现在定期使用此控制器来控制他组装的设备。

在压力测试过程中,我仅遇到一个问题:我认为电动机驱动器的“快速衰减”模式会达到最佳效果,但是由于这个原因,在运行几秒钟后,电动机速度会下降很多。因此,我更改了代码,使其使用“缓慢衰减”。



到目前为止,我不确定DRV的工作原理以及为什么电动机首先快速旋转,然后在10秒钟后开始逐渐减速。也许MOSFET正在预热并且其电阻上升太多。



我希望这个使用Arduino的示例可以毫不费力地激发其他人的兴趣,并允许他们向孩子介绍电子产品。

All Articles