Step 13: Final Thoughts
The new MPU-6000 features "Digital Motion Processing" which basically means my AVR microcontroller would not need to perform as much flight calculations. The MPU-60x0 chip itself contains some sort of microprocessor internally and it executes code (that is bootloaded on power-on) that does this calculation for me in parallel. This code is provided by InvenSense (as far as I know) in binary form. Right now, I'm not actually using the DMP, utilizing this DMP is my next step. Hopefully it performs well enough when I'm done. But note that the current code only uses the raw data from the sensors directly without any DMP processing.
I would not design the PCB as one piece again (version 1). It makes assembly only slightly faster. I originally wanted them to snap apart, but that turned out to be a bad idea because of the delicate sensor chips. Band-sawing them apart makes a lot of dust. It's not worth the money I saved in the end. So cut the PCB apart before you solder!
I put the USB connector too close to the left in "version 1", I didn't realize it would be in the motors way. "Version 2" fixed this
The electrolytic capacitor on the transmitter PCB was slightly too tall in "version 1", this is fixed in "version 2".
I assembled all the motor-arm assemblies identically in "version 1". This is actually a mistake since this made the quadcopter asymmetrical, causing it to want to yaw. You should assemble them in a fashion such that the quadcopter is still symmetrical once the arms have been attached.
To correct for the yawing, I simply rotated some of the motors to blow air in the opposite direction.
In "version 1", the connector outline for the Wii Classic Controller was about 1 or 2 mm too far in, so it would work but the locking hooks can't latch. This is fixed in "version 2", where the connector footprint is near perfect.
The entire quadcopter is incredibly strong and ridged. I am a terrible pilot and this entire project is a gigantic wild experiment so I crashed a ton, but everything survives!
The antenna makes a huge difference, a 4" router antenna (RN-SMA4-RP) performed noticeably better than a stubby 1" antenna (RN-SMA-S-RP, yes, it is still supposed to be designed for 2.4 GHz).
I added a lanyard to the transmitter to make it easier to use and carry around.
I had no idea whether or not the motors and propellers I buy would have been strong enough. The only clues I had were other people's projects, but I didn't have any real specification data, dimensions, performance measurements, or anything like that. I just paid for the parts, design around them after taking some dimensions myself, and hope it works in the end.
There appears to be a command to the MPU-6000 that disables the I2C interface. Funny story: I copied code for the MPU-6000 from another project that used SPI instead of I2C, and did not remove that particular command. The MPU-6000, after initialization, stopped responding to its own address on the I2C bus and caused me to suspect a bad sensor... In a panic, I used a heat gun to remove the chip (and melting a nearby JST connector housing). Then I realized my stupid mistake after replacing it with a new chip and did an I2C address scan.
Funny thing about the low battery detection... The battery voltage would appear fine, but if the battery is drained and all four motors energize, the internal resistance of the battery combined with the sudden massive current draw might actually cause the voltage to drop so low such that the microcontroller resets. This sort of makes the low battery detection feature useless on the quadcopter circuit.