You are not logged in.
Hi Taner,
I do have some works (I designed all including pcb) on Arduino based uC cards. One of the is ATMega644p based .. it is twice in resources wrt 328p but very important feature is it has 2 UART .. you can have a look at www.mfnode.com and I will be so happy to present one to you if you would like to try. At least, I will be happy, if I can have some contribution to your very very nice work. regards, reha
Offline
Hi John, hi Stanley,
you can download the updated version from my modified MicroAPRS class with comment parsing at http://mailtext.de/MicroAPRS.zip
Please let me know if it works for you. I make some tests (APRS and MIC-E formated Data) and think it works...Taner
Dear Taner,
Thanks for the updated libs... great stuff...
The updated MicroAPRS libs with comment parsing is working fine... no more displaying those coordinates or mic-e compressed strings...
Are there any checking of valid callsign from the libs as I get some some garbage / random characters during the initial booting stage from the modem ?
My show_packet function, the way I displayed it on 2 lines with a toggle are not too efficient.. any suggestions codes would be appreciated ... :-
void show_packet()
{
char *posit, *pmsgTo, *call, *pcomment, *pmsg;
char type, pmsgID;
long lat, lon;
static boolean nextLine = 0;
microaprs.decode_posit(packet, &call, &type, &posit, &lon, &lat, &pcomment, &pmsgTo, &pmsg, &pmsgID);
if (type == 58) // 58 = "!" = Message
{
if (startsWith(MYCALL, pmsgTo))
{
mCounter++;
oled.setCursor(2,0);
clear3Line();
oled.setCursor(2,0);
oled.print("F:");
oled.print(call);
oled.setCursor(3,0);
oled.print("M:");
oled.print(pmsg);
// Beep 3 times
digitalWrite(buzzerPin,HIGH); // Buzz the user
delay(100);
digitalWrite(buzzerPin,LOW);
delay(100);
digitalWrite(buzzerPin,HIGH); // Buzz the user
delay(100);
digitalWrite(buzzerPin,LOW);
delay(100);
digitalWrite(buzzerPin,HIGH); // Buzz the user
delay(100);
digitalWrite(buzzerPin,LOW);
nextLine ^= 1 << 1; // Toggle nextLine
}
}
else // Not message, decode , calculate and display packets
{
wayPointLatitude = lat;
wayPointLongitude = lon;
wayPointLatitude = wayPointLatitude / 1000000;
wayPointLongitude = wayPointLongitude / 1000000;
distanceToWaypoint = calculateDistance();
bearing = calculateBearing();
// Check for valid decoded packets
if ( strlen(call) < 12 ) {
lastRx = millis();
packetDecoded++;
if ( !nextLine ) {
oled.setCursor(2,0);
clear3Line();
oled.setCursor(2,0);
oled.print(call);
oled.print(" ");
if (distanceToWaypoint < 1000 ) {
oled.print(bearing, 0);
oled.print("d ");
oled.print(distanceToWaypoint,1);
oled.print("km");
}
oled.setCursor(3,0);
oled.print(pcomment);
} else {
oled.setCursor(5,0);
clear3Line();
oled.setCursor(5,0);
oled.print(call);
oled.print(" ");
if (distanceToWaypoint < 1000 ) {
oled.print(bearing, 0);
oled.print("d ");
oled.print(distanceToWaypoint,1);
oled.print("km");
}
oled.setCursor(6,0);
oled.print(pcomment); // Updated to display commnets instead of posit
} // endif !nextLine
} // endif check for valid packets
// Toggle the nextLine
nextLine ^= 1 << 1;
}
}
Stanley
9W2SVT/ N5SVT
http://9W2SVT.blogspot.com
Offline
Taner, did the libs check for status ">" type of packet ??
It does not seems to be working ...
My SVTrackR sent out 1 status every 10 packets but I did not see it decoded...
>SVTrackR v1.0 5.24V S:9 B:0.51 U:21.32 Seq:70
S = Sats
B = distance to base in km
U = uptime in minutes
I just use alligator clips the audio-out from another SVTrackR to audio-in to a SVTrackR to test for this..
Last edited by Stanley (2014-12-24 12:07:33)
Stanley
9W2SVT/ N5SVT
http://9W2SVT.blogspot.com
Offline
@ reha,
Thank you. Maybe some contribution to make a PCB will help me to make my project flying
I think i will use ATmega 1284. Because it has double size of Flash to 644. So it's more space for updates...
@Stanley,
great to hear that it works.
There is no checking for valid packages. But it looks for a packet beginning with "SRC: [" If it not begins so, the packed will be ignored.
Because your line toggle, i will look later for this.
At this time, i'm trying to port my code to the new LibAPRS library from Mark...
Offline
@All,
i updated the Library again today to decode Status messages.
Message will placed in "pcomment"...
Download at: www.mailtext.de/MicroAPRS.zip
Cheers Taner
DB1NTO
Offline
Hi Tamer
certainly I would like to contribute. but only possible problem is, I use proteus not eagle.. reha
Offline
Dear Taner,
Thanks for the update codes on the Status ... as I needed to ship some SVTrackR with the Status display, I wrote it as, very similar to yours.. :-
else if (type == '>' ) {
// Check for status type
char *comment = posit;
*pcomment = comment;
} ....
And for the garbage chars at the beginning .. I put a checking for the boolean .. fix it...
if ( microaprs.decode_posit(packet, &call, &type, &posit, &lon, &lat, &pcomment, &pmsgTo, &pmsg, &pmsgID) ) {
....
}
Stanley
9W2SVT/ N5SVT
http://9W2SVT.blogspot.com
Offline
@ reha,
Thank you. Maybe some contribution to make a PCB will help me to make my project flying
I think i will use ATmega 1284. Because it has double size of Flash to 644. So it's more space for updates...
Isn't using the teensy 3.1 a better choice (much much more powerful ) and it supports 3.3V directly , it cost like US$20 ...
All my previous projects, I just made PCBs with a socket for mini pro, so I probably do the same for the teensy 3.1 ... less parts / routing to worry about ...
Are the teensy 3.1 easily available in yr area ?
Stanley
9W2SVT/ N5SVT
http://9W2SVT.blogspot.com
Offline
Hi Stanley,
thanks for your code update.
I know about Teensy. But i will made a very small PCB (from professional PCB maker) for my tracker.
Teensy uses the MK20DX256VLH7 CORTEX4 MCU. It has 64 Pins so it is more difficult to handle, bigger than a ATmega 1284 (more room on PCB) and slightly more expensive.
I don't know if we can use the code 1:1?
Have you tried this? I don't have a teensy at this moment.
The MK20DX256VLH7 has a built in DAC. It does not need a ladder resistor line to make a (very smooth 12 bit!) sine wave on output and just ONE pin for audio out.
Because this, we need to make changes on code. Maybe Mark can take a look to it. I will make a separate post for this.
Taner
Offline
Just a quick question Tanner.
I understand that connecting the radio to the microAPRS modem, did you use Marks circiut?
Offline
Hi la3bna,
no, i use a small Arduino Pro mini like this http://www.ebay.de/itm/221532713661
Round about 2,20 US $
Taner
Offline
Hello Taner,
I try to build your project, i'm new with Adruino and not much experience with C but so far so good!
When I let Adruino check your code at a certain point it comes with a compile error with the following output:
U8glib/utility/u8g_font_data.c.o:(.progmem.u8g_font_5x8+0x0): multiple definition of `u8g_font_5x8'
APRS-TRX-128_64-OL.cpp.o:(.progmem.u8g_font_5x8+0x0): first defined here
I tried the U8glib version 1.16 and 1.17 library but both versions give the same result.
What am I doing wrong?
Renné PA1RP
Last edited by aaitvedan (2015-01-08 19:25:12)
Offline
Hi Renné,
just remove the lines 8 - 116
beginning with
const u8g_fntpgm_uint8_t u8g_font_5x8[1693] U8G_FONT_SECTION("u8g_font_5x8") =
Taner Schnker
Last edited by DB1NTO (2015-01-08 20:05:20)
Offline
Thanks Taner, that did the job!
Renné
Offline
Tanner. I mean the audio connection between the radio unit and the microAPRS modem.
Offline
The audio connection is ONE wire to a resitor ladder. That's all. The resistor ladder is soldered from ME directly on the small Arduino board.
Offline
OK. Did you use the same as Mark?
Offline
The resistors?
Yes. Just small SMD (SMT) type
Offline
Hi Taner,
I try to get some data on the display, using only one pro mini programmed with your code and an OLED (the one from ebay) connected. (Should I see something?)
I see I2C data and clock on the lines but nothing on the display.
Which I2C address do you use to address the display. I can't find it in your code. Or do I have to set this via the u8glib library?
73, Renné
Offline
Renné you could program a i2c scanner andre find the display. Some og the displays need to have pull-up resistors added.
Try this:
playground.arduino.cc/Main/I2cScanner
God luck. De la3bna
Offline
Thanks la3bna, I will try the scanner. I did add pull-ups. The data and clock looks fine on the oscilloscope.
Renné PA1RP
Offline
Hi Renné,
yes, you must see TIME / DATE
LAT LON SPEED
Without connected GPS just 0000 but something to see on OLED.
Pull ups not needed. Just connect the two data pins from oled to A3 / A4 on Arduino...
Offline
Hi Taner,
Are you sure about A3 / A4? I thought SCL=A5 and SDA=A4. Am I correct?
Had I2C scanner running without succes. Scanning...No I2C devices found. So I think there is something wrong with the displays.
Renné PA1RP
Offline
Hi Renné,
sorry, you are right.
It's A4 / A5!
Taner
Offline
HI DB1NTO,
great project, I would like to build one. Please let me know do I really a microaprs modem?
or I can use one Arduino pro mini.? There are Sketches that turn the Arduino into a TNC.
Please let me know
Offline