The purpose of this project is to manually control the movement of a blimp by remote joystick. Therefore, we have a controller (the base station/joystick) and the blimp. Figure 1 illustrates the data flow between the various components.
The base station (an AT90USBKey) is wired with the joystick, a radio, and a RS-232 UART serial port connection to a hyperterminal running on a PC. The joystick provides horizontal speed/direction and vertical height control of the blimp remotely; the radio is used to send/receive data packets to/from the blimp (another AT90USBkey); and the UART connection is used for monitoring. Figure 2 sets out the finite state machine for the base station. In a nutshell, the base station reads the joystick analog inputs, sends an appropriate control command to the blimp, and receives back status data which is displayed on the hyperterminal for logging.
The blimp (another AT90USBKey) is wired with three dc-motors, a sonar, and a radio. The dc-motors control the direction of the blimp and the up/down movement of the blimp, the sonar is used to calculate the height of the blimp, and the radio is used to send/receive data packets to/from the base station. Figure 3 sets out the finite state machine for the blimp. Basically, after signalling it is ready to receive messages, the blimp enters a listening state, waiting for a control message from the base station. Upon receiving the control message, the blimp will produce the appropriate drive signals for the motors and sends back its internal status information to the base station, again returning to a listening state. While in this listenting state, the blimp is continuously monitoring its height and driving the up/down motor to maintain a constant height.