Inspiration
Standard keyboards and gamepads strip the immersion out of racing games. We wanted to recreate the tactile, physical sensation of operating a motorcycle—gripping the handles, managing the controls, and feeling the machine respond. Our goal was to bridge the gap between low-level hardware design and interactive software by turning raw electronics into a responsive, real-world driving rig.
What it does
Poco Loco Moto is an end-to-end motorcycle driving simulator that replaces traditional controllers with custom-built physical hardware. The system pairs a custom digital driving mini-game with a dedicated hardware controller powered by an Arduino Leonardo. Players use potentiometers for discrete actions—like ignition or steering. The result is a uniquely immersive experience where physical circuit interactions directly drive on-screen vehicle physics.
How we built it
- The Microcontroller: We built the control rig around an Arduino Leonardo, utilizing its native USB HID (Human Interface Device) and serial communication capabilities to send low-latency input data directly to the host computer.
- The Circuit Design: We engineered a custom sensor rig combining digital switches with potentiometers. The Arduino continuously samples the voltage across the potentiometers and monitors switch states.
- The Game Engine: We developed a custom mini-game that listens to the incoming serial data stream. The software parses the raw sensor values in real time, mapping the analog voltage readings and switch states to in-game physics parameters like acceleration, momentum, and steering angle. This game is hosted on the QNX Raspberry Pi!
Challenges we ran into
- Sensor Calibration and Noise: Potentiometers are inherently sensitive to ambient fluctuations. Converting raw, fluctuating analog voltage readings into smooth, responsive in-game controls without jitter required implementing software filtering and precise threshold calibration.
- Input Latency and Data Parsing: Ensuring high-speed communication between the Arduino and the game loop was critical. We had to optimize our data transmission packet structure to prevent serial buffer overflows and eliminate perceptible input lag during high-speed driving.
Accomplishments that we're proud of
- Unconventional Control Mapping: Successfully repurposing potentiometers into a viable, responsive real-time game input mechanism.
- Full Stack Integration: Building a complete, working embedded system from scratch, taking raw electronic components on a breadboard and successfully fusing them with an interactive graphical mini-game.
- Zero-Latency Feel: Achieving a seamless, responsive control loop where physical interactions feel tightly coupled to the virtual motorcycle's movement on screen.
What we learned
- The practical nuances of analog-to-digital conversion (ADC), signal smoothing, and designing reliable voltage divider circuits for real-time human input.
- How to structure game loop architecture to cleanly handle asynchronous serial data streams without dropping frames or blocking rendering.
- The importance of robust hardware-to-software communication protocols when building custom peripherals.
What's next for Poco Loco Moto
- Dynamic Tilt Steering: Integrating a 6-axis IMU (accelerometer and gyroscope) so players can physically lean and tilt the controller to steer the motorcycle through sharp turns.
- Haptic Feedback: Adding vibration motors to the handlebars to simulate engine rumble, terrain texture, and collision impacts using PWM signals from the Arduino.
- Expanded Gameplay: Scaling the mini-game into a full racing suite with multiple tracks, obstacle courses, and a telemetry dashboard that displays real-time hardware sensor data on screen.
Log in or sign up for Devpost to join the conversation.