Pixion’s Inputs

Hello Pixioneers!

Today, let’s dive into an exciting new step for Pixion: how we’ll interact with it. Since Pixion is designed to be a tiny home console, I’ve decided to go with a classic controller, like most standard consoles. No mouse, no keyboard. After all, a game console is only as good as the way we can control it.

I haven’t finalized the controller’s exact layout yet, but we’re likely talking about a directional pad, four action buttons, Start/Select, and maybe more later on. That said, the design isn’t set in stone. What matters most is that the interface remains modular and flexible enough to evolve. We might want to add joysticks, accelerometers, more buttons, and so on.

My first idea was very straightforward: one wire per button. But that quickly showed its limits. It’s not modular at all and scales poorly. If the number of buttons increases, you end up with a heavy, rigid cable. (If I’m not mistaken, that’s how the Atari 2600 joysticks worked back in the day.)

A slight improvement would be to organize the buttons in a matrix, or to use a multiplexer or I/O expander to reduce the number of wires. But again, this approach lacks flexibility. It sets a hardware limit on how many buttons we can use, which goes against our modular vision.

So, I started looking into serial communication, either synchronous or asynchronous. This is the route Nintendo took with the NES, SNES, and N64, and Sony with the first PlayStation. They used proprietary protocols, but we could develop our own or adopt a standard like SPI or UART. This solution feels a lot more future-proof.

Later, USB interfaces became the norm, starting with the Xbox and later the PS3. They’re still widely used today. And finally, many modern consoles now rely on wireless communication, either proprietary or using Bluetooth (especially BLE).

For our little Pixion, I’d like to support both options: a wired controller first, and eventually, Bluetooth Low Energy (BLE) as well.

Now, considering controller latency (typically a few to a few tens of milliseconds) and the fact that we’ll probably use a long cable (around 2 meters), I’m planning to use an RS-485 interface. It’s a differential interface that works well with UART, and we’ll implement the conversion using a MAX488 transceiver.

I also want Pixion to support two simultaneous controllers. Rather than putting both on the same RS-485 bus and managing potential collisions, I plan to assign each controller its own UART line and RS-485 transceiver. This simplifies communication and makes the firmware easier to scale.

As for Bluetooth, I’m still unsure. The ideal scenario would be to choose a microcontroller with built-in BLE, but I don’t want to restrict our options too much. If I don’t find a suitable MCU, I’ll go with an external BLE chip. I’ve already worked with the DA14531 from Renesas during my Ph.D. thesis, so I’ll probably go with that one again or a similar chip from the same family.

That wraps up this quick look at how we plan to connect Pixion and its controller. Nothing is final yet, but the direction is becoming clearer. I can’t wait to start working on the next post, where we’ll finally tackle the microcontroller selection.

Stay tuned, things are getting serious!

Pix’

Leave a Reply

Your email address will not be published. Required fields are marked *