Code Monkey home page Code Monkey logo

argo2-tracker's Introduction

Argo 2 Tracker

High Altitude Balloon tracker designed for the Argo 2 launch by the Near Space Program at the International School of Panama.

Tracker transmits temperature, pressure and humidity data, as well as location coordinates and other status information.

The GroundStation program shows any data received, along with signal strength and CRC checking. It can also upload new data to the online tracker at HabHub.

Included are the PCB schematics (made in Eagle CAD) and software of the tracker and receiver, as well as the Ground Station program which runs on the tracking computer.

The software for the tracker and receiver is written in Arduino / C++, while the Ground Station written in Python.

Table of Contents

Parts and Components

Tracker:

Receiver:

Installation

To download the files in this repository run:

git clone https://github.com/manterolat/argo2-tracker.git

Tracker:

Software

  • Arduino IDE (1.6.0 and above should work)
  • If using Teensy 3.x: Install Teensyduino (tested with Teensyduino 1.29)
  • If using Feather M0: follow these instructions

Arduino Libraries

Receiver:

Software

Arduino Libraries

Ground Station:

GroundStation runs on Python 2.7, and requires the following modules:

  • crcmod for CRC checking
  • pyqrcode for generating QR codes
  • pyserial for serial communication

To install these (using pip) run:

pip install crcmod pyqrcode pyserial

Usage

After setting up the software and libary requirements you should be able to upload the tracker and receiver programs, as well as run the Ground Station.

Tracker:

Open /src/Argo2_Tracker/Argo2_Tracker.ino in the Arduino IDE.

Before compiling and uploading to the Feather/Teensy make sure to configure the tracker by changing the following lines in the program:

// Tracker callsign: change to your tracker's callsign
#define CALLSIGN "CHANGE_ME"

// Debug messages: uncomment the following line to enable printing to serial (for testing purposes)
//#define DEBUG

...

// Select either Teensy 3.x or Feather M0
#define TEENSY
//#define FEATHER

Leaving #define DEBUG uncommented will compile the Serial messages, which takes up space and cycles in the microcontroller.

Finally, select the board type and serial port in the Arduino IDE and upload.

Receiver:

Open Argo2_Receiver.ino with the Arduino IDE, then select the Feather M0 from the boards list and upload.

Ground Station:

If running on macOS with Python 2 installed manually, double-clicking GroundStation.py should start the program.

Otherwise, open a terminal in the argo2-tracker directory and run:

cd GroundStation
python GroundStation.py

The program will keep a log in the form of files: GroundStation.log and sentences.log.

Caution: Don't toggle the Online checkbox until you have setup your tracker on HabHub and are ready to launch/test.

Testing

Things to keep in mind before launch:

  • Cut the thermocouple cable as short as possible while keeping a small piece outside. We found that this reduced interference and/or resistance in the cable and improved the accuracy of measurements.
  • For the BME280 (pressure and humidity sensor) it's best to use cables and place the module on the outside of the capsule.
  • If placing the BME280 outside, cover the sensor with a small piece of cotton/fabric using tape in order to block wind which could affect measurements.

Only the Adafruit Feather M0 configuration (without thermocouple sensor) has being tested so far. Since then there have been a few changes to the tracker and receiver programs (mostly changing Serial.println to Snprintln).

The tracker also can't use the BME280 through SPI at the same time as the RFM95W radio due to SPI Transaction issues with the RadioHead library. For this reason, to use the BME280 you will need to connect the SCL and SDA pins of the BME280 to those of the Feather externally to use I2C instead (soldering wires externally).

Printed Circuit Boards

Both of these boards can be used with headers (for removable/replaceable components), or with the components soldered directly unto the board. I recommend the first method.

If using headers note that the RFM95W module needs 2.0mm headers, instead of regular 2.54mm headers.

The PCBs used in the Argo 2 launch were printed by OSH Park and functioned perfectly.

Tracker:

Note that there is an issue with the buzzer MOSFET and its connections at the moment. If you plan to use this board with a buzzer, you will have to either fix the MOSFET connections or connect the components separately.

Receiver:

This board supports the use of a PCB to SMA adapter if needed.

Launches

April 23, 2016: (Argo-2)

We launched the Argo 2 capsule on April 23, 2016 using the Feather M0 setup without the thermocouple (due to SPI issues). We received data throughout most of flight, which reached 33 km altitude, and used HabHub to follow the capsule. Unfortunately, the capsule landed in a mountainous area that made recovery impossible.

The data revealed an average vertical speed of 2.3 m/s (very low) and an estimated flight time of 295 minutes.

November 28, 2016: (CP-1)

We launched the CP-1 capsule on November 28, 2016, and succesfully recovered it! GoPro camera took many photos throughout the mission.

The capsule rose to around 33 km at an average vertical speed of 4.5 m/s. The mission lasted 149 minutes.

June 4, 2017: (CP-2)

Another successfull recovery with the same setup!

The capsule rose to around 27 km at an average vertical speed of 5.5 m/s. The mission lasted 136 minutes.

In the future, the NSP team will be using the Pi in the Sky board due to its widespread support and easy configurability. I wish them the best of luck in future launches!

argo2-tracker's People

Contributors

manterolat avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

ispnearspace

argo2-tracker's Issues

Pin assignment for Teensy with Feather adapter incorrect

The Teensy 3.x to Feather adapter changes many of the pin numbers used by the sensors/radio. The current tracker program doesn't use these new pins if the Teensy is being used, meaning that it can't communicate with the sensors and radio.

Fixing this involves defining pins differently depending on whether the Feather or Teensy is being used.

BME280 using I2C instead of SPI in Teensy tracker

Tracker program initializes BME280 sensor through I2C rather than SPI when using Teensy.

The tracker PCB connects pins required for SPI to the BME280, not the I2C SCL and SDA pins.
This means that all tracker programs since the initial commit will fail to initialize the BME280 and stop execution.

Can be fixed by changing the Adafruit BME280 library initialization/constructor to use SPI.

I2C Initialization (won't work without external wiring):

Adafruit_BME280 bme;

SPI Initialization (works with Teensy, not Feather M0):

Adafruit_BME280 bme(BME_CS);

Note: the Feather M0 has problems with SPI Transactions, meaning that the BME280 has to be connected externally through I2C. Another solution would be to add Cortex M0 support to the RadioHead library (SPI Transactions version).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.