The HydroBot GUI application.
Initially we use Hyper Terminal as a command line type interface to the HydroBot. With Hyper Terminal we could do just about everything we wanted to. It was easy to implement features like dumping fuel cell run data into a comma delimited text file that can be imported into Excel or other spreadsheets. Another nice aspect is that all of the code was on the robot end, and this makes it neat and easy for students to work on.
On the negative side though, all of the text for the prompts displayed by HyperTerminal have to be stored on the Stamp, which eats up EEPROM space quickly. Another disadvantage is that sometimes one would like "echo local characters" on and other times off, and you have to break the connection to change the setting. For example, when sending most commands it's nice to see the command as you type it. However, when in remote control mode, it's better if you don't see it, or the screen fills up with whatever character you are using to control the robot. Messy.
So, I decided to buy a copy of Visual Basic 6.0 and see what I could come up with. My greatest concern was whether or not I would be able to manage to use the serial com with the Bluetooth. It turned out that it was pretty easy. It must be, by definition, if I got it to work!
It's not a perfect solution either. While VB is pretty easy, it still is a lot more difficult than programming the Stamp. Currently, there are only a couple of students who's programming skills are up to working on the GUI application. Further, I know even less about PC programming and VB than I do Stamp programming, which makes it hard to teach to beginners. Fortunately, the GUI application isn't really needed for club members to work on maze solving and many other uses for the robot. It's just a fun thing to play with. However, some of the students are eager to make the PC the robot's "main brain", and use the Stamp as a co-processor. All kinds of neat possibilities with this setup!
One of the coolest side benefits of the Bluetooth system is that the Stamp can be programmed over COM1, and the Bluetooth setup is on COM7. This means we can program the robot and work on the VB code seamlessly. Very nice environment to work in. At some point though, I plan to get around to programming the Stamp using the Bluetooth. While not ideal for developing the GUI, it will still be very handy to be able to program the HydroBot on the go.
The main form of the GUI displays the fuel cell status and vital statistics. There is a colored bar indicating over all fuel cell status, with red being the system is about to crash, yellow during normal operation and green with no load on the fuel cell. Specific details can be seen in the boxes below, with fuel cell voltage, current output and temperature displayed along with watts. The "FAN" button allows toggling of the fuel cell fan, and the "Power Source" button allows toggling of the power supply, either battery or fuel cell. The "Manual Flush" button performs a one second flush of the fuel system.
Screen shot of the main form
Remote control mode is pretty self explanatory. Movement is controlled using the "W, A, S, D" keys, like most video games. The sensor array is controlled using the "U, H, J, K" keys. Pressing the "R" key returns a reading from all onboard sensors and displays the results. This is handy for testing sensors and surfaces, and performing many other kinds of testing. There is also a primitve object detection option, which will simply not allow the robot to go forward if there is an object detected. The range can be set by inputting the desired distance into the text box and clicking the "Object Detect" button.
Remote Control form
As explained HERE, the fuel cell needs to be periodically flushed. The HydroBot has a co-processor to accomplish this task. The settings form allows us to easily change the high and low points of the flushing process. The new settings are stored in the co-processors EEPROM. More details on the co-processor can be found HERE and HERE.
Fuel cell settings form
I also played around with making a real time graph for the fuel cell data, and it worked quite well. However, in class the students have a nice Vernier data acquisition system that is more accurate and flexible and has some very nice built in graphing options. Since there are a lot of other features to work on, I backburnered the VB graphing. One of the items on the to do list is to make a module with a 512K EEPROM and a processor. Then the robot will be able to collect data during run time, and the VB graphing will come into play.
Several items are on the Visual Basic to do list. One is to implement a system like the "BOE-DAR", which can be seen HERE. I am also working on an infrared positioning system, and if I get it to work, it would be fun to make a real time maps of where the robot is and map objects in the room. There are so many fun possibilities, the problem is picking them and finding enough time!
The Visual Basic code, along with the rest of the HydroBot code can be found HERE.