Lisa/M v2.0

From PaparazziUAV
Jump to navigation Jump to search
Lisa/M V2.0 top view

Lisa/M is a small, general purpose autopilot designed with flexibility across multiple applications in mind. Small weight and size, with (optional) integrated Aspirin IMU and full size 0.1" servo headers make the Lisa/M suitable for both fixed-wing and rotorcraft vehicles. This autopilot is based on the STM32 for improved peripherals and faster processing.

A number of tutorials are being prepared for getting started with Lisa/M:

Hardware Revision History

Version # Release Date Release Notes
v2.0(current) 03/2012 Updated Production Release
v1.1 MM/YYYY Updated Prototype
v1.0 MM/YYYY Initial Production Release
v0.1 MM/YYYY Initial prototype of Lisa/M

For detailed hardware revision history, please see below.

Features

Lisa/M is based on the 64 pins STM32F105RCT6 connectivity line family processor featuring 64k of RAM and 256k of FLASH. All the pins are exposed, providing access to the complete set of the STM32 peripherals. NOTE: This MCU is different from LISA/L. Lisa/L is based on the 64 pins STM32F103RE processor featuring 64k of RAM and 512k of FLASH, which is part of the high-density performance line family.

  • STM32 microcontroller STM32F105RCT6 datasheet with 256kB flash and 64kB RAM
  • Pressure sensor BMP085 (optional as of 08/2012)
  • 7 x Analog input channels
  • 3 x Generic digital in-/out-puts
  • 2 x 3.3V TTL UART (5V tolerant)
  • 8 x Servo PPM outputs (6 w/ second I2C bus in use)
  • 1 x CAN bus
  • 1 x SPI bus
  • 1 x I2C bus (2 x when using only the first 6 Servo PPM outputs)
  • 1 x Micro USB
  • 4 x status LEDs with attached test point
  • 10.8 grams (0.4 oz) (with Aspirin IMU mounted)
  • 9.9 grams (0.35 oz) (without Aspirin IMU mounted)
  • ~34mm x ~60mm x ~10mm
  • 4 layers PCB design

With mounted Aspirin IMU has the following additional sensors on board:

  • 3 Axis Gyroscope
  • 3 Axis Accelerometer
  • 3 Axis Magnetometer
  • Barometer (as of Aspirin v2.1r1)

Lisa/M has pads for the BMP085 pressure sensor. Boards made before August 2012 had the BMP085 sensor mounted. Boards made after August 2012 do not have the sensor mounted as they are designed to be used with Aspirin 2.1r1 which has the new MS5611-01BA03 barometric pressure sensor.

The drivers for the MS5611-01BA03 are work in progress and will be available in the master branch of the Paparazzi codebase soon. All help with testing and improving the driver are very welcome!

So, except for a GPS unit you have all necessary sensors for full attitude and altitude stabilization in an extremely small package.

Pinout

Pins Name and Type are specified with respect to the Autopilot Board.

LisaM V2 0 top labeled.png LisaM warning label.png

SERVO1/2/3/4/5/6/7/8
Pin # Name Type Description Color
1 SERVOx OUT Servo signal (PWM)(See Note 1 below) Yellow
2 SV PWR Servo Bus Voltage Rail (conf w/ JP1) Red
3 GND PWR common ground Black


JTAG
Pin # Name Type Description Color
1 N/A N/A JTAG Debug Header (Pin 1 is +3V3) None


UART3
Pin # Name Type Description Color
1 GND PWR common ground Black
2 V_IN PWR UART Voltage (conf w/ JP6 and JP7) Red
3 TX OUT USART3 Serial Output (3.3V level) Yellow
4 RX IN USART3 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant) Orange


UART1/5
Pin # Name Type Description Color
1 GND PWR common ground Black
2 +3V3 PWR 3.3V Rail from autopilot (conf w/ JP8 and JP9) Red
3 RX1 IN USART1 Serial Input (3.3V level)(Pullup to Pin 2 voltage)(5V tolerant) Orange
4 GND PWR common ground Black
5 +3V3 PWR 3.3V Rail from autopilot (conf w/ JP8 and JP9) Red
6 RX5 IN UART5 Serial Input (3.3V level)(Pullup to Pin 5 voltage)(5V tolerant) Orange


GPIO
Pin # Name Type Description Color
1 GND PWR common ground Black
2 +3V3 PWR 3.3V Rail from autopilot Red
4 PC12 I/O GPIO, connected to PC12 (5V tolerant) Dark Tan
5 TRST I/O JTAG_TRST (also connected to LED1 cathode) Light Tan


ANALOG2
Pin # Name Type Description Color
1 GND PWR common ground Black
2 +3V3 PWR 3.3V Rail from autopilot Red
3 +5V PWR 5V Rail from autopilot Red
4 ADC4 I/O by default connected to LED_4 cathode (Remove LED/resistor to use as ADC4) Magenta
5 ADC6 I/O by default connected to LED_3 cathode (Remove LED/resistor to use as ADC6) Pink
6 BOOT0 I/O BOOT0 Grey


USB
Pin # Name Type Description Color
1 N/A N/A USB (The USB connections are also available as 0.05" (1.27mm) through hole pads underneath the GPIO header) None


I2C1 CAN
Pin # Name Type Description Color
1 GND PWR common ground Black
2 V_BATT PWR V_BAT Bus on autopilot, voltage divider for V_BAT_MEAS, (conf w/ JP2 to connect to V_IN) Red
3 V_IN PWR Connected to autopilot voltage regulator inputs (conf w/ JP1, JP2 and JP3) Red
4 CANL I/O CANL (5V level) Orange
5 CANH I/O CANH (5V level) Yellow
6 SCL I/O SCL (5V level)(See Note 1 below) Green
7 SDA I/O SDA (5V level)(See Note 1 below) Blue


SPI1
Pin # Name Type Description Color
1 GND PWR common ground Black
2 +3V3 PWR 3.3V Rail from autopilot Red
3 MOSI Out MOSI Orange
4 MISO In MISO Yellow
5 SCK Out SCK Green
6 SS Out SS Blue
7 DRDY I/O DRDY Dark Tan


ANALOG1
Pin # Name Type Description Color
1 GND PWR common ground Black
2 +3V3 PWR 3.3V Rail from autopilot Red
3 +5V PWR 5V Rail from autopilot Red
4 ADC1 In ADC1 (or LED_6 if populated) Green
5 ADC2 In ADC2 (or LED_7 if populated) Blue
6 ADC3 In ADC3 (or LED_8 if populated) Light Tan


UART2
Pin # Name Type Description Color
1 GND PWR common ground Black
2 +3V3 PWR UART Voltage (conf w/ JP4 and JP5) Red
3 TX OUT USART2 Serial Output (3.3V level) Yellow
4 RX IN USART2 Serial Input (3.3V level)(NOT 5V TOLERANT)(Pullup to Pin 2 voltage) Orange


I2C2
Pin # Name Type Description Color
1 GND PWR common ground Black
2 +3V3 PWR 3.3V Rail from autopilot Red
3 SCL I/O SCL (3.3V level) Green
4 SDA I/O SDA (3.3V level) Blue


NOTE 1: SERVO7 and SERVO8 are directly connected to I2C1_SCL and I2C1_SDA lines. There one has to choose, either use SERVO7 and SERVO8 OR the use second I2C bus (I2C1) if that one needs to be used for whatever reason. To use the servos 7 and 8 just set the define USE_SERVOS_7AND8 in your airframe file and you are good to go.

LEDs

Lisa/M 2.0 has 5 LEDS (+1 power LED). There are 3 additional LEDs (LED_6, LED_7, LED_8) that are not populated by default (in favor of using ADC1-3 on the ANALOG1 connector). By default the LEDs are use for:

LED_1, red
SYS_TIME_LED: blinks with 1Hz
LED_2, green
AHRS_ALIGNER_LED: blinks until the AHRS is aligned (gyro bias initilalized) and then stays on
LED_3, green
GPS_LED: blinking if trying to get a fix, on if 3D fix
LED_4, red
RADIO_CONTROL_LED: on if RC signal is ok
LED_5, green
not set to anything by default

Jumper Configuration

There are a number of jumpers on Lisa/M used to configure voltage levels and power input.

The default configuration is UART3 VCC at V_IN, UART1/2/5 VCC at +3V3, with the V_SERVO servo voltage rail NOT connected to the autopilot V_IN rail, allowing one to power the autopilot and servos separately. The +5V regulator is NOT bypassed, allowing a regulated +5V on listed headers and for the CAN transceiver and I2C level shifter. The V_BAT connector is NOT connected to V_IN, so one can attach a battery voltage to the V_BAT pin to measure the battery voltage, if so desired.


Power Jumper Configuration
Jumper Bus Connection Default Description
JP1 SERVO_BUS to V_IN OPEN Connects servo header voltage rail SERVO_BUS to autopilot input voltage V_IN rail
JP2 V_BAT to V_IN OPEN Connects I2C1/CAN rail V_BAT to autopilot input voltage V_IN rail
JP3 V_IN to +5V OPEN Connects autopilot input voltage V_IN rail to autopilot +5V rail, bypassing onboard 5V supply


UART3 VCC Configuration
Jumper Bus Connection Default Description
JP6 UART3_VCC to V_IN CLOSED Connects UART3 connector VCC to autopilot input voltage V_IN rail
JP7 UART3_VCC to +3V3 OPEN Connects UART3 connector VCC to autopilot +3V3 rail

WARNING: UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting!!!

WARNING: DO NOT CLOSE BOTH JP6 AND JP7 SIMULTANEOUSLY!!!


UART2 VCC Configuration
Jumper Bus Connection Default Description
JP4 UART2_VCC to V_IN OPEN Connects UART2 connector VCC to autopilot input voltage V_IN rail SEE WARNING BELOW
JP5 UART2_VCC to +3V3 CLOSED Connects UART2 connector VCC to autopilot +3V3 rail

WARNING: UART2 RX is NOT 5V TOLERANT. Thus, while possible to connect UART2_VCC to V_IN, DO NOT ATTEMPT THIS. Only use JP5 (the default).

WARNING: DO NOT CLOSE BOTH JP4 AND JP5 SIMULTANEOUSLY!!!


UART1 and UART5 VCC Configuration
Jumper Bus Connection Default Description
JP8 UART1&5_VCC to V_IN OPEN Connects UART1 and UART5 connector VCC to autopilot input voltage V_IN rail
JP9 UART1&5_VCC to +3V3 CLOSED Connects UART1 and UART5 connector VCC to autopilot +3V3 rail

WARNING: DO NOT CLOSE BOTH JP8 AND JP9 SIMULTANEOUSLY!!!

There are additional jumpers on the board for expert or developer configurations, please see schematic and layout for more information.

Powering the Board

LisaM warning label.png

The 3.3V regulator on Lisa/M is a MIC5209-3.3YM capable of delivering up to 500mA. While it is possible to power this regulator with up to 16V, DO NOT do this. By default, the UART3 RX pin is pulled up to the input voltage V_IN. For this reason, 5V is the maximum input voltage. Note that the UART3 GPS Connector is connected to V_IN, check your GPS input voltage before connecting. If one desires to have V_IN at a higher voltage, the jumpers should be adjusted accordingly. As noted, this regulator can handle up to 16V, though experience has shown that this regulator can become very hot in operation with high input voltages, resulting in potential thermal shutdown while in flight. Depending on the expected current draw, it is best to power this regulator with a lower voltage. 5V is the perfect choice.

The onboard 5V regulator on Lisa/M is a LP2992, a low-noise, low-dropout linear regulator capable of delivering up to 250mA. This regulator can be bypassed with JP3, connecting the autopilot V_IN bus directly to the autopilot 5V bus if, for example, one is using an external 5V regulated supply, and a higher current is needed. Unless external use of 5V is required on the ANALOG1 and ANALOG2 headers, the only 5V usage onboard is for the CAN transceiver and the I2C1 level shifter.

When measuring the supply voltage of a battery with the V_BAT pin (could be connected to V_IN through JP2), it is important to note the maximum voltage limit. The voltage divider on the board for measuring with a 3.3V ADC is --V_BAT--/\/\10k/\/\--V_BAT_MEAS--/\/\2k2/\/\--GND--. This means that the maximum allowable voltage on V_BAT is

If a higher voltage measurement is desired, another voltage divider is required off-board. Alternatively, one could modify the existing voltage divider (e.g. change 10k resistor to 22k to get 33V maximum). When checking if voltage exceeds the maximum, make sure to consider maximum battery voltage, not nominal voltage (e.g. 4.22V or so for a single lithium cell, not 3.7V nominal, so the maximum number of cells in series is 3, like a 3S LiPo pack).

Schematic


Examples of Airborne Equipment Electrical Connections

Quadrocopter, Spektrum Satellite Receivers and PWM Motor Controllers (ESC)

LisaM v2 0 wiring quadrocopter spektrum pwmesc.png

When using cheap ATMega or SiLabs-based PWM motor controllers consider replacing their firmware with either Simon Kirby or BLHeli firmware respectively to get useful performance of your multicopter! You can find a firmware compatibility list here.

Quadrocopter, Spektrum Satellite Receivers and I2C Motor Controllers (ESC)

LisaM V2 0 quadrocopter spektrum i2c esc wiring.png

This diagram "should" be the same for AscTec as well as Mikrokopter motor controller based airframes.

Fixedwing, Spektrum Satellite Receivers and Elevons Only

LisaM V2 0 wiring fixedwing spektrum elevons.png

Fixedwing, Spektrum Satellite Receivers

LisaM V2 0 wiring fixedwing spektrum.png

Transitioning Quadshot Using Spektrum Receivers

LisaM V2 0 wiring quadshot spektrum.png


Still need: Large Fixed-wing with advanced power system and/or IC engine, PPM example

R/C Receivers

One can use traditional PPM receivers as wel as Spektrum DSM2 or compatible receivers for flying your aircraft in manual mode during setup and test phase. The Lisa M can direcly connect to a Spectrum DSM2 satellite receiver. It is even possible to connect two satellite receivers for better redundancy or RC reception. It is

Bind your Spectrum DSM receiver

It is important to bind your receiver with your transmitter via your Lisa board, not in any other way. The way to do this is via fiddly small molex pins

Before you start make sure you have your airframe configuration already uploaded either via USB or a JTAG cable

  • On the connector ANALOG1 have a wire between the GND pin ADC1, located in the middle of the board
  • Power up your autopilot board
  • Hold the bind button on your transmitter, while keeping it pressed switch on your transmitter
  • Wait.. all light of receiver blink then go steady
  • Let go of your transmitter bind button
  • Power off your Lisa Board
  • remove the wire between GND and ADC1 pins
  • Repower your board, if you have servos connected and wiggle the RC transmitter sticks some sould move

That all, you are done. Only needs to be done once for your receiver.

Extra Input

Also UART pins can be used as general purpose I/O to be used for PPM input. By default connect your PPM out able receiver to servo pin 6. If you do not have or cannot create a PPM out able receiver, additionally a PPM encoder board can be used to avoid receiver hardware modification.

PCB

Gerber & Drill Files

Download Lisa/M v2.0 gerber & drill files (zip) NOT YET AVAILABLE BUT SEE Downloads Need some generated gerbers and drill files here.

Assembly

Components Layout

NOT YET AVAILABLE BUT SEE Downloads Need some top and bottom of board images and line drawings here.

Bill Of Material

Download Lisa/M v2.0 Bill Of Material (zipped .xls file) NOT YET AVAILABLE BUT SEE Downloads

PCB and assembled boards suppliers

Available on Get Hardware page, hopefully :)


Mechanical Dimensions

Lisa/M v2.0 Mechanical Dimensions

The overall height of the board including the servo connectors is 10mm. Note that the overall length includes the USB connector. The mounting holes are nominal 2mm diameter (with a bit of clearance).

Downloads

Source files

Gerber & Drill files

  • download NOT YET AVAILABLE Need generated gerbers and drill files

Assembly files

  • download NOT YET AVAILABLE Need Lisa/M v2.0 Components layouts (pdf)
  • download NOT YET AVAILABLE Need Lisa/M v2.0 Bill Of Material

Uploading new software

New onboard software for the Lisa/M v2.0 can uploaded by connecting your PC via a micro-USB port to the autopilot board. For this the board need to contain a "luftboot" bootloader. All Lisa/M 2.0 from Transition Robotics Inc. come with luftboot already in the board.

An alternative to get your software/flightplane in the board is by using a JTAG connector connected via the 10-pin Samtec connector that is available on the board.

Using luftboot

First make sure you update to the latest stable Paparazzi version, then you will have support for this bootloader method. By default use the associated DFU loader to program the firmware. Make sure that your airframe file is set to use Lisa/M 2.0 as it's target board.

Currently Paparazzi firmware does not contain the needed software to switch into bootloader mode using software only by USB. To circumvent this shortcoming, you need a small cable to force the bootloader to run. This cable should bridge pin GND and ADC2. Make sure you do not shortcircuit your board.

Once your "Boot mode connector" is inserted, connect the Lisa/M to the PC via a micro-usb cable and it should start in bootloader mode. If the status LEDs cycle up and down, it is in booatloader mode, ready to receive your new flightplan and autopilot control software upgdate.

Note that all of this won't be necessary in the future once a working USB stack stub is added to the latest Paparazzi.

Luftboot.gif

You should disconnect the "Boot mode connector" after enforcing the bootloader. Pressing upload in the Paparazzi Center should now upload new code onto the board.

In the rare case you somehow have removed the luftboot bootloader, you can re-insert this Boatloader by following the instructions of Uploading the Paparazzi USB Bootloader

Uploading the Paparazzi USB Bootloader

Reading or performing these steps is not needed if you got your Lisa/M 2.0 from Transition Robotics Inc., these boards come with luftboot already preloaded. But in the case you made a board yourself or somehow do not have a preloaded bootloader, or it is gone because of unknown cause, then read this section. It describes the process on how to upload/recover the luftboot bootloader on your Lisa/M 2.0.

Luftboot is a Paparazzi-compatible bootloader for STM32-based autopilots. Depending on your vendor, your Lisa/M may already come with a bootloader, in which case you should skip to Lisa/M#Uploading new software

Required components

  • Floss-JTAG debugger or Blacksphere mini JTAG
  • Lisa/M board
  • PC

Procedure

  1. Get the Luftboot sourcecode from Github via
    git clone https://github.com/paparazzi/luftboot.git
    
  2. Change directory into the luftboot/src folder
    cd ./luftboot/src
    
  3. Build luftboot
    make clean && make
    
  4. Flash the Lisa/M Attach the floss-jtag unit to the PC and connect it to the Lisa/M via the black connector. Power the Lisa/M (easiest way is to connect to the PC via a micro-USB cable).
    make flash DEV_SERIAL="LM2-ser"
    

    where "ser" stands for the serial number of your Lisa/M. So for example if you have lisa/m with the serial number 020 this would be:

    make clean && make flash DEV_SERIAL="LM2-020"
    

Connection Diagram

Boot Sequence

  • Luftboot
    • Check if ADC2 is configured as output pull down indicating software bootloader request
      • If ADC2 output pull down: initialize usb and stay in bootloader mode
    • Setting the ADC2 pin to input pull up
    • Checking if the ADC2 pin is low
      • If ADC2 low: initialize USB and stay in bootloader mode
      • If ADC2 high: check if there is a payload at 0x8002000
        • If payload detected: set vector table pointer to be at 0x8002000 and jump to the reset handler of the payload
        • If payload not detected: initialize USB and stay in bootloader mode

Luftboot USB permissions

Copy the udev-rules file is needed for the upload software to get permission to use this hardware in your PC for uploading. For short: the Python program "stm32_mem.py" needs permission to write to the the Luftboot USB device. If you do not have set this rules already you get an error message, which explanation what is wrong is quite obscure due to the way python-libusb accesses the device.

Using JTAG

If you are using the Lisa/M 2.0 target board you still can use JTAG for programming and debugging your paparazzi firmware. To use JTAG flashing configure the FLASH_MODE in your firmware section:

<configure name="FLASH_MODE" value="JTAG"/>

Using JTAG will not overwrite the bootloader by default. To overwrite the luftboot bootloader configure

<configure name="NO_LUFTBOOT" value="1"/>

Quick JTAG Upload Guide

  1. Connect floss-jtag to Lisa via the cortex cable (little black socket)
  2. Attach the UART port on the bottom of the floss-jtag to UART2 on the Lisa.
  3. Plug in USB port of the floss jtag
  4. Plug in USB port of the Lisa
  5. Make sure your airframe uses the <target name="ap" board="lisa_m_2.0"> definition
  6. Click Build, wait until complete, then click Upload. You should see the following towards the end:

{{{ ... Info : device id = 0x10016418 Info : flash size = 256kbytes stm32x mass erase complete Info : Padding image section 1 with 7972 bytes wrote 152576 bytes from file src/paparazzi/var/Hexa_LisaL/ap/ap.elf in 7.498179s (19.871 KiB/s) Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) Info : JTAG tap: stm32.bs tap/device found: 0x06418041 (mfg: 0x020, part: 0x6418, ver: 0x0) shutdown command invoked }}}

  1. Run Flight USB-serial at the baud rate you need (default 57600 for rotorcraft)
  2. You may need to change the device to /dev/ttyUSB1, and 'Redo' the Data Link

Serial Firmware Upload

Firmware upload using the factory integrated bootloader can be useful e.g. if you have overwritten Luftboot accidentally and don´t have access to JTAG.

Due to hardware constraints, the board has to be modified to make use of the bootloader, which is only accessible on UART1:

  1. Diode D3 has to be removed (the bigger black brick next to the USB connector). Attention, no more powering via USB after that.
  2. BOOT1 has to be set to GND by connecting ACC_DRDY(unused) to GND at the Aspirin pads

Now a boot sequence works as follows:

  1. BOOT1 has to be set to 3.3V by use of a jumper cable
  2. Connect a 3,3V serial cable (FTDI, MAX232...) to UART1, the TX pin is USB_VBUS
  3. Power the board and activate the bootloader program

The according bootloader script can be found at : stm32loader from Github

git clone https://github.com/jsnyder/stm32loader.git

To reload Luftboot, upload luftboot.bin

Serial upload can also be used directly from paparazzi Center by adapting the right path in Makefile.stm32 for the LOADER argument and setting

<define name="FLASH_MODE" value="SERIAL"/>

in the target section of the airframe configuration.

Detailed Hardware Revision History

Changes Between LISA v1.1 and v2.0

  • Lots of silkscreen improvements
  • Added attributes to all parts to make the usage of bom-ex ulp possible.
  • Improved routing to allow teardropping
  • Fixed stm32f1, f2 and f4 compatibility circuit. (has to jump to ground not to 3v3)
  • Connected existing UART RX pullups to the respective connector power pins instead of 3v3. To prevent connecting 5V over IO pin to the 3v3 power rail.
  • Added pullups on all UART RX lines to prevent undesired floatation.
  • LED's are connected to 3v3 now. To make sure we don't have an issue with voltage tolerance on the gpio pins.
  • ...

Hardware Change Requests

If you have a Lisa/M 2.0 and in the process of using it you come up with something you find annoying, dangerous, or restricting, add your hardware update requests here. Better still, modify the Lisa schematics yourself and show your new improvements if you are skilled enough to do this.

  • REQ: Replace BMP085 with MS5611 (the MS5611 seems to be better in performance then the BMP but it is more expensive and seems to be more difficult to obtain.
    • A: Using a MS5611 is possible through using a Aspirin v2.1 board
  • REQ: Replace 7 Pin CAN with molex with something less risky to be inserted in 7 Pin SPI in relation to powering the board via CAN molex.
  • REQ: Separate spot for external power if powered via separate battery. Realizing we can via Servo ports by Bridge J1 but still like to measure board voltage then and have a way to add power without mistakenly inject CAN Molex into SPI. Thus a separate CAN and Power plug. Power on regular four pin molex with GND, V+5, , V_BATT, V_I (Current sense). Option to have thicker wire to be soldered to the board, for power hungry setups and other issues connectors for power are not a good idea.
  • REQ: Replace Aspirin IMU board with InvenSense MPU-9150 and bring the MS5611 back onto the Lisa/M board to reduce footprint, mass, and manufacturing cost once the 9150 becomes readily available.