Skip to main content
Version: ACS CC

Wii Controller

Relive Wii memories with a homemade motion controller

info

Author: Gila Tiberiu-Florin
GitHub Project Link: https://github.com/UPB-PMRust-Students/proiect-tiberiugila

Description

The famous gaming controller is back, now implemented on a Raspberry Pi Pico 2

Motivation

I had a Wii when I was little and spent hours playing tennis on it. Recreating the Wii controller using a Raspberry Pi Pico 2 is a way to bring back that experience while learning more about sensors, motion tracking, wireless communication, and microcontroller programming. It’s a fun way to combine nostalgia with hands-on technical skills.

Architecture

Architecture

Log

Week 5 - 11 May

Week 12 - 18 May

Week 19 - 25 May

Hardware

Raspberry Pi Pico W

Interface: Central MCU
Connections:

  • Hosts all components via GPIO, I2C, and power lines
  • Powered through USB or TP4056 module

Role: Core microcontroller running firmware, handling inputs, sensor data, and communication.


MPU9250 & BMP280 10DOF Module

Interface: I2C
Connections:

  • SDA connected to Pico I2C pin (e.g., GP4)
  • SCL connected to Pico I2C pin (e.g., GP5)
  • VCC connected to 3.3V
  • GND to Ground

Role: Handles motion sensing with accelerometer, gyroscope, magnetometer, and barometer data.


Buttons (A / B / Trigger)

Interface: GPIO
Connections:

  • Each button connected to a dedicated GPIO pin with pull-down resistor
  • One side of the button to GPIO, other to GND

Role: User input for control actions such as A, B, and trigger functionality.


TP4056 Micro USB LiPo Charger

Interface: Power
Connections:

  • IN+ / IN– connected to USB power source
  • BAT+ / BAT– connected to LiPo battery
  • OUT+ provides power to the Pico (VBUS or via regulator)

Role: Charges LiPo battery and supplies regulated power to the system.


Power Supply (LiPo Battery)

Interface: Power
Connections:

  • Connected to TP4056 module (BAT+ / BAT–)

Role: Provides portable power for untethered use.


Breadboard + Wires

Interface: Passive connections
Connections:

  • Used for prototyping and connecting all components

Role: Temporary circuit assembly platform during development and testing.

Schematics

WIP...

Bill of Materials

DeviceUsagePrice
Raspberry Pi Pico WThe microcontroller35 RON
MPU9250 & BMP280 10DOF ModuleAccelerometer, gyroscope, magnetometer for motion sensing55 RON
TP4056 Micro USB LiPo Battery ChargerPower management for portable use5 RON
Round White ButtonsInput controls (A/B/trigger/etc.)2 RON
BreadboardPrototyping the circuit10 RON
Breadboard wire setConnecting components on the breadboard8 RON
Header pinsConnecting components to the Raspberry Pi1 RON

Software

LibraryDescriptionUsage
embassy-rsAsync/await runtime for embedded systemsCore framework for the project
embassy-rpEmbassy HAL for RP2040Hardware abstraction for Raspberry Pi Pico
mpu9250-driverDriver for MPU9250 sensorInterfacing with the accelerometer, gyroscope and magnetometer
btleplugBluetooth Low Energy libraryWireless communication interface
embassy-usbUSB stack for EmbassyFor USB device emulation (when using as wired controller)
embassy-timeTime handling for EmbassyManaging timing and delays
serdeSerialization frameworkFor data formatting and communication protocols
embedded-halHardware Abstraction Layer traitsStandard interface for hardware components
defmtDebugging and loggingFor development and debugging purposes
pidPID controllerFor smoothing motion data
  1. Wii Remote Disassembly
  2. How to Connect MPU9250 to Raspberry Pi Pico
  3. Lab 04 - Asynchronous Development
  4. Lab 07 - Wi-fi
    ...