While working on this project we ran into a number of problems. This page describes the problems and solutions we came up with.
To transmit the data between the transmitter and receiver, we decided to use an XBee wireless transmitter. The reason we chose this transmitter was that it was supposed to be ease to interface with the Arduino. There were two main types of XBee radios, series 1 and series 2. The Series 1 XBee uses a basic point to point or star topology for its network. The network works best with only two XBee's because it is difficult to specify which XBee to communicate with. On the positive side, the series 1 XBee requires no initial setup. The series 2 XBee allows for a mesh network topology. It does require a considerable amount of setup though. The XBee modem firmware must be flashed onto the XBee before it can be used. The modem software tells the XBee what it is supposed to do.
For our project we decided to try using the series 2 XBee. This decision was made because we wanted to be able to add additional features into our system in the future. These features could be other sensors that help the gun better detect the target. We ran into the problem when we tried flashing the modem firmware onto the XBee. The software we were using did not seem like it was properly communicating with the XBee and we could not get the firmware to properly upload. Therefore the XBee's could not communicate at all.
After troubleshooting and researching for a few weeks we had not made any progress but had a better understanding of why it was not working. The problem was that the microprocessor on the Arduino was interfering with the XBee firmware when it was being flashed on. The Arduino microprocessor was in between the XBee and the USB connection to the computer. Removing the microprocessor did not help because the computer lost communication with the Arduino.
We determined that the two products were still in development and would not work for us together. Our solution was to switch to the series 1 XBee. The series 1 XBee does not require firmware to be flashed to it. After switching our problem was solved and we were able to send information between the Arduino's.
The second major problem we ran into while working on our project was mechanically related. The problem came up while we were testing the movement of our gun. We realized that the servo gears seemed to be stripping and soon both the X and Y direction servos did not work. Although we had correctly calculated the force required to move the gun, we had not taken into account the force of inertia. While making sudden movements, the servos became overstressed while trying to accelerate faster than the gun wanted to. We replaced the servos but a long term solution would be to place additional gears between the servo and gun. Since everyone in our group is an electrical engineer, we were mostly focused on the electrical aspects of our project. We learned that in embedded system design, we had to focus equally on all parts of the system. If one part fails, the entire system does not work.