A project log for OpenJoust

A small and cheap controller platform for playing physical interaction games (Such as the Johann Sebastian Joust)

HP (@banjohat)HP (@banjohat) 08/19/2014 at 22:090 Comments

Well, Sort of at least.

The first thing of course was to check the microcontroller and load an arduino bootloader into the system. The Atmega168 us one of the really tiny ones with only 16kb memory. The bootloader uses about 2kb so even though I started making the pogobed for fun it might save the project beacuse I can download the code without the bootloader. I hope I don't have to go down that road!

The main board with all parts (well, almost all parts) populated looks like this:

The unpopulated pads are for another NMOS transistor to drive either a buzzer or a vibration motor. another way to provide feedback to the player apart from the LEDs.

The battery charger output is connected both to the battery and to the power rail. There is a reset circuit holding the MCU in reset if (and while) the battery voltage is too low. This way all operations are halted until the battery is charged or at least starts charging again. a charging indicator light will then be powered on (blinking red every 3rd second.

After initial contact was made I soldered the RGB LEDs to the board, along with the MOSFET transistors to drive them. The reason for the drive method is that I can bump up the voltage on the diodes this way. The rest of the system runs on 3.3V. DANG! 3.3V!??! That's not the voltage my battery charger outputs!!

I need a 3.3V LDO and I need it to go somewhere! I might find some space on the back of the board. Let's have a look

I know - Not my brightest moment of soldering but for a prototype it'll have to do. A small SOT-23 package will deliver the 3.3V to the system and peripherals. Whew! Almost blew out those accelerometers! be careful next time!.

What I need now is I2C connection to the accelerometer. The reason this spceial accelerometer was chosen was its ability to power down while sampling. It has a built-in interrupt generator that will make an interrupt on 'transients'. a transient is exactly what I will be looking for when playing a game. A transient is a quick change in something - here it will be an acceleration. A triggered transient interrupt will mean that the player have been moving too fast! I caught you now! Time to report to the mothership and kill you ;) well, that's kinda the plan for now. We could also just reduce health or do some other stuff.. Maybe the player is immune and has a wilcard to kill another player? who knows?