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

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.

Zwarte sonarbal XJ02B in de originele doos, zonder naam van de fabrikant
De XJ02B fishfinder recht uit de doos. Op de sticker staat geen fabrikant, alleen de naam van de importeur en een EAN-code.

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.

Infographic: wat de XJ02B fishfinder verstuurt en wat de app Fish Helper daarvan tekent
Alles in één beeld: wat de XJ02B verstuurt, hoe hij kijkt en wat daarvan op het scherm overblijft.

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.

WaterdiepteEén beeldmonsterVis 30 cmVis 50 cmVerschil
3 m2,5 cm7,1 monsters8,7 monsters1,6 monsters
5 m5,1 cm3,8 monsters4,6 monsters0,8 monster
10 m15,2 cm1,5 monster1,7 monster0,26 monster
20 m22,9 cm1,3 monster1,4 monster0,17 monster
Hoeveel beeldmonsters een vis inneemt, per diepte. Bij 10 meter is het verschil tussen een vis van 30 en 50 cm een kwart 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 ligtWat de XJ02B toont
visvisicoon
drijvend blad, takje, algenmatvisicoon
belletjes, zwevend slib na regen, spronglaagvisicoon
hangende tak, afgebroken lijnvisicoon
kruid hoger dan 0,6 m boven de bodemvisicoon, en dan alleen de toppen
kruid lager dan 0,6 m boven de bodemniets, het is onzichtbaar
een boomstam op de bodemniets, hij versmelt met de bodem
De detector classificeert niet. Elke weerkaatsing die aan de drie voorwaarden voldoet krijgt een visicoon, en alles vlak bij de bodem verdwijnt.

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.

Render uit de verkoopadvertentie van de XJ02B fishfinder met een app die niet meegeleverd wordt
Beeld uit de verkoopadvertentie. Visiconen met diepte erbij, bruine bodemheuvels en plantjes. De app die je in werkelijkheid krijgt tekent geen van die dingen, in geen enkele modus.

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.

Scherm van de app Fish Helper bij 0,8 m water: een gele vlek in plaats van een bodembeeld
0,8 m water. Onder 0,6 m loopt het scherm vol met één egale kleur.
Scherm van de app Fish Helper bij 0,7 m water: de hele waterkolom volgelopen met kleur
0,7 m water. De bodemstructuur is niet meer af te lezen.

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

Onderkant van de XJ02B fishfinder met sticker SONAR 125KHZ, zonder schakelaar
De enige specificatie op het apparaat: SONAR 125 kHz, 3,3 V, Bluetooth. Een schakelaar is er niet, de sonde wordt wakker in het water.

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.

WaterdiepteDoorsnede van de belichte cirkel (45°)
5 mruim 4 meter
10 mruim 8 meter
20 mruim 16 meter
Een icoontje op het scherm betekent een doel ergens in die cirkel. Niet onder de boot, gewoon ergens in de cirkel.

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 bodemWerkelijke diepte onder de bootWat de XJ02B toontFout
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
Dieptefout op een helling bij 10 meter water en een kegel van 45 graden. Hoe breder de kegel, hoe meer helling erin past en hoe groter de fout.

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.

WaterdiepteDoorsnede van de belichte cirkelObject 1 m boven de bodem in die cirkel
5 m4,1 mde sonde kan 4 m aangeven in plaats van 5 m
10 m8,3 mde sonde kan 9 m aangeven in plaats van 10 m
20 m16,6 mde sonde kan 19 m aangeven in plaats van 20 m
Het volstaat dat het obstakel ergens in de cirkel ligt, desnoods vier meter van de boot. Het hoeft er niet onder te zitten.

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:

  1. 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.
  2. 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.
  3. 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

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.

Vergelijkbare berichten

Geef een reactie