This week I’ve been playing with the ‘Pi & Bash >_’ – a multi-function Raspberry Pi add-on board from Rob Boyle. When I say multi-function, it’s because this board has a LOT of different components on it, all squeezed onto a board not much bigger than the Pi.
Rob’s aim was to come up with an add-on board for the Pi that included a lot of the common components people like to learn with, as a bit of an ‘all in one’ learning tool for a lot of different projects over a long period of time – rather than buying a number of individual boards that each cover different functions.
There’s LEDs, a port expander, an analogue converter, switches, a display, a temperature sensor….loads!
So let’s take a look at this feature-packed add-on…and make a little something out of it too…
I have to start by mentioning the packaging. To me it has that real old-school hobby shop feel to it. The ‘off the rack kind of style, almost like something from a model railway store. I like this a lot!
Once you’ve stopped dreaming about owning a model railway, the bag contains a mass of components ready for soldering to the board.
Now those who aren’t confident with their soldering may not like the look of this – but as RyanTeck is stocking them, I’ll make an assumption that he will offer a pre-assembled version for a slightly higher price.
Check out the marking on the back of the PCB too – yep – it’s RoHS compliant and has all the necessary safety markings. That’s quite rare for this scene, and good for any teachers/schools who may be concerned about the safety of the products their students use.
Soldering the board took me about 30 minutes with my cheap and nasty Maplins iron, and I’m really not that skilled with soldering. It’s made up of ‘through-hole’ components – none of the tiny SMD stuff here. (there’s no point me showing you how to solder it – Rob has done a grand job of that)
The finished board overlaps the Pi quite considerably, unlike some other boards that try to fit the size of the Pi. It’s a unique shape and size, and I imagine most of this was down to the number of components that had to be fitted to the board, and the focus on learning/functionality.
The Pi & Bash boasts a lot of features that would usually be seen independantly on different add-on boards. Think of it as a bit of a mash up (no pun intended) of your favourites:
- 16×2 LCD screen + contrast potentiometer
- MCP23017 Port Expander (more GPIO, and used for control of the LCD)
- MCP3008 Analogue to Digital IC (for controlling analogue components)
- Traffic light LEDs
- Temperature sensor
- All ports broken out to headers
- Jumper selectors for power/input/output options
One feature I really like is the header option to power the display backlight either via direct power from the Pi, or using the MCP23017 in conjunction with some Python code. Handy!
Rob provides an example script that includes all of the code you need to get using the Pi & Bash quickly. The code seems a little overwhelming at first, however after reading the sections piece by piece it soon becomes clear that the majority of the initial code is simply the set up for the various chips, sensors, displays and LEDs.
Once you get past that initial block, the main program is very easy to understand and ready for you to build on.
Rob has created a dedicated website for the Pi & Bash which also includes a user forum. This is a nice touch as not many Raspberry Pi products get their own dedicated forum.
The website itself has all the information you would expect, including a very detailed assembly guide and already some example videos. I will be adding my code to the forum and I’m sure more will appear once the board gets out in the wild.
Pi & Bash Radio!
It’s been quite a while since I made my own Internet PiRadio, so after seeing the list of components on the Pi&Bash; I figured making a radio out of it would be an interesting project to try. The LCD, LEDs, buttons, temperature sensor and additional analogue ports are perfect for this.
I reused a lot of my existing code from my first internet radio, with a few changes to accommodate the different button positions and sensors available.
Obviously the screen is the key component here and is used to scroll the station information along the bottom line of the display. It also as a simple menu in conjunction with the side buttons.
Using the built in temperature sensor, I updated my script to show the room temperature rather than the Pi’s – which makes a lot more sense and is much more relevant. I’m also showing the time too, which is also taken from my old code:
As the LCD is controlled by the MCP23017 (you can opt for this using the jumpers) I have a button that turns the backlight on/off. The red LED lights momentarily when turning on/off:
The 2 buttons to the left of the screen provide the main controls, and the remaining buttons are used to change radio stations once in that part of the menu. The image below shows the radio function being used, with the station information scrolling on the bottom line.
The green and red LEDs indicate when the other buttons are available, and reflect button presses by flashing the amber LED:
I need to spend some more time on this to add more features, and maybe have a think about how to indicate the button options better. I’d also like to add a potentiometer to one of the analogue inputs as volume control.
This is just one example of a project you can make. A radio might not seem like the obvious thing to make with a Pi & Bash, but at the same time it does get you using a lot of components and code all in a single project.
I have provided a link to the code for my PiBash radio below:
I took the original demo code and chopped/hacked it into a radio player system. I moved a lot of the existing code into modules for ease of reading too, and added all sorts of odd notation in places. It isn’t pretty, but it works!
Note – You’ll need to install the following packages for the radio to work properly. Install these lines one by one. The first two set up mpd, mpc and alsa utilities (needed to play radio streams) and the last three are some SOMA FM stations to get you started:
sudo apt-get install mpd mpc
sudo apt-get install alsa-utils
mpc add http://xstream1.somafm.com:9800
mpc add http://uwstream3.somafm.com:9090
mpc add http://uwstream2.somafm.com:9004
I think Rob has quite a unique concept here. A board that kind of melts all existing boards into a single add-on piece, that covers your learning and project needs for a good while – and is more efficient on your wallet in the long run.
Yes the soldering might put some off. Yes the form factor will upset the minimalist crew, and there’s also the upfront price to consider (currently around the £23 mark).
However, considering that the Raspberry Pi is used so much as an educational tool, and that outside of the classroom parents/teachers have very little time to prepare the hardware side – I think there should be a solid market for this product. Let’s not forget us ‘Average’ people that can also learn a lot using this board!
If you would like your own Pi & Bash
, head on over to their website for more information on where to buy. …it’s no longer sold!
Until next time…