One of the nicest things to happen thanks to my voluntary experimentation with live video streaming on www.RobinGood.TV, was the opportunity to meet some truly fantastic people, who, excited themselves by my new video discoveries have offered in many different ways their talent and skill to help me out.

Among these one has stood out the tests of time and has invested notable time and efforts to help me several dreams I had been playing with. These included the ability to build a truly portable video streaming station, together with added peripherals and functionalities that would have helped me video stream hands-free from just about any place, Justin-style.

His name is Fabio "Blaxwan" and he is a truly passionate technology inventor and experimenter moved by the desire to play and learn from his own creations. Not only he has helped me build an open back pack for my portable laptop that makes my mobile video streaming orders of magnitude easier and more comfortable than walking around like a fool with your laptop open, but, as he recounts in deep detail in this review, he has built a full remote control panel console integrating monitoring and control functions for the laptop working with its lid closed on my back.

1. Overview

Last April (2007) I was attending a barcamp, it was during a conference when I first met Robin Good.

I saw this funny man struggling with a laptop, webcam, radio microphone and lots of wires as he was live video streaming the OpenCamp. Such view had two effects: the first one was that I immediately started to think about ways to build something that would avoid having all those fastidious and uncomfortable wires and dongles.

The second effect was that I missed the conference speech.

Later on, I went back home and I was searching on the net for more info about this Good guy. I rapidly discovered that he was doing really a great job by giving the possibility to those who could not attend the barcamp to follow it live on their broadband connected computers at home.

Then I thought I could have tried to help him out.

I sent him an email explaining what I thought we could do and he just answered "Hi Fabio, you're the man I was waiting for a long time" then we started to have a lot of fun together experimenting new and improbable mash-up devices.

This article describes the construction and evolution of the so-called "RobinPad", at least that's how we called it. It is in fact much more than a pad as it is a full remote control panel that greatly complements the mobile Robin Good video streaming backpack allowing to have video feedback and the ability to monitor and control all of the video streaming functions as he streams.

This unique, hand-made device was the first final tangible product generated by my active collaboration with Robin. He is a great guy who does a lot instead of talking. I like that. And I did have a great time building this rugged but functional device for his Robin Good TV.

2. Building a custom USB button pad

When we first thought about a remote control panel for the Robin Good streaming backpack we were trying to achieve at least some basic functionalities:

having a preview of the cam

having some information about the system like connection status, available bandwidth, battery status etc.

having the possibility to start and stop the video streaming at will

To accomplish these goals we needed a small, lightweight portable LCD monitor and some panel buttons. Online we saw that there were a lot of monitors in many different flavours so this was not an issue. On the other side we had to find an input device that needed to be fit in a control panel next to the monitor itself.

We first thought about using USB numpads but we discovered that these were too big. Then we went on to custom I/O cards (like a PIC based one that communicate via RS-232) but this kind of communication would need more software development. So I thought to buy a small joypad and just adapt it to our own specific needs.

Figure: the small joypad we used

So for the first few times, Robin and I went streaming live with this joypad fastened to our trousers belt. We soon found out that this was definitively not so comfortable. On the other hand I soon realized that there existed a lot of software out there that could have taken great advantage, in different ways, of our standard and popular joypad. This is when I I decided to take out and use just the electronics of the joypad in order to convert it into a simple box that could be more easily matched and installed next to the small LCD monitor.

I carefully unscrewed and opened the joypad to see how I could embed it into a smaller box. Of course these instructions cannot apply to all joypads because circuits and technologies may vary from brand to brand and also through different models. So what I'm writing here is just to give you a good basic idea of how I approached it.

Figure: inspection the joypad circuits

Upon opening the joypad, I immediately noticed that the electronics of the unit were made by three circuit boards: a main one containing the core chip, a cabling one and a third one (the bigger) containing all the button contacts. I decided then to get rid of the third one saving some space, and to replace it with a custom circuit board holding my own custom buttons.

So I measured the remaining boards to determine the size of the plastic box to buy.

Figure: measuring the circuit board

After some research, I found this plastic box shown in the picture below, which was actually a little bit smaller than the board it had to hold but I thought that it was better to trim the board a little bit instead of using a bigger box (the bigger size was really cumbersome). Together with it I also bought also ten board soldering buttons.

Figure: the plastic box and the buttons

At this point I had to prepare the board on which to install our own custom buttons. Since there were no particular needs for circuit connections I decided to use a prototyping board and to wire it directly to the joypad own circuit board. I placed the buttons on the prototyping board and decided for its size, then I cut the board with the Dremel, and soldered the buttons.

Figure: buttons board preparation

Next I needed to prepare and finalize the box. To do this I sticked two paper tape stripes on it to ease the drawing of the drilling points. Then I drilled the holes for the buttons and used hot-glue to place a small piece of wood inside the box between the two rows of buttons. That's just for cosmetics. In fact this piece of wood is used to screw and hold the circuit board in place in order to avoid using any visible screws on the front panel.

Figure: box preparation

Now I had to finalize the joypad circuit board. First step was to remove the unused board and trim the used one (I just cut out the edge of the board where the two motors were soldered, as these were luckily useless parts).

Figure: joypad circuit board preparation

I soldered a common ground for some buttons, grouping them as I saw on the original button board of the joypad. Then I used some colored wires to connect the custom button board to the joypad mainboard.

Figure: soldering the wires on the buttons circuit board

Finally, the last step was to connect my custom buttons board to the joypad one.

Figure: connecting the two boards

Please note that the joypad we bought was made to connect both to a Playstation or a PC, so it had also a Playstation connector. Since I disliked this additional useless connector, the very last step was opening the connector, cutting it's wires and insulate them with some tape, so that the pad would have just one connector at it's end.

Figure: cutting the Playstation connector away

Here follows a picture of the button pad, once completed:

Figure: DONE!!!

3. Building an adjustable remote control panel with holding arm

Here our goal was to create a device that would have helped to carry and see the remote control panel hands-free. The idea was to get the control panel to be visible to Robin as he was moving and streaming live. We considered different solutions like something to tie to the pants belt or to the backpack belt, but at the end of the game we finally opted for a flexible arm coming out from the backpack itself (lately we realized that this was uncomfortable as well).

With this kind of solution, the first step was to build a supporting plate that needed to hold the buttonpad and the monitor at the same level in front of Robin.

I decided to build this part by using some plastic and taking advantage of a PVC pipe, like the one utilized in sewage systems. Happily I had a brand a new one, and I cut it and placed it in the oven at a temperature of about 130 C. After 8-10 minutes it was so tender that I could easily take it out and hold it firmly by using two sheets of wood. Then I prepared a base to properly bend the PVC sheet in order to give it the right shape for holding the buttonpad and the monitor.

Figure: the bending base

Figure: buttonpad and monitor fitting on the bending base

At this point I cut a rectangular piece from the PVC sheet a little bit bigger than required (because I knew I couldn't be so precise in bending it) and put it again in the oven for another 5-8 minutes at 130 C. When the PVC was again soft enough, I took it and placed on the base and pressed it hard by utilizing some other plain-surface heavy objects for a few minutes, until it cooled down again.

Figure: bending the PVC rectangle

After some minutes the PVC piece was cold enough to continue to work on it.

Figure: the PVC properly bent

So I placed the monitor and button pad on it and first drew and then precisely trimmed the contours.

Figure: the PVC now has also the right shape

Figure: the plate now perfectly holds monitor and buttonpad aligned

To build some rigidity in the flexible arm that would be holding the remote control panel (otherwise the weight of the monitor and control panel would have it would have it fall down) I decided to use some steel wires. I gathered together several steel wires, gave them some shape and hot-glued them on the bottom of the holding plate. Then I inserted the wire bunch in a corrugated plastic pipe and, on the other end, I just bended out the wires and hot-glued them in a larger pipe that may be easily screwed to something that I had to attach to the backpack.

Figure: building the flexible arm

Last step was preparing something that would hold the flexible arm as we could not screw this to our belly. So we needed something where we could screw our artificial holding arm in.

To achieve this I cut a thin piece of wood to the size of the Vaio notebook Robin Good carries in the open backpack. My ideas was to basically pace this wooden platform between the Vaio and Robin's back inside the backpack.

Figure: preparing the flexible arm holder

Work done! The "suspended" remote control panel device (of course the elastic stripe were just a temporary solution, they were replaced by velcro stripes):

Figure: the console finished

4. First evolution: building a case for the backpack

After some further experimentation with the mobile Robin Good streaming station, we realized we wanted to further improve things.

The quantity of dongles, batteries, peripherals, cables and connectors had grown to such an extent, especially after the adoption of the small tube camera Robin caried in its hat, that we badly needed to do something about simplifying and organizing all this stuff in a better way.

This is why I decided that the best solution would have been to put all these things together inside a properly designed and compact box to place/attach on open backpack. This way I could integrate all the cables and simplify the use and the look and feel of the system.

Since I also wanted to have a nicely-shaped for this box, I steered away from traditional rectangular boxes and went straight to a big bricolage-shop to get some fresh ideas. There, in the shelves where all the electric pipes are shown, I immediately found something interesting. I bought those two plastic shells you see here below. These strange shells are traditionally used to bend into the wall the plastic square pipes that are used to run wires alongside a wall. I don't know if I gave you a good idea of what they really are for, but what matters is that they were perfect for our purpose.

Figure: the plastic shells I bought for the backpack box

Back home I just resized the two shells and cut a matching shape in a thin sheet of wood in order to create a closing panel for them. I then painted in black both the base and the "shells".

Figure: the two plastic shells cut and then glued together and black painted

Once I had the box completed, I started to drill some holes in it to screw the connectors and the switches. I assembled then all the circuitry soldering and all the other stuff. I finally used rubber bands to hold the set of batteries together to the converter to the box base.

Here are the results:

Figure: completing the box

Figure: testing the new box, on the side you can see also the flexible arm

5. Building a Robin Good TV light sign

At this point we thought we had some interesting gear in our hands and our desire was to share and advertise the fruit of our work so that people would notice Robin when he was doing live streaming.

But instead of using a simple printed sign, I wanted to build something that could have been switched on when the Robin Good mobile backpack was streaming. I therefore decided to build a light sign with some Plexiglas and LEDs. Nothing fancy at all, as it was really simple to build one this way and I had a lot of fun experimenting with those materials I wasn't familiar with.

As a first step I cut a piece of Plexiglas (acrylic glass) and painted on it the sign lettering (Robin Good TV - On Net) by using a painting mask. This is in fact was created using liquid latex that gets dry very fast and may be easily removed just by using the fingers.

Figure: the writing with the masking liquid

Then I sprayed the whole front surface with black paint and, after the paint had dried, I removed the masking.

Figure: the writing with the masking liquid

The last step was the one of carving into the sign the place through which to show the white LEDs that I had soldered in the back.

Figure: the writing with the masking liquid.

Work done!

Figure: RobinGood wearing our "creature"

6. How it all works

For the "action" part on the remote control panel, the RobinPad runs a great scripting tool called Autohotkey. With it you may process user input and perform some actions like clicking somewhere in the screen. This is essential because we're using an internet streaming site to video stream (normally that is Ustream) which in turn requires a Flash encoder launched from the browser to run. Due to this setup we cannot switch to a custom encoding system, but I'm really confident that sooner or later we will move to this kind of setup.

The basic idea of the button pad is to use the upper row buttons for fixed and frequently used functions and to leave the lower row of buttons for general purpose functions. In the bottom row the buttons change their functions contextually and can perform therefore multiple tasks. In this way we can utilize more functions than the number of buttons we have physically available (10).

The core buttons in the upper row perform these basic functions (from left to right):

Menu

Start streaming

Lock/unlock the buttons (to avoid accidental press)

Start recording

Stop recording

Those in the lower row perform the functions shown in the following menu screens and which can be cycled through by pressing the "Menu" button.

The first image here below is the Menu1 and the second and third images are the Menu2.

Figure: RobinPad's Menu1, Menu2HSDPA and Menu2Wireless.

Later I also added a splash screen that is shown when the system starts as well as a "locked" warning that is displayed when the pad is locked (through the central upper button). Obviously I added also an "unlocked" message that is shown when the central upper button is pressed again:

Figure: RobinPad's splash screen and warnings

For checking all functions inside the remote control panel monitor, we have devised ways in which Robin can see the actual controls and feedback indicators, including his video feedback, as they are displayed from Ustream and replicated at lower resolution on its small monitor. Next to streaming feedback controls I have added for Robin a monitoring application called SysMetrix which further provides Robin with real-time numerical indications of its remaining laptop batteries time, CPU temperature, bandwidth in and out.

7. What next?

I and Robin do realize that there are a million improvements we could still do to this setup. But this is the joy of building something yourself.

Starting from the reliability of the overall physical setup which is not yet rock solid, to the need of adjusting our customer control software as Ustream keeps changing and improving its own interface. In fact, the best would be writing a real, dedicated software for this system.

But let me try to summarize here all of the improvements we already took into serious consideration and the general direction in which we want to move this project further.

From an hardware point of view it would be nice to:

prepare another plastic holding base for the monitor and the button pad without the "holding arm". This way Robin may decide alternatively between using the artificial holding arm or simply just hide the remote control panel inside his jacket without using flexible support arm. When he needs it he can take it out of his pocket and use it. Yes this deserves one hand.

put some Velcro on the remote control panel and on the backpack belt so that the remote control panel can be attached on the belt itself

add support for a set of earphones so that Robin may have an audio feedback channel to be used for either talking to the audience or to receive indications from a possible control room through a VoIP Skype-like connection.

thinking about amini-ITX motherboard to evolve all the system in a really embedded and self contained mobile streaming station (wow)

From a software point of view it would be nice to:

find a piece of software that is able to play a mp3 file "into" the microphone input in order to have some music background streamed in the video (the internet streaming site is accepting audio just from one source at time)

try to leave the internet streaming site or get rid anyway of the need to use the browser and Flash encoder. Once this step will be accomplished we will go for a more reliable Linux system (and we don't have to modify the SW to remap the mouse clicks every time that the streaming site changes the Flash encoder)

write down the application for the Linux box trying to keep all the functionalities we have now.

keep the whole software system as much modular as we can. The final goal being the creation of a setup where Robin can stream directly from the RobinPad (yes adding video capture functions to it) or where he could stream to a main control room where his signal will be mixed up with the one of other reporters streaming from other locations or with the video of someone wanting to interact from home.

This the end of the story for now.

We are continuosly working to make new improvements to the RobinPad and if you follow RobinGood.TV you may be able to see Robin at work with it very soon.

N.B.:
Beyond our desire to share how this was all done, your comments and suggestions are what me and Robin welcome the most. If you have ideas, critiques, do not hesitate to make your voice heard here below in the comments section.