Everything is Awesome

If you need an introduction to the B+B+ then biglesp has a blog which goes into the B+ in detail along with elecia whom helps to introduce those new to Raspberry Pi to get started with one; if you require a more technical list of the changes between the Raspberry Pi boards then you should look no further than the comparison chart.

Since its initial release the Pi has invoked inspiration in education, amongst programmers, and in hackers and makers over the years. The latest revision in the form of the B+ introduces new possibilities, believe it or not. Some have expressed disappointment that the processor at the core of the Pi not being faster and that the RAM has not increased, but realistically, it helps projects to slowly adapt to the changes of the board and work on familiar ground. Increasing the base specification for now would possibly change its target demographic because for now it is a very affordable single board computer that almost everyone knows.

What do the Changes Mean for Projects ?

There are three main changes as I see it that apply to dedicated electronics projects, the biggest change is having 40 tasty, tasty pins to play with on the B+, this means that you can now add, control, and communicate with more circuitry or devices than before. Or it means that you can use an add-on board which is designed for the Model AModel A/BB and still have pins to play with! Currently the only way to work out what the GPIO 40 pin block connects to is to read the schematic document, but I am lazy and I like looking at pretty colours so for a quick reference I created this fancy graphic:

The additional pins have 9 usable as general purpose input/output (GPIO) with 3 extra ground connections. Pins 27 and 28 are used for something special, if you create or add a Pi expansion board then it can communicate via I²C with an Electrically Erasable Programmable Read-Only Memory (EEPROM) to identify itself and automate the configuration of the GPIO pins. This will be amazing in the future when expansion boards take advantage of it.

So let's assume that you're using an expansion board, which may utilise all of the pins or some but you still want to add something else - perhaps you're wanting the Pi to act as the hub for processing the input you're sampling or capturing but you're out of direct GPIO!

What do we do ? there's another option which is USB, now that there are four USB ports on the Pi we can add hard drives for storage, webcams for eyes or even communicate to other prototyping boards such as the Arduino while using the USB as serial ports for communication.

Oh wait, that's two changes, the third is a bit simpler: board holes! if we're working on a project then we want the board to be stable. So unlike the previous models we can now mount the board onto something or use the holes to secure it within housing such as a 3D printed case3D printed case.

Give me an Example!

I journey a lot in my car, it was broken into this year as well and I want to monitor how much I use it. I could develop the Pi into a car alarm but I'm interested in using it for more than just that. I like statistics and monitoring, they can produce patterns and sometimes help to predict what's going to happen or at least just show you something that's thought provoking; at least I think so.

So let's use the Raspberry Pi B+ for this project idea, first it needs to be powered and for that we have a number of choices:

Create circuitry or grab an adapter to handle powering it from the car battery / lighter socket

I think in this case I would use the MOPI, it can handle and recharge batteries directly connected to it and allow for hot-swapping of the batteries; this can work in conjunction with a connection to the microUSB so that it will continue to operate when not powered from the 'mains'. So in this case it can run from the cigarette lighter socket (so as to not drain the battery when the car's not running) and it can have programmed intelligence to handle when it's on MOPI battery and power down devices accordingly.

Now an important part to this is to have sensors and an interface. Since we're taking up part of the GPIO bank with a MOPI, plugging in another expansion board in series would make some sense. So in this case I may well choose the EnOcean add on boardEnOcean add on board and its sensor kitsensor kit. The MOPI can be installed with 'through headers' that allow for the addition of another expansion board while the sensors can be installed in the car to monitor the temperature and which doors / hood / boot are opened or shut.

So were I using a Raspberry Pi Model A or B in this case, that would be practically all of my accessible GPIO used up, not taking into account if I looked at the schematics/data sheets for the EnOcean Pi and the MOPI to see what was available. Thanks to the B+ I now have some more GPIO I can play with; but what would I use them for ? I already have all of my sensors connected thanks to the add on boards, well what would make sense to me is to control feedback from the board as to its status.

Let's say that we're using all 26 original pins, we now have an additional 9 to play with - with the switch(es) that the EnOcean Pi can add we could change what mode or features that the B+ has activated depending on button presses taken in by the EnOcean Pi or what's read in via the GPIO (say if we wanted to turn off use of the sensors or we just want to read temperature, or we want to turn the device off if we can no longer reach the button on the MOPI). This helps to make the jump from a possibly awkwardly accessible device that something can go wrong with (either via programming or otherwise) to a device which can now give visual feedback or we can interact with in a manner that we control.

So the sensors that I've connected can monitor the state of the car doors and the temperature, but I want to be able to track more. Well that's where the USB ports can now come into play where by I would connect one or more of the following:

GPS Dongle

WiFi Adapter / (2g/3g/4g) Mobile Dongle

2.5" Portable Hard Drive

Webcam

With the above added I have now potentially made the B+ location aware, it can record what it sees and it can communicate out to the wide world either when it's in proximity to a WiFi access point or via the cell network. In fact, I could change that WiFi adapter to not just connect to an access point but to become one and from that serve web pages which can allow me to manage the system while it is installed. The last thing I would want is to have to rip the system out that I've installed into my car every time I wanted to access it.

More importantly, I can make it accessible from the internet. Imagine if I want to know what the status of my car is from my phone; I load up the web interface that my car is presenting (remotely thanks to the mobile dongle for example) and I can tell if any doors are open, or even have it notify me if the temperature's too high should I have a pet in the car via SMS messaging. Perhaps, if I used a sufficient lens or convex mirror I could have the webcam cover the car in a greater than normal field of view, with angular correction in software then use OpenCV and it can pick up when someone's coming up close to the car and record a snapshot to upload. Or, alternatively just a wide angle lens with/or instead use the PiCam PiCam connected to the CSI ribbon connector on the board.

Controlling the B+ in this configuration could be done with a screen either connected to the HDMI or the DSI on the board, with the available GPIO used for navigation buttons on a displayed menu. If the screen was to be a touch screen then you'd either have a 50 second response time USB connected device or one that tries to use the SPI GPIO, potentially conflicting with the other devices plugged into the board.

I'm Crazy

Yes, I know. This is an adventurous idea, with a lot of smaller projects collected together into one fantastical ideal that would take time, patience and smart power management to handle along with programming - but this is the challenge of the Internet of Things, or I guess I'm suggesting an Internet of Cars. Whether you'd want this information available to the global internet is questionable, having had my car broken into I would love to have a smarter car alarm that didn't cry wolf when the wind blew on it but what I'd also like is to not have the car alarm more of a target than the car itself. The Internet of Things doesn't necessarily have to be small and aware devices, but retro fitting technology onto what already exists to make it aware can also work.