Sylvain MahéLe site WebRetour à l'accueilPrincipesPartager des idées et des projets.Contact06.45.49.96.98
contact@sylvainmahe.site
Écriture de la page : Sylvain MahéConversion d'images bitmap vers une sérigraphie KiCadAvec 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 0La 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 -yUne 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 :