www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

GPS moduli
Pojdi na stran Prejšnja  1, 2, 3
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Navigacija in sledenje
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
PrimozL
Član
Član



Pridružen-a: Tor 21 Mar 2006 10:55
Prispevkov: 404
Aktiv.: 1.72
Kraj: okolica Vipave

PrispevekObjavljeno: Čet Apr 21, 2011 10:05 pm    Naslov sporočila:   Odgovori s citatom

RUros je napisal/a:
Tudi jaz sem ta isti modul že priklopil in kaže da dela Smile . Če ti ni odveč ali lahko poveš kako si izvedel povezavo Rx in Tx, si moral prilagoditi nivoje ali si uporabil samo tista upora ? Hvala.


Živijo,
Pri meni dela GPS modul z NXP ARMom na 3.3V, torej ni težav z nivoji. Če je tvoj mikrokrmilnik 5V, bi uporabil proti GPS upor 1K v serijo, zener diodo 3V3 proti masi in še en upor 330R do vhoda v GPS. V obratni smeri od GPS k uC pa samo upor 330R. Tako vezje preizkušeno deluje tudi na 115K2. Če bi pa prav želel 3.3V izhod iz GPS pretvoriti v 5V, lahko uporabiš npr "single gate" čip. HCT vhodni nivoji na 5V so taki, da jim 3.3V povsem ustreza (stran 6 v PDF-ju).

LP Primož.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RUros
Član
Član



Pridružen-a: Čet 09 Mar 2006 22:26
Prispevkov: 1031
Aktiv.: 4.39

PrispevekObjavljeno: Sre Apr 27, 2011 1:16 pm    Naslov sporočila:   Odgovori s citatom

Pozdrav!

Pri komunikaciji z modulom sem naletel na težavo. Komunikacija sicer dela, ampak ne vem načina, kako iz poslanih paketov razbrati pravega. Se pravi če hočem npr. shraniti samo paket $GPGGA. Kako vedeti kateri je ? Poizkusil sem tako, da gnezdim if stavke, in preverjam vsak znak posebej, ki pride preko UART. Vendar se tu zatakne, ker to ne dela najbolje. Za dva gnezdena if stavka, stvar še dela, potem pa ne več, preko terminala ne dobim nobene povratne informacije (iz AVR-ja si namreč pošiljam nazaj na PC, da vidim kaj sem prejel). Kako ste to težavo rešili vi ?
In pa še eno vprašanje, ki me muči: kako lahko s pomočjo for stavka prebereš nek del stavka ? Namreč ko hočem to storiti, dobim samo enake znake in ni podobno istemu, kar pričakujem. Kaj pri vsem tem delam narobe Rolling Eyes ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.33

PrispevekObjavljeno: Sre Apr 27, 2011 2:58 pm    Naslov sporočila:   Odgovori s citatom

To ni najboljša ideja za sprejem dolgih paketov preko uarta, ker je ta komunikacija precej počasna, pa še, kot si omenil, se rado zatika.
Naredi raje ciklični buffer v katerega loviš znake in obdelaj celoten sprejet paket na enkrat in ne vsak znak posebej.
Potem pa v main zanki spremljaj koliko $ karakterjev imaš v bufferju. Če imaš vsaj 2 pomeni, da imaš vsaj 1 cel paket, ki ga lahko obdelaš.
Paket pa obdelaš tako, da prebereš prebereš komando med $ in prvo vejico....
Če ni paket pravi, greš čakat na naslednji v celoti sprejeti paket.

_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
PrimozL
Član
Član



Pridružen-a: Tor 21 Mar 2006 10:55
Prispevkov: 404
Aktiv.: 1.72
Kraj: okolica Vipave

PrispevekObjavljeno: Sre Apr 27, 2011 4:09 pm    Naslov sporočila:   Odgovori s citatom

RUros je napisal/a:
Pri komunikaciji z modulom sem naletel na težavo. Komunikacija sicer dela, ampak ne vem načina, kako iz poslanih paketov razbrati pravega. Se pravi če hočem npr. shraniti samo paket $GPGGA. Kako vedeti kateri je ?


Živijo,

Vsekakor je pametno narediti en avtomat stanj (state machine) in rezervirati vmesni pomnilnik, v katerega vpisuješ znak po znak vsebine sprejetega sporočila.


Moj predlog (že večrat preizkušen):

1.Osnovno stanje je, ko čakaš na začetek paketa. Ko sprejmeš znak '$', greš v stanje sprejema vsebine sporočila.

2. V stanju sprejemanja vsebine sporočila samo še sprejemaš posamezne znake in jih tlačiš v vmesni pomnilnik. Za vse sprejeti znak tudi popraviš kontrolno vsoto. Paziti moraš seveda, da ne greš pri pisanju čez meje pomnilnika, če se kaj zatakne (npr. ne sprejmeš znaka '*', ki označuje konec vsebine sporočila). Če se to zgodi, je nekaj narobe, in greš v stanje 1. Po tem, ko v tem stanju sprejmeš znak '*', greš v naslednje stanje in čakaš prvi znak kontrolne vsote.

3. Ko tega sprejmeš, greš v stanje sprejema drugega znaka kontrolne vsote.

4. Ko tega sprejmeš, preveriš, če je izračunana vsota enaka sprejeti in je torej sporočilo v redu sprejeto, da ga lahko nadalje razkosaš na posamezna polja. Z eno globalno spremenljivko še označiš, da je novo sporočilo na voljo in dokler ni obdelan, ne sprejemaš novih sporočil. Zatem greš v vsakem primeru zopet v stanje čakanja začetnega znaka '$' novega sporočila.

Zgoraj skicirani avtomat stanj je (če je kolikor toliko lepo napisan) tako enostaven in hiter, da ga brez težav daš v prekinitveno rutino, ko ti enkrat zanesljivo deluje v glavnem programu. Vmesni pomnilnik je recimo globalno polje določene velikosti, recimo 128 bytov.

Če so ti druga sporočila odveč, enostavno po sprejemu sporočila preveriš, če je prvih 5 znakov enakih "GPGGA". Če ni, sporočilo zavržeš. Lahko pa seveda znotraj avtomata stanj po prejemu 5 znakov sporočila to preveriš in če ni ustrezno, greš v stanje 1 čakat novo sporočilo.

Brez avtomata stanj si ne predstavljam pisanja rutine za sprejem GPS sporočil (ali katerekoli druge komunikacije).

LP Primož.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RUros
Član
Član



Pridružen-a: Čet 09 Mar 2006 22:26
Prispevkov: 1031
Aktiv.: 4.39

PrispevekObjavljeno: Sre Apr 27, 2011 5:24 pm    Naslov sporočila:   Odgovori s citatom

Najprej sem hotel narediti po kopitu iz tega linka, kar pa ni najbolje, kar sem opisal že zgoraj.
Če bi hotel potem shraniti cel paket in ga nato obdelovati, moram tudi nekako znake shraniti v nek array oz. niz. Tudi to sem poskušal s pomočjo for zanke, ampak se mi zdi, da je UART prepočasen, in da zato dobim same enake znake. Ne vem kako sicer to vi rešujete, ampak programski jezik, v katerem pišem, vsebuje tudi že spisano funkcijo za sprejem celega teksta.
Torej deluje tako, da shrani tekst v niz, do kje pa naj ga shrani pa določa delimiter, ki bi bil tem primeru znak '*'.
S tem ukazom, pa mi uspe prejeti vse pakete pravilno, kar vidim tudi preko terminala na PC-ju. Torej sem praktično že shranil nek paket od '$' do '*'. Kar je tudi namen.
Pri preverjanju vrste paketa se malo zatakne, ker ne vem kako naj primerjam znan niz z neznanim. Npr. ali je ????==GPGGA. Je morda rešitev v tem, da preko for zanke preverjam vsak znak posebej z if stavkom, ki ga zapišem v HEX kodi in ne kot znak, ker če zapišem kot znak, bo vrednost izraza vedno true, ker sta oba tipa, ki se primerjata enaka ?
Sem morda na pravi poti, ali sem začel popolnoma narobe ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.33

PrispevekObjavljeno: Sre Apr 27, 2011 5:37 pm    Naslov sporočila:   Odgovori s citatom

kaj pa z že spisanimi funkcijami v c knjižnici?
strncmp Compare characters of two strings (function)
memcmp Compare two blocks of memory (function)

dodaj #include string.h.

_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RUros
Član
Član



Pridružen-a: Čet 09 Mar 2006 22:26
Prispevkov: 1031
Aktiv.: 4.39

PrispevekObjavljeno: Sre Apr 27, 2011 11:43 pm    Naslov sporočila:   Odgovori s citatom

Matjaž hvala za idejo, sem že poprej pomislil na to, pa se nisem preveč poglabljal v te funkcije. Sem pa do sedaj uspešno rešil sprejem paketa in prepoznave z vašo pomočjo, tako da hvala za nasvete. Uspelo mi je paket nekako sprejeti in shraniti, nato pa pogledati prvih par znakov ali je pravi s funkcijo strcmp.
Sem pa ugotovil, da bi to naredil še hitreje, če me terminal na PC-ju ne bi tako zaj..... Ugotovil sem, da kadar kar zamrzne in pošilja kar naprej iste stare podatke namesto novih Brick wall . Kakšne programe za gledanje in pošiljanje UART podatkov iz PC pa uporabljate vi ? Bom moral naložiti katerega boljše delujočega Twisted Evil .
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
tretjic
Član
Član



Pridružen-a: Čet 24 Sep 2009 1:19
Prispevkov: 437
Aktiv.: 2.28
Kraj: Postojna

PrispevekObjavljeno: Ned Avg 07, 2011 2:51 pm    Naslov sporočila:   Odgovori s citatom

piroman je napisal/a:
Na ebayu je teh modulov obilo. Sam sem pred kratkim dobil BTGPS modul za par €. Itak imajo vse serijski izhod, le ploščico je treba malo potipati z osciloskopom...

Npr. tale: http://cgi.ebay.co.uk/Royaltek-RBT-2100-Bluetooth-Car-GPS-Module-Sirf-III-/180603126625?pt=LH_DefaultDomain_0&hash=item2a0cc90361
ima sigurno serijski izhod, sem se nedavno tega igral z njim.

Imam točno tak GPS, pa mi nikakor ne uspe najti serijskega izhoda.
Sam GPS modul je poleg tega še dobro prekrit/pospajkan s kovinskim oklopom, tako da mi še ni uspelo priti točno do njega (bi rabil 300W spajkalnik Confused ) . Kakšna ideja, kje naj iščem? Pray
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.33

PrispevekObjavljeno: Ned Avg 07, 2011 3:06 pm    Naslov sporočila:   Odgovori s citatom

Ali v tem produktu obstaja neka nosilna tiskanina, ki povezuje dva ločena modula (GPS in Bluetooth)?
V tem primeru ne bi smelo biti večjih težav. Poglej kakšna sta ta dva modula ter poskusi dobiti UM/datasheet s pinoutom teh modulov.
V kolikor pa je zadeva na eni tiskanini, bo pa treba kar poskušat dobiti pravo linijo. To bo mnogo težje zaradi shielda in rasterja čipovja...

Piši piromanu na ZS, če se ti tu ne oglasi.

_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
luka1995
Član
Član



Pridružen-a: Sob 17 Apr 2010 21:42
Prispevkov: 614
Aktiv.: 3.32
Kraj: Ljubljana

PrispevekObjavljeno: Sob Sep 17, 2011 6:18 am    Naslov sporočila:   Odgovori s citatom

Je že kdo testirat ta modul iz DX? http://www.dealextreme.com/p/em-411-gps-engine-board-module-with-sirf-star-iii-chipset-80037
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Navigacija in sledenje Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3
Stran 3 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group