Difference between revisions of "Flight Computer"

From Makers Local 256
Jump to: navigation, search
m (Knowledge Points: updated status)
m (added tutorial link)
Line 61: Line 61:
**  Accelerometer
**  Accelerometer
**  Roll Measurements
**  Roll Measurements
* GPS [http://learn.adafruit.com/adafruit-ultimate-gps/overview Tutorial]
* Parachute deployment
* Parachute deployment
* Telemetry
* Telemetry

Revision as of 20:32, 22 August 2013

Born On:
22:03, 18 November 2010 (CST)
Last Updated:
20:32, 22 August 2013 (CDT)


This is a flight computer meant to go into a rocket. It is based on an Arduino micro-controller and will eventually be quite fancy.

Current Status

Spiral 1 - DONE

Spriral 2b - Testing

Spiral 3 - Design/Implementation

Spriral 4 - DONE

I have acquired an Arduino Uno board and just ordered two pressure sensors (so I can break one by accident later). The idea is to use a spiral development model to incrementally increase the features and capabilities of this flight computer.

See the Future Design Section below for the breakdown of the spirals.

Current Design


Arduino Pin Assignments

These are the pin assignments currently being used on the Duemilanove Board (with the Wireless SD Shield):

  • D0: Hardware Serial Rx (Diagnostics)
  • D1: Hardware Serial Tx (Diagnostics)
  • D2: Status LED
  • D3: XBee Rx
  • D4: SD Chip Select (SDCS)
  • D5: XBee Tx
  • D6: SCP1000 Data Ready (DRDY)
  • D7: SCP1000 Clock
  • D8: SCP1000 Data Out (MOSI)
  • D9: SCP1000 Data In (MISO)
  • D10: SCP1000 Chip Select (CSB)
  • D11: SD Card Interface (SPI)
  • D12: SD Card Interface (SPI)
  • D13: SD Card Interface (SPI)


I finally found a sample code that does not give me garbage results. The pressure seems to be fairly realistic, although a bit on the low side. Right now I'm getting a pressure reading of 99kPa which is a little low. However my temperature is reading 40C at room temperature. Putting the sensor and Arduino into a freezer I saw the temperature drop by approximately 40C, as expected, so this might just be an offset issue. More testing is necessary to figure out the issue.

Update 1: After long hours/days/months and lots of pain, I found several problems. First, the SPI pins on the Arduino operate at 5V and the SCP1000 requires 3.3V (per its spec). Oops. Second, this sensor conflicts with other SPI devices (including the SD card on the wireless shield). I'll eventually post the schematic, but what I had to do was use a combination of transistors, resistors and inverters to pull the SPI voltage down to 3.3V.

The code was also modified to use a different set of pins. Essentially it takes temperature and pressure data from the sensor and writes them to a text file (along with a time stamp) to the SD card.

A copy of the working code can be found here.

The original inspiration/tutorial is located here and the basis for this code is here.

Future Design


  • Atmospheric Modeling
  • Inertial Measurements
    • Accelerometer
    • Roll Measurements
  • GPS Tutorial
  • Parachute deployment
  • Telemetry
  • Control via Bluetooth/Wifi

Knowledge Points

  • Data Logging - DONE
  • Communication with a ground station (telemetry) - DONE
  • Communication with a cell phone controller
  • GPS
  • Flight state sensing - Testing
  • Control Algorithms
  • Simulation Platform

Spiral Details

  • Spiral 1 (DONE):
    • Make atmospheric measurements by recording the static pressure and converting it to an associated altitude measurement
    • The SCP1000 Pressure sensor also measures temperature so this improves the accuracy of the measurement
  • Spiral 2:
    • Spirals 2a and 2b can be done concurrently and I have not prioritised these
    • Spiral 2a:
    • Spiral 2b:
      • Use the altitude measurement (and the IMU measurement) to trigger other events based on the different stages of flight
      • This includes deploying the drogue parachute at apogee and the main parachute at some present height above ground (typically 500 ft to 700 ft)
  • Spiral 3:
    • Add GPS measurements into the mix.
  • Spiral 4 (DONE):
    • Telemetry. This will be the hardest step as I know the least about RF.
  • Spiral 5:
    • Remote status, arming, etc.
    • I want to implement this in Android such that the remote for this functionality is a cell-phone but the general idea is to make is as easy and portable as possible so several different platforms will be looked at (Blackberry, iOS, Palm). (Reminder to self: this is a good place to learn C++ and Android programming)
  • Spiral 6:
    • Multi-stage/Multi-controller operation (see this link for RF communication between Arduinos)
    • Things I haven't thought of yet.