リアルな銃撃反動マウス – ソレノイド振動とサウンドで没入感アップ
必要な部品と材料
| Arduino UNO × 1 |
| リニアソレノイド 12VDC × 6 (マウス内部に配置、複数で反動増強) |
| ControlEverything.com 8ch リレーシールド (I2C, 10A) × 1 (ソレノイド駆動用) |
| 9V 1A ACアダプター × 1 (Arduino + リレーシールド用) |
| 12V 電源 (ソレノイド用、別途必要) × 1 |
| マウス (分解・改造用) × 1 |
システム構成
[PC: Pythonスクリプト] ←USB→ [Arduino UNO] ←I2C→ [8chリレーシールド] → [6×ソレノイド (12V)]
↑
[9V ACアダプター]
動作原理
- PC側 (Python): マウスイベント (クリック、移動等) をフックし、発砲判定 (左クリック等) 時にシリアルでArduinoへコマンド送信
- Arduino側: シリアルコマンド受信 → I2Cでリレーシールド制御 → 対応するソレノイド通電 (数十ms) → 機械的反動発生
- サウンド: PC側で効果音再生、またはArduinoからブザー/スピーカー駆動
ソフトウェア
GitHubリポジトリ
J3Patel/mouse_gun_effect に Arduinoスケッチ と Pythonスクリプト が公開されています。
Python側 (概念コード)
import serial
import mouse # pip install mouse
import time
ser = serial.Serial('COM3', 9600) # ポート番号は環境に合わせて
time.sleep(2) # Arduinoリセット待ち
def on_click(x, y, button, pressed):
if button == mouse.Button.left and pressed:
ser.write(b'FIRE\n') # 発砲コマンド送信
mouse.hook(on_click)
# メインループ維持
while True:
time.sleep(1)
Arduino側 (概念コード)
#include <Wire.h>
// リレーシールドのアドレス・レジスタ定義はライブラリ参照
void setup() {
Serial.begin(9600);
Wire.begin();
// リレーシールド初期化
}
void loop() {
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd == "FIRE") {
// ソレノイドパルス (例: リレーch 0-5 を順次/同時駆動)
for (int i = 0; i < 6; i++) {
relayOn(i);
}
delay(30); // 通電時間
for (int i = 0; i < 6; i++) {
relayOff(i);
}
}
}
}
製作のポイント
- ソレノイド配置: マウス内部の空きスペースに複数配置し、重心付近で反動を発生させると自然な感覚
- 電源分離: ソレノイド (12V, 大電流) と Arduino (5V) は必ず別電源、または十分な容量の共通電源 + 降圧レギュレーター
- リレー選定: ソレノイドの逆起電力対策でフライバックダイオード内蔵リレー、または外付けダイオード必須
- 遅延最小化: Python→Arduino→リレー→ソレノイドの総遅延を 20ms 以下に抑えると体感的に「同時」に感じられる
- 安全性: 指挟み防止、ソレノイド発熱対策、配線保護を確実に
回路図
プロジェクトページの Schematics を参照 (リレーシールド経由でソレノイド駆動)
改良・拡張アイデア
- ゲームごとのプロファイル切り替え (反動強度、パターン)
- 右クリック (照準) で弱い反動、左クリックで強い反動
- リコイルパターンシミュレーション (連射時のマウスカーソル移動連動)
- Bluetooth化でワイヤレスマウス化 (ESP32等で実装可能)
- ハプティックフィードバック (振動モーター) との併用で更なる没入感
注意事項
- マウス改造は保証無効化、破損リスクあり。自己責任で。
- ソレノイド高速駆動時の発熱に注意 (デューティー制限推奨)
- オンラインゲームでの使用はチート判定される可能性あり。オフライン/練習用途推奨。
製造プロセス
- トンプソン・サブマシンガン:革新から伝説的遺産へ
- Raspberry Pi で水中ドローンを自作:設計、開発、組み立てガイド
- ArduinoだけでDTMFデコーダーを構築 – 外付けIC不要
- Arduino Nanoで水滴を高速撮影 – DIYハイスピードフォトグラフィ
- Giftduino: ホビイストと教育者向け究極のArduinoギフトボックス
- Arduinoで地球の質量を測定:ステップバイステップDIYガイド
- Raspberry Pi Pico Wで作るワイヤレス環境センサーノード:MicroPython実装
- Arduino Nanoで作るスマートな動体検知水鉄砲
- TTL回路におけるNOTゲート(インバータ)の理解
- 五極管:管性能向上の第5要素
- SoundWatch:難聴者を支援するスマートアラート