Realistische Gun-Firing Maus: Solenoid-Vibration & Sound für immersives Gameplay
Komponenten & Materialien
| Arduino UNO | ×1 |
| Lineare Solenoide 12 VDC | ×6 |
| ControlEverything.com Relay Shield (8-Kanal, I²C, 10A) | ×1 |
| 9V 1A Schaltnetzteil | ×1 |
Projektbeschreibung
Eine gewöhnliche Maus, die beim Klicken (Schuss in Spielen) ein realistisches Rückstoß-Gefühl erzeugt. Sechs Solenoide erzeugen einen kräftigen mechanischen Schlag, synchronisiert mit dem Mausklick-Event.
Funktionsweise
- Python-Skript (PC): Überwacht Maus-Events (Klicks), sendet Befehl über USB-Serial an Arduino.
- Arduino: Empfängt Serial-Daten, schaltet über Relay-Shield die 12V-Solenoide kurz an (Impuls).
- Mechanik: Solenoide im Mausgehäuse so montiert, dass der Hub auf das Gehäuse/Handfläche wirkt.
Software
Arduino Code (Konzept)
#include
// Relay Shield I2C Adresse laut Doku
#define RELAY_ADDR 0x20
void setup() {
Serial.begin(115200);
Wire.begin();
// Alle Relais aus
Wire.beginTransmission(RELAY_ADDR);
Wire.write(0x00); // Register
Wire.write(0x00); // Alle aus
Wire.endTransmission();
}
void loop() {
if (Serial.available()) {
char cmd = Serial.read();
if (cmd == 'F') { // Fire command
// Solenoid 1-6 kurz triggern (z.B. 50ms)
triggerSolenoids(50);
}
}
}
void triggerSolenoids(int durationMs) {
// Relais 1-6 ein
Wire.beginTransmission(RELAY_ADDR);
Wire.write(0x00);
Wire.write(0x3F); // 0b00111111
Wire.endTransmission();
delay(durationMs);
// Alle aus
Wire.beginTransmission(RELAY_ADDR);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
}
Python PC-Seite (Auszug)
import serial
import mouse # pip install mouse
ser = serial.Serial('COM3', 115200, timeout=1)
def on_click(event):
if event.event_type == 'down':
ser.write(b'F')
mouse.hook(on_click)
# Hauptschleife hält Programm am Leben
import time
while True:
time.sleep(1)
Schaltplan
Im Artikel enthalten (Bild). Wichtige Punkte:
- Solenoide an Relais-Ausgänge (NO-Kontakte)
- 12V-Netzteil → Relais-COM-Pins → Solenoide → GND
- Arduino 5V & GND → Relay Shield (I²C: A4/A5)
- USB-Verbindung Arduino ↔ PC
Mechanischer Einbau
- Mausgehäuse öffnen, Elektronik teilweise entfernen
- 6 Solenoide radial um den Mauskörper anordnen
- Kolben gegen Innenwand/Gewicht drücken lassen
- Relay-Shield & Arduino in Mausbasis oder externer Box
- 12V-Netzteil extern (Kabel durch Mausöffnung)
GitHub Repository
Vollständiger Code (Arduino + Python): github.com/J3Patel/mouse_gun_effect
Sicherheitshinweise
- 12V Solenoide können kneifen – Finger fernhalten!
- Freilaufdioden an Solenoiden (bereits auf Relay-Shield? prüfen!)
- Strombegrenzung: 6× Solenoid × ~500mA = 3A Spitzenstrom – Netzteil & Kabel dimensionieren
- Mechanische Belastung auf Mausgehäuse – Verstärkung empfohlen
Erweiterungen
- Verschiedene Feuer-Modi (Einzelschuss, Burst, Full-Auto) per Mausrad
- Audio-Feedback (Piezo/Speaker) direkt am Arduino
- Force-Feedback über HID-Report-Descriptor (kein Python nötig)
- Kabellos via Bluetooth (ESP32 statt UNO)
Fazit
Ein kreatives Haptik-Projekt, das Shooter-Spiele spürbar macht. Die Kombination aus Python-Event-Capture und Arduino-Hardware-Steuerung ist einfach nachzubauen. Für den dauerhaften Einsatz sind Gehäuseverstärkung, kürzere Solenoid-Hübe und kabellose Übertragung empfehlenswert.
Herstellungsprozess
- Das NOT-Gatter (Inverter) in TTL-Schaltungen verstehen
- Pentoden: Das fünfte Element für verbesserte Röhrenleistung
- Thompson-Maschinenpistole: Von der Innovation zur ikonischen Legende
- Unterwasserdrohne mit Raspberry Pi bauen: Design, Entwicklung und Montage
- DTMF-Decoder mit Arduino bauen – ganz ohne zusätzlichen IC
- Wassertropfen-Hochgeschwindigkeitsfotografie mit Arduino Nano – DIY Setup
- Giftduino: Das ultimative Arduino-Geschenkset für Bastler & Pädagogen
- Erdmassen-Messung mit Arduino: Schritt-für-Schritt DIY-Anleitung
- Portal 2 Sentry Gun nachbauen: 3-Achsen-Bewegung, Sound & LEDs mit Arduino
- SoundWatch: Smarte Alerts, die Gehörlose & Schwerhörige befähigen