Classix

Autopilots
__TOC__
The Classix autopilot was designed for advanced applications. Dual processors provide a true hardware segregation of critical code for reliability - allowing the user to run experimental navigation or payload control software without fear of a processor crash causing a total loss of control. A Gumstix header (NOTE: designed for older EOL Gumstix boards, the PXA255 based Gumstix Basix) is included so that the autopilot can be directly interfaced with this small onboard Linux PC for advanced video processing, sensor management, or sophisticated navigation routines such as sense-and-avoid or target following.
Very few Classix boards have been produced and are flying. The Classix is really just a developer's board, intended for very sophisticated payload applications. If you are looking for a bare LPC2148 board, the Olimex LPC-H2148 boards might be a good choice. 
== Classix Control Board ==
== Features ==
* Dual LPC2148 MCUs
* 14 ADC channels
* 2 UARTs
* 6 PWM outputs
* 2 R/C Receiver inputs
* 2 combined USB clients
* 2 SPI busses
* 2 I2C
* Connector to dock with a Gumstix board (NOTE: designed for older EOL Gumstix boards, the PXA255 based Gumstix Basix)
* 5V input
* 3.3V linear regulator & 3.7V linear regulator (for Gumstix)
* Audio (for data downlink without a modem)
* 2 LEDs (status display)
* 12 grams
* 89 x 30mm
The Classix Control Board use 2 Philips LPC2148 ARM7 based microcontroller.
The ARM7 is a low-power 32-bit RISC processor core and the Philips LPC2148 has 512KB on-chip Flash ROM, 40KB RAM and can be clocked at 60MHz.
With 2 MCUs this system is very robust, 1 MCU can handle all critical code, fly-by-wire and such, and the other can handle all autonomous processing. In the case of autonomous code error, the aircraft may be saved via manual control and the fbw MCU.
The ability to dock with a Gumstix board (NOTE: designed for older EOL Gumstix boards, the PXA255 based Gumstix Basix) would allow for image processing, heavy communications, or payload support.
== Architecture ==
== Pinout ==
# Note that FOO2 is used for PPM_in ...
== BOM ==
The materials list can be produced from the Eagle CAD files on the downloads page.
Jan 2008: Following list contains the digikey part numbers for the Classix board without the audio filter. If (for some reason I don't understand) no gumstix is needed some marked components can be skipped. cdewagter
Qty	Value 	Device 	Parts 	Digi-Key 	Special
2 	 	53047-03 	AUDIO, FBW_CON_RC 	WM1732-ND 	
2 	 	53047-04 	AP_CON_I2C, FBW_CON_I2C 	WM1733-ND 	
1 	 	53047-05 	X1 	WM1734-ND 	
3 	 	53047-06 	AP_CON_ANALOG0, CON_GPS, FBW_CON_ANALOG 	WM1735-ND 	
2 	 	53047-07 	CON_SPI0, CON_SPI1 	WM1736-ND 	
5 	 	53047-08 	AP_CON_ANALOG1, AP_CON_SERIAL, FBW_CON_PWM, FBW_CON_SERIAL, GUM_CON_SERIAL	WM1737-ND 	
3 	 	CPOL-EUA/3216-18R	C7, C18, C27 	399-3686-1-ND 	Gumstix: -1
2 	 	CPOL-EUB/3528-21R	C8, C13 	495-1677-1-ND 	Gumstix: -1
1 	 	D-SOD-80 	D1 	568-3411-2-ND 	Gumstix: -1
4 	 	LEDCHIP-LED0805 	LED1, LED2, LED3, LED4 	67-1636-1-ND 	
3 	1.5K 	R-EU_R0603 	R16, R19, R22 	311-1.5KGRCT-ND 	
4 	1K 	R-EU_R0603 	R23, R24, R25, R26 	311-1.0KGRCT-ND 	
1 	4.7K 	R-EU_R0603 	R8 	311-4.7KGRCT-ND 	
11 	10k 	R-EU_R0603 	R1, R2, R3, R4, R5, R6, R7, R27, R28, R20, R21 	311-10KGRCT-ND 	
4 	33R 	R-EU_R0603 	R14, R15, R17, R18 	311-33GRCT-ND 	
6 	18pF 	C-EUC0603 	C28, C29, C30, C31, C32, C33 	399-1052-1-ND 	
2 	22pF 	C-EUC0603 	C15, C16 	399-1053-1-ND 	
15 	100nF 	C-EUC0603 	C1, C2, C3, C4, C5, C6, C9, C10, C11, C12, C14, C17, C19, C20, C21, C22 	399-5089-1-ND 		Gumstix: -1
1 	HIROSE60 	BASIXGUMSTIX 	U$17 	H5204CT-ND 	Gumstix: -1
1 	CRYSTAL_CTS	CRYSTAL_CTS 	U$20 	CTX639CT-ND 	
2 	DDTA143 	MUN2111T1 	Q1, Q2 	DDTA143ZCADICT-ND	
2 	LPC2148 	LPC2148 	AP, FBW 	568-1765-ND 	
2 	REG1117 	REG1117 	IC1, IC2 	LM1117MP-3.3CT-ND		Gumstix: -1
== Assembly == 
Here are a few observation from my Classix assembly/programming (see Tiny_Assembly for more info): 
* check the polarity of all parts, compare to a picture of a working reference board
* use a microscope or a magnifying glass to check for short circuits
* use a power supply for first tests, not a battery, limit the current to about 100mA, use a voltage of about 5V
* the 5V should not drop due to current limiting, measure the 3.7V and the 3.3V supply on the board
-> wrong voltages: check the parts around the power supply
* measure the current, it should be around 40mA at 5V with the LPC running and no code loaded 
* attach one reset to GND, current should reduce to 30mA at 5V
-> check if reset signal can be measured at the LPC reset pin 57
* check the 12MHz at LPC pin 61, XTAL2 (XTAL_out)
* connect TXD and RXD of either AP_Serial or FBW_Serial to the serial port of your PC through a 3.3V-USB-RS232 converter (LPC_TXD_0 - PC_RX, LPC_RX_0 - PC_TX), attach LPC_P0.14 to ground or connect to a pushbutton and reset the board
* run the serial ROM loader lpc21isp to flash USB bootloader with
 make upload_bl PROC=GENERIC
-> check the rx/tx pins for data if flashing does not succeed
* deattach the LPC_P0.14, reset the board, current should be around 160 mA @ 5V when both AP and FWB are programmed
* the USB bootloader outputs debug information with 115200 8N1 on the serial port
 picocom -b 115200 /dev/ttyUSB0
* connect USB+ (D+), USB- (D-), and GND of AP or FBW with your PC, reset the board. Note that there is no connection to P0.23 on the Classix v0.99 and thus you will get a "Broken Pipe" error at the end of the programming. Furthermore, if you don't always connect it to ground, the code won't always start after a reset! 
* the PC will detect a new USB device, check with "dmesg" and "lsusb" - they should both show a USB device with VID/PID 7070:1234
-> if a new USB device is detected but does not accept new address, the USBconnect worked, but not the communication, check USB+ and USB-
* flash the autopilot with
 make AIRCRAFT=myplane clean_ac ap.upload
 (where myplane is the name of your airframe as defined in conf/conf.xml... Try with AIRCRAFT=TJ1 if you don't know what to use)
* check telemetry through serial port, messages should be displayed
* test A/D converters for supply voltage and IR sensors
* check modem, connect tx, rx, gnd and supply
* try to aquire sats outside
== TODO ==
As noted in the IRC channel the clasix lacks certain "conveniences" of the tiny
* No onboard CD4015B for a servo driver
* No onboard 5V VR 2A VR for Servos
* No onboard GPS
* No connection to P0.23... result in random behavior of the USB Bootloader and a "Broken Pipe" error message when programming, even if the programming is successfull! 
The above being said , the first 2 items should be easily fixed by modifying the schematic(s) for the classix and regenerating the board layout in eagle(adding the necessary lines etc) or generating a servo driver and 5v VR board to interface with the classix for now till the above is completed. The last one is clearly a bug! 
* To solve this bug one needs to connect the LPC2148's pin nr 58 (P0.23) using a resistor bridge (say; 4.7k / 10k to reduce the usb 5V below 3.3V) to the serial connector which pulls the P0.23 pin up when in programming mode and to the ground when no USB is connected. The only pin on the serial connector that is not strictly required at some stage is the reset pin. (Remove power supply also resets) So it is suggested to convert the reset pins on the serial connector to P0.23 pins for USB programming. With 5V on this pin from USB during power-up the classix will be in programming mode, otherwise it will ALWAYS boot instantly. cdewagter ( or flash a bootloader which uses another pin ... make bl PROC=[TINY|FBW|AP|GENERIC] )poine
thumb|Classix Modification to solve startup/programming issues
Category:Autopilots Category:User_Documentation