O čem ti prodejce zapomněl říct #3 – aneb proč sonar XJ02B posílá skutečný obraz, který nejde přečíst
Tohle je třetí část série, ve které zjišťuju, kolik z toho, co vidíš na displeji sonaru, je měření a kolik kresba. V minulém díle se Lucky FF918 ukázal jako hloubkoměr s teploměrem, který barevný echogram kreslí z paměti a velikost ryby losuje.
Dnes leží na stole něco výrazně levnějšího a bez jména: černá koule za necelých tisíc pět set korun z čínského marketplace, prodávaná jako „2023 new Wireless Fish Finder“. Na spodku nálepka SONAR 125 kHz a to je vše. Bluetooth, aplikace Fish Helper, na krytu ani jméno výrobce.
A tady začíná překvapení, protože XJ02B posílá skutečný průřez echa, ne čtyři čísla jako FF918. Zní to jako posun o třídu výš. Spočítal jsem ale, kolik z toho průřezu připadá na rybu, a vyšlo, že je to málo na to, aby se dalo cokoliv spolehlivě posoudit.

Celá komunikace sondy XJ02B s telefonem je 140 bajtů, z toho 120 jsou vzorky echa
Připojil jsem telefon k záznamu provozu Bluetooth a rozebral to, co přilétá z vody, bajt po bajtu. Rámec má pevnou délku 140 bajtů a přichází asi šestkrát za sekundu.
- 120 bajtů jsou po sobě jdoucí vzorky hlasitosti echa, od hladiny po nastavenou hloubku
- 2 bajty jsou hloubka
- 2 bajty jsou teplota
- 3 bajty jsou hotový verdikt sondy: hloubka cíle a jeho „velikost“ na stupnici od 1 do 3
- zbytek jsou značky začátku a konce, stav baterie, nastavení a kontrolní součet
Pro srovnání: Lucky FF918 posílal devět bajtů a čtyři čísla říkající pouze „v téhle výšce něco visí“. Tady dostáváme reálný průřez. Sto dvacet zní hodně. Za chvíli uvidíš, proč je to pořád málo.

XJ02B osvětluje naráz vrstvu silnou 16 centimetrů a to určuje všechno ostatní
Tohle nevysvětluje žádný popis produktu a bez toho nejde pochopit zbytek.
XJ02B nesleduje celý vodní sloupec naráz. Vyšle jeden krátký zvukový impuls, který má určitou délku ve vodě, a poslouchá, co se vrací. V každém okamžiku slyší odraz jen z té jedné vrstvy, která zrovna prolétá. Vrstva klesá rychlostí zvuku, tedy asi půldruhého kilometru za sekundu, a sonda cestou zapíše 120 po sobě jdoucích vzorků hlasitosti.
Při 125 kHz trvá jeden kmit 8 mikrosekund. Měnič potřebuje několik desítek kmitů, aby se rozkmital, takže impuls reálně zabírá 12 až 23 centimetrů dráhy ve vodě, podle nastavené hloubky. Při 10 metrech vody je to asi 16 centimetrů.
A z toho plyne nejdůležitější omezení téhle techniky: cokoliv je tenčí než tahle vrstva, nemá tvar. Nenakreslí oblouk, neudělá skvrnu o nějaké velikosti. Udělá jen to, že jeden vzorek ze 120 bude hlasitější než sousedi.
XJ02B nevidí, jak velká je ryba: rozdíl mezi třicítkou a padesátkou je čtvrtina vzorku
Spočítejme to přímo. Při 10 metrech vody se XJ02B přepne na rozsah 18 metrů, takže jeden vzorek obrazu odpovídá 15 centimetrům vodního sloupce, a impuls má 16 centimetrů.
| Hloubka vody | Jeden vzorek obrazu | Ryba 30 cm | Ryba 50 cm | Rozdíl |
|---|---|---|---|---|
| 3 m | 2,5 cm | 7,1 vzorku | 8,7 vzorku | 1,6 vzorku |
| 5 m | 5,1 cm | 3,8 vzorku | 4,6 vzorku | 0,8 vzorku |
| 10 m | 15,2 cm | 1,5 vzorku | 1,7 vzorku | 0,26 vzorku |
| 20 m | 22,9 cm | 1,3 vzorku | 1,4 vzorku | 0,17 vzorku |
Čtvrtina vzorku je méně než jeden pixel obrazu. Na 20 metrech rozdíl klesne na šestinu. I v nejlepším případě, tedy na 3 metrech, jsou to jeden a půl vzorku.
Závěr je nepohodlný, ale jednoznačný: XJ02B fyzicky není schopen vidět, jak velká je ryba. A ne proto, že by vzorků bylo málo. Proto, že jeho vlastní impuls je silnější než ryba. To je fyzikální strop téhle techniky, se kterým žádná aktualizace softwaru nehne.
Velikost ryby v XJ02B je hlasitost echa, ne délka ryby
Když velikost změřit nejde, musí ji XJ02B odněkud vzít. Bere ji z hlasitosti odrazu a hází ji do tří přihrádek: potichu je jednička, hlasitěji dvojka, nejhlasitěji trojka. Tenhle jeden bajt jde do aplikace a ta nakreslí odpovídající ikonku.
Problém je, že hlasitost echa závisí především na dvou věcech, které s délkou ryby nemají nic společného:
- jak je ryba natočená ve chvíli měření, bokem nebo tlamou k sondě
- jak daleko od středu svazku plave, protože u okraje kuželu je echo výrazně slabší
Nutno uznat: na rozdíl od Lucky FF918 se velikost tady nelosuje. Počítá se. Jen se počítá z veličiny, která o délce ryby říká velmi málo. Tatáž ryba dostane v ose kuželu a u jeho okraje dvě různé velikosti.
Dno je v XJ02B prostě nejhlasitější ze 120 vzorků
Když má XJ02B 120 čísel, musí nějak rozhodnout, které z nich je dno. Ověřil jsem to v jeho softwaru: jde postupně dolů a zapamatuje si nejhlasitější vzorek. Ten prohlásí za dno.
Nekontroluje, jestli je echo ploché. Nekontroluje, jestli je tvrdé. Neporovnává s předchozím pingem. Prostě nejhlasitější.
Důsledek: jestli pod loďkou stojí husté hejno nebo něco tvrdého visí nade dnem a odrazí silněji než samo dno, bude to uznáno za dno. A ani si toho nevšimneš, protože aplikace vede linii dna průměrovacím filtrem přes posledních šestnáct měření. Místo skoku nakreslí mírný svah. Dno vyjede nahoru a vrátí se, jako bys přejel přes kopeček, který tam není.
Ve vodním sloupci se pro XJ02B může rybou stát skoro cokoliv
Zjišťoval jsem, podle čeho XJ02B rozpozná rybu. Podmínky jsou tři a to je celý seznam:
- echo je hlasitější než práh závislý na nastavené citlivosti
- cíl je nejméně 0,6 metru nade dnem
- cíl je hlouběji než 0,7 metru pod sondou
Není tam žádná analýza tvaru echa. Není tam kontrola, jak dlouho echo trvá. Není tam sledování cíle mezi po sobě jdoucími pingy. Rozhodnutí padne na jednom vzorku z jednoho pingu.
| Co je opravdu pod loďkou | Co ukáže XJ02B |
|---|---|
| ryba | ikona ryby |
| plovoucí list, klacík, koberec řas | ikona ryby |
| bublinky, zákal po dešti, teplotní vrstva | ikona ryby |
| zavěšená větev, utržený vlasec | ikona ryby |
| tráva vyšší než 0,6 m ode dna | ikona ryby, a to jen vrcholky |
| tráva nižší než 0,6 m ode dna | nic, je neviditelná |
| kmen ležící na dně | nic, splyne se dnem |
Funguje to tedy oběma směry a oba jsou špatné. To, co opravdu chceš vědět před položením montáže, tedy kde je tráva a kde leží zádev, nemá na tomhle displeji žádné zastoupení.
Aplikace Fish Helper má dva obrazy dna a ten výchozí se měření vůbec nedotkne
Ve veřejně dostupné aplikaci jsou dva nezávislé způsoby kreslení dna a nejsou to dva grafické styly, ale dva různé způsoby, jak obraz vzniká.
- Režim Sonar vezme těch 120 měření a udělá z nich skutečný echogram.
- Režim General se v kódu jmenuje doslova „výpočet obrazu virtuálního dna“. Měření se ani jednou nedotkne. Vezme jedno číslo, tedy hloubku, vyhladí ho a vyplní všechno pod linií hotovým obrázkem ze souboru, který se posouvá dokola.
Režim General je výchozí. Po instalaci se aplikace spouští právě v něm.
Přepneš na Sonar a narazíš na další past. Při zapnutých ikonách ryb, a ty jsou zapnuté ve výchozím stavu, aplikace před vykreslením obrazu najde dno a vynuluje všechno nad ním. Celý vodní sloupec, všechna slabá echa, celý porost. Zůstane stopa dna a ikonky plovoucí nad ní.
Máš tedy volbu, o které nikdo nemluví: buď ikonky ryb, nebo obraz vodního sloupce. Nikdy obojí naráz.

Prvních 0,7 metru pod XJ02B je slepých a pod 0,61 m aplikace ukazuje čárky
Měnič se chová jako zvon. Když vysílá, a ještě dlouho potom, co přestane, je hluchý, protože vlastní zvuk mu přehluší všechno, co se vrací. Z měření na vodě vychází mrtvá zóna asi 70 centimetrů.
Ryba stojící 60 cm pod sondou neexistuje. Krmení těsně pod loďkou taky ne. Na mělčině z toho vzniká vážný problém, protože sondě spadne do téhle mrtvé zóny samo dno.


Ta žlutá vrstva není samostatná informace o dnu. Je to maximum stupnice: ohlušený přijímač zapíše největší možnou hodnotu a paleta maximum vybarví žlutě. Skutečné dno se ztratí uvnitř té skvrny.
Pod určitou hranicí aplikace prostě odmítne spolupracovat. V kódu je tvrdá podmínka: je-li hloubka menší než 0,61 metru, ukaž čárky místo čísla. Ne „změř přesněji“, ne „varuj uživatele“. Čárky.
Je tu ještě jedno chování, které je vidět jen na mělčině. Když XJ02B ztratí dno, aplikace si na to místo dosadí 76 metrů a vede k nim linii tímtéž průměrovacím filtrem. Místo skoku nakreslí mírný svah. Odtud se bere kopec, který na mělké vodě náhle vyroste. Nikdo ho nezměřil.
Na 10 metrech osvětluje XJ02B kruh o průměru 8 metrů

XJ02B nesvítí dolů jako laser, ale jako baterka: čím hlouběji, tím širší kruh osvětlí. Prodejci u téhle třídy techniky uvádějí 90 stupňů, čemuž nevěřím, protože to nesedí s fyzikou. Při 125 kHz má vlna ve vodě asi 12 milimetrů, a aby vznikl kužel 90 stupňů, musel by mít prvek nějakých 8 milimetrů, tedy byl by menší než vlna, kterou vysílá. Reálně vychází asi 45 stupňů, což potvrzuje jiná sonda z téže rodiny protokolu, která při stejné frekvenci uvádí právě tolik.
| Hloubka vody | Průměr osvětleného kruhu (45°) |
|---|---|
| 5 m | přes 4 metry |
| 10 m | přes 8 metrů |
| 20 m | přes 16 metrů |
Při 10 metrech vody může být cíl, který vidíš, přesně pod tebou nebo čtyři metry stranou. Nemáš jak to rozhodnout. A připomínám, že vůbec nemusí jít o rybu.
XJ02B nikdy neměří to, co je přesně pod loďkou
Plyne to přímo z předchozí části, ale je to natolik důležité, že si zaslouží vlastní místo. Když sonda osvětluje kruh o průměru osmi metrů, slyší odrazy z celého toho kruhu naráz. A protože za dno prohlásí nejhlasitější vzorek, který dorazil nejdřív, v praxi udává hloubku nejbližšího silného odrazu z celého kruhu, ne toho bodu, nad kterým právě stojíš.
Na plochém dně to nevadí, protože nejbližší bod je zrovna pod loďkou. Problém začíná všude tam, kde dno ploché není, tedy přesně na místech, která hledáš.
Na svahu ukazuje sonda kolmou vzdálenost, ne hloubku
Když přejíždíš přes svah, mělčí hrana svahu spadne do kuželu a její echo se vrátí dřív než echo zpod loďky. XJ02B tedy udává vzdálenost k nejbližšímu bodu svahu, v praxi vzdálenost kolmou k ploše dna. Vždycky jedním směrem: příliš mělko.
| Sklon dna | Skutečná hloubka pod loďkou | Co ukáže XJ02B | Chyba |
|---|---|---|---|
| 5° | 10,00 m | 9,96 m | 4 cm |
| 10° | 10,00 m | 9,85 m | 15 cm |
| 15° | 10,00 m | 9,66 m | 34 cm |
| 20° | 10,00 m | 9,40 m | 60 cm |
| 25° | 10,00 m | 9,06 m | 94 cm |
| 30° | 10,00 m | 8,66 m | 1,34 m |
Na svahu 20 stupňů, tedy typické hraně štěrkovny, se XJ02B splete o šedesát centimetrů. Na strmé hraně o víc než metr. A nijak to nenaznačí, protože z jeho pohledu je všechno v pořádku: našel silné echo a nahlásil ho.
Rostlina nebo překážka v kuželu převezme měření hloubky
Stejný mechanismus funguje u překážek a je ještě zrádnější. Jestli kdekoliv v osvětleném kruhu stojí trs trávy, leží větev nebo trčí kámen a odrazí silněji než měkké dno pod loďkou, XJ02B udá hloubku téhle překážky a bude ji považovat za dno.
| Hloubka vody | Průměr osvětleného kruhu | Objekt 1 m nade dnem v tomhle kruhu |
|---|---|---|
| 5 m | 4,1 m | sonda může udat 4 m místo 5 m |
| 10 m | 8,3 m | sonda může udat 9 m místo 10 m |
| 20 m | 16,6 m | sonda může udat 19 m místo 20 m |
Prakticky to znamená, že když takovou sondou mapuješ revír, neměříš dno, ale obálku všeho, co odráží v okruhu několika metrů. Místo označené jako 9 metrů může být devítimetrový vrchol trsu trávy stojícího čtyři metry od trasy přejezdu, zatímco pod samotnou loďkou je deset metrů čistého dna.
A v tom je rozdíl mezi širokým a úzkým kuželem, o kterém prodejci nemluví. Úzký kužel není horší specifikace, ale lepší. Čím užší kruh, tím větší šance, že to, co vidíš, je opravdu pod tebou.
Jak si to ověřit sám, úplně bez vybavení
Nemusíš mi věřit na slovo. Tři pokusy, každý na pár minut:
- Přepni režim z General na Sonar. V General je dno hladké a má vždycky stejnou texturu. V Sonaru se stane zrnitým a objeví se slabá echa. Tatáž voda, tatáž sekunda, a rozdíl je výhradně v tom, jestli aplikace použila měření.
- Vypni ikony ryb a podívej se, kolik se toho najednou objevilo ve vodě. To všechno tam bylo celou dobu, jen to bylo vymazáno, aby se udělalo místo pro ikonky.
- Vjeď na mělčinu pod 0,7 metru. Uvidíš tvrdošíjných 0,7 m bez ohledu na skutečnou hloubku, žlutou vrstvu zaplavující displej, pak čárky místo čísla a nakonec kopec vyrůstající z ničeho.
Shrnutí – co ti XJ02B neřekne naplno
- Nerozezná rybu 30 cm od 50 cm, protože jeho vlastní impuls je delší než ryba. Při 10 metrech je rozdíl čtvrtina jednoho vzorku obrazu.
- „Velikost ryby“ je hlasitost echa, závislá hlavně na natočení ryby a její poloze v kuželu, ne na délce.
- Rybou se může stát každý odraz ve vodě. Porost u dna a zádevy nemají na displeji žádné zastoupení.
- Dno je nejhlasitější vzorek, bez jakékoliv kontroly. Hejno nade dnem ho dokáže nahradit a filtr z toho udělá mírné vyvýšení.
- Neměří to, co je pod loďkou, ale nejbližší silný odraz z kruhu o průměru osmi metrů. Na svahu 20 stupňů se mýlí o 60 cm, vždycky příliš mělko.
- Prvních 0,7 metru je slepých a pod 0,61 metru aplikace ukazuje čárky místo hloubky.
- Výchozí režim kreslí dno z obrázku a zapnuté ikony ryb vymažou celý vodní sloupec.
Jinými slovy: tohle je hloubkoměr s jednoduchým detektorem odrazů. Hloubku měří pořádně a to je reálně užitečné. Zachytí, že ve vodě něco je, a i to má cenu. Ale tím to končí.
Vůči Lucky FF918 je to i tak posun, protože tam byl obraz dna celý kresba a velikost ryby doslova losovaná. Tady měření existuje a je pravdivé. Jestli ale tohle kupuješ s tím, že uvidíš rybu, posoudíš její velikost nebo přečteš strukturu dna před položením montáže, kupuješ něco, co tahle technika neumí a umět nebude.
Co jsem netestoval, a proto o tom nepíšu: kvalitu samotného měniče, reálnou citlivost na malé cíle, chování v bahně a v porostu a srovnání se značkovou technikou na téže vodě. Popisuju výhradně to, co se podařilo zjistit: co tahle sonda posílá a co s tím aplikace dělá.
Zdroje a materiály k ověření
- NOAA – What is sonar? – základ funkce sonaru: vyslaný impuls, čas návratu echa, přepočet na vzdálenost
- NOAA – jak se zvuk šíří ve vodě – asi 1480-1500 m/s, konstanta, na které stojí každý přepočet času echa na hloubku
- FAO Fisheries Technical Paper 240: Fisheries Acoustics – úhel svazku, odrazivost cíle a důvod, proč hlasitost echa neříká nic o délce ryby
- Bluetooth SIG – technický přehled – přenos BLE, kterým XJ02B posílá svůj rámec do telefonu
V příštím díle: sonda z téže rodiny protokolu, která deklaruje dvě frekvence, 125 a 330 kHz. Ověřil jsem, jestli je opravdu má.
Takhle to u nás chodí: než se cokoliv dostane do našich loděk, projde přes tenhle stůl. A když něco neprojde – řekneme to nahlas, i když to zrovna nikdo slyšet nechce.

Asystent pomocy Extreme One