There are times when you aren’t able to be in the same place as the prototype hardware you are working on. I have done some out sourcing and the people I worked with weren’t able to touch the prototype hardware. I developed some remote control hardware that tied into the interface of the prototype hardware that is being worked on including switch, knobs, and other items.
This piece of remote control hardware is USB powered with a USB interface. It is attached to a computer that has VNC installed on it which allows someone to remotely login to the machine. I personally use RealVNC. It requires a small fee to license it.
On the VNC machine I use teraterm to access the CDC USB device to send commands to the remote control hardware that allows you to control the prototype hardware under development. The commands consist of various single letter commands that activate relays to simulate button presses on the prototype hardware. These relays have been wired in parallel with the switches in the prototype hardware.
Another item I typically hook up is a web cam that allows the remote user to see what the prototype hardware is doing. This is especially important if the prototype hardware has a display of some sort or LED’s for status. The web cam shows the remote user what is on the screen or the state of the LED’s so that the remote user can interact with the hardware.
One last thing that I use for debugging is a logic analyzer. The analyzer is also attached to the VNC computer as well as some strategic pins or test points on the prototype hardware. The logic analyzer can be accessed and controlled via the VNC computer. One issue with this is the remote user isn’t able to move the analyzer’s connections around on the board to look at different items. This has to be done locally to the prototype hardware.
I have used this type of approach for several different projects. It has required me to build custom remote control hardware for different prototype hardware under development. That is one draw back to this approach. I’m looking into remote control hardware that would be more generic and work for more than one project.
I chose relays to simulate the button presses as I thought they would most closely resemble a button press. Buttons need to be debounced which is another topic which won’t be addressed here. Relays also have the same characteristic of bouncing. This kills two birds with one stone, you can test the user interface and can also test the debounce algorithm you have implemented.
I have even implemented relay control of rotary encoded knobs. I hooked up a couple of different relays and pulsed them properly to simulate turning the knob to the right or to the left. I have tested this and it works great.
With this technique I have been able to have people help me without actually being on site. With a decent internet connection the VNC access to the remote machine is acceptable and gives you full access to the prototype and remote control hardware as well as development tools installed on the VNC machine.
I hope this gives you some ideas on how to accomplish remote control of your projects. It isn’t difficult and can be very helpful.
Schematic and Pictures
In this picture you can see that I have used 4 relays and wired them up to some pins to make it easy to attach the relays to buttons. These relays came from Radio Shack. The are called reed relays and take very little power to activate them. They can’t handle much current but there is very little current required with button presses. You can also see a PCB that I developed that gives me a nice little prototyping platform that has a PIC24FJ64GB002 on it. There is a USB connection that gives me that interface as well as a regulator to power the PIC from the USB connection. I have used this little prototype board in several of my projects on this site.