Retour Suite
sylvainmahe.site LE SITE de Sylvain Mahé contact@sylvainmahe.site
Article : Sylvain Mahé contact@sylvainmahe.site Conversion d'images .bmp vers .mod 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. Cette routine (.sh) contient le programme suivant : #!/bin/bash mkdir tmp for file in *.bmp do echo $file echo -e "\nPixel size ?" read sizeRaw size=$(echo $sizeRaw*"10" | bc) convert $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/://" nCount=0 while read x do xList[nCount]=$(echo $x*$size | bc) ((nCount++)) done < tmp/x nCount=0 while read y do yList[nCount]=$(echo $y*$size | bc) ((nCount++)) done < tmp/y echo "PCBNEW-LibModule-V1" > ${file%%.*}.mod echo "\$INDEX" >> ${file%%.*}.mod echo ${file%%.*} >> ${file%%.*}.mod echo "\$EndINDEX" >> ${file%%.*}.mod echo "\$MODULE "${file%%.*} >> ${file%%.*}.mod echo "Li "${file%%.*} >> ${file%%.*}.mod for ((n=0; n> ${file%%.*}.mod echo "Dl "${xList[n]}" "${yList[n]} >> ${file%%.*}.mod echo "Dl "$(echo ${xList[n]}+$size | bc)" "${yList[n]} >> ${file%%.*}.mod echo "Dl "$(echo ${xList[n]}+$size | bc)" "$(echo ${yList[n]}+$size | bc) >> ${file%%.*}.mod echo "Dl "${xList[n]}" "$(echo ${yList[n]}+$size | bc) >> ${file%%.*}.mod done echo "\$EndMODULE "${file%%.*} >> ${file%%.*}.mod echo "\$EndLIBRARY" >> ${file%%.*}.mod clear done rm tmp -r 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 Une fois cette installation effectuée, lorsque vous exécutez la routine (.sh) toutes les images ayant l'extension .bmp (bitmap) 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. Pour chaque image à convertir se propose à vous une question "Pixel size ?", il vous faut alors renseigner la taille souhaitée 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. À noter que vous pouvez indiquer une taille de pixel en nombre entier ou décimal indifféremment, les valeurs seront traitées correctement lors des calculs de conversion. 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 traitements 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 :