Fórum témák

» Több friss téma
Fórum » Megoldás GPS és PIC közötti kapcsolatra
Lapozás: OK   1 / 1
(#) gustaw hozzászólása Feb 10, 2008 /
 
Sziasztok!

Megoldást keresek arra, hogyan lehetne egy régebbi Garmin Streetpilot GPS kimenő NMEA adatait beolvastatni egy PIC-kel. Szeretném a gépezeten a térképet nézni, és egy plusz kijelzőre felíratni a szűrt adatokat.
A kapcsolat RS232.
Találtam több kapcsolást a neten, de vagy a forráskódot nem írták le a részletes rajzhoz, vagy fordítva.
Köszi a segítséget.
(#) Topi válasza gustaw hozzászólására (») Feb 10, 2008 /
 
NMEA 0183 a protokoll.
Komplettül arra amit Te akarsz csinálni, hogy PIC-el térképen pozíciót megjeleníteni meg hasonlót nem fogsz találni...
Amit Te akarsz, azt PocketPC-nek hívják és nem összemérhető a teljesítménye egy ARM processzorra épülő PPC-vel.
(#) kobold válasza gustaw hozzászólására (») Feb 10, 2008 /
 
Nem írtad, hogy konkrétan melyik megoldást szeretnéd megvalósítani, így inkább a formátum után keresgéltem. Az említett Garmin az NMEA 0183-as protokollt használja, és ha jól vettem ki a szövegből, egy RS232-TTL szintillesztővel (MA232, HIN232) a processzorhoz lehet csatolni. A program viszont valószínűleg nem lesz túl egyszerű, elég sokféle csomag van, mehet a feldolgozás ezerrel.
NMEA
NMEA 0183
Részletesebb leírás a csomagokról 1
Részletesebb leírás a csomagokról 2
(#) gustaw hozzászólása Feb 10, 2008 /
 
Nem, Topi félreértettél! nem grafikusan akarom pozíciómat megnézni térképen, arra ott van a Streetpilot saját képe, hanem egy plusz LCD-re (alfanumerikus) szeretnék az NMEA adatsorból néhány dolgot kiírni. Itt egy link, amire gondoltam, csak itt a fószer nem tette még fel a forrást.
GPS LCD kijelző
Mivel láma vagyok PIC téren, csak Flowcode-dal programozom őket, ott meg nem találtam megoldást arra, hogy egy az rs232-höz kell-e plusz hardware, vagy ez kihagyható egy olyan PIC-cel ami ezt a soros kapcsolatot alapból tudja.
(#) kobold válasza gustaw hozzászólására (») Feb 10, 2008 /
 
A "plusz hardware" az említett 232-es IC-t és pár kondit jelenti, minimális összeg, és egyszerű huzalozás. Az RS232 csomagok feldolgozása a PIC dolga, egy regiszterébe automatikusan fogad mindent, persze megfelelő konfig után, megszakítással ezt jelzi is, utána már a csomag tartalma alapján el lehet dönteni, hogy kell-e az adat, ami a regiszterbe került, vagy nem, és lehet várni a következőt.
(#) ciw válasza gustaw hozzászólására (») Feb 11, 2008 /
 
Üdv !

Akkor végülis neked egy forráskód kéne a pic-be ami kiválogatja az RMC kódokat?

Arra tudok neked adni egy rutint C-ben íródott és nem bonyolult.

A gps-től jövő adatokat gyüjti egy pufferbe és amikor egy sor megvan, akkor megnézi, hogy az eleje az pl.: RMC-nél $GPRMC-e.

Ha igen akkor a puffer tartalmát szétdarabolja a vesszőket figyelembevéve. Ha jól rémlik az strtoken függvénnyel.

Este hazaérek felrakom a kódot.
(#) ciw válasza gustaw hozzászólására (») Feb 11, 2008 / 4
 
Üdv !

Itt az ígért kikódoló rész.

  1. void example(void)
  2. {
  3. static char  term[3], RMC[8],*ptr;
  4. static char tmplat[11];
  5. static char tmplon[11];
  6. //char NMEA[128];
  7. float fX;
  8. char ch;
  9. unsigned char l;
  10. static unsigned long timeout=4321000;
  11.  
  12.         strcpy(RMC,"GPRMC");
  13.         strcpy(term,",;");
  14. //    strcpy(fp,RSrx2);
  15.         do{    
  16.         while((getch_S()!='$') && (timeout)) timeout--;
  17.                 if (timeout==0) TerminalMsg("TIME OUT !");
  18.                 l=0;
  19.                 timeout=4321000;
  20.                 while(((ch=getch_S())!=13) && (timeout))
  21.                {
  22.                   fp[l]=ch;
  23.                   l++;
  24.                 timeout--;
  25.                 }
  26.                 if (timeout==0) TerminalMsg("TIME OUT !");
  27.  
  28.           }
  29.  
  30. while (strncmp(fp,RMC,5)!=0);      
  31.  
  32.  
  33.         Speed_kmph=0;
  34.         l=0;
  35.         ptr = strtok(fp, term);
  36.         fX=0.0;
  37. while(ptr!=0) {
  38.                                    if (l==1) strncpy(GP_Time,ptr,6);
  39.                                    if (l==2) strcpy(GP_Status,ptr);
  40.                                    if (l==3) strcpy(tmplat,ptr);
  41.                                    if (l==4) strcpy(GP_NS,ptr);
  42.                                    if (l==5) strcpy(tmplon,ptr);
  43.                                    if (l==6) strcpy(GP_EW,ptr);
  44.                                    if (l==7) strcpy(GP_Speed,ptr);
  45.                                    if (l==9) strcpy(GP_Date,ptr);
  46.                                    l++;
  47.                                    ptr = strtok(0, term);
  48.                            }
  49.    
  50. //for(l=0;l<200;l++) fp[l]=0;
  51. if (GP_Status[0]=='A')
  52.        {
  53.         fX = atof(GP_Speed);
  54.         fX *= 1.852;        // convert knots to km/h
  55.         Speed_kmph=(unsigned char)fX;
  56.                
  57.        
  58.                 GP_Lat[0]=tmplat[0];
  59.                 GP_Lat[1]=tmplat[1];
  60.                 GP_Lat[2]='.';
  61.                 GP_Lat[3]=tmplat[2];   
  62.                 GP_Lat[4]=tmplat[3];
  63.                 GP_Lat[5]=tmplat[5];
  64.                 GP_Lat[6]=tmplat[6];
  65.                 GP_Lat[7]='0';
  66.         //      GP_Lat[8]=tmplat[8];
  67.  
  68.                 GP_Lon[0]=tmplon[1];
  69.                 GP_Lon[1]=tmplon[2];
  70.                 GP_Lon[2]='.';
  71.                 GP_Lon[3]=tmplon[3];   
  72.                 GP_Lon[4]=tmplon[4];
  73.                 GP_Lon[5]=tmplon[6];
  74.                 GP_Lon[6]=tmplon[7];
  75.                 GP_Lon[7]='0';
  76.                 //GP_Lon[8]=tmplon[9];
  77.                 strcpy(tmplat,"GPS OK");
  78.                
  79.        }
  80.         else
  81.         {
  82.                 strcpy(GP_Time,"000000");
  83.                 strcpy(GP_Date,"000000");
  84.                 strcpy(GP_Status,"V");
  85.                 strcpy(GP_Lat,"00.000000");
  86.                 strcpy(GP_Lon,"00.000000");
  87.                 strcpy(GP_Speed,"000");
  88.                 strcpy(GP_NS,"?");
  89.                 strcpy(GP_EW,"?");
  90.                 strcpy(tmplat,"GPS Warn");
  91.                 Speed_kmph=0;
  92.                 gpsOsszeg=0;
  93.         }
  94.        
  95.        
  96. }
A hozzászólás módosítva: Dec 7, 2013
(#) pici hozzászólása Ápr 21, 2008 /
 

Na végre volt egy kis időm és megismerkedtem a rendelt PMB-648 GPS modulommal.
Én is tervezem összekötni Szines LCD-s PIC-el, első körben "ráddugtam" PC-re.
Sajnos az idő nagy részét a soros port leprogramozása tette ki szívtam rendessen.
De végül beindult és dőlt az NMEA adathalmaz.
Ebből már csak mazsolázgatni kell az infót.
A progi csak ellenőrzésre szolgál, de ami infót lehetett kiszedtem belőle... GPS holdak helyét jelerőségét is.
Valami hasonlót tervezek PIC-re, és ki lehetne próbálni menet közben.
Csatoltam képet progiról

(#) szilva válasza pici hozzászólására (») Ápr 21, 2008 /
 
Huhh, ez szép projekt, gratula! Meg szabad kérdezni, egy ilyen GPS modul mennyiért szerezhető be?
(#) pici válasza szilva hozzászólására (») Ápr 21, 2008 /
 

A legolcsóbb aminek van antennája 11eft volt áfástól futárostól. Ennél olcsóbbat csak antenna nélkül láttam.

(#) Báddzsó hozzászólása Szept 23, 2008 /
 
Sziasztok, úgy néz ki hozzám fog jutni egy nem működő
gpses pda. A következők lennének a kérdéseim:
A benne lévő gps modul, külön, működésre bírható e?
Egyáltalán kibányászható a pdaból?
Sorosan lehet e vele kommunkálni? Protokoll, ilyesmi? Sirf III chipsetes.
Bonyolultabb mint gsm-nél az AT parancsok?
Olvasgattam a fórum összes gpses topikját, kicsit megijedtem...
Arra gondoltam, hogy egyszerű koordinátakiíró kütyüt csinálnék vele piccel. Persze ha nem túl bonyolult...
köszi a válaszokat!
(#) pici válasza Báddzsó hozzászólására (») Szept 23, 2008 /
 
Szia
Ha szerencséd van (és a többség ilyen) akkor soros NMEA kommunikációt használ. (nem pedig bináris sirfet vagy hasonlót)
A modulok forszemes panelen vannak és úgy vannak beültetve. Ezeket a modulokat le lehet bányászni óvatossan. Nem egyszerű.
Nem kell más, mint a Vcc GND és a TX láb. Tápfesz után a jól bekötött modul egyből küldi az adatokat vagy 4800 vagy 9600 bauddal. De ha nem, akkor van a battery meg a reset láb, de ezek is egyszerűek... 1 kondi a resetre Vcc a batteryre és kész.
Az RX láb csak akkor kell, ha át akarod állítani, amire nem nagyon van szükség.
1-4 másodpercenként kapod a különféle NMEA adatokat...
Antenna is kell!
Nem AT parancsokkal megy, de nem is kell piszkálni... ezek jófejek és maguktól adnak, csak győzzed feldolgozni.

GPSmodul.jpg
    
(#) Báddzsó válasza Báddzsó hozzászólására (») Szept 23, 2008 /
 
na olvasgattam, odáig jutottam, hogy NMEA meg sirf protokol. ez még menne is.. Tehát az a kérdés maradt, hogy kiszedhető e egy pdaból és használható e? Kösziii!
szerk: most válaszoltál pici, köszi!
(#) pic_nagyistvan hozzászólása Dec 7, 2013 /
 
Sziasztok!

Egy kérdésem lenne felétek. Olvastatok vagy hallottatok már arról, hogy a PIC32-es mikrokontrollert hogyan lehet távolról programozni? Szeretnék egy olyan kapcsolást készíteni, amelyben GPRS-es kapcsolaton keresztül le lehet cserélni a mikrokontroller működtető szoftverét. Tudja valaki, hogy ezt hogyan kell kivitelezni? Csinált már valaki ilyet?

A választ előre is köszönöm!
(#) nedudgi válasza pic_nagyistvan hozzászólására (») Dec 8, 2013 /
 
A kulcsszó: bootloader
(#) burgerklein hozzászólása Okt 20, 2018 /
 
Sziasztok.
Van egy Navman F series gps -em amelyik tökéletesen működikde szeretnem frisiteni a gps mapakat mert csak 3 orszag talalhato a gps-embe pl Franciaorszag, Belgium es Egyesult Kiralysag de en szeretnek feltelepiteni a gps -emre egy full Europa terkep mapat,
meg egy egesz szoftvercseret is ha lehetseges , . Ha valaki tud segiteni segitsen , a valaszt elore is koszonom.

A segítséget előre is köszönöm.
Következő: »»   1 / 1
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem