I have taken my first steps in to the world of live
video streaming in the first half of 2007.
An Italian audience have followed my
non-stop reports from several
of the largest bar camps held recently here in Italy.
They have seen
with how much passion and interest I have taken this new communication
challenge.
One of the nicest things to happen thanks to my voluntary
experimentation with live video streaming on RobinGood.TV,
was the opportunity to meet some truly fantastic people.
Those people, 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.
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.
Also, 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.
Here are the details:
Intro by Robin Good
The “RobinPad” Story
by Fabio “Blaxwan” Di Niro
1. Overview
Last April (2007) I was attending a bar camp,
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
Open Camp.
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
bar camp 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 number pads
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.
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 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.
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.
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.
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.
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.
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).
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.
Finally, the last step was to
connect my custom buttons board to the joypad one.
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.
Here follows a picture of the button pad,
once completed:
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 button pad 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.
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.
After some minutes the PVC piece was cold enough to continue
to work on it.
So I placed the monitor and button pad on it and first drew
and then precisely trimmed the contours.
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.
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.
Work done! The “suspended” remote control panel device (of
course the
elastic stripe were just a temporary solution, they were replaced by
velcro stripes):
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 carried in its hat, that we badly needed
to do something about simplifying and organizing all this stuff in a
better way.
The
new lipstick-sized camera in Robin’s hat had in fact only a
composite video output so we were forced to add a video-to-USB
converter.
In addition to this, at this time Robin opted for
a smaller, higher performing and longer-lasting VAIO
notebook,
but the new baby had unfortunately no composite video output (which we
badly needed for powering the small portable monitor).
Here too we
forced to add a VGA-to-composite
video converter. There were just too many things hanging out
of Robin’s open backpack.
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.
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”.
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
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.
Then I sprayed the whole front surface with black paint and,
after the paint had dried, I removed the masking.
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.
Work done!
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 set up we cannot switch to a custom encoding
system,
but I’m really confident that sooner or later we will move to this kind
of set up.
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.
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:
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 set up 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“. - 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 a
mini-ITX
motherboard to evolve all the system in a really embedded and
self contained mobile streaming station (wow)
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.
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. - 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.
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)
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 continuously 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.
Originally written by Robin Good at MasterNewMedia as Mobile Video Streaming: Building A Remote Control Panel For A Portable Videostreaming Box – The RobinPad Story on August 21 2007. Some Rights Reserved.