コンテンツにスキップ
DIYハンコンをRaspberryPi Picoで作る

DIYハンコンをRaspberryPi Picoで作る

概要

ドライビングやレース系シミュレータには「Force Feed Back」通称FFBと呼ばれるゲーム中に発生する反力をステアリングに反映させる機能を持つものがあります。

近年、この業界はダイレクトドライブモーターの採用が進んでおり、高い耐久性や実車に近しい反力の再現度を高めた製品が主流になりつつあります。

そこで、ダイレクトドライブモーター「DDT M15」を利用してFFB機能を持ったハンドル型コントローラーを自作してみました。


必要なもの

パーツ類

https://www.switch-science.com/products/6900

Raspberry Pi Pico
thumbnail
Raspberry Pi財団が独自に開発したARM Cortex M0+デュアルコアのRP2040マイコンを搭載した開発基板です。C/C++およびMicroPythonで開発が可能です。既存のRaspberry Piとは異なりLinux OSは搭載できませんのでご注意ください。
https://www.switch-science.com/products/6900

https://www.switch-science.com/catalog/8248/

DDT M1502D_211 タイヤ付きダイレクトドライブモーター 24V/9.6Nm/115rpm
thumbnail
高トルク、静音、高精度が特徴のタイヤ付きの永久磁石同期モーターです。サーボモーター、エンコーダ、ブラシレスモーターとして使用することができます。
https://www.switch-science.com/products/8248

https://amzn.asia/d/b9DWvV3

WINGONEER MCP2515 CANバスモジュールTJA1050レシーバSPIモジュール
thumbnail
サポートCAN V2.0B仕様、通信速度1Mb / S 0〜8バイトのデータフィールド 標準フレームとフレームとリモートフレームを展開 5V DC電源モジュール、SPIインタフェースプロトコル制御 120オームの終端抵抗。 インピーダンスマッチング、ドライブ容量、信号線に対する長距離データ伝送を保証
https://amzn.asia/d/6fEEtIi

https://www.amazon.co.jp/gp/product/B09PRD74V4

DROK スイッチング電源 24VDC20A 480W
thumbnail
AC 110/220V→DC 0-24V 0-20A 480W 電圧電流調整可能 安定化電源
https://www.amazon.co.jp/gp/product/B09PRD74V4

筐体関連

ステアリング 35φ 車用 カー ハンドル ディープコーン 直径350mm
thumbnail
ブラックスポーク スポーツタイプ 軽量アルミニウム ライチ柄 ステアリングホイール PVC防錆 車用 ホーンボタン付き/黒
https://www.amazon.co.jp/gp/product/B09DYL19KQ

ハンドル固定プレートとモーターを固定するネジはモーターに付属のものを利用。
ハンドルとハンドル固定プレートを固定するボルトはハンドルに付属のものを利用。

結線

電源ユニット

ラベル 接続先
+V モーター(赤)
-V モーター(黒)
アース ACコンセント
N ACコンセント
L ACコンセント

モーター(4芯ケーブル)

番号 役割 接続先
1 VCC(24V) 電源ユニット
2 GND 電源ユニット
3 CAN High CANアダプタ(H)
4 CAN Low CANアダプタ(L)

PICOとCANアダプタ間

信号名 Picoピン名 MCPピン名
unuse - 1:INT
SCK GP2 2:SCK
SDO GP3 3:MOSI
SDI GP4 4:MISO
GP28 CS 5:CS
GND GND 6:GND
3.3V 3.3V 7:VCC

配線図

ファームウェア開発環境

  • TinyGo(dev版 または version 0.27以降)
  • Go(1.19以降)

TinyGoのdev版インストールは少し手間がかかるので割愛します。
ここではdockerを使ってビルドします。

ソースコード

ファームウェアおよび3Dプリントモデルのソースコード公開URL(GitHub)

ビルド

ソースのクローン

git clone https://github.com/SWITCHSCIENCE/Pico-DIYSteeringWithFFB
cd Pico-DIYSteeringWithFFB
cd firmware

Windows:

docker run -it --rm -v %CD%:/app -w /app tinygo/tinygo-dev tinygo build -target pico -o diy-ffb-wheel.uf2

Others:

docker run -it --rm -v $PWD:/app -w /app tinygo/tinygo-dev tinygo build -target pico -o diy-ffb-wheel.uf2

ビルドを省略する場合はこちらからダウンロードすることもできます。

書き込み

「BOOT SEL」ボタンを押しながらPicoをPCに繋ぎます。
「RPI-RP2」という名称のドライブが見えたらそこに「diy-ffb-wheel.uf2」をドラッグ&ドロップします。

組み立て例

動作テスト

  • 電源が24V出力になるよう調整、カレントリミッタはMAX寄り(最大から少し戻す程度)
  • 電源をコンセントに繋いだ状態でPICOのUSBをPCに繋ぐ

状況によっては「ガツッ」とか言うかもしれませんが、センターにて落ち着くのを確認しましょう。

以下を開いて、ステアリング操作が反映されることを確認しましょう。

Webゲームコントローラーテスト

トラブルシュート

  • ステアリングが軽いままなにも感じないもしくはストンと軽くなった
    • 電源が有効じゃないまたは、コントローラがエラーで動作無効になっている
    • 電源がカレントリミットでOFFになっていることも。カレントリミットを調整してPicoをリブートしてみよう。
  • ステアリングが重いまま
    • 電源は有効だけど、モーターへのコマンドが効いていない
    • CAN通信周りの結線を確認しよう
  • Web確認で「gamepad: Pico (Vendor: 2e8a Product: 000a)」が表示されない
    • USBデバイスの認識ができていない?
    • デバイスマネージャにて非表示のデバイスを表示、Picoを抜いた状態でグレーのデバイス群をアンインストール
    • 再度Picoを繋いでみる

動作確認タイトル

確認環境はWindows11(version 22H2)です。
(PS4/5では正式ライセンス品でないと使えません。)

動作良好

  • DiRT Rally
  • DiRT Rally 2.0
  • Assetto Corsa
  • Euro Track Simulator 2
  • WRC 8 / 9 / 10 / Generations
  • Kart Craft
  • V-Rally 4
  • GRID Legends

認識されない

  • Assetto Corsa Competizione
  • RaceRoom
  • Automobilista 2
  • Speed Dreams 2.2
  • rFactor2
  • Art of Rally
  • Rush Rally 3

未検証

  • iRacing
  • GRID Autosport
  • F1 Series
  • Forza Motorsport / Horizon Series
  • Need for Speed Series
  • その他

補足

  • 車ゲームを楽しむには追加でペダル類やシフト、サイドブレーキなどを揃えましょう。
  • 安上りな方法は中古ないしエントリモデルのハンドル型コントローラーを入手することです。
  • jsのステート自体はあと4軸、ボタン16bitsが空いているのでもちろん、このPicoにボタン類やペダル類をつなぎこむことも可能です。
  • 一部のタイトルでは複数のコントローラーデバイスを同時に使えない場合がありますがSteam入力を無効設定にすることでできたという情報があります(未確認)。
  • センターのずれはソースコードのここを調整してください。

感想

  • 市場にある似たスペックのDD型ハンコンの最安値と同レベルの価格で自作できました。
  • ハンドル周辺に操作ボタン類を設置するのは難しいですが、別途Bluetooth型のゲームパッドがあれば困らないと思います。
  • シンプルなつくりのおかげでハンドルに関して数十時間稼働させたり展示したりしても故障知らずです。

発展案

  • パドルシフトをBluetoothデバイスで作るのはどうだろうか。
  • ハードコードしているセンター調整、センタリングフォース、ロックトゥロック幅を液晶+操作パネルで調整可能になるとなおよさそう。
  • FFBプロトコルの未実装部分などを埋めることで対応タイトルを増やせるかもしれません。

関連記事

高トルクモーターDDT-M15の使い方
MakerFaireTokyoで展示されました
前の記事 【toio™製品 15%~20%OFF!】スイッチサイエンスクリスマスセールのお知らせ