Sylvain Mahé Le site Web Retour à l'accueil Principes Partager mes idées et mes projets librement et gratuitement. Thématiques Mécatronique du système embarqué, artisanat pluridisciplinaire, bricolage commun, esthétique logicielle et matérielle, minimalisme fonctionnel, conceptualisation alternative, rédaction technique et littéraire, partage pédagogique documenté. Contact ✆ Téléphone : 06.45.49.96.98
✉ E-mail : contact@sylvainmahe.site
✎ Site Web : sylvainmahe.site
Écriture de la page : Sylvain Mahé
Conversion d'images bitmap vers une sérigraphie KiCad Avec cette routine de conversion d'images (pour le système d'exploitation Linux que j'utilise), vous allez pouvoir importer des logos (et autres graphismes) dans vos dessins KiCad en vue PCB sur le calque de sérigraphie de la face avant (F.SilkS). Il existe un outil par défaut dans cette suite KiCad nommé Bitmap2Component qui est censé remplir cette fonction, mais notamment dépendant de la résolution (hauteur/largeur) de l'image d'origine, il ne permet pas le redimensionnement, est basé sur un principe de conversion vectorielle qui détruit l'information, et au final fait apparaître pour certains dessins de petites tailles des lignes courbes là où il y a des droites parfaites, et plus une bouillie de pixels qu'une sérigraphie de qualité... Ainsi cet outil proposé par défaut est pour moi inutilisable lorsque l'on souhaite un rendu exact par rapport à notre image noir et blanc initiale. À l'instar de Bitmap2Component, ma routine d'automatisation prend en entrée une image qui doit être initialement en noir et blanc (monochrome) afin que les pixels blancs soient utilisés dans le traitement : Ce que je vous propose ici permettra qu'un pixel blanc dans votre image d'origine sera très exactement un carré de sérigraphie (de la taille souhaitée) dans votre dessin en vue PCB. Ci-dessous, la routine (.sh) permettant la conversion d'images bitmap vers une sérigraphie KiCad : #!/bin/bash echo "Pixel size in mil ?" read sizeRaw clear rm tmp -r -f mkdir tmp size=$(echo $sizeRaw"*10" | bc -l) for file in *.bmp do if [ -f "$file" ] then echo $file" to "${file%%.*}.mod convert -quiet "$file" tmp/tmp.txt grep "white" tmp/tmp.txt > tmp/tmp grep -o ".*:" tmp/tmp > tmp/tmpxy grep -o ".*," tmp/tmpxy > tmp/x sed -i tmp/x -e "s/,//" grep -o ",.*:" tmp/tmpxy > tmp/y sed -i tmp/y -e "s/,//" -e "s/://" countList=0 while read x do xList[$countList]=$(echo $x"*"$size | bc -l) ((countList++)) done < tmp/x countList=0 while read y do yList[$countList]=$(echo $y"*"$size | bc -l) ((countList++)) done < tmp/y echo "PCBNEW-LibModule-V1" > tmp/tmp.mod echo "\$INDEX" >> tmp/tmp.mod echo ${file%%.*} >> tmp/tmp.mod echo "\$EndINDEX" >> tmp/tmp.mod echo "\$MODULE "${file%%.*} >> tmp/tmp.mod echo "Li "${file%%.*} >> tmp/tmp.mod for ((iterationList=0; $iterationList < $countList; iterationList++)) do echo "DP 0 0 0 0 4 0 200" >> tmp/tmp.mod echo "Dl "${xList[$iterationList]}" "${yList[$iterationList]} >> tmp/tmp.mod echo "Dl "$(echo ${xList[$iterationList]}"+"$size | bc -l)" "${yList[$iterationList]} >> tmp/tmp.mod echo "Dl "$(echo ${xList[$iterationList]}"+"$size | bc -l)" "$(echo ${yList[$iterationList]}"+"$size | bc -l) >> tmp/tmp.mod echo "Dl "${xList[$iterationList]}" "$(echo ${yList[$iterationList]}"+"$size | bc -l) >> tmp/tmp.mod done echo "\$EndMODULE "${file%%.*} >> tmp/tmp.mod echo "\$EndLIBRARY" >> tmp/tmp.mod mv tmp/tmp.mod "${file%%.*}".mod fi done rm tmp -r -f exit 0 La routine présentée ci-dessus utilise le programme (ou paquet) imagemagick pour extraire les valeurs matricielles des images traitées. Il vous faut donc l'installer à l'aide de la ligne de commande suivante (à écrire dans le terminal de Linux) : sudo apt-get install imagemagick -y Une fois cette installation effectuée, lorsque vous exécutez la routine (.sh) se propose à vous une question "Pixel size in mil ?", il vous faut alors renseigner la taille souhaitée en millième de pouce que fera un pixel dans votre dessin KiCad (cohérent lorsque les unités de mesures sont indiquées en pouces et non pas en millimètres) : Par exemple si vous indiquez en taille de pixel le nombre 25, avec une grille dans votre dessin KiCad réglée sur 25 (et des unités de mesures en pouces) vous verrez que le pas des pixels de votre graphisme en vue PCB fera très exactement le même pas que la grille. Après avoir validé le choix de la taille des pixels, toutes les images ayant l'extension .bmp (bitmap) dans le répertoire courant sont converties successivement en fichiers .mod (footprint) que vous pouvez ajouter à vos projets KiCad par l'intermédiaire du menu d'ajout de bibliothèques (Preferences > Library) en vue PCB. Si vous apercevez le crénelage des pixels de votre graphisme sérigraphié une fois votre circuit réalisé, je vous conseille d'utiliser une image bitmap (.bmp) initiale de plus grande résolution, et d'indiquer une taille de pixel (lors de la conversion avec la routine) d'autant plus faible, par exemple 2.5 (attention cependant, les temps de traitement peuvent s'avérer assez longs avec des résolutions d'images trop grandes). Libre à vous de faire une utilisation de ce petit programme de conversion d'image, qui vous permettra aisément d'apposer vos logos et divers graphismes sur vos circuits imprimés avec une parfaite exactitude de conversion (1 pixel bitmap vers 1 pixel sérigraphié). Ci-dessous un exemple de code matriciel (QR Code) sérigraphié avec mon outil :