Arduino APRS Tracker

An APRS tracker is easy to build these days.

I had decided to build one for portable use (plan is to be used on hiking, but also in my car) powered from Lithium Ion battery and with all components running on 3.3V. Transmit of APRS messages is done through a UV-5R.

The tracker is powered from my favorite Panasonic NCR18650 3400mAH through a MCP1700-3302E LDO regulator, and has plenty of juice for daily use.

GPS is a Adafruit Ultimate GPS Breakout – 66 channel w/10 Hz updates (https://www.adafruit.com/product/746) not that i need 10 Hz, 1 Hz update is more than enough but i had in stock from a different project, so why not ? (i love it).  You can also use a NEO-6M and change the appropriate define on the code

Arduino is a Pro Mini 3.3V 8 MHz (actually a clone of Deek-Robot Pro Mini)

Up and running on breadboard

Update

Bought a Kenwood cable to avoid the mess with the 2.5 and 3.5 mm audio connectors

BIG FAT WARNING : There is no load disconnect for the battery while charging. DO NOT CHARGE AND USE IT. The charging of the battery will never finish, resulting on explosion, fire etc. YOU HAVE BEEN WARNED

https://www.aliexpress.com/item/DIY-2-pin-4-Wire-Speaker-Mic-Cable-Spring-Line-for-Baofeng-UV5R-Kenwood-TK370-Linton/32734963747.html

TP4056 Lithium Cell Charger Module with Battery Protection to charge it through USB.

https://www.aliexpress.com/store/product/5x-TP4056-Lithium-Charger-Module-with-Battery-Protection-Micro-USB-5V-1A-TE420/1895489_32646760134.html

I have started working with the schematic of MicroModem (http://unsigned.io) but i have modified LibAPRS to make it work.

As long as GPS has a FIX it submits my location every two minutes and i have a button for a single shot APRS update. SmartBeaconing support is included and now is the default

The idea is to create a complete unit with a DRA818V with USB charging.
DRA818V is still on my desk… i have “trouble” designing a good low pass filter for VHF.

Schematic (breadboard version)

Remember power supply needs to be 3.3V

Arduino APRS tracker schematic (for the breadboard version)

Documentation has not been finalized yet and i use multiple libraries making it a bit difficult to handle everything

I have uploaded my working version to github
https://github.com/billygr/arduino-aprs-tracker

Remember to change the APRS_CALLSIGN to your call sign

You will need these libraries
libAPRS (modified) https://github.com/billygr/LibAPRS
TinyGPS http://arduiniana.org/libraries/tinygps/

PCB

Oh yes !!! We do have also PCB ready credits to aronaut. Thank you !!!

https://github.com/billygr/arduino-aprs-tracker/tree/master/archive/PCBv1%20KiCad%20(5.0.2)

Bill of Materials (breadboard version)

R1 1K
R2 2K2
R3 3K9
R4 8K2
R5 270
R6 10K trimmer
R7 1K
R8 10K
C1 100nF
C2 4.7uF/16V
1 x GPS Module
1 x push button
1 x Arduino Pro Mini 3V3 8MHz
Q1 2N2700/BS170

For using without an external power supply:

1 x Panasonic NCR18650 3400mAH (or your favorite 18650)
1 x 18650 socket
1 x MCP1700-3302E
1 x TP4056

Bill of Materials (PCB version)

Includes the 18650 socket+TP4056

https://github.com/billygr/arduino-aprs-tracker/tree/master/archive/PCBv1%20KiCad%20(5.0.2)

Comments

302 responses to “Arduino APRS Tracker”

  1. Guilherme PU3KNB Avatar
    Guilherme PU3KNB

    Thanks for sharing this nice project! I will try to build with my 16MHz pro mini avaliable at my box. 73

    1. billy Avatar

      I’m glad you like it, the libAPRS should work directly for the 16 MHz. 73

  2. Alex R Silveira Avatar
    Alex R Silveira

    Hello, first thank you for sharing your project, I have a problem in the lines:

    APRS_setSymbol(APRS_SYMBOL);
    APRS_sendLoc(comment, strlen(comment));

    are presenting the error:

    invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]

    can you tell me the reason for this error?

  3. billy Avatar

    Hi Alex,

    Thanks for looking at it.

    It is a warning introduced in Arduino 1.8.x. the code needs to be fixed but it compiles and you can upload it.

    Alternative you can use Arduino 1.6.13 and it will compile cleanly. I just tried it.

    In any case i will update the code accordingly in the upcoming days

  4. Alex R Silveira Avatar
    Alex R Silveira

    Okay, thank you so much for the answer, I’ll do what you said!

  5. Andreas Avatar
    Andreas

    Hello
    I built it but code shows me error.

    code shows error.
    APRS_setSymbol(APRS_SYMBOL); and error is:

    invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]

    Any help;Maybe something missing by mistake!!

  6. billy Avatar

    Andreas hi,

    What is your arduino version ?

  7. Andreas Avatar
    Andreas

    Sorry i had internet connections problem.
    I download 1.6.13 arduino ide and all is ok now.
    But i upload sketch,gps fix,in serial monitor shows Arduino APRS Tracker after a while a line with numbers att and lat,But when i push the button no led pin 13 on no data send!!
    Any help;

    Είμαι από Ελλάδα,μπορώ να γράφω ελληνικά,ή δεν το προτιμάς στο σά-ιτ σου;

  8. Andreas Avatar
    Andreas

    this is showed after a while,

    https://s8.postimg.org/ovotxx99x/gps_fix.jpg

    but when i push button,no data, no led(pin 13) on,no data shows to another dual radio with aprs.
    Any help;

  9. Andreas Avatar
    Andreas

    Finnaly it worked but 2 things:
    1)I must connect button to +3.3V to work (not to gnd).
    2)After send to aprs data,i must reset arduino to work again,because it freeze.
    What i do wrong;Any help;

    But is working….
    Thank you very much.

  10. billy Avatar

    Andreas hi,

    I pushed an update on the libaprs last week with a small fix for the LED (https://github.com/billygr/LibAPRS)

    1. Checked the button on my board, one side is connected to GND, the second one is on the Digital Pin 10 (as in the schematic). When you push the button it has some debounce in the code, you need to release it in order to submit your location (or wait for 2 minutes after GPS fix)

    2. Try without the Radio connected. If it is still working it has to do with RF getting back to the Arduino. Check your grounds.

    Και ναι εάν θέλεις μπορείς να γράφεις και ελληνικά (ένας από τους λόγους που το έχω αγγλικά είναι γιατί δεν έχω επισκέπτες, με μερικές εξαιρέσεις, από Ελλάδα)

  11. Andreas Avatar
    Andreas

    Tο δικό σου ήταν το 4 κατά σειρά κύκλωμα που έφτιαξα–το πρώτο που μου δούλεψε!!
    Σου χρωστάω ένα μεγάλο ευχαριστώ για αυτό και αυτό είναι λίγο…

    Ως προς το debounce του button σκεφτόμουν να συνδέσω μια αντίσταση 10ΚΩ μεταξύ ακροδέκτη 10 του arduino και +3,3V.Αλλά είδα στον κωδικά σου αυτό pinMode(BUTTON_PIN, INPUT_PULLUP); οπότε υπόθεσα ότι την έξοδο 10 την έχεις σε υψηλό δυναμικό μέσω κώδικα.Αν κάνω λάθος διόρθωσε με.

    Ως προς RF,όλοι προτείνουν δαχτυλίδι φερίτη(χάντρα όπως τροφοδοτικά από υπολογιστές)για να τυλίξω γύρω από αυτή καλώδια που συνδέονται με τον ασύρματο,για καλύτερη θωράκιση από στάσιμα RF.

    Αυτό με τις γειώσεις δεν κατάλαβα τι εννοείς!Σε διάτρητη τα φτιάχνω προς το παρόν..Μήπως να συγκεντρώνω κυκλικά όλες τις γειώσεις σε ένα σημείο;

    Και πάλι σε ευχαριστώ.

  12. billy Avatar

    Γειά σου Ανδρέα.

    Ακριβώς τα ίδια τράβηξα και εγώ μέχρι και αποφάσισα να το κάνω ένα document για τον επόμενο. Δεν είναι τέλειο (πχ δεν λαμβάνει υπόψη την ταχύτητα για το positioning) αλλά για αυτό που θέλω μου κάνει, και τουλάχιστον είναι σε ενα state που μπορώ να τα σβήσω/χαλάσω όλα και να το ξαναφτιάξω

    Σωστά το debounce γίνεται στον κώδικα. Για το RF πιστεύω ότι με κάποιο choke θα βελτιωθεί.

    Για τις γειώσεις προτιμώ όσο το δυνατό μικρότερα καλώδια (ιδανικά στο τέλος σε ένα σημείο, όχι πως είδα και τρελή διαφορά)

    Το επόμενο βήμα είναι το κάνω αυτόνομο (χωρίς να θέλεις πομποδέκτη)

  13. billy Avatar

    Έχω ένα DRA818V πάνω στο γραφείο μου 🙂

  14. Andreas Avatar
    Andreas

    Έβαλα την καινούρια βιβλιοθήκη LibAPRS και δουλεύει μια χαρά,για την δουλειά που το θέλω.

    Ευχαριστώ πάρα πολύ.

  15. Andreas Avatar
    Andreas

    i have “trouble” designing a good low pass filter for VHF.

    Καλό μήνα, παράγγειλα φίλτρα LFCN-180+ – Low Pass Filter DC-180MHz
    Pass Band in MHz DC-180
    Freq. Cut Off in MHz 270
    Stop Band MHz in 525-2350

    Αν έρθουν και δεν έχω τρεχάματα με τελωνείο! μπορώ να σου δώσω ένα δωρεάν-αν θέλεις,περισσεύει.

    Με αντίσταση και πυκνωτή σαν φίλτρο χαμηλής δεν γίνεται δουλειά;Εννοώ βάση τύπου του Fαποκοπής = 1/2πRC

  16. billy Avatar

    Τέλεια Ανδρέα. Έχω πάρει κάποια της coilcraft για δοκιμή αλλά μεταξύ μας ένα LFCN-180+ θα το προτιμήσω… 🙂

    Δοκίμασα κάτι στο spice πρέπει να είναι τουλάχιστον 3pole ενα απλό RC δεν φτάνει

  17. Andreas Avatar
    Andreas

    Μέχρι να παραλάβω τα LFCN-180+,βρήκα σε φόρουμ αυτό το 5 πολικό και 7 πολικό φίλτρο με smd 1206 εξαρτήματα.Λες να κάνουν δουλειά;

    https://s8.postimg.org/czgf0isvp/5_7_low_pass_filter.jpg

    και εδώ άλλο
    https://s18.postimg.org/s7qt8izmh/DRA818_V_filter_kai_Uhf.jpg
    με * οι τιμές για UHF.

  18. Guilherme PU3KNB Avatar
    Guilherme PU3KNB

    Hello Billy,

    After build the circuit on breadboard everything apparently is fine, but when pressing button nothing happens, same as reported by Andreas. The timer update function is not working too. Do you have any clue to help mitigate my problem?
    Thank you.
    Guilherme,

    1. billy Avatar

      Guilherme in addition make sure that you your GPS has locked/or your are outdoors. In order to avoid sending wrong location during transmit, if you don’t have a fix pressing the button doesn’t do anything

  19. Andreas Avatar
    Andreas

    Σήμερα μου ήρθαν τα LFCN-180+ με Ελτά,χωρίς τελωνείο,ευτυχώς.Πες μου που να σου στείλω ένα! Στείλε μου την διεύθυνση σου και τα στοιχεία δου στο εμάιλ μου andreasmon@yahoo.gr για να σου στείλω ένα.Είναι smd πολύ μικρό…

  20. Andreas Avatar
    Andreas

    Σήμερα έλαβα με τα Ελτά τα φίλτρα LFCN-180+.Εiναι smd και πολύ μικρά σε μέγεθος.Στείλε μου τα στοιχεία σου, τα ταχυδρομικά για να σου στείλω ένα.

  21. Andreas Avatar
    Andreas

    After build the circuit on breadboard everything apparently is fine, but when pressing button nothing happens, same as reported by Andreas. The timer update function is not working too. Do you have any clue to help mitigate my problem?
    Thank you.
    Guilherme,

    Guilherme PU3KNB try to connect pin 10 of arduino with the +3.3V.If it works is the debounce of the button,If not maybe you have wrong in the circuit.

  22. Andreas Avatar
    Andreas

    Σήμερα έλαβα με τα Ελτά τα φίλτρα LFCN-180+.Εiναι smd και πολύ μικρά σε μέγεθος.Στείλε μου τα στοιχεία σου, τα ταχυδρομικά για να σου στείλω ένα.Ξέχασα να γράψω να σου δώσω το εμαιλ μου αν και πρέπει να το χεις ήδη,για να μου στείλεις την διεύθυνση σου. andreasmon@yahoo.gr

    Αν μπορείς σβήσε τα διπλά σχόλια μου,και αυτά για το φίλτρο LFCN-180,για να μην σου χαλάω το θέμα του Arduino APRS Tracker.

    Guilherme PU3KNB because you built on breadboard,check all your wire connections;Maybe some connections are open-in the air and not connected!

  23. Guilherme PU3KNB Avatar
    Guilherme PU3KNB

    Hi,
    After review the wiring of circuit, everything is working as expect.

    The next step is extend the funcionality to be able to press one button and send ARISS frames.

    Awsome project. Thanks!

    1. billy Avatar

      Perfect, keep us posted

  24. Guilherme Avatar
    Guilherme

    Hi Billy.

    I am using a cheap neo6mv2 GPS module on my circuit, but the coordinates transmited by APRS are several miles away from the site of tracker. Any thoughts to help solve my issue?

    Thank you again,

    Guilherme

    1. billy Avatar

      hi,

      Use the serial port for debugging, it is already enabled at 115200 and prints the lat and lon (among other information)

      If your location is way off it means that the data coming from GPS is not correct, the code continues with the same data set to transmit your position.

      I will try with a neo module i have local and update you

      1. Guilherme Avatar
        Guilherme

        Hi,

        The decimal location printed at serial monitor is correct, but something in conversion to APRS format is wrong.

        We believe that’s not a GPS related issue.

        See the output:

        25/3/2017 21:47:57 LAT=-30026335 LON=-51193561 3324.45S/03113.42W
        25/3/2017 21:47:58 LAT=-30026340 LON=-51193567 3324.45S/03113.42W
        25/3/2017 21:47:59 LAT=-30026341 LON=-51193576 3324.45S/03113.42W

  25. billy Avatar

    I think that there is a bug in the conversion of LAT. Under gcc the values i get is 03133.51S/03133.48W.

    Which is way of, according to your data you should be closer to the equator.

    I will try to fix it

    1. billy Avatar

      I have pushed an new commit on github that solves your issue (hopefully). Tested with some static values the results are close with the LAT/LON numbers

      1. Guilherme Becki Avatar
        Guilherme Becki

        Billy your fix works perfectly.

        Thanks so much for taking the time to look into this for us. No doubt will help expand the APRS operations here.

        Thanks Guilherme PU3KNB,

  26. Cristian Moldovanu Avatar
    Cristian Moldovanu

    Hello, first thank you for sharing your project. I intend to comeback into APRS after a long period of silence. Last time (probably 2002-2003) I used PIC16F84, a Tiny Tracker.
    My experience with Arduino is very limited, I try to learn fast (Ihave already order what I think I need).
    I have some question before start:
    – I wish to use port portable and/or in car activity, with a handheld.
    How can I inhibit the TX during busy channel period ? (I didnt see any input from Busy Lockout radio pin or from radio speaker)
    – Can be modified the program for transmitting of APRS data at the end of voice transmission, after releasing the PTT ? (like MIC-E option used in Tiny-track).
    -About GPS, it is necesary to conect also the RX GPS pin to Arduino ?

    Sorry for my “ignorance” probably after I shall receive the Arduino and I shall try the test I shall understand better.

    Thanks, Cristian – YO4DFT

    1. billy Avatar

      Christian hi,

      A feature like carrier detect to inhibit the TX can be implemented but it is not included in this version. I don’t think that it is really difficult to do it, there are some pins for analog input in order to connect the speaker output and adjust the level accordingly with a potentiometer

      I have never used MIC-E, implementing something like this will need a PTT input first and some modification to the aprs transmit code.

      As for the GPS i would suggest to use it (although not necessary) in case you want to change the settings of the GPS module (depends on the one used for your project)

      73 SV1QFV

  27. Cristian Moldovanu Avatar
    Cristian Moldovanu

    Hi Bill,
    Thanks for reply; today I received the most part of components, I hope this week-end to finish the prototype and I shall let you know about results.
    Regards,
    YO4DFT-Cristian

  28. francesco Avatar
    francesco

    Hello,
    I wanted to know if you can replace the MOSFET with a npn.
    I used arduin one, unfortunately goes to tx just plug in analog out to circuit.
    Do you have a solution?
    Francesco iu0btm

  29. billy Avatar

    Hi,

    I haven’t tried it, but i always prefer a mosfet instead of a plain NPN. Try a 2n3904.

    if it goes to TX immediately it means that you PTT is on GND, wrong part ?

  30. francesco Avatar
    francesco

    Maybe I understand the problem, I use Alan ct145, With 2.5 jack, gnd and central = ptt and condenser mic. Surely it takes a little circuit, but i don’t Know.
    I changed npn with mosfet z44
    Thank’s

  31. francesco Avatar
    francesco

    Hi Billy, with the MOSFET it’s ok.
    The note is an old whore.
    Not always decoding
    73 Francesco IU0BTM

    1. billy Avatar

      Hi Francesco,

      If your trasmitted APRS messages are not always decoded try to raise a bit the audio out

      Billy

  32. Andreas Monias Avatar
    Andreas Monias

    Hello,
    It is easy to change the code that the aprs tracker every 3 minutes send data.It is easy with millis();I think to give a try.Or is it dificult;I do not want to press a button.The aprs tracker want to send data every 3 minutes at its own.

    Thank you very much

    1. billy Avatar

      Hi,

      Yes it is really easy.

      Change this line from:
      aprs_update_timer_id=timer.setInterval(2L*60L*1000L, setAprsUpdateFlag);

      To :
      aprs_update_timer_id=timer.setInterval(3L*60L*1000L, setAprsUpdateFlag);

      and your are ready

  33. Andreas Monias Avatar
    Andreas Monias

    Thank you very much

  34. Wojtek Avatar
    Wojtek

    Hello

    I have problem with my APRS SYMBOL. I setuped (>) car. He’s random. After update once it’s Laptop, once Mac Apple. No understand this :/

    1. Wojtek Avatar
      Wojtek

      If I use library with website billy.gr I have symbol “mac apple”. Changing symbol in source code no change nothing. Using other library will set the symbol “node” and changing the symbol i the sorce code does not change it.

      Did anyone have such problem.

      1. billy Avatar

        Hi,

        I will check it out during the weekend, to be honest i notice it also once but i never through that it was a bug

        billy

  35. Andreas Monias Avatar
    Andreas Monias

    Hello again

    Is it easy to change the code that ptt close for 4 secconds and then aprs tracker send data.First ptt bs170 connects the ptt signal to gnd for 4 seconds and then aprs tracker sent data.I want this because i want aprs tracker send data via a Transponder.

    Thank you.

    Καλησπέρα είναι εύκολο να αλλάξουμε τον κώδικα ώστε να κλείνει το ptt πρώτα για 4 δευτερόλεπτα και μετά να μεταδίδει δεδομένα.Το θέλω για όταν η σύζευξη ασυρμάτων γίνεται μέσω αναμεταδότη.

    Ευχαριστώ πολύ.

  36. Andreas Monias Avatar
    Andreas Monias

    void setup() {

    // initialize digital pin 8 as an output and we conect it to the
    //gate of the bs170
    pinMode(8, OUTPUT);
    }

    //in the loop
    void loop()
    {

    digitalWrite(8, HIGH);
    delay(4000);
    locationUpdate();
    digitalWrite(8,LOW);
    delay(500);
    }

    does this code work;or i must replace locationUpdate();
    with: aprs_update_timer_id=timer.setInterval(3L*60L*1000L, setAprsUpdateFlag); ;

    thanks.

    1. billy Avatar

      Andreas hi,

      Function locationUpdate

      Add your code before the //TX comment

      digitalWrite(8, HIGH);
      delay(4000);

      // TX
      APRS_sendLoc(comment, strlen(comment));

      Pin 8 should be replaced with your PPT pin

  37. 9w2ghh Avatar
    9w2ghh

    first of all, thanks for this great tutorial, i’m managed to put all the component together, but seem that there is no data signal on the HT side. can u guide me on this?

    1. billy Avatar

      Hi,

      Ensure that you can see the code running on the Arduino serial port first.
      It will not transmit if you don’t have a lock on the GPS (in order to avoid sending a random position over the air)

      What your output on the serial says ?

      1. 9W2GHH Avatar
        9W2GHH

        i’ve figure it out that i’m using the same power supply with the boafeng HT make the current backflow into the circuit.
        Now as i change to battery, the arduino run perfectly except my APRS.FI location is JJ56QU and not as my current location
        is
        Locator: OJ02TW
        Latitude: 2°56.25′ N
        Longitude: 101°37.50′ E

        .how do change this?

  38. Luke Avatar
    Luke

    Hi,

    Just finished the assemly and compiled all into an Arduino Nano,
    All seems to work fine, GPS ,nmea Data, startup etc. nicely all data on Serial monitor, but
    No audio output , and schematic is correct, n
    When i try with the LibAprs / example/ basic usage. perfect data is presented on audio output.
    Could the library have something to do with this ?

    Thanks for any possible assistance.
    Luke / ON2AAV

    1. billy Avatar

      Luke hi,

      The library has been modified to make it closer to Arduino pinout. Unfortunately i haven’t tested with other devices beside Mini.

      I think the issue is located on file
      LibAPRS/device.h
      Find the #ifdef ARDUINO_AVR_PRO and change it to
      #if defined ARDUINO_AVR_PRO || defined ARDUINO_AVR_NANO

      Can you see the LED (pin 13) blink on transmit ? (before and after the change ?)

      1. Luke Avatar
        Luke

        Billy,
        Thanks for the update,
        I just corrected the device.h with the ‘nano’ line.
        The LED/13 blinks on start-up, but not after.
        Can i change the APRS_sendloc so it give a tx location every 10 seconds or so, for testing purposes ?

        aprs_update_timer_id=timer.setInterval(2L*60L*1000L, setAprsUpdateFlag);
        }
        to for example :

        aprs_update_timer_id=timer.setInterval(1L*10L*1000L, setAprsUpdateFlag);

        Is this (above) ok ?

        }

        thanks
        73
        ON2AAV / Luke

      2. Luke Avatar
        Luke

        Billy,

        Also , the manual update works, but only like mentioned above (Andreas) here, when button is connected not to GND but to 3.3V.
        Data apears in serial monitor, but still no TX or LED. ./.

        MANUAL UPDATE
        8/11/2017 9:0:6 LAT=51342924 LON=4525021 5120.57N/00431.50E
        MANUAL UPDATE
        APRS UPDATE
        8/11/2017 9:0:17 LAT=51342938 LON=4525020 5120.57N/00431.50E

  39. billy Avatar

    @9W2GHH can you please share the serial output ? I think we hit another bug on the conversion to APRS format

    1. 9W2GHH Avatar
      9W2GHH

      thanks billy for the response,
      the output from the serial is 0256.36N/01014.84E
      2°56.36’N 10°14.84’E and
      my location is 0256.80N/10137.19E 2°56.80’N 101°37.19’E.
      i also think this is the conversion problems. i’ll try to edit the code but still no luck.

      1. billy Avatar

        @9W2GHH
        Could you please share the output as seen on the serial ?

        It is formatted like this
        0/0/2000 12:34:56 LAT=XXXXXXXX LON=XXXXXXXX 0256.36N/01014.84E

        I want to understand if it is coming wrong from the GPS or it is converted wrong. I am also on N/E so i don’t expect any issues

      2. 9W2GHH Avatar
        9W2GHH

        i try to get the serial output and this is what i get

        15:21:56 $GPRMC,152156.00,A,0256.40158,N,10140.84672,E,0.272,,191117,,,A*7F
        15:21:56 $GPVTG,,T,,M,0.272,N,0.504,K,A*25
        15:21:56 $GPGGA,152156.00,0256.40158,N,10140.84672,E,1,05,6.15,50.8,M,-5.6,M,,*7E
        15:21:56 $GPGSA,A,3,01,08,11,22,03,,,,,,,,9.43,6.15,7.15*07
        15:21:56 $GPGSV,5,1,19,01,15,195,26,02,,,09,03,32,233,22,04,,,25*71
        15:21:56 $GPGSV,5,2,19,08,81,179,25,09,17,324,,11,30,190,32,14,18,141,21*74
        15:21:56 $GPGSV,5,3,19,16,23,012,,20,,,27,21,,,26,22,32,207,11*76
        15:21:56 $GPGSV,5,4,19,23,,,26,25,,,26,26,06,035,07,27,57,042,*74
        15:21:56 $GPGSV,5,5,19,28,01,240,,31,15,085,,32,00,144,12*44
        15:21:56 $GPGLL,0256.40158,N,10140.84672,E,152156.00,A,A*6F

      3. billy Avatar

        Hi,

        According to your GPS $GPRMC you are located close to Putrajaya, Malaysia.

        Is this the case ?

        Billy

      4. 9W2GHH Avatar
        9W2GHH

        yup, my location is putrajaya malaysia. but according to the APRS my location is 2°56.03′ N 10°14.08′ E that is near cameroon. i think the GPS to APRS location conversion code that have to do with this problems.

  40. Luke Avatar
    Luke

    Billy,

    Tx data ok now, decoded packet without issues, now still to get PTT out to work 😉

    Thanks for the help !

    73
    ON2AAV

  41. Luke Avatar
    Luke

    Billy,

    TX PTT works fine now, browsed in the DEVICE.H and AFSK.H to get a better understanding.

    Already got a valid packet on aprs.fi 😉

    73’s
    Luke

  42. Luke Avatar
    Luke

    All,

    The last thing i cannot get to work is the timer,
    Whatever i set the timer at

    aprs_update_timer_id=timer.setInterval(2L*60L*1000L, setAprsUpdateFlag);

    I cannot get it to update automatically,
    Manual button works great though.

    Any help is welcome.

    73’s
    Luc

  43. billy Avatar

    @Luke good to hear that you make it work.

    2L*60L*1000L means 2 minutes. Try to lower it to 1 min 1L*60L*1000L. Value is in milliseconds 1L*60L*1000L => 60000msec

    This is the correct library https://github.com/jfturcot/SimpleTimer (not sure if the default Arduino contains the same)

    1. Luke Avatar
      Luke

      Thanks Billy,
      I will get the SimpleTimer from Github, and replace it.
      Then i will follow your line to lower the sending updates.
      73
      Luke

    2. Luke Avatar
      Luke

      Billy,

      Maybe I understand the code wrong in some way,
      I’m testing from a fixed location (QTH), so static.
      Does this mean that there cannot be a locationupdate ?
      and only manual update will work ?

      I put the correct SimpleTimer library in, checked and changed the update interval, but still no update is send to the Tranceiver, only with manual update no issues.

      All the best
      Luke

      1. billy Avatar

        If your GPS has a fix it will always send an update every two minutes

        What is your Arduino IDE version ?

  44. Luke Avatar
    Luke

    Billy,

    ide 1.8.2

    Luke

  45. billy Avatar

    Luke hi,

    I double checked everything.
    Please make sure that you can see the output on the serial.

    Arduino 1.8.5 (shouldn’t be any problem with 1.8.2)
    Changed the timer to 1 min
    Every around 1 min it triggers and transmits without issues

    You should see your GPS fix with DATE TIME LAT LON followed by APRS UPDATE displayed on your serial output

    Pressing the button will transmit immediately with a MANUAL UPDATE on the serial output

    Can you please share your output ?

    I have push also a commit to fix some warnings

    1. Luke Avatar
      Luke

      Billy,

      Just took your newest ino from github,
      And still no update except my manual update when pushing button.
      Also i need to put in a delay(700), as otherwise, the outpur is garbled at the end of the transmission.
      I assume i can set the preamble and tail somewhere to overcome this in a better way ?

      //
      // TX
      APRS_sendLoc(comment, strlen(comment));
      delay(700);

      // read TX LED pin and wait till TX has finished (PB5) digital write 13 LED_BUILTIN
      while(bitRead(PORTB,5));
      //

      Best rgds
      Luke / ON2AAV

    2. Luke Avatar
      Luke

      Billy,

      Refetched the simpletimer lib, just in case something was not ok,
      and i get the following :

      //
      MANUAL UPDATE
      13/11/2017 21:31:32 LAT=51343044 LON=4524819 5120.58N/00431.48E
      MANUAL UPDATE
      APRS UPDATE
      13/11/2017 21:31:48 LAT=51343106 LON=4524824 5120.58N/00431.48E

      So auto aprsupdate is being sent now 😉
      Just have to tweek the tail and preamble a bit to get better valid packets.

      Thanks
      Luke

      1. billy Avatar

        Luke,

        You can change it on LibAPRS/LibAPRS.cpp

        unsigned long custom_preamble = 350UL;
        unsigned long custom_tail = 50UL;

        Double the values for start and it should be ok

        Billy

  46. Chris Avatar
    Chris

    great project, i have a problem with neo-6m-0-001. I have seting to ubx+nmea, i become not data over the console from Arduino i see only Arduino APRS Tracker. I hope for help.

    1. billy Avatar

      Chris your should use only NMEA as output, the GPS library cannot understand ubx

  47. 9W2GHH Avatar
    9W2GHH

    hi billy,

    i’m still cannot find a way to convert this :
    2°56.04′ N 10°14.08′ E – locator
    2017-12-19 23:34:57 MYT: 9W2GHH-1>APZMDM,9M4RTB-3*,WIDE2-2,qAR,9M4GCJ-1:=0256.04N/01014.08Ee

    into this 2°56.04′ N 101°40.8′ E ..
    please guide me

  48. billy Avatar

    Hi,

    According to the GPS string
    15:21:56 $GPRMC,152156.00,A,0256.40158,N,10140.84672,E,0.272,,191117,,,A*7F

    You are located here 2°56’24.09”N, 101°40’50.80”E / 2.940025, 101.680778

    This is converted to: 0256.40N/01014.84E which is correct.

    Set your lat/lon directly on the locationUpdate() like this
    APRS_setLat(“0256.40N”);
    APRS_setLon(“01014.84E”);

    Comment out the following
    //APRS_setLat((char*)deg_to_nmea(lat, true));
    //APRS_setLon((char*)deg_to_nmea(lon, false));

    If it is not transmitted OK then it is not the conversion

    Billy

  49. 9W2GHH Avatar
    9W2GHH

    hi billy,
    thanks a lot for responding to my problems. after change as what u given, still nothing change.

    this is what on aprs.fi

    Location: 2°56.40′ N 10°14.84′ E – locator JJ52CW95QO
    36.7 km East bearing 92° from Kribi, South Region, Cameroon
    39.5 km Northwest bearing 296° from Akom II, South Region,Cameroon
    96.4 km South bearing 172° from Edéa, Littoral Province, Cameroon
    131.0 km Northeast bearing 24° from Bata, Litoral, Equatorial Guinea

    Last position: 2017-12-25 23:13:19 MYT (4m56s ago)

    2017-12-25 16:13:19 WAT local time at Kribi, Cameroon
    Last path: 9W2GHH-1>APZMDM via 9M4RTB-3*,WIDE2-2,qAR,9W2EDK-1

Leave a Reply

Your email address will not be published. Required fields are marked *