Boat design:

The airboat is developed on top of a Styrofoam base, which was created by taking a large block of scrap Styrofoam and cutting it into the correct shape. This was coated in liquid plastic to give it strength and durability, as well as helping it to hold screws. The base is wide and designed primarily for stability as opposed to speed. 

All of the electronics are mounted on a wooden board running lengthwise along the foam platform. A wooden pole is used to elevate the main motor and propeller, and a second brace was added for stability. A servo is mounted behind the propeller for steering control. 

Boat electronics:

The electronics are centered around a custom ATMega328p board created early in the project's development (before I posted this on Hackaday Projects). The microcontroller is running at 5 volts, 16 MHz. Two servo headers are populated on the board for control of the main motor and the steering servo. There is also an FTDI compatible header for both programming and radio communication. Recently, an expansion header has also been added for the possibility of adding sensors or other peripherals. It connects to the 6 analog inputs of the ATMega, which gives the benefits of digital I/O plus the functionality of an ADC. Also, the I2C lines of the ATMega happen to be on two of the analog inputs, allowing I2C communication with a "sidecar" microcontroller on an expansion board. Pull-up resistors are populated on the board for this reason.

The main motor is a 3-phase brushless DC motor, driven using a 10 amp ESC. The ESC connects using a standard servo connector and supplies power to the ATMega controller. Power comes from a 3 cell Li-Po airplane battery, modified to use a JST connector instead of the very beefy original connector. The steering servo is nothing special, just a standard size Hitec HS-311 servo with a piece of plastic to serve as a rudder. 

Radio communication is handled by an XBee Series 1 transceiver running at the standard 9600 baud rate. A SparkFun breakout is used for level shifting. 

Controller design:

The controller is built into the shell of a very old Air Hogs helicopter controller. Various plastic supports on the inside were ground down with a Dremel to make room for custom electronics. One of the original 1-axis stick holes was widened, and an analog joystick was mounted in its place. The original rubber-dome trigger PCBs were left in place. 

Originally, for the Power and Charge indicators, colored translucent plastic was affixed to the front panel to simulate the look of a through-hole LED, and a surface-mount LED lit it from the back. I took this out and widened the hole to accommodate 5 millimeter through-hole LEDs. The Charge indicator now is used for radio communication status.

The container for the helicopter charge cable was removed and left open as a window for the XBee radio module to be easily removed and replaced. It also allows users to peek around and see all the hand wired peripherals inside the case. In the past, it also allowed the user to see a status LED, but this was an awkward solution, forcing the user to tilt their head at weird angles to see the LED. There is now a 5 millimeter LED located on the front of the case, making this use obsolete.

Controller electronics:

The controller is driven off of an Arduino Pro Mini 3.3v from SparkFun. This is connected to an XBee breakout, as well as the analog stick, LEDs, and trigger buttons. Power comes from the built-in 6 AA battery pack and is passed through the Pro Mini's internal 3.3v regulator. 

Communications protocol:

**UPDATE** The new communications protocol is a bit better than my earlier one. It still sends a "start-of-packet" indicator, but then sends only 2 bytes: a parameter byte and a data byte. This allows for 256 different parameters to be sent, each having 256 possible values. 8 buttons can be consolidated into a single byte, saving even more transmission time. This protocol is faster at transmitting single parameters to the boat, and will be what I (probably) will develop on from here on out.

The old communications protocol was very simple. Each packet sent from the transmitter consisted of 5 bytes: a "start-of-packet" indicator, values for each analog axis, and a 1 or 0 for each button. It was a bloated system, but it worked for my purposes. The boat sends back a byte in response to the transmitter to verify that the signal has been received.