Raspberry Pi Button Board

So my team is looking at making a button board/console of sorts for the secondary driver. Have any teams used a raspberry pi to interface with the buttons, and if so, how did you do it? We’re trying to do something like this: https://howchoo.com/media/nz/az/nt/nzazntdkmzhg.jpeg but without the joystick and using a raspberry pi as the device that directly interfaces with the computer.

A Raspberry Pi really isn’t the right tool for the job. The thing you’ll want is a reprogrammable Human Input Device, like a teensy or an arduino, that shows up to the computer as a keyboard / mouse / controller. Then it’s easily programmable to the robot as any other USB controller. This tutorial for the teensy might help.

Good luck!

My team this year created our second, custom operator board. Last year we actually striped an Xbox Controller and wired limit switches to the corresponding outputs. This year, one of our freshman students found these https://www.amazon.com/Easyget-Controller-Joystick-Raspberry-RetroPie/dp/B01FZ6QVWO/ref=sr_1_3?ie=UTF8&qid=1520888373&sr=8-3&keywords=usb+controller+board. They are super nice to use, also they are “plug and play”. For the arcade buttons, we use these https://www.amazon.com/WGCD-Button-Microswitch-Jamma-Mame-Arcade/dp/B072R1H185/ref=sr_1_6?s=toys-and-games&ie=UTF8&qid=1520888934&sr=1-6&keywords=arcade+buttons Like how I stated previously, they are essentially limit switches, with arcade button attachments.
Hope this helps and good luck:)

For several years now, we have been doing this with an Arduino Leonardo board. This has all of the support built-in for being a Human Interface Device (HID) so it appears to the driver station just like a joystick (it even shows up in the windows Game Controller dialogs, and an show you all of the axes, and buttons and their states).

The Leonardo code we use this year (and instructions on how to install it onto a Leonardo) are here:

We also built a custom arduino shield w/shift registers on it to read more than the roughly 10 buttons you can connect to the Leonardo’s digital input ports, so you’d need to replace that part w/simpler code that simply reads the state of each Leonardo digital input signal - but other than that, what you’re planning to do is very similar.

In case all you have is an Arduino Uno at hand, you can still accomplish this. HoodLoader is an open source project (not mine) which effectively hacks the processor that does USB processing for the unit so you can use an Uno as an HID device. It’s pretty straightforward, but does take a little bit of time.

In past years there used to be something called the “Cypress board” in the KOP, referring to the company that made the board. The tech from Cypress is cooler now, and you can get an easy-to-customize HID device out of the PSoC5 dev kit for $10 now. There are also a lot of example projects with Arduino HID library if you have one of the newer boards that supports that. It could be done with a Pi 0 through USB OTG support, but it’s a lot more work.

We use Elegoo EL-CB-003 MEGA 2560 R3 Board ATmega2560 ATMEGA16U2 + USB Cable for Arduino https://www.amazon.com/dp/B01H4ZLZLQ/ref=cm_sw_r_cp_api_-T7PAbJ9P4CNJ
Cheap, Easy, can have way more buttons than you will need and even though it’s big it’s smaller than 2 rows of 3 buttons. All the other posts are great for getting it programmed.

This year my team used the MSP430 Launchpad from Texas Instruments. FRC has software made for this tool to have it show up as a gamepad, it’s cheap ~20$, has plenty of pinouts for buttons, and works well

Have you seen the Andy Mark button board? If you’re interested in putting your own board together it doesn’t get much easier than that. Wire your button inputs into the digitizer board and connect the digitizer board up to your driver station. It shows on Windows as a generic USB controller.

If it isn’t important for you to build a custom board check out this board. It is already put together so no hassle. Also, the inputs are the same as an Xbox controller and they are labeled likewise. For us it’s nice to be able to use the XB360 map that is already in our code. We just covered the unused buttons in duct tape.