Hoe werkt de technologie achter een QR code

Hoe werkt de technologie achter een QR code

Hoe werkt de technologie achter een QR code

Een QR code lijkt op een simpel zwart‑wit blokjespatroon, maar onder de motorkap zit een slimme combinatie van wiskunde, foutcorrectie en slimme positionering. Voor elektronicahobbyisten en makers is het nuttig om te begrijpen hoe informatie precies wordt omgezet in dit patroon en weer wordt teruggelezen door een scanner of smartphonecamera.

Opbouw van het patroon

Een QR code bestaat uit een matrix van kleine vierkante modules. Elke module is zwart of wit en vertegenwoordigt een bit. De positie van die bits is niet willekeurig. In de hoeken vind je grote vierkante blokken, de zogenaamde position markers. Deze helpen de scanner om de oriëntatie van de code te bepalen, zelfs als de afbeelding gedraaid of schuin gefotografeerd is. Daarnaast zijn er timing patronen, dat zijn lijnen van afwisselend zwarte en witte modules die gebruikt worden om de schaal en het raster te bepalen.

Naast deze vaste patronen bevat de code zones voor formaatinformatie en versieinformatie. Daarin staat onder andere welke foutcorrectiegraad is gebruikt. De rest van de matrix wordt gevuld met de daadwerkelijke data en bijbehorende foutcorrectiegegevens volgens een vastgelegde volgorde en leesrichting.

Codering van de gegevens

Voor het opslaan van de informatie kiest een QR code eerst een modus, bijvoorbeeld numeriek, alfanumeriek of binair. De gekozen modus bepaalt hoe de tekens worden omgezet in bits. Een url wordt vaak alfanumeriek opgeslagen, terwijl binaire modus wordt gebruikt voor willekeurige bytes, zoals configuratiebestanden of wifi inloggegevens.

De data wordt in blokken opgedeeld en met controlebits uitgebreid. Deze controlebits worden berekend met behulp van wiskundige algoritmen over eindige velden. Daardoor kan de scanner later fouten herkennen en deels herstellen. De bitreeks wordt vervolgens volgens een bepaald patroon in de matrix geplaatst, waarbij rekening wordt gehouden met de vaste elementen zoals position markers en timing patronen.

Foutcorrectie en robuustheid

Een belangrijk onderdeel van de technologie achter een QR code is de foutcorrectie. De meest gebruikte methode is gebaseerd op Reed Solomon codes. Hierbij worden extra blokken data toegevoegd die het mogelijk maken om een deel van de originele informatie te reconstrueren als sommige modules onleesbaar zijn. Afhankelijk van het gekozen foutcorrectieniveau kan een QR code nog correct werken bij vuil, beschadiging of een storende opdruk in het midden.

Deze foutcorrectie maakt QR codes ideaal voor industriële toepassingen, productielijnen en situaties met ruwe omgevingen. Voor ontwerpers betekent het dat je bijvoorbeeld een logo in het midden van de code kunt plaatsen, zolang je maar genoeg foutcorrectiecapaciteit overhoudt om de ontbrekende modules te compenseren.

Detectie en decodering door de scanner

Een scanner of smartphonecamera maakt eerst een beeld van de QR code. De software zoekt vervolgens naar de kenmerkende position markers om de code te lokaliseren en de oriëntatie te bepalen. Daarna wordt het beeld rechtgetrokken en geschaald zodat het raster van modules weer een nette matrix vormt. De helderheidswaarden van de pixels worden omgezet naar zwarte en witte modules, waarna de bitreeks kan worden uitgelezen.

Vervolgens leest de decoder de formaatinformatie om te weten welke foutcorrectiegraad en modus is gebruikt. Met behulp van de foutcorrectiealgoritmen worden fouten opgespoord en gecorrigeerd. Daarna wordt de bitreeks terugvertaald naar tekens of bytes. Het resultaat is bijvoorbeeld een url, tekst, vcard of wifi configuratie die het apparaat direct kan gebruiken.

Praktische tips voor ontwerp en gebruik

Voor wie zelf QR codes inzet in schakelingen of projecten is de kwaliteit van de afdruk of het display cruciaal. Zorg voor voldoende contrast tussen zwart en wit, een minimale afmeting afgestemd op de leessafstand en een rustige achtergrond. Houd rekening met de foutcorrectiegraad als je grafische elementen toevoegt binnen de code. Tot slot is het verstandig om de gegenereerde code met meerdere scanners te testen, zeker als deze in kritische toepassingen zoals toegangscontrole of configuratie van embedded systemen wordt gebruikt.