Infografika: co wysyła echosonda XJ02B i co z tego rysuje aplikacja Fish Helper

O czym zapomniał Ci powiedzieć sprzedawca #3 – czyli dlaczego echosonda XJ02B wysyła prawdziwy obraz, którego nie da się odczytać

To trzecia część serii, w której sprawdzam, ile z tego, co widzisz na ekranie echosondy, jest pomiarem, a ile rysunkiem. W poprzednim odcinku Lucky FF918 okazał się głębokościomierzem z termometrem, który kolorowy echogram rysuje z pamięci, a wielkość ryby losuje.

Dziś na stole leży coś znacznie tańszego i bez nazwy: czarna kula za dwieście kilkadziesiąt złotych z chińskiego marketplace’u, sprzedawana jako „2023 new Wireless Fish Finder”. Na spodzie naklejka SONAR 125 kHz i tyle. Bluetooth, aplikacja Fish Helper, brak nawet nazwy producenta na obudowie.

I tu zaczyna się zaskoczenie, bo XJ02B wysyła prawdziwy przekrój echa, a nie cztery liczby jak FF918. Brzmi jak awans o klasę. Policzyłem jednak, ile z tego przekroju wypada na rybę, i wyszło, że to za mało, żeby cokolwiek wiarygodnie ocenić.

Czarna kula sonarowa XJ02B w oryginalnym pudełku, bez nazwy producenta
Echosonda XJ02B prosto z pudełka. Na naklejce producenta nie ma, jest tylko nazwa importera i kod EAN.

Cała rozmowa sondy XJ02B z telefonem to 140 bajtów, z czego 120 to pomiary echa

Podłączyłem telefon do logowania ruchu Bluetooth i rozłożyłem to, co przylatuje z wody, bajt po bajcie. Ramka ma stałą długość 140 bajtów i przychodzi około sześć razy na sekundę.

  • 120 bajtów to kolejne pomiary głośności echa, od powierzchni do zadanej głębokości
  • 2 bajty to głębokość
  • 2 bajty to temperatura
  • 3 bajty to gotowy werdykt sondy: głębokość celu i jego „rozmiar” w skali od 1 do 3
  • reszta to znaczniki początku i końca, poziom baterii, nastawy i suma kontrolna

Dla porównania: Lucky FF918 wysyłał dziewięć bajtów i cztery liczby mówiące wyłącznie „na tej wysokości coś wisi”. Tutaj dostajemy realny przekrój. Sto dwadzieścia brzmi dużo. Zaraz zobaczysz, dlaczego to nadal za mało.

Infografika: co wysyła echosonda XJ02B i co z tego rysuje aplikacja Fish Helper
Całość w jednym obrazku: co XJ02B wysyła, jak patrzy i co z tego zostaje na ekranie.

XJ02B oświetla naraz warstwę grubą na 16 centymetrów i to wyznacza wszystko inne

To jest rzecz, której nie tłumaczy żaden opis produktu, a bez niej nie da się zrozumieć reszty.

XJ02B nie ogląda całej toni naraz. Wysyła jeden krótki impuls dźwiękowy, który ma pewną długość w wodzie, i słucha, co wraca. W każdej chwili słyszy odbicie tylko z tej jednej warstwy, która akurat przelatuje. Warstwa sunie w dół z prędkością dźwięku, czyli około półtora kilometra na sekundę, a sonda zapisuje po drodze 120 kolejnych odczytów głośności.

Przy 125 kHz jedno drganie trwa 8 mikrosekund. Przetwornik potrzebuje kilkudziesięciu drgań, żeby się rozkołysać, więc impuls trwa realnie od 12 do 23 centymetrów drogi w wodzie, zależnie od nastawionej głębokości. Przy 10 metrach wody to około 16 centymetrów.

I stąd wynika najważniejsze ograniczenie tego sprzętu: cokolwiek jest cieńsze od tej warstwy, nie ma kształtu. Nie narysuje łuku, nie zrobi plamki o jakimś rozmiarze. Zrobi tylko tyle, że jeden odczyt ze 120 będzie głośniejszy od sąsiadów.

XJ02B nie widzi, jak duża jest ryba: różnica między trzydziestką a pięćdziesiątką to ćwierć odczytu

Policzmy to wprost. Przy 10 metrach wody XJ02B przełącza się na zakres 18 metrów, więc jeden odczyt obrazu odpowiada 15 centymetrom toni, a impuls ma 16 centymetrów.

Głębokość wodyJeden odczyt obrazuRyba 30 cmRyba 50 cmRóżnica
3 m2,5 cm7,1 odczytu8,7 odczytu1,6 odczytu
5 m5,1 cm3,8 odczytu4,6 odczytu0,8 odczytu
10 m15,2 cm1,5 odczytu1,7 odczytu0,26 odczytu
20 m22,9 cm1,3 odczytu1,4 odczytu0,17 odczytu
Ile odczytów obrazu zajmuje ryba, zależnie od głębokości. Przy 10 metrach różnica między rybą 30 a 50 cm to ćwierć jednego odczytu.

Ćwierć odczytu to mniej niż jeden piksel obrazu. Na 20 metrach różnica spada do jednej szóstej. Nawet w najlepszym przypadku, czyli na 3 metrach, to półtora odczytu.

Wniosek jest niewygodny, ale jednoznaczny: XJ02B fizycznie nie jest w stanie zobaczyć, jak duża jest ryba. I nie dlatego, że odczytów jest za mało. Dlatego, że jej własny impuls jest grubszy niż ryba. To sufit fizyki tego sprzętu, którego żadna aktualizacja oprogramowania nie ruszy.

Rozmiar ryby w XJ02B to głośność echa, a nie długość ryby

Skoro wielkości zmierzyć się nie da, XJ02B musi ją skądś wziąć. Bierze ją z głośności odbicia i wrzuca w trzy przedziały: cicho to jedynka, głośniej dwójka, najgłośniej trójka. Ten jeden bajt trafia do aplikacji, a ta rysuje odpowiednią ikonkę.

Problem w tym, że głośność echa zależy przede wszystkim od dwóch rzeczy, które z długością ryby nie mają nic wspólnego:

  • jak ryba jest ustawiona w chwili pomiaru, bokiem czy pyskiem do sondy
  • jak daleko od środka wiązki przepływa, bo przy brzegu stożka echo jest wyraźnie słabsze

Trzeba oddać sprawiedliwość: w odróżnieniu od Lucky FF918 rozmiar nie jest tutaj losowany. Jest liczony. Tylko liczony z wielkości, która o długości ryby mówi bardzo niewiele. Ta sama ryba, w osi stożka i przy jego krawędzi, dostanie dwa różne rozmiary.

Dno w XJ02B to po prostu najgłośniejszy odczyt ze 120

Skoro XJ02B ma 120 liczb, musi jakoś zdecydować, która z nich jest dnem. Sprawdziłem to w jej oprogramowaniu: idzie po kolei w dół i zapamiętuje najgłośniejszy odczyt. Ten ogłasza dnem.

Nie sprawdza, czy echo jest płaskie. Nie sprawdza, czy twarde. Nie porównuje z poprzednim pingiem. Po prostu najgłośniejszy.

Konsekwencja: jeżeli pod łódką stoi zbita ławica albo coś twardego wisi nad dnem i odbije mocniej niż samo dno, to zostanie uznane za dno. A nawet tego nie zauważysz, bo aplikacja prowadzi linię dna filtrem uśredniającym po szesnastu ostatnich pomiarach. Zamiast skoku narysuje łagodne zbocze. Dno podjedzie do góry i wróci, jakbyś przepłynął nad górką, której tam nie ma.

W toni XJ02B prawie wszystko może zostać rybą

Sprawdziłem, po czym XJ02B rozpoznaje rybę. Warunki są trzy i to cała lista:

  • echo jest głośniejsze niż próg zależny od nastawionej czułości
  • cel jest co najmniej 0,6 metra nad dnem
  • cel jest głębiej niż 0,7 metra pod sondą

Nie ma analizy kształtu echa. Nie ma sprawdzania, jak długo echo trwa. Nie ma śledzenia celu między kolejnymi pingami. Decyzja zapada na jednej próbce z jednego pingu.

Co jest naprawdę pod łódkąCo pokaże XJ02B
rybaikona ryby
pływający liść, patyk, kożuch glonówikona ryby
pęcherzyki, zawiesina po deszczu, warstwa termicznaikona ryby
zawieszona gałąź, zerwana linkaikona ryby
trawa wyższa niż 0,6 m od dnaikona ryby, i to same czubki
trawa niższa niż 0,6 m od dnanic, jest niewidzialna
kłoda leżąca na dnienic, zlewa się z dnem
Detektor nie klasyfikuje. Każde odbicie spełniające trzy warunki dostaje ikonę ryby, a wszystko przy samym dnie znika.

Działa to więc w obie strony i obie są złe. To, co naprawdę chcesz wiedzieć przed położeniem zestawu, czyli gdzie jest trawa i gdzie leży zaczep, nie ma na tym ekranie żadnej reprezentacji.

Aplikacja Fish Helper ma dwa obrazy dna, a domyślny nie dotyka pomiarów

W ogólnodostępnej aplikacji są dwa niezależne sposoby rysowania dna i to nie są dwa style graficzne, tylko dwa różne sposoby powstania obrazu.

  • Tryb Sonar bierze te 120 pomiarów i robi z nich prawdziwy echogram.
  • Tryb General nazywa się w kodzie dosłownie „obliczanie obrazu wirtualnego dna”. Nie dotyka pomiarów ani razu. Bierze jedną liczbę, czyli głębokość, wygładza ją i wypełnia wszystko pod linią gotowym obrazkiem z pliku, który przewija się w kółko.

Tryb General jest domyślny. Po instalacji aplikacja startuje właśnie w nim.

Przełączysz na Sonar i trafiasz na kolejną pułapkę. Przy włączonych ikonach ryb, a są włączone domyślnie, aplikacja przed narysowaniem obrazu znajduje dno i kasuje do zera wszystko powyżej. Całą toń, wszystkie słabe echa, całą roślinność. Zostaje ślad dna i pływające nad nim ikonki.

Masz więc wybór, o którym nikt nie mówi: albo ikonki ryb, albo obraz toni. Nigdy jedno i drugie naraz.

Render z aukcji echosondy XJ02B pokazujący aplikację, której nie ma w zestawie
Zdjęcie z oferty. Ikonki ryb z podpisaną głębokością, brązowe góry dna i trawka. Aplikacja, którą realnie dostajesz, nie rysuje żadnej z tych rzeczy w żadnym trybie.

Pierwsze 0,7 metra pod XJ02B jest ślepe, a poniżej 0,61 m aplikacja pokazuje kreski

Przetwornik zachowuje się jak dzwonek. Kiedy nadaje, i jeszcze długo po tym, jak przestanie, jest głuchy, bo własny dźwięk zagłusza mu wszystko, co wraca. Z pomiarów na wodzie wychodzi strefa martwa około 70 centymetrów.

Ryba stojąca 60 cm pod sondą nie istnieje. Zanęta tuż pod łódką też nie. Na płytkiej wodzie robi się z tego poważny problem, bo dno wpada sondzie w tę strefę martwą.

Ekran aplikacji Fish Helper przy 0,8 m wody: żółta plama zamiast obrazu dna
0,8 m wody. Poniżej 0,6 m ekran zalewa jednolity kolor.
Ekran aplikacji Fish Helper przy 0,7 m wody: cała toń zalana kolorem
0,7 m wody. Struktury dna nie da się już odczytać.

Ta żółta warstwa to nie jest osobna informacja o dnie. To maksimum skali: ogłuszony odbiornik wpisuje wartość największą z możliwych, a paleta maluje maksimum na żółto. Prawdziwe dno gubi się w środku tej plamy.

Poniżej pewnej granicy aplikacja po prostu odmawia współpracy. W kodzie jest twardy warunek: jeśli głębokość jest mniejsza niż 0,61 metra, pokaż kreski zamiast liczby. Nie „zmierz dokładniej”, nie „ostrzeż użytkownika”. Kreski.

Jest jeszcze jedno zachowanie, które widać tylko na płyciźnie. Kiedy XJ02B zgubi dno, aplikacja podstawia sobie w to miejsce 76 metrów i prowadzi do nich linię tym samym filtrem uśredniającym. Zamiast skoku rysuje łagodne zbocze. Stąd bierze się góra, która nagle wyrasta na płytkiej wodzie. Nikt jej nie zmierzył.

XJ02B na 10 metrach oświetla koło o średnicy 8 metrów

Spód echosondy XJ02B z naklejką SONAR 125KHZ, bez włącznika
Jedyna specyfikacja na urządzeniu: SONAR 125 kHz, 3,3 V, Bluetooth. Włącznika nie ma, sonda budzi się w wodzie.

XJ02B nie świeci w dół jak laser, tylko jak latarka: im głębiej, tym szerszy krąg oświetla. Sprzedawcy podają dla tej klasy sprzętu 90 stopni, w co nie wierzę, bo to nie zgadza się z fizyką. Przy 125 kHz fala w wodzie ma około 12 milimetrów, a żeby uzyskać stożek 90 stopni, element musiałby mieć jakieś 8 milimetrów, czyli byłby mniejszy od fali, którą nadaje. Realnie wychodzi około 45 stopni, co potwierdza inna sonda z tej samej rodziny, deklarująca przy tej samej częstotliwości właśnie tyle.

Głębokość wodyŚrednica oświetlanego koła (45°)
5 mponad 4 metry
10 mponad 8 metrów
20 mponad 16 metrów
Ikonka na ekranie oznacza cel gdzieś w tym kole. Nie pod łódką, tylko gdzieś w kole.

Przy 10 metrach wody cel, który widzisz, może być dokładnie pod Tobą albo cztery metry z boku. Nie masz jak tego rozstrzygnąć. I przypominam, że wcale nie musi to być ryba.

XJ02B nigdy nie mierzy tego, co jest dokładnie pod łódką

To wynika wprost z poprzedniej sekcji, ale jest na tyle ważne, że zasługuje na osobne miejsce. Skoro sonda oświetla koło o średnicy ośmiu metrów, to słyszy odbicia z całego tego koła naraz. A ponieważ dnem ogłasza najgłośniejszy odczyt, który dotarł najwcześniej, w praktyce podaje głębokość najbliższego mocnego odbicia z całego koła, a nie tego punktu, nad którym akurat stoisz.

Na płaskim dnie nie ma to znaczenia, bo najbliższy punkt jest akurat pod łódką. Problem zaczyna się wszędzie tam, gdzie dno nie jest płaskie, czyli dokładnie w miejscach, których szukasz.

Na stoku sonda pokazuje odległość prostopadłą, a nie głębokość

Kiedy przepływasz nad skarpą, płytsza krawędź stoku wpada w stożek i jej echo wraca wcześniej niż echo spod łódki. XJ02B podaje więc odległość do najbliższego punktu stoku, czyli w praktyce odległość prostopadłą do powierzchni dna. Zawsze w jedną stronę: za płytko.

Nachylenie dnaRzeczywista głębokość pod łódkąCo pokaże XJ02BBłąd
10,00 m9,96 m4 cm
10°10,00 m9,85 m15 cm
15°10,00 m9,66 m34 cm
20°10,00 m9,40 m60 cm
25°10,00 m9,06 m94 cm
30°10,00 m8,66 m1,34 m
Błąd głębokości na stoku przy 10 metrach wody i stożku 45 stopni. Im szerszy stożek, tym więcej nachyleń mieści się w środku i tym większy błąd.

Na stoku 20 stopni, czyli typowej skarpie żwirowni, XJ02B skłamie o sześćdziesiąt centymetrów. Na stromej krawędzi o ponad metr. I nie zasygnalizuje tego w żaden sposób, bo z jej punktu widzenia wszystko jest w porządku: znalazła mocne echo i je zaraportowała.

Roślina albo przeszkoda w stożku przejmuje pomiar głębokości

Ten sam mechanizm działa przy przeszkodach i jest jeszcze bardziej mylący. Jeżeli gdziekolwiek w oświetlanym kole stoi kępa trawy, leży gałąź albo wystaje kamień, a odbije mocniej niż miękkie dno pod łódką, XJ02B poda głębokość tej przeszkody i uzna ją za dno.

Głębokość wodyŚrednica oświetlanego kołaObiekt 1 m nad dnem w tym kole
5 m4,1 msonda może podać 4 m zamiast 5 m
10 m8,3 msonda może podać 9 m zamiast 10 m
20 m16,6 msonda może podać 19 m zamiast 20 m
Wystarczy, że przeszkoda znajdzie się gdziekolwiek w kole, nawet cztery metry od łódki. Nie musi być pod nią.

Praktycznie oznacza to, że mapując łowisko taką sondą, nie mierzysz dna, tylko obwiednię wszystkiego, co odbija w promieniu kilku metrów. Miejsce oznaczone jako 9 metrów może być dziewięciometrowym szczytem kępy trawy stojącej cztery metry od trasy przelotu, podczas gdy pod samą łódką jest dziesięć metrów czystego dna.

I na tym polega różnica między szerokim a wąskim stożkiem, o której sprzedawcy nie mówią. Wąski stożek to nie jest gorsza specyfikacja, tylko lepsza. Im węższe koło, tym większa szansa, że to, co widzisz, jest naprawdę pod Tobą.

Jak to sprawdzić samemu, bez żadnego sprzętu

Nie musisz mi wierzyć na słowo. Trzy próby, każda do zrobienia w kilka minut:

  1. Przełącz tryb z General na Sonar. W General dno jest gładkie i ma zawsze tę samą fakturę. W Sonar robi się ziarniste i pojawiają się słabe echa. Ta sama woda, ta sama sekunda, a różnica polega wyłącznie na tym, czy aplikacja użyła pomiaru.
  2. Wyłącz ikony ryb i popatrz, ile nagle pojawiło się w toni. To wszystko było tam cały czas, tylko zostało wykasowane, żeby zrobić miejsce na ikonki.
  3. Wejdź na płyciznę poniżej 0,7 metra. Zobaczysz uparte 0,7 m niezależnie od rzeczywistej głębokości, żółtą warstwę zalewającą ekran, potem kreski zamiast liczby, a na koniec górę wyrastającą z niczego.

Podsumowanie – czego XJ02B nie mówi wprost

  • Nie odróżni ryby 30 cm od 50 cm, bo jej własny impuls jest dłuższy niż ryba. Przy 10 metrach różnica wynosi ćwierć odczytu obrazu.
  • „Rozmiar ryby” to głośność echa, zależna głównie od ustawienia ryby i jej położenia w stożku, a nie od długości.
  • Każde odbicie w toni może zostać rybą. Roślinność przy dnie i zaczepy nie mają na ekranie żadnej reprezentacji.
  • Dno to najgłośniejszy odczyt, bez sprawdzania czegokolwiek. Ławica nad dnem potrafi je zastąpić, a filtr zamieni to w łagodne wzniesienie.
  • Nie mierzy tego, co jest pod łódką, tylko najbliższe mocne odbicie z koła o średnicy ośmiu metrów. Na stoku 20 stopni myli się o 60 cm, zawsze za płytko.
  • Pierwsze 0,7 metra jest ślepe, a poniżej 0,61 metra aplikacja pokazuje kreski zamiast głębokości.
  • Domyślny tryb rysuje dno z obrazka, a włączone ikony ryb kasują całą toń.

Innymi słowy: to jest głębokościomierz z prostym wykrywaczem odbić. Głębokość mierzy porządnie i to jest realnie użyteczne. Wykrywa, że w toni coś jest, i to też ma wartość. Ale na tym koniec.

Wobec Lucky FF918 to i tak awans, bo tam obraz dna był w całości rysunkiem, a wielkość ryby dosłownie losowana. Tutaj pomiar istnieje i jest prawdziwy. Jeśli jednak kupujesz to z myślą, że zobaczysz rybę, ocenisz jej wielkość albo odczytasz strukturę dna przed położeniem zestawu, to kupujesz coś, czego ten sprzęt nie umie i nie będzie umiał.

Czego nie sprawdzałem i o czym dlatego nie piszę: jakości samego przetwornika, realnej czułości na małe cele, zachowania w mule i w zaroślach oraz porównania z markowym sprzętem na tej samej wodzie. Opisuję wyłącznie to, co udało się ustalić: co ta sonda wysyła i co aplikacja z tym robi.

Źródła i materiały do sprawdzenia

W następnym odcinku: sonda z tej samej rodziny protokołu, która deklaruje dwie częstotliwości, 125 i 330 kHz. Sprawdziłem, czy naprawdę je ma.

Tak to u nas działa: zanim cokolwiek trafi do naszych łódek, przechodzi przez ten stół. A jak coś nie przejdzie – mówimy o tym głośno, nawet jeśli akurat nikt tego nie chce słyszeć.

Podobne wpisy

Dodaj komentarz