There are a ton of video game consoles that have come out over the years. Each of them is unique, but something else that has set some consoles apart is the fact that a lot of them have some really unique controllers. While most games just use a standard controller with thumbsticks, a D-pad, and various different buttons that are used to control your character, there are some consoles that have been released that have used some unique controllers. We’ve been treated to some of the most bizarre and downright crazy input devices ever created. Devices that are so outlandish, or just plain pointless that they deserve to be recognised, for good, and bad.
One of those devices is a hand-free controller for Interactive urinals. Their devices have a long history, yet little is known about them on Wikipedia. This is mostly due to the high cost of equipment, complicated installation, and vendor-proprietary platforms. Empowered by my own recent experience, I realized I could make a cheaper version of this console and decided to take matters into my own hands. It happened before the 2018 FIFA World Cup in Russia. Therefore, I thought it might be fun to do a multiplayer football game, sort of like arcade pong. Football fans would have the ability to have a beer at a pub and then compete against each other in football pong using the urinal game controller.
Since I had a lot of fun with this project and because I love open-source code, I figured I’d publish all the source code and make a writeup of how I designed the first Open Source Interactive Urinal Arcade Video Game Console, which I named Pinect.
This video provides a great visual of how the technology will work in the final Pinect device. It’s impressive to see the process in action and it gives a clear understanding of how it will function in the end product. The use of a pencil simulating the player’s stream is a clever solution to avoid any potential embarrassment during testing.
Note: “player’s stream” or “gamer’s stream” or urine stream” refers to the flow of urine out of the body when a person urinates.
When I first had the idea for my project, I knew I needed to start with a minimum viable product (MVP) to see if my idea was feasible. My first task was to figure out how to monitor the player's movement, and I began by researching various sensors such as ultrasonic and infrared sensors. While these options showed some potential, they were not quite what I was looking for.
After some more exploration, I discovered that computer vision could be the perfect solution to my problem. I decided to create a Python script using OpenCV to demo this idea.
Chapter 2. Console Design & Components
After successfully creating the MVP, the next step in my project was to focus on component casting and device design. This was a critical stage in the development process, as I needed to ensure that the final product would be reliable and meet all necessary specifications.
One of the main considerations during this stage was device cooling. I knew that the components inside the device would generate a significant amount of heat, and it was essential to design a cooling system that could keep them at a safe temperature. I also wanted to make sure that the device would be energy-efficient and have a "save energy" mode to help reduce power consumption.
Another important factor during the device design phase was cost. I wanted to create a solution that was affordable and accessible to a wide range of users.
After finalizing the design for the device, the next step in the development process was to connect the various components and create a control board. This required creating an electrical scheme and printed circuit board (PCB) that would enable the device to function as intended.
At the heart of the control board for my device was an Arduino Mini, a small and powerful microcontroller that allowed me to program and control the various components. One of the essential steps in bringing the device to life was developing the firmware for the Arduino Mini.
The firmware is the software that runs on the microcontroller, and it is responsible for controlling the device's behavior. In the case of my device, the firmware had to be programmed to handle a variety of tasks, including waking up and cooling the device, monitoring the motion sensor, and changing the mode of the device.
Chapter 5: Android software. Input Control Service
The next step in my project was to create an Android app that could recognize the player's movement using the camera image. To accomplish this, I had to create an Android service app that could process the images captured by the device's camera and identify the player's stream.
Chapter 6: Android software. Game
It was time to create a game that would make use of the device's unique features. I decided to develop an arcade football game for the Pinect console using the LibGDX framework.