UKHAS Wiki

UK High Altitude Society

User Tools

Site Tools


projects:jimbob:promini

Tracker $$ProM

This is a document describing my second Near Space Balloon Tracker, now known as “ProMini”.

Any questions you can get in touch with me at kevin at unseen dot org.

Hardware

Arduino Pro Mini

The module I purchased is a clone of the original Arduino Pro Mini and has a few slight changes. It is closest to this Sparkfun product, with a voltage regulator settable to 3.3v or 5v.

SparkFun LiPower Boost Converter

The SparkFun LiPower Boost Converter allows me to use batteries producing less than 3.3v and boost the voltage to the required level.

As supplied the device has a low voltage cut out configured of 2.6v, designed for LiPoly cells. For primary cells we need to remove this by shorting R3 as described here.

The device is also supplied configured for 5v, we need 3.3v, so need to modify the solder jumper.

The data sheet for the IC is here. This shows the IC producing a maximum of 200ma (more than enough for us) at around 0.8v (about the minimum voltage from a single AAA cell before it is totally exhausted).

RFM22B Radio Module

The UKHAS Guide to the RFM22b is here

The Hope FM Mfg product page, with links to application notes is: here Pinout Diagrams are on page 61.

Note Frequency range legally available is 434.04MHz - 434.79MHz according to IR2030.

Now using radio1.write(0x73,0x03); High and radio1.write(0x73,0x00); Low in rtty_txbit, gives a much tighter signal. Detailed here: http://ava.upuaut.net/?p=408 Thanks to Dave Akerman suggested (as recommended by Navrac)

Assembled uBLOX MAX-6 Pico Breakout with Chip Scale Antenna

This is a pre-assembled pcb including the Max-6 GPS & Chip antenna. Just 4 connects are available - VCC, GND and RX & TX.

Connections

  • SparkFun LiPower Boost Converter, GND → Arduino Pro Mini, GND
  • SparkFun LiPower Boost Converter, VCC → Arduino Pro Mini, VCC
  • SparkFun LiPower Boost Converter, VBatt → Arduino Pro Mini, A0 (to measure true battery voltage)
  • Arduino Pro Mini, GND → RFM22B, GND (ground in)
  • Arduino Pro Mini, Pin D3 → RFM22B, SDN (shutdown in)
  • Arduino Pro Mini, VCC → RFM22B, VCC (3.3V in)
  • Arduino Pro Mini, Int 0 pin D2 → RFM22B, NIRQ (interrupt request out)
  • Arduino Pro Mini, SS pin D10 → RFM22B, NSEL (chip select in)
  • Arduino Pro Mini, SCK pin D13 → RFM22B, SCK (SPI clock in)
  • Arduino Pro Mini, MOSI pin D11 → RFM22B, SDI (SPI Data in)
  • Arduino Pro Mini, MISO pin D12 → RFM22B, SDO (SPI data out)
  • RFM22B, TX_ANT (TX antenna control in) → RFM22B, GPIO0 (GPIO0 out to control transmitter antenna TX_ANT)
  • RFM22B, RX_ANT (RX antenna control in) → RFM22B, GPIO1 (GPIO1 out to control receiver antenna RX_ANT)
  • Arduino Pro Mini, Pin 2 → Max-6, VCC
  • Arduino Pro Mini, GND → Max-6, GND
  • Arduino Pro Mini, pin 1 TX → Max-6, RX
  • Arduino Pro Mini, pin 0 RX → Max-6, TX

Code

The Code lives here: https://github.com/KevWal/ProMini

Testing

In the warm office, Signal rx'ed loud and clear on 434.190.700 Mhz rather than the set 434.201 Mhz

Sentence is: $$PROM,2,000010,0.000000,0.000000,0,0,25,42*63B0

which is: %%PROM, id, time, lat, lon, alt, sats, vinmv, rfm_temp*CHECKSUM

RTTY 50 Baud, 480 Hz Shift, 7 Bits, No Parity, 2 stop bits

Habhub Payload Config

Using the form here I generated a payload config:

Payload Name: G7PMO $$PROM

Primary, 434.175, USB, RTTY, 480, ASCII-7, 50 Baud, Parity none, 2 Stop bits.

{“type”:“payload_configuration”,“name”:“G7PMO $$PROM”,“time_created”:“2012-11-18T22:25:32+00:00”,“metadata”:{“description”:“G7PMO's ProMini Tracker”},“transmissions”:[{“frequency”:434201000,“modulation”:“RTTY”,“mode”:“USB”,“encoding”:“ASCII-7”,“parity”:“none”,“stop”:2,“shift”:480,“baud”:50,“description”:“Primary”}],“sentences”:[{“protocol”:“UKHAS”,“callsign”:“PROM”,“checksum”:“crc16-ccitt”,“fields”:[{“name”:“sentence_id”,“sensor”:“base.ascii_int”},{“name”:“time”,“sensor”:“stdtelem.time”},{“name”:“latitude”,“sensor”:“stdtelem.coordinate”,“format”:“dd.dddd”},{“name”:“longitude”,“sensor”:“stdtelem.coordinate”,“format”:“dd.dddd”},{“name”:“altitude”,“sensor”:“base.ascii_int”},{“name”:“satellites”,“sensor”:“base.ascii_int”},{“name”:“battery”,“sensor”:“base.ascii_int”},{“name”:“temperature_internal”,“sensor”:“base.ascii_int”}],“filters”:{“post”:[{“filter”:“common.numeric_scale”,“factor”:0.001,“round”:3,“source”:“battery”,“type”:“normal”},{“filter”:“common.invalid_gps_lock”,“ok”:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],“source”:“satellites”,“type”:“normal”}]},“description”:“$$ProM Std format”}]}

Doc ID: 7ca1c7874831f6e8a0616ca98add1600

Note the filter I use to identify if I have a satellite fix “{“filter”:“common.invalid_gps_lock”,”type“:“normal”,”ok“:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],”source“:“satellites”}”

I should really implement another variable in the sentence to define lock directly for the PUBX code, but I am told the above should do what I want it to do.

Further Reading

projects/jimbob/promini.txt · Last modified: 2012/12/07 17:10 by kevwal