Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

GPS z komunikacją przez Bluetooth

Stiepanowna 08 Cze 2012 15:38 12094 3
  • GPS z komunikacją przez Bluetooth


    Korzystam z dwóch smartfonów, ale w żadnym z nich nie ma GPS. A ponieważ nie zawsze jest wygodnie brać ze sobą urządzenie z większym wyświetlaczem, postanowiłem zrobić sam taki moduł GPS do telefonu komunikujący się za pomocą Bluetootha.

    Jako odbiornik GPS wybrałem EB-500. To 66-kanałowy (!) moduł, który kosztuje ok. 15 dolarów, jest niewielkich rozmiarów, dzięki czemu łatwo przylutować go do płytki. Są także EB-500L - bez wzmacniacza antenowego, który może pracować tylko z aktywnymi antenami. Ponadto nie wiadomo dlaczego jest droższy. Dlatego wybrałem pierwszy.

    Pomimo tego, że w module już jest wzmacniacz i można podłączyć tanią pasywną antenę, kupiłem aktywną za 12 dolarów - ANT GPS ANT380 SMA-M 2M.

    GPS z komunikacją przez Bluetooth

    Jest to antena na podstawie magnetycznej i złączem SMA. Współczynnik wzmocnienia wynosi 28 dBi. Kupując złączkę, zwróćcie uwagę, żeby była taka jak w antenie.

    Teraz kwestia Bluetootha. Moduł obowiązkowo powinien posiadać funkcję SPP (port szeregowy). Cena takich modułów zaczyna się od 25 dolarów, ale jest takie jedno chińskie rozwiązanie - moduł HC-04 - w którym jest tylko funkcja SPP, a nam więcej nie trzeba. Co więcej, kosztuje jakieś 7-8 dolarów; kupiłem go tutaj.

    GPS z komunikacją przez Bluetooth

    Nawiasem mówiąc, jest jeszcze jeden moduł podobny do niego, który nazywa się HC-05 (jest jeszcze HC-06). Myślałem, że właśnie go kupiłem, już nawet zaprojektowałem pod niego płytkę, a tu po paru godzinach okazało się, że to HC-04. Dlatego zrobiłem dwa schematy i dwie płytki - dla HC-04 i HC-05.
    Do modułu podłączymy akumulator litowo-jonowy, który będzie ładowany przez układ scalony MAX1555. W układzie są osobne piny do podłączenia źródła zasilania 5-7V/0.4А oraz USB. W momencie podłączenia zewnętrznego źródła zasilania, prąd ładowania jest ograniczony do280mА; w przypadku USB - do 100mА. Radzę wziąć akumulator z komórki, ponieważ ma niewielką płytkę, która nim steruje - jeśli napięcie będzie minimalne (wg mnie to jakieś 2,7V), wtedy układ odłączy akumulator od odbiornika.

    Ponieważ będziemy podłączać do USB, a EB-500 posiada dwa porty szeregowe, postanowiłem zamontować przetwornicę USB->USART i podłączyć ją do drugiego portu. To na wypadek, gdyby pod ręką był laptop bez Bluetootha - wtedy będzie można podłączyć przez USB. Jako konwertera użyjemy CP2102, ale nie jest to obowiązkowe.





    Schemat podzieliłem na dwie części:

    GPS z komunikacją przez Bluetooth

    Zasilanie + konwerter CP2102

    Podłączenie CP2102 jest standardowe. Dwie diody sygnalizują stan źródła zasilania, trzecia - stan ładowania: świeci - akumulator się ładuje, zgasła - akumulator został naładowany. POWER_ON/OFF - tu jest podłączany przycisk włączania.

    GPS z komunikacją przez Bluetooth

    Podstawowy schemat

    Na schemacie znajduje się sam GPS i Bluetooth, do złącza ANT jest podłączona antena. Jeśli zewrzemy ją do masy, możemy spalić moduł. Do 12 wyjścia EB-500 jest podłączona bateria podtrzymania zasilania pamięci, między portami EB-500 i HC-04 są dwa złącza służące do podłączenia EB-500 i HC-04 do komputera poprzez port szeregowy w celu dokonania zmian w ustawieniach modułów.

    Układ ścieżek na płytce drukowanej:

    GPS z komunikacją przez Bluetooth

    Średnica ścieżki to 0,4mm, brak trudno lutujących się elementów, jedynie może CP2102, ale, jak wcześniej pisałem, można go pominąć.

    Powinno wyjść coś takiego:

    GPS z komunikacją przez Bluetooth
    GPS z komunikacją przez Bluetooth

    Dlaczego „coś takiego”? Jak wcześniej pisałem, płytkę zaprojektowałem pod HC-05, potem wyszło HC-04, a nowej płytki już mi się nie chciało robić. Dlatego poprawiłem tę. W dodatku nie miałem małego przełącznika, dlatego przylutowałem szpilki stykowe i zamontowałem na nich zworkę. Złączki dla zewnętrznego źródła zasilania też nie było, ale tu już niczego nie lutowałem.

    Płytkę zaś starałem się zrobić taką, żeby się zmieściła w obudowie Z23.

    Teraz przechodzimy do określenia ustawień i testowania naszego urządzenia. Jeśli nie mamy akumulatora, nic się nie dzieje, bo na razie nie będziemy go potrzebować. Najważniejsze, żeby była bateria podtrzymania, ale jeszcze nie będziemy jej montować.

    Włączamy zasilanie modułu (przełącznik POWER_ON lub złączka, jak u mnie). Jeśli nie mamy akumulatora, podłączamy zewnętrzny zasilacz lub USB. Powinna zamigać dioda WORK_STATUS (w moim przypadku to ta żółta po lewej stronie). Jeśli tego nie zaobserwowaliśmy, oznacza to, że HC-04 się nie włączył i trzeba znaleźć przyczynę błędu. Następnie odłączamy zasilanie, podłączamy antenę, wstawiamy baterię podtrzymania, podłączamy zasilanie - powinna zaświecić się dioda GPS_STATUS i po jakimś czasie zamigać. Jeśli w ogóle się nie zaświeci, znaczy, że EB-500 się nie włączył. Jeśli nie zaczęła migać, oznacza to, że moduł jeszcze nie wykrył satelit. W tym przypadku, jeśli nie ma problemów z anteną, należy chwilę poczekać (niekiedy wykrywanie satelit przy pierwszym włączeniu urządzenia może potrwać nawet pół godziny).

    Tak więc już sprawdziliśmy urządzenie i określiliśmy jego ustawienia. Następnie przyda się nam konwerter COM->TTL lub USB->USART. Przyda się również program Qt_comport. Teraz będziemy konfigurować urządzenie. Musimy tak zrobić, żeby prędkość USARTa EB-500 była taka sama jak prędkość USARTa HC-04. Prędkość HC-04 wynosi 9600 baud, a w przypadku EB-500 może wynieść od 4800 do 115200. Kiedy przylutujemy CP2102, to wydaje się, że nic prostszego jak podłączyć urządzenie do USB, sprawdzić różne prędkości, określić przy jakiej pracuje EB-2500 i za pomocą terminala ustawić nową, ale... W EB-500 jest pamięć ulotna i jeśli wyciągniemy baterię podtrzymania, wcześniejsze ustawienia się zresetują - może do tego dojść wtedy kiedy np. urządzenie nam spadnie i wypadnie bateria. Ustawień EB-500 nie będziemy zmieniać; zajmiemy się ustawieniami HC-04.

    Na początek powinniśmy określić prędkość EB-500. W tym celu wyłączamy zasilanie urządzenia, następnie podłączamy wejście COM->TTL konwertera do wyjścia (TX) modułu EB-500 tak jak na rysunku:

    GPS z komunikacją przez Bluetooth

    T to TX modułu EB-500, R - RX modułu. Drugiego (R) nie trzeba podłączać. Teraz podłączamy masę urządzenia i TTL konwertera. Uruchamiamy Qt_comport, wybieramy port, do którego jest podłączony konwerter TTL. Tam gdzie jest INPUT DATA i OUTPUT DATA wybieramy ASCII, z lewej ustawiamy Baudrate = 115200, Parity = PAR_NONE, Flowcontrol = FLOW_OFF, naciskamy APPLY, a potem tuż obok portu - OPEN. Następnie wyłączamy zasilanie urządzenia. Program wyświetli masę danych, pierwsze dwie linijki powinny wyglądać następująco:

    2 $PMTK011,MTKGPS*08
    3 $PMTK010,001*2E

    Jeśli będą się różnić, oznacza to, że moduł pracuje na innej prędkości. Spróbujmy powtórzyć procedurę dla prędkości równej 9600, 4800 i 38400 itd. Kiedy w końcu określimy prędkość, możemy zacząć konfigurację HC-04. Jeśli zaś prędkość wynosi 9600, nawet nie trzeba go ustawiać.

    Podłączamy konwerter TTL do HC-04. TX łączymy z RX w module EB-500, a RX z TX. Należy podłączyć oba przewody (RX i TX). Konfigurację modułu przeprowadza się za pomocą komend AT Hayesa. Moduł HC-04 przyjmuje te komendy w momencie gdy nie został określony kanał radiowy. HC-05 zaś przechodzi w tryb przyjęcia komend kiedy na PIO11 jest wysoki poziom - nie należy tego mylić! Tak więc przełączamy moduł w tryb przyjmowania komend, otwieramy w Qt_comport port z tymi ustawieniami. Pamiętamy, że Baudrate = 9600. W górnym textboksie (Data for send) piszemy AT i naciskamy SEND. Za chwilę w dolnym textboksie powinno się pojawić OK, co oznacza, że nastąpiło połączenie z modułem. Teraz należy zmienić prędkość. Żeby to zrobić, należy przesłać komendę AT+BAUD i wpisać bez przerw liczbę w systemie szesnastkowym od 1 do C. Poniżej lista liczb dla każdej prędkości:

    12 1---------1200
    13 2---------2400
    14 3---------4800
    15 4---------9600
    16 5---------19200
    17 6---------38400
    18 7---------57600
    19 8---------115200
    20 9---------230400
    21 A---------460800
    22 B---------921600
    23 C---------1382400

    Na przykład jeśli chcemy ustawić prędkość równą 115200, w textboksie piszemy AT+BAUD8. Następnie znów próbujemy wpisać AT - nie powinna przychodzić żadna odpowiedź. Zamykamy port, wybieramy Baudrate = 115200, akceptujemy, otwieramy port, wysyłamy AT - jeśli wraca, wybieramy OK. Oznacza to, że moduł stabilnie pracuje na nowej prędkości.

    Na tym możemy zakończyć konfigurację modułu, ale w przypadku HC-04 przy pomocy komend AT można zmienić nazwę i hasło, a u HC-05 jeszcze masę innych parametrów. Żeby zmienić domyślne hasło, hasło 1234, trzeba przesłać AT+PIN i hasło składające się z 4 znaków (bez przerw) – np. żeby ustawić hasło „1111”, wysyłamy AT+PIN1111. Żeby zmienić domyślną nazwę „linvor”, trzeba przesłać AT+NAME i następnie, bez przerw, nazwę. Jeśli chcemy, żeby inne moduły Bluetooth widziały urządzenie jako GPS Bluetooth, należy przesłać AT+NAMEGPS Bluetooth - w odpowiedzi powinniśmy otrzymać OKsetname.

    To wszystko - teraz, kiedy konfiguracja obu modułów jest zakończona, można testować urządzenie.

    Podłączamy antenę, łączymy EB-500 i HC-04 i włączamy zasilanie. Powinniśmy otrzymać coś takiego:

    GPS z komunikacją przez Bluetooth

    Lewa dioda powinna szybko migać, druga z lewej najpierw się świecić, a potem migać. Teraz spróbujemy podłączyć urządzenie do komputera. Otwieramy BlueSoleil (wypróbowałem wersje 2, 6 i 8 - 6 dość stabilnie pracowała), a następnie wykrywanie nowych urządzeń.

    GPS z komunikacją przez Bluetooth

    Mamy go:) Następnie klikamy w niego prawym przyciskiem myszy – „Połączenie” (Сопряжение) i wprowadzamy hasło. Potem prawym przyciskiem – „Połączenie” (Соединение), „Port szeregowy COMx”, gdzie „x” oznacza numer wirtualnego portu, za pomocą którego będziemy się komunikować z urządzeniem. Po tej czynności dioda na HC-04 powinna się świecić, co oznacza, że połączenie zostało nawiązane. Ale często się zdarza, że połączenie nie zostanie nawiązane nawet po 10 próbach. Długo męczyłem się z tym problemem, tymczasem rozwiązanie było dość proste - należało otworzyć port w tym programie, w którym chcemy korzystać z urządzenia. Na przykład chcemy się połączyć za pomocą Qt_comport. Klikamy w ikonę urządzenia prawym klawiszem i patrzymy przez jaki port nastąpi połączenie (COMx). Włączamy Qt_comport, wybieramy ten port i otwieramy, dioda zaczyna się świecić, a program wyświetla bardzo dużą ilość komunikatów. Nawiasem mówiąc zmiany ustawień portu nie mają tu większego znaczenia - można dać prędkość nawet 115200 czy 4800 - ustawienia są już zapisane i przechowywane w module. Tylko jeśli podłączamy poprzez CP2102 nie należy zapomnieć o prawidłowych ustawieniach. Zamykamy port.

    Połączenie między EB-500 i komputerem zostało nawiązane. Teraz to trzeba „posortować”. Nie ma sensu pisać samemu softu, bo jest sporo gotowych programów. Na początek wypróbujemy program producenta - EB View (ja mam wersję 1.0.3). Włączamy, wybieramy port (i prędkość, jeśli nie łączymy się przez Bluetooth), wybieramy „On”.

    GPS z komunikacją przez Bluetooth

    W większym oknie będą się wyświetlały te same komunikaty, które widzieliśmy w terminalu, a program będzie je odszyfrowywać i przekładać na bardziej zrozumiałą treść. Jak można zauważyć, za pomocą GPS można zdobyć nie tylko informacje odnośnie położenia, ale również czasu, daty, prędkości (i całkiem dokładnie, jeśli jedziemy po równym), wysokości nad poziomem morza etc. W zakładce „Setup” można zmieniać ustawienia modułu. Jeśli coś za bardzo pokombinujemy, można odłączyć podstawowe i podtrzymujące zasilanie modułu, a wtedy ustawienia wrócą do domyślnych.

    Zaprezentowane urządzenie działa jak zwyczajny GPS Bluetooth dostępny w sprzedaży.

    Teraz spróbujemy sprawdzić nasze położenie na Google Earth.

    Pobieramy, instalujemy. Ale pojawia się pewien problem - EB-500 przekazuje dane za pomocą protokołu NMEA-0183, czego Google Earth nie odczytuje. Dlatego potrzebujemy tymczasowego programu - GPS TrackMaker; można pobrać go tutaj. Instalujemy i włączamy. Teraz wybieramy w menu Interface->NMEA 0183, potem klikamy w odpowiedni port, za pomocą którego komputer się będzie łączył z urządzeniem oraz prędkość, jeśli nie łączymy się przez Bluetooth. Klikamy „Start”. Powinno pojawić się takie okno:

    GPS z komunikacją przez Bluetooth

    Jest tu podana wysokość nad poziomem morza, współrzędne, prędkości i jeszcze parę innych parametrów. Teraz w górnym polu klikamy ikonkę Google Earth (4 z prawej) - otworzy się aplikacja, w której będą podane współrzędne naszego położenia.

    GPS z komunikacją przez Bluetooth

    Nawiasem mówiąc, dokładność jest dość spora.

    Schemat i wzór płytki w DipTrace dla HC_04(35 Kb) (w załączniku)
    Schemat i wzór płytki w DipTrace dla HC_05(35 Kb) (w załączniku)

    Źródło:
    http://kibermaster.net/gps-bluetooth-svoimi-rukami/


    Fajne!
  • #2 08 Lip 2012 12:47
    krzycho123
    Poziom 31  

    Projekt mnie bardzo zainteresował , szkoda tylko że prezentowany moduł nie jest dostępny w polskiej dystrybucji.

    Wogóle jest to jakiś mało popularny moduł bo niewiele można znaleźć do niego dokumentacji oprócz tej producenta.

  • #3 15 Lip 2012 18:20
    poltergeist83
    Poziom 2  

    Witam wszystkich!
    Widzę że jest tu kilka osób zorientowanych w temacie.
    Rozumiem żeby w jakiś bardziej skomplikowany sposób przetwarzać sygnał/informację potrzebny jest uP.
    Czy sam moduł BT jest w stanie zrobić coś z sygnałem?
    Mam na myśli, odebrać, przetworzyć A/C, dodać/odjąć/przemnożyć/podzielić przez stałą i odesłać. Te moduły posiadają pamięć, ale nie wiem jak się do niej dobrać odpowiednio.
    Czy jest możliwe zaimplementowanie jakiegoś algorytmu bez dodatkowego uP?

    Pozdrawiam
    Polter

  • #4 24 Lip 2012 20:31
    mjerzym
    Poziom 9  

    Witam
    Czy można powyższy moduł BT wykorzystać do przeróbki Vag-Com z rs232 aby uzyskać transmisję po BT. Znalazłem zestaw AVT 5203 ale jest on oparty na wt12
    Czy warunkiem stworzenia takiego bezprzewodowego Kabla rs232 jest obsługa protokołu SPP przez moduł BT?