We were not sure whom had time to work on the challenge, the majority of the members have full time jobs and other obligations, so evenings on weekdays and some weekends are often the best bet.


Paul Brook (pbrook) decided to head the challenge project, directing three other interested members; myself (Christopher Stanton / Stanto), Jon Stockill (nav) and Angus (ajtag).


We really needed a way to control the arms of the foosball table, and it was decided between PBrook and Nav that the best way to do this may be with the BeagleBone Black (BBB) controlling a set of servos. These would help to drive a rack and pinion type of system, which we have constructed by using the 40W laser cutter that we are renting from ChickenGrylls at NottingHack. It produces something that looks like this:


Laser Cut Rack and Pinion
Laser Cut Rack and Pinion


It's probably difficult to imagine what is going to be done with it, because there will also be modified tubing to grab the arms/rods to rotate the foosballers.


This isn't the only development that has been progressing, we need a way to be able to track the ball and this has been done in many different ways already with other systems. The most common way is to use a camera to watch the play field and then perform operations based upon it.


Now since the BBB is going to be using linux, then PBrook and AJtag have been looking at using OpenCV/SimpleCV interfaced with a camera to help track the balls movement and feed it into the BBB. The version of Linux that HackSpace members are most familiar with is Debian, while the BBB comes with Angstrum there is a Debian build out there.


So I decided to look at using Debian on the BBB and see if I can make an LED blink with the PRU/PRUSS/PRU-ICSS. Examples and guides on this are confusing for an amateur such as myself, working with the PRU requires loading compiled assembly code onto the chip but to work with the pin headers/breakout pins on the BBB needs the GPIO pins to be pinmux'd using the Device Tree Compiler (dtc) (as far as I could tell) and then you can play with the memory addresses appropriate to the PRU for input/output.


Only this has been made a little tricky, the PRU is not officially supported to the community and has been removed from the latest technical reference manual for the BBB. However, it does still exist within version C of the technical reference manual if you can find it. However, this is mainly mute as a lot (but not all) of the content has been decanted into a github repo'. Most of these can be found by searching for BBB PRU (though not those exact terms and there's an example of working with it on this site).


Now I mentioned working with the PRU in Debian, I discovered that at the time I grabbed the Debian build, its dtc wasn't modified, I suspect the kernel was not fully altered either, which makes interfacing with the breakout pins/sockets difficult/impossible. However, I did manage to flash the onboard LEDs which was a mini-victory for myself. As a distraction I found the patches, packages(?) and guide necessary to patch in the BBB modifications to Debian for ARM.


Hopefully soon there will be some rods that are moved and rotated by servos and a camera tracking a ball, on top of this, we decided that there should be a way of keeping score...