使用 Steam 控制器無線控制樂高電機

使用 Steam 控制器無線控制樂高電機

當我年輕的時候,我一直想要擁有樂高科技套裝,這樣我就可以用它們建造各種很酷的東西。 帶有旋轉砲塔的自主坦克,可以發射樂高積木。 但後來我沒有這樣的一套。

連普通的樂高積木都沒有。 我只有一個朋友,他​​的兄弟擁有所有這些昂貴的玩具。

現在我自己也有一個這個年紀的兒子了。 他建造了坦克…愚蠢地向前移動,直到撞到牆上:)

現在,是時候展示 ESP32 和烙鐵的魔力了 - 讓我們為它們組裝合適的遙控器!

不,我當然知道這種遙控器的存在。 但它們都不完全適合我。 它們要么是紅外線、80 年代的技術,要么太大。 或很貴的。 最重要的是,我無法告訴我的兒子其中任何一個:“我特意為你做的!”

因此,讓我們製作一個新的、改良的遙控器來統治它們吧!

使用 Steam 控制器無線控制樂高電機

主料:

  • ESP32-WROOM-32D | ESPXNUMX-WROOM-XNUMXD WiFi、BLE 和帶 I/O 的處理器 - 足以控制兩個 馬達 и 引領.
  • DRV8833 | 雙H橋,馬達功率充足。
  • TPS62162 | 電壓降低至 17 V,以及焊接 WSON-8 2x2 mm 外殼時的樂趣
  • 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秒)和馬達輸出的控制。 樂高連接器尚未連接。 它將進入其他連接器旁邊的空白區域,並用白色矩形標記。

我兒子現在經常使用這個控制器來控制他建造的設備。

在壓力測試過程中我只遇到一個問題:我以為馬達驅動器的「快速衰減」模式效果最好,但它導致馬達運轉幾秒鐘後速度急劇下降。 所以我更改了程式碼以使用緩慢衰減。

使用 Steam 控制器無線控制樂高電機

我還不確定 DRV 是如何運作的,以及為什麼馬達一開始旋轉得很快,然後 10 秒後開始逐漸減慢。 也許 MOSFET 正在升溫並且它們的電阻上升太多。

我希望 Arduino 的這種輕鬆使用能激勵其他人讓他們的孩子接觸電子產品。

來源: www.habr.com

添加評論