Sadzonka · Nabiera kształtu, wciąż się zmienia

Moduł GPS wysyłał śmieci zamiast NMEA: to było RS-232, nie TTL

Posadzona Read in English →

Miałem moduł GPS bez oznaczeń poza nazwą producenta (Skylab) – najpewniej SKM51. Według dokumentacji używa poziomów TTL, więc podłączyłem go przez tanią przejściówkę USB–UART na FT232RL. Dane przychodziły regularnie i powtarzalnie, tyle że zamiast czytelnych zdań NMEA w ASCII były to krzaki.

Okno PuTTY na porcie COM9 pełne powtarzających się, nieczytelnych znaków zamiast zdań NMEA
Tak wyglądały dane z modułu odczytywane przez przejściówkę TTL.

Co sprawdziłem

  • drugą przejściówkę – to samo,
  • różne prędkości i parametry transmisji – albo brak danych, albo śmieci,
  • logikę 3,3 V i 5 V (przejściówki ze zworką) – bez różnicy,
  • połączenie TX↔RX – sprawdzone wielokrotnie,
  • Raspberry Pi zamiast przejściówki – te same, powtarzalne śmieci,
  • kilka anten – wszystkie zachowywały się tak samo.

Trop: ujemne napięcie

Zmierzyłem napięcia w oryginalnym urządzeniu, które współpracowało z tym modułem: VCC +5 V, TX 0 V, RX −5 V. Ujemne napięcie na linii danych to znak rozpoznawczy RS-232 – wytwarza je przetwornica w układzie typu MAX232. Standard dopuszcza poziomy od ±3 V do ±15 V, więc −5 V mieści się w normie. Z dokumentacji wynikało zresztą, że moduł występuje w dwóch wersjach: RS-232 i TTL.

To tłumaczy objaw: RS-232 jest odwrócone względem TTL – logiczna jedynka to napięcie ujemne – więc przejściówka TTL czyta odwrócone bity. Dane są powtarzalne, ale nieczytelne.

Rozwiązanie

Użyłem konwertera RS-232–TTL, a dla wygody kabla z modułem wyprowadzającym linie na złącza śrubowe, żeby nie ciąć oryginalnego przewodu. Musiałem jeszcze doprowadzić zasilanie +5 V do modułu GPS i połączyć jego masę z masą USB. Po tym dane stały się czytelne.

Lekcja

  • Powtarzalne, ale nieczytelne dane przy prawidłowej prędkości to typowy objaw odwróconej logiki albo złych poziomów napięć.
  • Zanim zaufasz dokumentacji, zmierz napięcie na linii danych w spoczynku: TTL jest wtedy w stanie wysokim (3,3 lub 5 V), RS-232 – na minusie.
  • Inna możliwa przyczyna: niektóre moduły GPS nadają w binarnym formacie producenta i trzeba je przełączyć na NMEA jego narzędziem.

Źródło: mój wątek na elektroda.pl – Moduł GPS Skylab SKM51 i chińskie przejściówki: nieczytelne znaki ASCII w formacie NMEA (wrzesień 2020).