{"id":141,"date":"2025-06-04T13:34:02","date_gmt":"2025-06-04T11:34:02","guid":{"rendered":"https:\/\/pixion.be\/?p=141"},"modified":"2025-09-27T18:22:48","modified_gmt":"2025-09-27T16:22:48","slug":"pixions-inputs","status":"publish","type":"post","link":"https:\/\/pixion.be\/index.php\/2025\/06\/04\/pixions-inputs\/","title":{"rendered":"Pixion\u2019s Inputs"},"content":{"rendered":"\n<p>Hello Pixioneers!<\/p>\n\n\n\n<p>Today, let\u2019s dive into an exciting new step for Pixion: how we\u2019ll interact with it. Since Pixion is designed to be a tiny home console, I\u2019ve 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.<\/p>\n\n\n\n<p>I haven\u2019t finalized the controller\u2019s exact layout yet, but we\u2019re likely talking about a directional pad, four action buttons, Start\/Select, and maybe more later on. That said, the design isn\u2019t 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.<\/p>\n\n\n\n<p>My first idea was very straightforward: one wire per button. But that quickly showed its limits. It\u2019s not modular at all and scales poorly. If the number of buttons increases, you end up with a heavy, rigid cable. (If I\u2019m not mistaken, that\u2019s how the Atari 2600 joysticks worked back in the day.)<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>Later, USB interfaces became the norm, starting with the Xbox and later the PS3. They\u2019re still widely used today. And finally, many modern consoles now rely on wireless communication, either proprietary or using Bluetooth (especially BLE).<\/p>\n\n\n\n<p>For our little Pixion, I\u2019d like to support both options: a wired controller first, and eventually, Bluetooth Low Energy (BLE) as well.<\/p>\n\n\n\n<p>Now, considering controller latency (typically a few to a few tens of milliseconds) and the fact that we\u2019ll probably use a long cable (around 2 meters), I\u2019m planning to use an RS-485 interface. It\u2019s a differential interface that works well with UART, and we\u2019ll implement the conversion using a MAX488 transceiver.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>As for Bluetooth, I\u2019m still unsure. The ideal scenario would be to choose a microcontroller with built-in BLE, but I don\u2019t want to restrict our options too much. If I don\u2019t find a suitable MCU, I\u2019ll go with an external BLE chip. I\u2019ve already worked with the DA14531 from Renesas during my Ph.D. thesis, so I\u2019ll probably go with that one again or a similar chip from the same family.<\/p>\n\n\n\n<p>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\u2019t wait to start working on the next post, where we\u2019ll finally tackle the microcontroller selection.<\/p>\n\n\n\n<p>Stay tuned, things are getting serious!<\/p>\n\n\n\n<p class=\"has-text-align-right\">Pix&#8217;<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello Pixioneers! Today, let\u2019s dive into an exciting new step for Pixion: how we\u2019ll interact with it. Since Pixion is designed to be a tiny home console, I\u2019ve 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&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"categories":[24],"tags":[27,3,4,10,11,9,7,28],"class_list":["post-141","post","type-post","status-publish","format-standard","hentry","category-architecture","tag-controller","tag-diy","tag-electronics","tag-hardware","tag-hobbyist","tag-learning-journey","tag-pixion","tag-serial"],"_links":{"self":[{"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/posts\/141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/comments?post=141"}],"version-history":[{"count":1,"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/posts\/141\/revisions"}],"predecessor-version":[{"id":142,"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/posts\/141\/revisions\/142"}],"wp:attachment":[{"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/media?parent=141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/categories?post=141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pixion.be\/index.php\/wp-json\/wp\/v2\/tags?post=141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}