====== 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 ====== Tracker Hardware: * [[http://www.tinyosshop.com/index.php?route=product/product&path=60_71&product_id=336|Arduino Pro Mini V2 3.3v 8Mhz]] * [[https://www.sparkfun.com/products/10255|SparkFun LiPower Boost Converter]] * [[http://ava.upuaut.net/store/index.php?route=product/product&path=71_63&product_id=65|RFM22B Radio Module]] * [[http://ava.upuaut.net/store/index.php?route=product/product&path=59_60&product_id=52|Assembled uBLOX MAX-6 Pico Breakout with Chip Scale Antenna]] ===== Arduino Pro Mini ===== The module I purchased is a clone of the original [[http://arduino.cc/en/Main/ArduinoBoardProMini|Arduino Pro Mini]] and has a few slight changes. It is closest to [[https://www.sparkfun.com/products/11114?|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 [[http://www.circuitsathome.com/dc-dc/tps61200-board-modifications-part-1-changing-undervoltage-lockout|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 [[http://www.sparkfun.com/datasheets/Prototyping/tps61200.pdf|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 [[guides:rfm22b|here]] The Hope FM Mfg product page, with links to application notes is: [[http://www.hoperf.com/rf/fsk/RFM22B.htm|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|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 [[http://habitat.habhub.org/genpayload/|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 ===== Inspired by: http://www.daveakerman.com/?p=310 todo: RFM22 Temp code: https://github.com/jamescoxon/PicoAtlas/blob/master/Pico80/Pico80.ino or here: https://github.com/jamescoxon/PicoAtlas/blob/master/Pico7/Pico7.ino use Serial.flush(); to get rid of UBX issue https://github.com/jamescoxon/PicoAtlas More RFM22b code to look at: https://github.com/jamescoxon/Eurus/blob/master/70cmTracker/MainCode/MainCode.ino