I recently ran a workshop, with my good friend Phill Isles, at the Test Management Summit. The subject was Testing the Internet of Things: The Dark and the Light. One of the things that we wanted to do was demonstrate a live Internet of Things device, that the delegates could actually interact with, see how it works, and begin to understand what IoT means.
So I thought I would build a Raspberry Pi Tweet Cam, that the delegates could use to take selfie’s.
It would need a Pi Camera, obviously. Then a button to press to take the photo. An LED to show the user what was happening. And finally another button so that we could turn it off.
The aim was to run headless, i.e. no monitor, keyboard or mouse.
Finally it would be equipped with a Wi-Fi dongle, to enable it to connect to the internet and Tweet.
A fun Raspberry Pi project. I mostly used the instructions for Tweeting from Alex Eames RasPi.TV site (which I find extremely helpful). Details can be found here RasPi.TV Taking and Tweeting a Photo. Then added my own design and functionality.
I needed some parts:
- Model B+ (Tick)
- Pibow Coupé Case (Tick)
The pi looks great in the coupé case.
- Breadboard Base for Pibow
Which replaces the bottom layer of the Pibow Coupé case and gives a larger platform onto which a half-size breadboard can be affixed.
- Some buttons.
I got ones with round and square tops.
- An RGB LED.
Why install three LEDs when you can fit one that does all three colours. You still need 3 input connections though – one per colour.
(You can then mix the inputs to create additional colours – Tough to do in an individual bulb!)
- Resistors (Tick)
I didn’t quit have the right resistors. I managed to use two in parallel. And ordered a jumbo multi-pack of 2,000.
The Build. Once all of the parts had arrived, I thought on the matter for a few days. When I had a rough idea of what I was going to do I started the build. I used a rapid prototyping approach.
First I assembled the Pi in the coupé case extended with the breadboard base. Connected the camera using a simple flexible mount which plugs in the audio socket. (The mount works, but is a little loose in the socket – holds the camera just fine though.)
I then added a resistor, button and some wiring to the breadboard, and some jumpers to connect the breadboard to the Pi. Wrote some code to detect the button press. Then added code to taka picture when the button was pressed.
Next step was to add the RGB LED. There were no instructions for the RGB LED on the vendors site. I e-mailed them, and they responded with a two page .pdf, which had the orientation, and forward voltage. Not all RGB LEDs are the same. A simple internet search shows that.
After following some on-line guidance I connected the RGB LED, adding a resistor to the Red bulb. Then wrote a simple LED test program. When that was working I updated the TweetCam code to turn the LED Green when Ready, Red when not – I had decided that the TweetCam would only take a photo every 2 minutes, so as not to spam the world. And the LED would flash Blue when it was taking a photo. Wrote the code and tested it.
Then I added a second button, which was used to shut-down the Pi, as it would be running headless and this is always a good thing to do when turning off a Pi. And I made the LED flash Red whilst the Pi was shutting down.
Finally with the program doing everything but Tweet I added in the Tweet code. I followed the excellent instructions from Alex Eames. And yes, it worked. I pressed the button, the Pi took a photo, flashed the LED, and tweeted the picture.
This is ‘Testing in Production’. It is difficult to test a tweeting program without getting comments! So I only tweeted a few photos. I actually created a version of the program with the Tweeting line of code commented out, so that I could test changes, without bombarding Twitter.
The build took 6 hours from start to finish. I was quite impressed with the speed at which a functional and usable IoT (Internet of Things) device could be built and tested.
And if you are wondering what the pictures looked like the ‘live‘ output can be seen here TweetCam Pictures
We used the device in sessions on two days. On the first day the internet was not working at the conference venue. It was a all a bit of a damp squib. We were though able to demonstrate the inner workings of the Tweet Cam to the delegates but were unable to Tweet. Day two was perfect. Press the Blue button and tweet a picture of yourself.