Now the holidays are over. I’ve got to get back to testing ArcGIS 9.4……. So far I have it up and running on a spare workstation with XP Pro. The interface has changed quite a bit from the familiar ArcMap we have been used to since 8.3! I think they (ESRI) have supposedly rewritten everything from scratch – hence the the dropping of VBA. You can install VBA on it (not supported tho), and the Macro/VBA editor comes up at least. I created an app that is used throughout the state and haven’t turned it into dot net yet – still VBA thru an MXD (quick updates/corrections/fixes). Alas, the app does not run in 9.4! My plan is to see if it is a lost cause. All will be moot when I get the app ported to a VB or C dll. Fridays are always my server/hardware/networking tweaking days, but maybe today it will be app compatibility day!
Part of my steps to get the different parts to talk to each other is a basic action/reaction workflow. With all this tinkering, nothing ever works out of the box! I soldered header pins onto a 2-axis accelerometer (Sparkfun) and hooked up to my breadboard. I had two Hitec HS-81 servos for the neck of my robot (for video and sensors), so I wanted to try those first with the Arbotix microcontroller. Again, nothing works as it should right off the bat. I created a sketch using the ‘servo.h’ library and the servo did nothing but chatter during sketch upload. I then found a PWM routine to use with servos online written by Tom Igoe (by the way, I have his book ‘Physical Computing’ – co-authored with Dan O’Sullivan) which used pulse code delay for moving the servo – worked like a charm! I have already ordered a new 3-axis accelerometer because I don’t know if I got a flaky one, or I hosed it during my soldering. The X-axis outputs random, crazy numbers even when standing still. The Y-axis would vary by one digit once every 12-17 outputs even when standing still. I divided the analogRead value by 10 and that reduced it somewhat, but still happened occasionally. So for my test, I ignored the X-axis values and simply checked the Y-axis. When I get my new IMU, it will have pins attached – so I rule out my iffy soldering skills. Note to self: practice soldering tiny PCBs! You can see the video below of one axis servo test.
Now that I got The STPC working with Win2K and Dot.Net 2.0 installed on it, I started on the other aspect of the project – microcontroller integration. My plan is to get the PC board [SIC] to do the heavy lifting and the microcontroller to do the nervous system (think sympathetic) stuff, minute-to-minute. The first step was to get the Arbotix (Trossen Robotics) board communicating. Once I got a good serial connection going, then the layers for .Net could be assumed to work as well (eventually, one step-at-a-time). The board did not work with the Arduino IDE out of the box. The suggestions were followed from the Arbotix web site, but I came up with errors (build.target was “null”, and suggested the preferences was not right). Nothing on the web directly pointing to this error with Arbotix, but a few with Arduinos – but for different reasons. Bottom line: pasting the board specs onto the end of ‘boards.txt’ did not work – always threw that error. After deleting ‘preferences.txt’ and stripping out most of boards in ‘boards.txt’, I decided to replace the parameters for the ‘Mini’ with the Arbotix ones.&nbsp; I renamed the the first line so I would know “…##mini.name=Arduino (Arbotix)”. I compiled the ‘Blink’ sketch with pin 2 selected without any errors. Uploaded the sketch to the board – no errors so far. Hooked up a breadboard with an LED and resistor to digital pin ‘D2’ and the booger started blinking as it should. Finally!
Well, it has taken over a week, but the microcontroller/single board computer finally has an OS on it. This has been an ordeal. I actually had Win 98 on it, but couldn’t get .net 2.0 installed. I even had a universal USB driver so it acted like Win2K+ OSs and recognized and loaded USB devices. I purchased a 4Gb compact flash card and began the uphill road of installing Windows 2000 Professional. I must have gone between my desktop PC and the workbench over 50 times during the coarse of this stage of the project. I had thumb drives and boot disks going all over the place.
The board has a 486 DX2 on it and every kind of IO. It uses a CF slot as its main IDE drive. The install started from a thumb drive mounted with DOS USB drivers, and went well until somewhere halfway into the install. After recopying the setup files twice, I decided to see if there newer bios images for the board online. I was lucky – I found one on the Aaeon site. I looked to see the revision of the board and assumed the 13a version was for the ‘A’ board. It loaded perfectly with the AWDFlash utility. After a reboot, I had higher resolution on the LCD panel! It actually can display 1280×680 now, but I will settle for 800×600. After this, the install went further along than before. It stopped at a new place, and I guessed it was enumerating hardware devices. Since the setup files were transferred to the CF drive by now, I pulled out the thumb drive and rebooted yet again. This time it finished everything up until the ‘finishing setup’ page, where it creates start menu, saves configuration, etc. I found a number of references online about drivers that may be mucking up the monkeyworks. By using shift+F10 at that stalled point, I pulled up taskmgr in the DOS window and ended ‘spoolv’ process and the install finished and rebooted! I was relieved. The final snafu was on the reboot, I had the ‘cannot load msgina.dll’ error – which stops your startup dead in it’s tracks. I copied the dll file from the CD and rebooted – no go. Then I read on a site online that it might be that the system expects the file in a different drive. Turns out the board thinks the CF drive is drive ‘D’, so I thought that might be it. I went into registry (loaded the hive on my desktop PC) and changed long path to userinit to just init. That didn’t work either! MS says in their KB article on msgina that you need a hotfix AND you need to find a win2K box with only SP2 on it. Whaat! I decided to log onto one of my servers at work, which is still a Win2K box, but with SP4 on it. After replacing this – the board booted up and went into the regular desktop without a hitch. Here’s the weird part – I went into device manager and there wasn’t one yellow exclamation mark. I think there is hope yet!