
QR code imprimé en 3D : comment le rendre lisible
La plaque sort du plateau et le code a l'air parfait : modules en relief, bords nets, un bel objet à tenir. Sur l'établi, sous une lampe posée de côté, il se scanne en une demi-seconde. Puis il rejoint l'étagère pour laquelle il a été conçu, éclairée à la verticale par un panneau LED, et plus aucun téléphone de l'immeuble ne parvient à le lire.
Rien n'a changé dans la géométrie. Les ombres ont disparu, et sur une impression monochrome, les ombres étaient le code.
Décidez d'où vient le contraste
Un QR code imprimé en 3D n'a pas d'encre. Rien dans le procédé ne crée naturellement une zone foncée et une zone claire : le contraste doit donc être fabriqué, et il n'existe que deux manières de le faire.
Un changement de filament. Du plastique sombre là où vont les modules sombres, du plastique clair en dessous et autour. Une vraie différence de réflectance, donc cela fonctionne sous n'importe quelle lumière, sous n'importe quel angle, lampe allumée ou éteinte. La pièce se comporte comme un code imprimé parce qu'elle en est un.
Le relief. Modules en saillie ou en creux dans une seule couleur. Les zones sombres sont des ombres, donc le code ne vaut que ce que vaut la lumière de la pièce où il vit.
Si l'imprimante sait gérer deux couleurs, prenez deux couleurs. Tout ce qui suit sur le relief traite du cas où elle ne sait pas, et ce cas est plus difficile. La page des QR codes faits main couvre la famille de métiers plus large.
Changement de couleur : trois couches, pas une
L'approche habituelle est un décaissé peu profond dans la surface supérieure : on imprime en filament clair jusqu'au fond du décaissé, on change, puis viennent les couches du code en sombre.
Une couche de sombre ne suffit pas. La plupart des filaments sont légèrement translucides à 0,2 millimètre, donc une couche sombre unique sur un corps clair ressort grise, et le plus mal en pleine lumière, là où la couleur du dessous remonte le plus. Donnez au code deux ou trois couches, davantage si c'est le filament clair qui se trouve au-dessus, puisque les couleurs claires sont le sens le plus translucide.
Puis le changement. Sur un changement manuel, les premiers centimètres d'extrusion portent encore l'ancienne couleur, donc purgez avant la couche du code plutôt que d'imprimer un périmètre de module dans le filament précédent. Sur une machine multimatière, la purge est automatique, mais les suintements traversant la zone du code y laissent des traînées pâles dans les modules sombres, donc placez le code tard dans la couche.
Une troisième voie contourne tout cela : imprimez le code comme une plaque fine séparée et collez-la dans un décaissé. Deux impressions, aucun risque de changement, des bords propres.
Le relief est le seul QR code qui se scanne moins bien lampe allumée
S'il faut rester sur une seule couleur, creusez les modules plutôt que de les faire saillir, pour une raison qui mérite d'être comprise.
Un module en creux se fait de l'ombre à lui-même. La lumière est bloquée par les parois sous la plupart des angles, donc la zone sombre se tient à l'intérieur de l'empreinte du module, exactement là où le décodeur échantillonne.
Un module en saillie projette son ombre à côté de lui. La zone sombre est décalée d'un écart qui grandit quand l'angle de la lumière baisse, si bien qu'un module ombre son voisin et que tout le motif d'obscurité glisse latéralement par rapport à la grille. Ce n'est pas un dégât que la correction d'erreurs peut réparer. C'est la mauvaise image.
Donc gravez, ne bombez pas. Une profondeur de la moitié de la largeur de module suffit pour que les parois ombrent sous des angles modérés, et plus profond qu'une largeur de module n'apporte rien tout en s'imprimant moins bien. Gardez des parois verticales, sans chanfrein ni congé, parce qu'une lèvre arrondie adoucit le bord de l'ombre comme l'engraissement de l'encre adoucit celui d'un code imprimé.
Vient maintenant la limite. Une lumière arrivant dans l'axe de l'appareil photo, ce que donne précisément la lampe d'un téléphone, atteint le fond plat du creux et s'y réfléchit exactement comme sur la surface du dessus. Le contraste s'effondre. Un code en relief est le seul qui se lise mieux flash éteint, ce qui en fait un mauvais choix pour tout ce qu'un inconnu ira flasher dans une pièce sombre.
L'issue est la peinture. Noyez les modules gravés d'acrylique sombre et essuyez la surface du dessus avant qu'elle ne prenne. Vous obtenez alors un code encré masqué mécaniquement : du vrai contraste, aucun changement de filament, et une surface qui survit à la manipulation.
La taille de module est fixée par la buse, pas par la hauteur de couche
La hauteur de couche est une dimension en Z et la grille de modules vit en X et Y, donc ce qui contraint le motif est la largeur d'extrusion. Sur une buse de 0,4 millimètre, cela fait environ 0,42, et les détails se construisent par extrusions entières.
Un module large de deux extrusions s'imprime en carré net. Large d'une seule extrusion, il sort arrondi et surdimensionné, puisqu'un cordon unique de plastique n'a pas de côtés droits. En dessous, le trancheur abandonne le détail ou l'écrase en paroi fine, et un module abandonné est un bit inversé.
Traitez donc trois extrusions comme le plancher : 1,2 millimètre par module sur une buse de 0,4. Une URL de redirection courte atterrit près d'un symbole de 29 modules, ajoutez quatre modules de zone de silence de chaque côté pour 37 de large, et à 1,2 millimètre cela fait une plaque d'environ 45 millimètres de côté. Une buse de 0,2 vous achète plus petit, lentement.
Tout ce qui raccourcit la charge encodée élargit les modules, puisqu'une version plus basse veut dire moins de modules sur la même plaque. La correction d'erreurs est l'autre moitié : les niveaux récupèrent environ 7, 15, 25 et 30 pour cent des mots de code d'un symbole en L, M, Q et H, et le générateur d'ici rend chaque code en H sans possibilité de le baisser, comme l'explique la comparaison des niveaux. Utile pour un code en relief où l'éclairage retire des plages entières. Inutile contre un module que le trancheur n'a jamais imprimé.
Filament mat, et coupez le lissage
La surface supérieure d'une impression est un ensemble de lignes parallèles, et des lignes parallèles réfléchissent de façon directionnelle : tournez la pièce de quatre-vingt-dix degrés sous la même lampe et le reflet se déplace. Sur un filament brillant, ces lignes jettent une traînée à travers le code, le même échec que le pelliculage brillant sur papier, et le PLA soie est le pire de tous puisque la brillance est toute sa raison d'être.
Le PLA ou le PETG mat diffusent à la place, et ce sont les bons choix pour tout ce qui doit se scanner. Deux réglages de trancheur en découlent. Coupez le lissage de surface au-dessus du code, parce qu'une surface supérieure plus lisse est une surface plus brillante. Et donnez au remplissage supérieur une direction en biais par rapport à la grille de modules, pour que le motif des lignes ne s'aligne pas sur les bords de modules.
Imprimer le code face contre le plateau donne une surface plus plane que n'importe quel remplissage supérieur, et la texture du plateau vient avec : un PEI lisse ou du verre donnent un fini presque miroir, un PEI texturé donne du mat.
L'écrasement de la première couche, et la règle du plat
Le plateau apporte une seconde conséquence, et celle-ci est l'écrasement. Une première couche trop pressée étale chaque extrusion latéralement, donc les détails sombres s'élargissent et un écart clair d'un module entre deux modules sombres peut se refermer. Dès que c'est le cas, les deux se lisent comme un seul et la grille est fausse. Réglez correctement la compensation du pied d'éléphant, ou déplacez le code sur la surface supérieure.
Une règle ne se négocie pas : imprimez-le à plat. Un code enroulé autour d'un cylindre a une grille de modules qu'aucun décodeur ne sait cartographier, et c'est de la géométrie plutôt qu'un dégât, donc la correction d'erreurs n'y touche jamais. Imprimez une plaque plane et fixez-la sur la courbe, pour les raisons exposées dans les codes sur surfaces courbes.
Et en France ?
Pas besoin de posséder une imprimante 3D pour tester ces conseils : la France compte de nombreux fablabs, souvent associatifs ou liés à une médiathèque, une école ou une université, qui mettent des imprimantes à disposition et accompagnent les débutants.
C'est l'endroit idéal pour faire les essais décrits plus haut : deux couleurs de filament bien contrastées, plusieurs tailles de modules, et un test sous l'éclairage réel du lieu où l'objet sera posé. Les animateurs de fablab ont souvent déjà imprimé des plaques et des porte-clés à QR code, et leurs réglages vous feront gagner plusieurs essais.
Imprimez d'abord une plaque de test
- Modélisez une plaque portant le même code à 1,0, 1,2 et 1,6 millimètre de module, dans le filament et le fini que vous comptez utiliser.
- Scannez chacun dans la pièce où la pièce vivra, à la hauteur et sous l'angle où elle se tiendra.
- Scannez lampe allumée et lampe éteinte. Un code en relief qui ne passe que lampe éteinte vient de vous dire quelque chose.
- Utilisez deux téléphones de marques différentes.
- Retenez la plus petite taille qui se lit du premier coup chaque fois, puis montez d'un cran.
Exportez le motif en SVG et faites entrer ce vectoriel directement dans votre logiciel de CAO, au lieu de détourer un PNG à la main. Réglez aussi la zone de silence avant de télécharger : le curseur court de zéro à huit modules et s'arrête sur deux par défaut, là où la norme en réclame quatre, pour les motifs détaillés dans la zone de silence. Le téléchargement suppose un compte, et tout code créé ici est dynamique : changer la destination et suivre les scans relèvent de l'abonnement. Sur une pièce imprimée, c'est précisément ce qui compte, car le plastique, lui, ne se corrige pas.
