Wat de verkoper je vergat te vertellen #3 – waarom de XJ02B fishfinder een echt beeld stuurt dat niemand kan lezen
Dit is deel drie van de serie waarin ik nakijk hoeveel van wat je op het scherm van een fishfinder ziet meting is en hoeveel tekening. In de vorige aflevering bleek de Lucky FF918 een dieptemeter met thermometer die zijn kleurige echogram uit het geheugen tekent en de visgrootte loot.
Vandaag ligt er iets veel goedkopers en naamloos op tafel: een zwarte bal van een kleine vijftig euro van een Chinese marktplaats, verkocht als „2023 new Wireless Fish Finder”. Op de onderkant een sticker met SONAR 125 kHz en verder niets. Bluetooth, de app Fish Helper, zelfs geen fabrikantnaam op de behuizing.
En hier begint de verrassing, want de XJ02B stuurt een echte doorsnede van de echo, geen vier getallen zoals de FF918. Dat klinkt als een klasse hoger. Ik heb echter uitgerekend hoeveel van die doorsnede op een vis valt, en dat blijkt te weinig om er iets betrouwbaars uit af te leiden.

Het hele gesprek tussen de XJ02B en de telefoon is 140 bytes, waarvan 120 echomonsters
Ik sloot een telefoon aan om het bluetoothverkeer te loggen en heb wat er uit het water komt byte voor byte uit elkaar gehaald. Het frame heeft een vaste lengte van 140 bytes en komt ongeveer zes keer per seconde.
- 120 bytes zijn opeenvolgende monsters van de echoluidheid, van het oppervlak tot de ingestelde diepte
- 2 bytes zijn de diepte
- 2 bytes zijn de temperatuur
- 3 bytes zijn het kant-en-klare oordeel van de sonde: doeldiepte en de „grootte” ervan op een schaal van 1 tot 3
- de rest zijn start- en eindmarkeringen, batterijniveau, instellingen en een controlesom
Ter vergelijking: de Lucky FF918 stuurde negen bytes en vier getallen die alleen zeiden „op deze hoogte hangt iets”. Hier krijgen we een echte doorsnede. Honderdtwintig klinkt als veel. Zo zie je waarom het nog steeds te weinig is.

De XJ02B belicht per keer een laag van 16 centimeter dik en dat bepaalt al het overige
Dit legt geen enkele productbeschrijving uit, en zonder dit valt de rest niet te begrijpen.
De XJ02B bekijkt niet de hele waterkolom tegelijk. Hij stuurt één korte geluidspuls, die een bepaalde lengte in het water heeft, en luistert wat er terugkomt. Op elk moment hoort hij alleen de weerkaatsing uit die ene laag die er net doorheen trekt. De laag zakt met de snelheid van het geluid, dus zo’n anderhalve kilometer per seconde, en onderweg legt de sonde 120 opeenvolgende luidheidsmonsters vast.
Bij 125 kHz duurt één trilling 8 microseconden. De transducer heeft enkele tientallen trillingen nodig om op gang te komen, dus in de praktijk beslaat de puls 12 tot 23 centimeter weg in het water, afhankelijk van het ingestelde bereik. Bij 10 meter water is dat ongeveer 16 centimeter.
En daaruit volgt de belangrijkste beperking van dit apparaat: alles wat dunner is dan die laag heeft geen vorm. Het tekent geen boog, het maakt geen vlek van een bepaalde grootte. Het zorgt er alleen voor dat één monster van de 120 luider is dan de buren.
De XJ02B ziet niet hoe groot een vis is: het verschil tussen dertig en vijftig centimeter is een kwart monster
Laten we het direct uitrekenen. Bij 10 meter water schakelt de XJ02B over op het bereik van 18 meter, dus één beeldmonster komt overeen met 15 centimeter waterkolom, terwijl de puls 16 centimeter lang is.
| Waterdiepte | Eén beeldmonster | Vis 30 cm | Vis 50 cm | Verschil |
|---|---|---|---|---|
| 3 m | 2,5 cm | 7,1 monsters | 8,7 monsters | 1,6 monsters |
| 5 m | 5,1 cm | 3,8 monsters | 4,6 monsters | 0,8 monster |
| 10 m | 15,2 cm | 1,5 monster | 1,7 monster | 0,26 monster |
| 20 m | 22,9 cm | 1,3 monster | 1,4 monster | 0,17 monster |
Een kwart monster is minder dan één beeldpixel. Op 20 meter zakt het verschil naar een zesde. Zelfs in het beste geval, dus op 3 meter, is het anderhalf monster.
De conclusie is ongemakkelijk maar ondubbelzinnig: de XJ02B kan fysiek niet zien hoe groot een vis is. En niet omdat er te weinig monsters zijn. Wel omdat zijn eigen puls dikker is dan de vis. Dat is het natuurkundige plafond van dit apparaat, en geen software-update verandert daar iets aan.
De visgrootte in de XJ02B is echoluidheid, niet vislengte
Omdat de grootte niet te meten is, moet de XJ02B hem ergens vandaan halen. Hij haalt hem uit de luidheid van de weerkaatsing en gooit die in drie bakjes: zacht is een één, luider een twee, het luidst een drie. Die ene byte gaat naar de app, en die tekent het bijbehorende icoontje.
Het probleem is dat de echoluidheid vooral van twee dingen afhangt die niets met de lengte van de vis te maken hebben:
- hoe de vis staat op het moment van meten, met de zijkant of met de kop naar de sonde
- hoe ver van het midden van de bundel hij zwemt, want aan de rand van de kegel is de echo duidelijk zwakker
Eerlijk is eerlijk: anders dan bij de Lucky FF918 wordt de grootte hier niet geloot. Hij wordt berekend. Alleen berekend uit een grootheid die heel weinig over de lengte van een vis zegt. Dezelfde vis krijgt in de as van de kegel en aan de rand ervan twee verschillende groottes.
De bodem is in de XJ02B simpelweg het luidste van de 120 monsters
Omdat de XJ02B 120 getallen heeft, moet hij op de een of andere manier beslissen welk daarvan de bodem is. Ik heb dat in zijn firmware nagekeken: hij loopt ze van boven naar beneden af en onthoudt het luidste monster. Dat verklaart hij tot bodem.
Hij kijkt niet of de echo vlak is. Hij kijkt niet of hij hard is. Hij vergelijkt niet met de vorige ping. Gewoon het luidste.
Het gevolg: staat er een dichte school onder de boot, of hangt er iets hards boven de bodem dat sterker weerkaatst dan de bodem zelf, dan wordt dat voor de bodem aangezien. En je merkt het niet eens, want de app trekt de bodemlijn door een middelingsfilter over de laatste zestien metingen. In plaats van een sprong tekent hij een vloeiende helling. De bodem komt omhoog en zakt terug, alsof je over een heuvel voer die er niet is.
In de waterkolom kan voor de XJ02B bijna alles een vis worden
Ik heb gekeken waaraan de XJ02B een vis herkent. Er zijn drie voorwaarden en dat is de hele lijst:
- de echo is luider dan een drempel die van de ingestelde gevoeligheid afhangt
- het doel zit minstens 0,6 meter boven de bodem
- het doel zit dieper dan 0,7 meter onder de sonde
Er is geen analyse van de echovorm. Er wordt niet gekeken hoe lang de echo duurt. Er wordt geen doel gevolgd tussen opeenvolgende pings. De beslissing valt op één monster uit één ping.
| Wat er echt onder de boot ligt | Wat de XJ02B toont |
|---|---|
| vis | visicoon |
| drijvend blad, takje, algenmat | visicoon |
| belletjes, zwevend slib na regen, spronglaag | visicoon |
| hangende tak, afgebroken lijn | visicoon |
| kruid hoger dan 0,6 m boven de bodem | visicoon, en dan alleen de toppen |
| kruid lager dan 0,6 m boven de bodem | niets, het is onzichtbaar |
| een boomstam op de bodem | niets, hij versmelt met de bodem |
Het werkt dus twee kanten op en allebei zijn ze slecht. Juist wat je wilt weten voordat je een montage neerlegt, namelijk waar het kruid staat en waar de hindernis ligt, heeft op dat scherm geen enkele weergave.
De app Fish Helper heeft twee bodembeelden, en het standaardbeeld raakt de metingen niet aan
In de openbaar beschikbare app zitten twee onafhankelijke manieren om de bodem te tekenen, en dat zijn geen twee grafische stijlen maar twee verschillende manieren waarop het beeld ontstaat.
- De modus Sonar neemt die 120 metingen en maakt er een echt echogram van.
- De modus General heet in de code letterlijk „berekening van een virtueel bodembeeld”. Die raakt de metingen geen enkele keer aan. Hij neemt één getal, de diepte, maakt dat glad en vult alles onder de lijn met een kant-en-klaar plaatje uit een bestand dat in een lus doorschuift.
De modus General is de standaard. Na installatie start de app precies daarin op.
Schakel je over naar Sonar, dan loop je in de volgende val. Met de visiconen aan, en die staan standaard aan, zoekt de app vóór het tekenen de bodem op en zet alles daarboven op nul. De hele waterkolom, alle zwakke echo’s, alle begroeiing. Wat overblijft is het bodemspoor met de iconen die erboven zweven.
Je hebt dus een keuze waar niemand het over heeft: óf de visiconen, óf het beeld van de waterkolom. Nooit allebei tegelijk.

De eerste 0,7 meter onder de XJ02B is blind, en onder 0,61 m toont de app streepjes
De transducer gedraagt zich als een klok. Terwijl hij zendt, en nog lang nadat hij gestopt is, is hij doof, want zijn eigen geluid overstemt alles wat terugkomt. Uit de metingen op het water komt een dode zone van ongeveer 70 centimeter.
Een vis die 60 cm onder de sonde staat bestaat niet. Voer vlak onder de boot ook niet. In ondiep water wordt dat een serieus probleem, want dan valt de bodem zelf in die dode zone.


Die gele laag is geen aparte informatie over de bodem. Het is het maximum van de schaal: de verdoofde ontvanger schrijft de grootst mogelijke waarde weg, en het palet kleurt het maximum geel. De echte bodem raakt kwijt middenin die vlek.
Onder een bepaalde grens weigert de app simpelweg medewerking. In de code staat een harde voorwaarde: is de diepte kleiner dan 0,61 meter, toon dan streepjes in plaats van een getal. Niet „meet nauwkeuriger”, niet „waarschuw de gebruiker”. Streepjes.
Er is nog een gedrag dat je alleen in ondiep water ziet. Raakt de XJ02B de bodem kwijt, dan vult de app daar 76 meter in en trekt de lijn daarheen met datzelfde middelingsfilter. In plaats van een sprong tekent hij een vloeiende helling. Daar komt die berg vandaan die in ondiep water plotseling opduikt. Niemand heeft hem gemeten.
Op 10 meter belicht de XJ02B een cirkel van 8 meter doorsnede

De XJ02B schijnt niet als een laser recht naar beneden, maar als een zaklamp: hoe dieper, hoe breder de cirkel die hij belicht. Verkopers noemen voor deze klasse apparaten 90 graden, wat ik niet geloof, want dat klopt niet met de natuurkunde. Bij 125 kHz is de golf in water ongeveer 12 millimeter, en om een kegel van 90 graden te krijgen zou het element zo’n 8 millimeter moeten zijn, dus kleiner dan de golf die het uitzendt. In werkelijkheid komt er ongeveer 45 graden uit, wat bevestigd wordt door een andere sonde uit dezelfde familie, die bij dezelfde frequentie precies dat opgeeft.
| Waterdiepte | Doorsnede van de belichte cirkel (45°) |
|---|---|
| 5 m | ruim 4 meter |
| 10 m | ruim 8 meter |
| 20 m | ruim 16 meter |
Bij 10 meter water kan het doel dat je ziet precies onder je zitten of vier meter opzij. Je hebt geen manier om dat uit te maken. En denk erom: het hoeft helemaal geen vis te zijn.
De XJ02B meet nooit wat er precies onder de boot ligt
Dit volgt rechtstreeks uit de vorige paragraaf, maar het is belangrijk genoeg voor een eigen plek. Omdat de sonde een cirkel van acht meter doorsnede belicht, hoort hij de weerkaatsingen uit die hele cirkel tegelijk. En omdat hij het luidste, als eerste aangekomen monster tot bodem verklaart, geeft hij in de praktijk de diepte van de dichtstbijzijnde sterke weerkaatsing uit de hele cirkel, niet van het punt waar je toevallig boven ligt.
Op een vlakke bodem maakt dat niets uit, want het dichtstbijzijnde punt zit toevallig onder de boot. Het probleem begint overal waar de bodem niet vlak is, dus precies op de plekken die je zoekt.
Op een helling toont de sonde de loodrechte afstand, niet de diepte
Vaar je over een steilrand, dan valt de ondiepere rand van de helling in de kegel en komt zijn echo eerder terug dan de echo van onder de boot. De XJ02B geeft dus de afstand tot het dichtstbijzijnde punt van de helling, in de praktijk de afstand loodrecht op het bodemvlak. Altijd één kant op: te ondiep.
| Helling van de bodem | Werkelijke diepte onder de boot | Wat de XJ02B toont | Fout |
|---|---|---|---|
| 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 |
Op een helling van 20 graden, een typische rand van een grindgat, zit de XJ02B zestig centimeter mis. Op een steile kant meer dan een meter. En hij geeft dat op geen enkele manier aan, want vanuit zijn standpunt is alles in orde: hij vond een sterke echo en meldde die.
Een plant of obstakel in de kegel neemt de dieptemeting over
Hetzelfde mechanisme speelt bij obstakels en is dan nog misleidender. Staat er ergens in de belichte cirkel een pol kruid, ligt er een tak of steekt er een steen uit, en weerkaatst die sterker dan de zachte bodem onder de boot, dan geeft de XJ02B de diepte van dat obstakel en houdt hij het voor de bodem.
| Waterdiepte | Doorsnede van de belichte cirkel | Object 1 m boven de bodem in die cirkel |
|---|---|---|
| 5 m | 4,1 m | de sonde kan 4 m aangeven in plaats van 5 m |
| 10 m | 8,3 m | de sonde kan 9 m aangeven in plaats van 10 m |
| 20 m | 16,6 m | de sonde kan 19 m aangeven in plaats van 20 m |
In de praktijk betekent dat: als je een water met zo’n sonde in kaart brengt, meet je niet de bodem maar de omhullende van alles wat binnen een straal van enkele meters weerkaatst. Een plek die als 9 meter gemarkeerd staat kan de negen meter diepe top zijn van een pol kruid die vier meter naast je vaarlijn staat, terwijl er onder de boot zelf tien meter schone bodem ligt.
En daarin zit het verschil tussen een brede en een smalle kegel, waar verkopers niet over praten. Een smalle kegel is geen slechtere specificatie, maar een betere. Hoe smaller de cirkel, hoe groter de kans dat wat je ziet echt onder je zit.
Hoe je dit zelf controleert, zonder enige apparatuur
Je hoeft mij niet op mijn woord te geloven. Drie proeven, elk in een paar minuten te doen:
- Schakel de modus van General naar Sonar. In General is de bodem glad en heeft hij altijd dezelfde textuur. In Sonar wordt hij korrelig en verschijnen er zwakke echo’s. Hetzelfde water, dezelfde seconde, en het verschil zit uitsluitend in de vraag of de app de metingen gebruikt heeft.
- Zet de visiconen uit en kijk hoeveel er ineens in de waterkolom verschijnt. Dat zat er de hele tijd al, het werd alleen gewist om plaats te maken voor de iconen.
- Vaar naar ondiep water onder 0,7 meter. Je ziet een koppige 0,7 m ongeacht de werkelijke diepte, een gele laag die het scherm overspoelt, dan streepjes in plaats van een getal, en tot slot een berg die uit het niets opduikt.
Samenvatting – wat de XJ02B je niet ronduit vertelt
- Hij onderscheidt een vis van 30 cm niet van 50 cm, want zijn eigen puls is langer dan de vis. Bij 10 meter bedraagt het verschil een kwart beeldmonster.
- „Visgrootte” is echoluidheid, vooral bepaald door hoe de vis staat en waar hij in de kegel zit, niet door zijn lengte.
- Elke weerkaatsing in het water kan een vis worden. Begroeiing bij de bodem en hindernissen hebben op het scherm geen enkele weergave.
- De bodem is het luidste monster, zonder dat er iets gecontroleerd wordt. Een school boven de bodem kan hem vervangen, en het filter maakt daar een vloeiende verhoging van.
- Hij meet niet wat onder de boot ligt, maar de dichtstbijzijnde sterke weerkaatsing uit een cirkel van acht meter doorsnede. Op een helling van 20 graden zit hij 60 cm mis, altijd te ondiep.
- De eerste 0,7 meter is blind, en onder 0,61 meter toont de app streepjes in plaats van een diepte.
- De standaardmodus tekent de bodem uit een plaatje, en ingeschakelde visiconen wissen de hele waterkolom.
Met andere woorden: dit is een dieptemeter met een simpele weerkaatsingsdetector. De diepte meet hij netjes en dat is echt bruikbaar. Hij merkt dat er iets in het water hangt, en ook dat heeft waarde. Maar daar houdt het op.
Tegenover de Lucky FF918 is dit nog steeds vooruitgang, want daar was het bodembeeld volledig tekening en werd de visgrootte letterlijk geloot. Hier bestaat een meting en die is echt. Koop je dit echter in de veronderstelling dat je een vis ziet, zijn grootte kunt inschatten of de bodemstructuur kunt lezen voordat je een montage neerlegt, dan koop je iets wat dit apparaat niet kan en nooit zal kunnen.
Wat ik niet getest heb en waar ik dus niet over schrijf: de kwaliteit van de transducer zelf, de werkelijke gevoeligheid voor kleine doelen, het gedrag in slib en kruid, en een vergelijking met merkapparatuur op hetzelfde water. Ik beschrijf uitsluitend wat ik heb kunnen vaststellen: wat deze sonde verstuurt en wat de app ermee doet.
Bronnen en materiaal om zelf na te kijken
- NOAA – What is sonar? – de basis van een fishfinder: uitgezonden puls, terugkeertijd van de echo, omrekening naar afstand
- NOAA – hoe geluid zich door water voortplant – ongeveer 1480-1500 m/s, de constante waarop elke omrekening van echotijd naar diepte rust
- FAO Fisheries Technical Paper 240: Fisheries Acoustics – bundelhoek, doelsterkte en de reden dat echoluidheid niets zegt over de lengte van een vis
- Bluetooth SIG – technisch overzicht – het BLE-transport waarmee de XJ02B zijn frame naar de telefoon stuurt
In de volgende aflevering: een sonde uit dezelfde protocolfamilie die twee frequenties opgeeft, 125 en 330 kHz. Ik heb gecontroleerd of hij die echt heeft.
Zo werkt het bij ons: voordat er iets in onze boten gaat, gaat het over deze tafel. En als iets niet door de keuring komt – zeggen we dat hardop, ook als niemand het op dat moment wil horen.

Asystent pomocy Extreme One