Shop OBEX P1 Docs P2 Docs Learn Events
PMB-248 does not update the location when moving. - Page 2 — Parallax Forums

PMB-248 does not update the location when moving.

2»

Comments

  • hover1hover1 Posts: 1,929
    edited 2010-10-14 15:23
    Actually the error occured while using BST.

    BUT.. I just download BST onto a new Windows 7 machine, and I may not have set all the proper configurations yet for BST files, etc.

    Jim
    Timmoore wrote: »
    Thanks hover1, your right I use bst. If you dont want to use bst you would need to comment out the ifdefs
  • TimmooreTimmoore Posts: 1,031
    edited 2010-10-14 16:12
    The important setting is enable extensions, if I remember correctly
  • hover1hover1 Posts: 1,929
    edited 2010-10-14 17:08
    That was it Tim. Haven't configured BST for a while. Like I said, new machine.

    Jim
    Timmoore wrote: »
    The important setting is enable extensions, if I remember correctly
  • JBHJBH Posts: 3
    edited 2010-10-15 08:06
    Thanks for the help. I've only done programming with the bs2, I've had the propeller for about a year and am only now starting to work with it.
  • geometrixgeometrix Posts: 27
    edited 2012-11-09 16:40
    Dear Diego,
    If I send ID143 to the PMB-648, will it save this configuration? Or do I have to do this with every power up?
    Hi Tim, Jim and John, thanks for all the tips, the GPS is working fine now.

    Once realizing it was really a 648 and after disabling the static navigation with ID 143 as suggested by Tim the GPS is updating coordinates all the time for very short movements.

    Code I used to sent the configuration strings bellow.

    Thank you!

    Diego

    Modification to: GPS_Str_NMEA_Lite.spin v1.0

    PUB StartCOGs(rX_FR_GPS,tX_TO_GPS,nmea_Mode,nmea_Baud) : oKay | i
    ...

    GPS_UART.str(string("$PSRF100,0,4800,8,1,0*0F",_CR,_LF)) 'Switch to SiRF binary protocol at 4800,8,N,1

    'Diable Static Navigation
    waitcnt(clkfreq + cnt)
    repeat i from 0 to 9
    GPS_UART.tx(BYTE[noparse][[/noparse]@DisStatNav])

    'Switch back To NMEA Protocol Message ID 129, leave only GGA and RMC strings and keep speed at 4800
    waitcnt(clkfreq/2 + cnt)
    repeat i from 0 to 31
    GPS_UART.tx(BYTE[noparse][[/noparse]@BackToNMEA])

    ...


    DAT

    'Static Navigation, Message ID 143
    DisStatNav BYTE $A0, $A2, $00, $02, $8F, $00, $00, $8F, $B0, $B3 'SiRF Disable Static Navigation, "A0A200028F00008FB0B3"

    'Switch back To NMEA Protocol Message ID 129 at 4800 bauds, leave on GGA and RMC strings updating oce per second.
    BackToNMEA BYTE $A0, $A2, $00, $18, $81, $02, $01, $01, $00, $01, $00, $01, $00, $01, $01, $01, $00, $01, $00, $01, $00, $01, $00, $01, $00, $01, $12, $C0, $01, $61, $B0, $B3
  • PJAllenPJAllen Banned Posts: 5,065
    edited 2012-11-09 17:23
    It needs to be a part of your config/init.
    It reverts to stock config after a couple of days if unpowered.
  • cschaefercschaefer Posts: 4
    edited 2012-11-14 16:03
    geometrix wrote: »
    Dear Diego,
    If I send ID143 to the PMB-648, will it save this configuration? Or do I have to do this with every power up?

    I'm having a similar problem with the PMB-648 updating lat/long coordinates for a slow moving mobile robot (or, walking with the GPS, for that matter). The GPS is connected correctly to an Arduino Mega 2560 and I'm able to retrieve GPS data using the TinyGPS library. Does anyone have sample Arduino code that will turn static navigation on/off?
  • PJAllenPJAllen Banned Posts: 5,065
    edited 2012-11-14 18:51
    I'm having a similar problem with the PMB-648 updating lat/long coordinates for a slow moving mobile robot (or, walking with the GPS, for that matter).

    Does anyone have sample Arduino code that will turn static navigation on/off?

    The following will turn it off:
    Using 4800 baud send/Serial.print
    this string:
    ("$PSRF100,0,4800,8,1,0*0F",\r,\n)

    followed by this series of Hex bytes
    0xA0,0xA2,0x00,0x02,0x8F,0x00,0x00,0x8F,0xB0,0xB3

    0xA0,0xA2,0x00,0x18,0x81,0x02,0x01,001,0x00,0x01

    0x00,0x01,0x00,0x01,0x01,0x01,0x00,0x01,0x00,0x01

    0x00,0x01,0x00,0x01,0x00,0x01,0x12,0xC0,0x01,0x61

    0xB0,0xB3

    http://forums.parallax.com/showthread.php?143222-bs2-gps-lcd&p=1137310&viewfull=1#post1137310

    To clarify:
    re. the bytes --
    Serial.print(0xA0, BYTE);
    Serial.print(0xA2, BYTE);
    and so on
  • cschaefercschaefer Posts: 4
    edited 2012-11-27 04:54
    PJ Allen wrote: »
    The following will turn it off:
    Using 4800 baud send/Serial.print
    this string:
    ("$PSRF100,0,4800,8,1,0*0F",\r,\n)

    followed by this series of Hex bytes
    0xA0,0xA2,0x00,0x02,0x8F,0x00,0x00,0x8F,0xB0,0xB3

    0xA0,0xA2,0x00,0x18,0x81,0x02,0x01,001,0x00,0x01

    0x00,0x01,0x00,0x01,0x01,0x01,0x00,0x01,0x00,0x01

    0x00,0x01,0x00,0x01,0x00,0x01,0x12,0xC0,0x01,0x61

    0xB0,0xB3

    http://forums.parallax.com/showthread.php?143222-bs2-gps-lcd&p=1137310&viewfull=1#post1137310

    To clarify:
    re. the bytes --
    Serial.print(0xA0, BYTE);
    Serial.print(0xA2, BYTE);
    and so on

    Thanks very much for this, PJ. And thanks for the additional link. One other question: is WAAS enabled by default on the PMB-648? It is my impression that it is. If not, how does one turn it on? The SiRFstar IIII documentation is a bit confusing in this regard and the PMB-648 datasheet is unclear as well.
  • PJAllenPJAllen Banned Posts: 5,065
    edited 2012-11-27 18:09
    cschaefer wrote: »
    is WAAS enabled by default on the PMB-648? It is my impression that it is. If not, how does one turn it on? The SiRFstar IIII documentation is a bit confusing in this regard and the PMB-648 datasheet is unclear as well.

    I haven't looked into that. You've stumped me. (Didn't want to leave you hanging w/ no reply.)
  • RotorfixerRotorfixer Posts: 1
    edited 2012-12-02 07:38
    Hi Guys,

    First post on the forum.

    Seemed good to place the question here.

    I have recently purchased a parallax PMB-648 and have fallen victim to the static navigation situation, I need speed to update below 3 MPH and it obviously isn't. I have been trying like crazy to make this work. I am connected to, and am working with, Arduino.

    This is the (Arduino) code (to try to disable it, only relevant portions copied) that is in my setup routine. I am using software serial on pins A3, A2. they are connected to the TX0 and RX0 (TTL) pins on the module. I assume those pins are what I want to use?
    
    #include <SoftwareSerial.h>
    SoftwareSerial nss(A3, A2);
    nss.begin(4800);
    nss.println("$PSRF100,0,4800,8,1,0*0F");
    
    
    nss.write((byte)0xA0);
    nss.write((byte)0xA2);
    nss.write((byte)0x00);
    nss.write((byte)0x02);
    nss.write((byte)0x8F);
    nss.write((byte)0x00);
    nss.write((byte)0x00);
    nss.write((byte)0x8F);
    nss.write((byte)0xB0);
    nss.write((byte)0xB3);
    
    
    nss.write((byte)0xA0);
    nss.write((byte)0xA2);
    nss.write((byte)0x00);
    nss.write((byte)0x18);
    nss.write((byte)0x81);
    nss.write((byte)0x02);
    nss.write((byte)0x01);
    nss.write((byte)0x01);
    nss.write((byte)0x00);
    nss.write((byte)0x01);
    
    
    nss.write((byte)0x00); 
    nss.write((byte)0x01); 
    nss.write((byte)0x00);
    nss.write((byte)0x01); 
    nss.write((byte)0x01); 
    nss.write((byte)0x01); 
    nss.write((byte)0x00); 
    nss.write((byte)0x01);
    nss.write((byte)0x00);
    nss.write((byte)0x01);
    
    
    nss.write((byte)0x00);
    nss.write((byte)0x01);
    nss.write((byte)0x00);
    nss.write((byte)0x01);
    nss.write((byte)0x00);
    nss.write((byte)0x01);
    nss.write((byte)0x12);
    nss.write((byte)0xC0);
    nss.write((byte)0x01);
    nss.write((byte)0x61);
    
    
    nss.write((byte)0xB0);
    nss.write((byte)0xB3);
    
    
    

    Any help to make this work would be appreciated!!!! Thank you!

    Roto.
  • softconsoftcon Posts: 217
    edited 2012-12-16 18:28
    Ahh, this was my problem too. I have the 648, and it was only updating after I got half way down the block. Not good for my purposes. Thanks to this thread, I can now add the appropriate strings in my init code, and it will operate properly. I'll make the modifications (using a bs2 for testing) and perhaps then I can get output more often. That should help.
    Thanks for the work guys.
    However, I would be interested in finding out whether or not the 248 gives better accuracy. So if you've tried it, and found out, please let us know.
Sign In or Register to comment.