Outils pour utilisateurs

Outils du site


machine_a_peindre

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
machine_a_peindre [2019/11/21 10:41]
Mushussu [Visserie]
machine_a_peindre [2020/10/30 11:25]
serge ↷ Liens modifiés en raison d'un déplacement.
Ligne 5: Ligne 5:
 Pablo Picasso Pablo Picasso
  
 +[[https://www.youtube.com/watch?v=s5MUxuY4Hbw|Niki de Saint-Phalle]]
 ===== Réalisation ===== ===== Réalisation =====
 ==== JOUR 1 ==== ==== JOUR 1 ====
Ligne 12: Ligne 13:
 La voici démontée : La voici démontée :
  
-{{:démontage.jpg?400|}}+{{media_03:demontage.jpg?400|}}
  
 Les deux moteurs pas-à-pas qui réalisent le pan et le tilt ont comme référence : 23HS0001-02 Les deux moteurs pas-à-pas qui réalisent le pan et le tilt ont comme référence : 23HS0001-02
Ligne 28: Ligne 29:
 Objectif : Réalisation du capteur optique manquant sur la roue codeuse du pan : Objectif : Réalisation du capteur optique manquant sur la roue codeuse du pan :
  
-{{:encodeur.jpg?400|}}+{{media_03:encodeur.jpg?400|}}
  
 J'ai pris modèle sur le capteur du tilt. La surprise a été de constater que deux encodeurs optique étaient positionnés côte à côte. J'ai pris modèle sur le capteur du tilt. La surprise a été de constater que deux encodeurs optique étaient positionnés côte à côte.
Ligne 37: Ligne 38:
 Résultat : ~2470 Résultat : ~2470
  
-{{:montage.jpg?400|}}+{{media_09:montage.jpg?400|}}
  
 Code Arduino : Code Arduino :
Ligne 99: Ligne 100:
 Objectif : Faire fonctionner les capteurs à effet Hall du pan Objectif : Faire fonctionner les capteurs à effet Hall du pan
  
-{{:hall_map.jpg?400|}}+{{media_06:hall_map.jpg?400|}}
  
 J'ai repris le code Arduino de l'étape précédente. Pour la visualisation des capteurs, voici le code Processing : J'ai repris le code Arduino de l'étape précédente. Pour la visualisation des capteurs, voici le code Processing :
Ligne 148: Ligne 149:
 |2  |Embase KK          |2 Contacts |22-27-2021                  |Molex                  |483-8461             |RS         | |2  |Embase KK          |2 Contacts |22-27-2021                  |Molex                  |483-8461             |RS         |
 |17 |Diode              |2A 100V    |HER202G R0                  |Taiwan Semiconductor   |688-1940             |RS         | |17 |Diode              |2A 100V    |HER202G R0                  |Taiwan Semiconductor   |688-1940             |RS         |
-|2  |Résistance         |22 ohm.    |MRS25000C2209FCT00          |Vishay                 |683-3336             |RS         | +|2  |Résistance         |22Ω        |MRS25000C2209FCT00          |Vishay                 |683-3336             |RS         | 
-|1  |Résistance         |10k ohm    |                            |                                                     | +|1  |Résistance         |10kΩ       |                            |                                                     | 
-|8  |Résistance         |1 ohm      |CFR25J1R0                   |TE Connectivity        |135-550              |RS         |+|8  |Résistance         |1Ω         |CFR25J1R0                   |TE Connectivity        |135-550              |RS         |
 |1  |Condensateur       |470uF      |711-1129                    |RS Pro                 |711-1129             |RS         | |1  |Condensateur       |470uF      |711-1129                    |RS Pro                 |711-1129             |RS         |
 |1  |Condensateur       |100nF      |USR1H0R1MDD                 |Nichicon               |475-8961             |RS         | |1  |Condensateur       |100nF      |USR1H0R1MDD                 |Nichicon               |475-8961             |RS         |
Ligne 184: Ligne 185:
 Fraisage du plateau avec le code ci-dessous : Fraisage du plateau avec le code ci-dessous :
  
-{{:plateau.png?400|Plateau}}+{{media_11:plateau.png?400|Plateau}}
  
 <code java> <code java>
Ligne 307: Ligne 308:
 </code> </code>
  
-===== Visserie =====+==== JOUR 10 ==== 
 +08/12/2019 
 + 
 +Impression du support du S. 
 +Echec cuisant, j'ai retournée la pièce pour l'impression et oublié de mettre l'encoche de l'autre côté. 
 + 
 +==== JOUR 11 ==== 
 +09/12/2019 
 + 
 +J'ai rectifié l'erreur d'hier et j'en ai profité pour peaufiner le tout : 
 +<code java> 
 +module SupportSolenoide() { 
 +    difference() { 
 +        union() { 
 +            hull() { 
 +                translate([80, 47, 0]) cylinder(d = 14, h = 5); 
 +                translate([80, 7, 0]) cylinder(d = 14, h = 5); 
 +                translate([7, 47, 0]) cylinder(d = 14, h = 5); 
 +                translate([7, 7, 0]) cylinder(d = 14, h = 5); 
 +            } 
 +            //Patte 
 +            hull() { 
 +                translate([77, -4, 0]) cylinder(d = 20, h = 5); 
 +                translate([77, 58, 0]) cylinder(d = 20, h = 5); 
 +            } 
 +            // Extension solénoïde 
 +            hull() { 
 +                translate([91, 42, 0]) cylinder(d = 10, h = 7.5); 
 +                translate([91, 12, 0]) cylinder(d = 10, h = 7.5); 
 +                translate([49, 42, 0]) cylinder(d = 10, h = 7.5); 
 +                translate([49, 12, 0]) cylinder(d = 10, h = 7.5); 
 +            } 
 +        } 
 + 
 +        // Trous solénoïde 
 +        translate([88, 38, 0]) cylinder(d = 3.2, h = 7.5); 
 +        translate([88, 16, 0]) cylinder(d = 3.2, h = 7.5); 
 +        translate([58, 38, 0]) cylinder(d = 3.2, h = 7.5); 
 +        translate([58, 16, 0]) cylinder(d = 3.2, h = 7.5); 
 +        // Tête de vis 
 +        translate([88, 38, 0]) cylinder(d1 = 6.3, d2 = 3.2, h = 1.7); 
 +        translate([88, 16, 0]) cylinder(d1 = 6.3, d2 = 3.2, h = 1.7); 
 +        translate([58, 38, 0]) cylinder(d1 = 6.3, d2 = 3.2, h = 1.7); 
 +        translate([58, 16, 0]) cylinder(d1 = 6.3, d2 = 3.2, h = 1.7); 
 +        // Fixation 
 +        translate([7, 7, 0]) cylinder(d = diamtreFixation, h = 6); 
 +        translate([7, 47, 0]) cylinder(d = diamtreFixation, h = 6); 
 +        // Passage écrou 
 +        translate([41.5, 47, 0]) cube([11, 7, 7.5]); 
 +        translate([47, 47, 0]) cylinder(d = 11, h = 7.5);  
 +        //pattes 
 +        translate([77, 58, 0]) cylinder(d = diamtreFixation, h = 6); 
 +        translate([77, -4, 0]) cylinder(d = diamtreFixation, h = 6); 
 +        // Passage marqueur 
 +        translate([0, 17, 0]) cube([16, 20, 7]); 
 +        translate([0, 17, 0]) cube([40, 20, 3]); 
 +    } 
 +
 +</code> 
 + 
 +==== JOUR 12 ==== 
 +10/12/2019 
 + 
 +L'embout précédent s'est cassé au serrage de la courroie. J'ai modifié la position pour l'impression. De ce fait la fibre de PLA est perpendiculaire à l'effort. J'ai aussi augmenté l'épaisseur des pattes de serrage. L'ensemble des éléments du plateau sont imprimés. Il reste à équilibrer le plateau afin de diminuer les efforts sur le moteur de tilt. 
 + 
 +<code java> 
 +module EmboutSolenoide() { 
 +    largeurCourroie = 6; 
 +    largeurEmbout = 50; 
 +    profondeur = 18; 
 +    longueurVis = 17; 
 +    largeurCote = 10; 
 +    difference() { 
 +        union() { 
 +            // Base 
 +            hull() { 
 +                translate([4, 0, 4]) rotate([-90, 0, 0]) cylinder(d = 8, h = profondeur); 
 +                translate([largeurEmbout - 4, 0, 4]) rotate([-90, 0, 0]) cylinder(d = 8, h = profondeur); 
 +            } 
 +            // Côté gauche 
 +            translate([0, 0, 4]) cube([largeurCote, profondeur,  13 + largeurCourroie / 2]); 
 +            translate([0, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = profondeur, h = largeurCote); 
 +            translate([-4, 0, 14 - largeurCourroie / 2]) cube([4, profondeur, largeurCourroie + 2]); // Passage courroie 
 +            translate([-4, 0, 11]) rotate([0, 180, -90]) prisme(profondeur, 4, 4); 
 +            // Côté droit 
 +            translate([largeurEmbout - largeurCote, 0, 4]) cube([largeurCote, profondeur,  13 + largeurCourroie / 2]); 
 +            translate([largeurEmbout - largeurCote, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = profondeur, h = largeurCote); 
 +            translate([largeurEmbout, 0, 14 - largeurCourroie / 2]) cube([4, profondeur, largeurCourroie + 2]); // Passage courroie 
 +            translate([largeurEmbout + 4, profondeur, 11]) rotate([0, 180, 90]) prisme(profondeur, 4, 4); 
 +            // Partie centrale 
 +            hull() { 
 +                translate([largeurEmbout / 2, 0, 15]) rotate([-90, 0, 0]) cylinder(d = 22, h = profondeur); 
 +                translate([largeurCote, 0, 8]) cube([largeurEmbout - 2 * largeurCote, profondeur, 0.1]); 
 +            } 
 +        } 
 +        // Axe solénoïde 
 +        translate([largeurEmbout / 2, 0, 15]) rotate([-90, 0, 0]) cylinder(d = 12.1, h = 13); 
 +        // Encoches 
 +        translate([largeurCote / 2, 0, 5]) Trapeze(0.5, 1.5, profondeur, 30); 
 +        translate([largeurEmbout - largeurCote / 2, 0, 5]) Trapeze(0.5, 1.5, profondeur, 30); 
 +        // Vis 
 +        translate([0, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 4, h = longueurVis); 
 +        translate([largeurEmbout - longueurVis, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 4, h = longueurVis); 
 +        // Tête de vis 
 +        translate([-4, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 7, h = 4); 
 +        translate([largeurEmbout, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 7, h = 4); 
 +        // Ecrou 
 +        translate([largeurCote, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d = 8, h = 5.6); 
 +        translate([largeurEmbout - largeurCote -5.6, profondeur / 2, 17 + largeurCourroie / 2]) rotate([0, 90, 0]) cylinder(d =  
 +        8, h = 5.6); 
 +         
 +        // Fixation sur solenoide 
 +        translate([largeurEmbout / 2, 7, 10]) cylinder(d = 3.3, h = 20);  
 +        translate([largeurEmbout / 2, 7, 1]) cylinder(d = 3.1, h = 15); 
 +         
 +        // Arrondisseur 
 +        translate([0, 4, 0]) rotate([0, 0, 180]) arrondisseurAngle(4, 30); 
 +        translate([largeurEmbout, 4, 0]) rotate([0, 0, -90]) arrondisseurAngle(4, 30); 
 +    } 
 +
 + 
 +module arrondisseurAngle(rayon, hauteur) 
 +    difference() { 
 +        cube([rayon, rayon, hauteur]); 
 +        cylinder(r = rayon, h = hauteur); 
 +    } 
 +
 + 
 +module Trapeze(b1, b2, p, h) { 
 +    CubePoints = [ 
 +  [ -b1 / 2,  0,  0 ],  //0 
 +  [ b1 / 2,  0,  0 ],  //1 
 +  [ b1 / 2,  p,  0 ],  //2 
 +  [ -b1 / 2,  p,  0 ],  //3 
 +  [ -b2 / 2,  0,  h ],  //4 
 +  [ b2 / 2,  0,  h ],  //5 
 +  [ b2 / 2,  p,  h ],  //6 
 +  [ -b2 / 2,  p,  h ]]; //7 
 +   
 +    CubeFaces = [ 
 +  [0,1,2,3],  // Base 
 +  [4,5,1,0],  // Face 
 +  [7,6,5,4],  // Haut 
 +  [5,6,2,1],  // Droite 
 +  [6,7,3,2],  // Arrière 
 +  [7,4,0,3]]; // Gauche 
 +   
 +    polyhedron( CubePoints, CubeFaces );  
 +
 +</code> 
 + 
 +==== JOUR 13 ==== 
 +24/12/2019 
 + 
 +Echec lamentable d'impression des outils pour centrer le dispositif de peinture. 
 + 
 +==== JOUR 14 ==== 
 +25/12/2019 
 + 
 +Passage par la fraiseuse numérique avec l'utilisation d'un conte-plaqué de 5mm afin d'obtenir ceci qui va me permettre de trouver le point d'équilibre précis du plateau avec tout les accessoires : 
 + 
 +{{media_05:centrage.png?direct&400|Centre}} 
 + 
 +<code java> 
 +$fn = 50; 
 + 
 +Decalage(); 
 + 
 +module Decalage() { 
 +    difference() { 
 +        // Base 
 +        hull() { 
 +            circle(d  = 60); 
 +            translate([25, 0, 0]) circle(d  = 60); 
 +        } 
 +        for (i = [-26: 5 : 50]) { 
 +            translate([i, 0]) circle(d = 3); // Trou de l'axe 
 +        } 
 +        translate([-50, 22.63]) square([100, 100]); 
 +        for (i = [0 : 3]) {   
 +            for (j = [0 : 6: 24]) { 
 +            translate([j, 0]) rotate(90 * i) translate([18, 18]) circle(d = 4.2); // Trous de fixations 1 
 +            } 
 +        } 
 +    } 
 +
 +</code> 
 + 
 +==== JOUR 15 ==== 
 +26/12/2019 
 + 
 +La fraiseuse numérique à encore travailler. Aujourd'hui réalisation du plateau avec les corrections faites au fil du temps : 
 +<code java> 
 +module Plateau() { 
 +    difference() { 
 +        hull() { // Forme 
 +            translate([-20, 132]) circle(r=30); 
 +            translate([111, 152]) circle(r=10); 
 +            translate([111, -162]) circle(r=10); 
 +            translate([-20, -142]) circle(r=30); 
 +            translate([-91, 45]) circle(r=30); 
 +            translate([-91, -52]) circle(r=30); 
 +        } 
 +        // Vis support lyre 
 +        translate([-110, -42]) circle(d = 4); // Bas Gauche 
 +        translate([110, -42]) circle(d = 4); // Bas Droite 
 +        translate([-110, 22]) circle(d = 4); // Haut Gauche 
 +        translate([110, 22]) circle(d = 4); // Haut Droite 
 +            
 +        translate([-45, -36])  circle(d = 4); // Bas Centre Gauche 
 +        translate([-45, 23])  circle(d = 4); // Haut Centre Gauche 
 +        translate([45, -36]) circle(d = 4); // Bas Centre Droite 
 +        translate([45, 23]) circle(d = 4); // Haut Centre Droite 
 + 
 +        translate([-10, -116]) square([20, 155]); // Emplacement marqueur 
 +        // Passage embout 
 +        translate([0, 109]) circle(d = 26); 
 +        translate([-10, 77]) square([20, 32]); 
 +         
 +        translate([-10, 39.1]) square([20, 37.8]); // Poche de 1mm de profondeur 
 +         
 +        translate([38, 37]) square([64, 5]); // Rainure renfort droite 
 +        translate([-102, 37]) square([64, 5]); // // Rainure renfort gauche 
 +         
 +        translate([0, -4]) circle(d=26); // Sécurité 
 +        // -103.3 Vis arrière 
 +        // 90.7 Vis avant 
 +        // 194 Distance entre deux vis 
 +         
 +        // Support marqueur arrière 
 +        translate([-20, -83]) circle(d = 4.1); 
 +        translate([-20, -123]) circle(d = 4.1); 
 +        translate([20, -83]) circle(d = 4.1); 
 +        //translate([20, -123]) circle(d = 4.1); 
 +         
 +        // Support marqueur avant 
 +        translate([-20, 111]) circle(d = 4.1); 
 +        translate([-20, 71]) circle(d = 4.1); 
 +        translate([20, 111]) circle(d = 4.1); 
 +        translate([20, 71]) circle(d = 4.1); 
 +     
 +        // Support Bouteille 
 +        translate([31, -153]) circle(d = 4.1); 
 +        translate([111, -153]) circle(d = 4.1); 
 +        translate([111, -103]) circle(d = 4.1); 
 +         
 +        // Support Solénoïde 
 +        translate([-31, -153]) circle(d = 4.1); 
 +         
 +        // Support Embout Bouteille 
 +        translate([41, 154]) circle(d = 4.1); 
 +        translate([101, 154]) circle(d = 4.1); 
 +        translate([41, 126]) circle(d = 4.1); 
 +        translate([101, 126]) circle(d = 4.1); 
 +    } 
 +
 +</code> 
 +Une erreur existe encore, mais je la corrigerais peut-être plus tard. Il reste encore à vérifier que le plateau soit bien équilibré par rapport à 'axe de rotation. 
 + 
 +==== JOUR 16 ==== 
 +27/12/2019 
 + 
 +Mise au point du test logiciel pour la rotation des différents axes. Réussite absolue comme cette vidéo en témoigne : 
 + 
 +{{test_rotation.mp4|Rotation}} 
 + 
 +==== JOUR 17 ==== 
 +29/12/2019 
 + 
 +Test de l'équilibre du plateau avec les accessoires. Il est bien équilibré et le moteur entraine convenablement l'ensemble. 
 + 
 +Avec l'inertie de l'ensemble, des pas "sautent", donc il est nécessaire d'utiliser la roue dentée et les fourches optique afin de pouvoir établir une position précise. 
 + 
 +Une modification du plateau est nécessaire pour que le coin inférieur droit puis passer dans la fourche de la lyre. 
 +  
 +==== JOUR 17 ==== 
 +25/01/2020 
 + 
 +Finalisation de la pseudo-résidence au 108 pour voir la machine montée et la faire fonctionner. 
 +Voici le résultat : 
 +{{ media_08:map_coeur.mp4 |}} 
 + 
 +Un autre angle permettant de voir la machine en fonctionnement : 
 + 
 +{{ media_08:map_coeur2.mp4 |}} 
 +===== Matériel ===== 
 +==== Visserie ====
 ^Qtt ^Nom                                      ^Diamètre          ^Taille   ^Référence               ^Remarques    ^ ^Qtt ^Nom                                      ^Diamètre          ^Taille   ^Référence               ^Remarques    ^
-|4   |Vis tête cylindrique hexagonale creuse   |UNF 10-32         |1''      |                        |eBay         | +|20  |Vis TCHC acier 8.8 noir EF DIN 912       |4                 |20       |TCHC04/020A8NOEF        |FIXNVIS      | 
-|20  |Vis tête cylindrique hexagonale creuse   |4                 |20       |TCHC04/020A8NOEF        |FIXNVIS      | +|20  |Vis TCHC acier 8.8 noir EF DIN 912       |4                 |30       |TCHC04/030A8NOEF        |FIXNVIS      |
-|20  |Vis tête cylindrique hexagonale creuse   |4                 |30       |TCHC04/030A8NOEF        |FIXNVIS      | +
-|1   |Vis tête cylindrique hexagonale creuse   |5                 |40       |TCHC05/040A8NOEF        |FIXNVIS      |+
 |1   |Ecrou carré  DIN 557                     |5                 |8x8x4    |ECRCAR05/08/08/4ZN      |FIXNVIS      | |1   |Ecrou carré  DIN 557                     |5                 |8x8x4    |ECRCAR05/08/08/4ZN      |FIXNVIS      |
 |1   |Ecrou nylstop acier zingué blanc DIN 985 |4                         |ECRNYL04ZN              |FIXNVIS      | |1   |Ecrou nylstop acier zingué blanc DIN 985 |4                         |ECRNYL04ZN              |FIXNVIS      |
 |1   |Rondelle acier zingué blanc NFE 25513    |4                 |M        |RONM04ZN                |FIXNVIS      | |1   |Rondelle acier zingué blanc NFE 25513    |4                 |M        |RONM04ZN                |FIXNVIS      |
  
 +^Qtt ^Nom                                      ^Diamètre          ^Taille   ^Référence               ^Remarques    ^
 +|4   |Vis tête cylindrique hexagonale creuse   |UNF 10-32         |1''      |                        |eBay         |
 +|1   |Vis TCHC acier 8.8 noir EF DIN 912       |3                 |20       |TCHC03/020A8NOEF        |FIXNVIS      |
 +|2   |Vis TCHC acier 8.8 noir EF DIN 912       |4                 |16       |TCHC04/016A8NOEF        |FIXNVIS      |
 +|1   |Vis TCHC acier 8.8 noir EF DIN 912       |5                 |40       |TCHC05/040A8NOEF        |FIXNVIS      |
 +|4   |Vis TFHC acier 10.9 noir EF DIN 7991     |3                 |12       |TFHC03/012A10NOEF       |FIXNVIS      |
 +
 +==== Alimentation ====
 +Boîtier 
 +[[https://www.ldlc.com/informatique/pieces-informatique/alimentation-pc/c4289/+fv1911-10773.html|SFX]] ou
 +[[https://www.ldlc.com/informatique/pieces-informatique/alimentation-pc/c4289/+fv1911-10775.html|TFX]]
 +
 +
 +Contrôleur de moteur pas à pas:
 +
 +A3982
 +
 +==== Consommables ====
 +
 +[[https://www.geant-beaux-arts.fr/papier-recycle-110g-m-1-x-50m-gris-clair-rouleau.html|Papier gris 1 x 50]]
 ===== Liens ===== ===== Liens =====
 Pour les PCB : Pour les PCB :
  
  
-Tutoriel : http://riton-duino.blogspot.com/2018/11/concevoir-un-pcb.html+[[http://riton-duino.blogspot.com/2018/11/concevoir-un-pcb.html|Tutoriel]] 
 + 
 +[[https://www.pcbway.com|pcbway]] 
 + 
 +[[https://oshpark.com|oshpark]] 
 + 
 +[[https://forum.hardware.fr/hfr/electroniquedomotiquediy/conception_depannage_mods/concevoir-fabriquer-presque-sujet_645_6.htm|Forum PCB : concevoir et fabriquer comme un pro (ou presque)]] 
 + 
 +A tester pour un clavier : 
 + 
 +[[https://gitlab.freedesktop.org/libevdev/libevdev/blob/master/tools/libevdev-events.c|libevdev-events]] 
 + 
 +Joystick :  
 + 
 +[[https://gist.github.com/jasonwhite/c5b2048c15993d285130|Reads joystick/gamepad events on Linux and displays them.]] 
 + 
 +[[https://gist.github.com/meghprkh/9cdce0cd4e0f41ce93413b250a207a55|Libevdev playground]] 
 + 
 +Circuit : 
 + 
 +[[https://reprap.org/wiki/Stepper_Motor_Driver_2.3|Stepper Motor Driver 2.3]] 
 + 
 +[[http://www.cuteminds.com/en/elettronicagen/elettronica/36-controller-bipolare-con-a3982-allegro|A3982 bipolar small stepper motor controller]] 
 + 
 +Logiciel : 
 + 
 +PWM : [[https://librpip.frasersdev.net/peripheral-config/pwm0and1/|PWM0 & 1]] 
 + 
 +PWM : [[https://github.com/raspberrypi/firmware/issues/1178|RPI4 : PWM0 & PWM1 Alternate pins]] 
 + 
 +ISR : [[https://gist.github.com/ast/a19813fce9d34c7240091db11b8190dd|How to read a quadrature encoder in C on the Raspberry Pi GPIO, using the wiringPi library]] 
 + 
 +Câble : 
 + 
 +[[https://yadom.fr/plateformes-de-developpement/raspberry-pi/alimentations/cable-usb-c-coude-alimentation-raspberry-pi-4.html|yadom]]
  
-https://www.pcbway.com+[[https://www.amazon.fr/gp/product/B07V6PVPKB|Amazon]]
  
-https://oshpark.com+[[http://www.phartech.it|Fabricant de billes]]
  
-https://forum.hardware.fr/hfr/electroniquedomotiquediy/conception_depannage_mods/concevoir-fabriquer-presque-sujet_645_6.htm+[[http://paintballfactory.pl/fr/page-daccueil/|Autre piste]]
  
-Joystick : https://gist.github.com/jasonwhite/c5b2048c15993d285130 
 {{tag>sylvain}} {{tag>sylvain}}
machine_a_peindre.txt · Dernière modification: 2020/12/01 18:43 de serge