Skip to main content

Groupe B3

GROUPE B3

CMI PHYSIQUE-B

Leila Lazzem

Sacha Ferry 

Milo Reiss Ramdani Medhurst

1 ERE SEANCE 

Lors de cette 1ère séance au fablab, notre responsable d'UE monsieur Vincent Dupuis nous a expliqué les origines et l'histoire du fablab, le 1er étant née au MIT, à l'initiative de Neil Gershenfeld, il a notamment créer la charte des fablabs dans laquelle on peut retrouver les valeurs que tous les fablabs véhiculent. Celles-ci le partage et l'accessibilité afin de permettre à n'importe qui de créer presque n'importe quoi et d'avoir accès a des machines de pointe à la seule condition de documenter précisément la réalisation de chaque projet, afin de faciliter sa réalisation par tout ceux qui le voudrait.

Ils nous a ensuite expliqué l'importance du Wiki (nous avons compris qu'il est très important de documenter tout ce que nous allons réaliser), comment aller se dérouler l'UE, avant de nous faire visiter les différentes salles du fablab et le matériel qu'elles abritent , notamment la salle des imprimantes 3d, la salle des découpeuses laser (pour plastiques et pour métaux avec découpeuses laser, fil chaud et jet d'eau à très haute pression), la salle électronique ainsi que la salle de menuiserie.

Les machines que nous allons principalement utiliser et que nous allons apprendre à utiliser sont les imprimantes 3d et les découpeuses lasers

Nous avons ensuite pu commencer à chercher des idées pour le projet que nous allons réaliser lors de ces 10 séances au fablab, notamment en explorant les capteurs en tout genre mis à notre disposition.

2 EME SEANCE 

Lors de cette séance, nous avons pu être formé à l'utilisation de 3 logiciels en opensource de modélisation et dessin numérique : ces 3 logiciels étant :

  • Inkscape pour la modélisation en deux dimensions. 
  • OpenScad pour la modélisation en 3 dimensions. 
  • Freescad pour la modélisation en 3 dimensions.

INKSCAPE

Ce logiciel de modélisation 2d est principalement utilisé pour réaliser des plans utilisable par une découpeuse laser.

Notre professeur nous a donc appris les bases de ce logiciel, avant de nous donner comme consigne de réaliser un rectangle dans lequel sont percés 4 cercles de rayon 10 cm situé à 15 cm des bord du rectangle le plus proche.

IMG_7609 2.jpeg

Voici donc ce fameux rectangle. A noter que la couleur rouge du trait permet à la machine de savoir qu'il faut découper le matériau suivant le trait.

OPENSCAD

Ce logiciel de modélisation en 3d est utilisé pour créer des plans utilisables par des imprimantes 3d. ce logiciel est basé sur l'utilisation du C++ (un langage informatique) pour coder des formes plus ou moins complexes, nous avons donc appris les bases de ce logiciel, et notamment nous avons appris l'existence du site CheatSheet d'OpenScad, recensant toute les commandes et informations nécessaire à la création de presque n'importe quelles formes, simples ou complexes.

Nous avons ainsi réalisé un cube percé sur chaque axe du plan par un cylindre, lequel est ensuite enlevé à la structure, nous laissant avec ce résultat : 

IMG_7608.jpeg

FREESCAD

Le dernier logiciel que nous avons appris à utilisé est Freescad un logiciel, de modélisation 3D paramétrique, qui contrairement à Openscad, se base sur l'utilisation de la souris pour modéliser, modifier et interagir avec la forme que l'on cherche à créer.

Nous avons du réaliser le même travail que pour Openscad, mais en utilisant ici directement notre souris et le logiciel en lui même pour la modélisation :

IMG_7610.jpeg


La séance c'est fini sur la démonstration par une fabmanager de l'utilisation d'une imprimante 3d, de l'importation du plan jusqu'à l'impression, en passant par la formatation du fichier, l'ajout des supports pour la structure, le choix du matériau pour l'impression, la vérification du bon fonctionnement de l'imprimante et l'export des fichiers vers l'imprimante.

La fabmanager a ensuite pu nous montrer le fonctionnement des découpeuses laser, et toutes les étapes nécessaires à leur utilisation, notamment le calibrage et l'import des fichiers.

3 EME SEANCE:

Lors de la troisième séance du projet Fablab, le professeur a introduit aux groupes du CMI physique la carte Arduino. Cet équipement est fondamental pour la conception d'objets électroniques. Il se compose d'un microcontrôleur et d'autres composants qui facilitent la connexion des entrées et des sorties, permettant ainsi le stockage et l'exécution de programmes informatiques.Voici le modèle Arduino mis à notre disposition:

Par la suite, nous avons reçu les éléments suivants : un breadboard, des résistances, des fils et des câbles pour faire un montage et faire fonctionner l'Arduino à l'aide d'un ordinateur portable. Notre tâche consistait à tester le bon fonctionnement de l'Arduino en exécutant le programme "blink", qui fait clignoter la LED intégrée à l'Arduino. Grâce aux câbles fournis permettant de connecter l'Arduino à notre ordinateur, nous avons réussi à téléverser le programme "blink" suivant :

void setup() {


  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  
  delay(1000);                      
  digitalWrite(LED_BUILTIN, LOW);   
  delay(1000);                     
}

image.png

Après avoir vérifié que notre Arduino marchait nous avons procédé a une utilisation plus concrète de l'Arduino: La mesure d'un facteur physique. En effet, nous avons pu, en branchant un capteur d'humidité et de température à notre Arduino mesurer à tout instant l'humidité et la température de notre environnement.

Voici le code utilisé:

#include "DHT.h"

// Définit la broche de l'Arduino sur laquelle la // broche DATA du capteur est reliée

#define DHTPIN 2

// Définit le type de capteur utilisé

#define DHTTYPE DHT11

// Déclare un objet de type DHT

// Il faut passer en paramètre du constructeur

// de l'objet la broche et le type de capteur

DHT dht(DHTPIN, DHTTYPE);

void setup() {

Serial.begin(9600);

 

// Initialise la capteur DHT11

dht.begin();

}

 

void loop() {

// Récupère la température et l'humidité du capteur et l'affiche

// sur le moniteur série

Serial.println("Temperature = " + String(dht.readTemperature())+" °C");

Serial.println("Humidite = " + String(dht.readHumidity())+" %");

// Attend 10 secondes avant de reboucler

delay(10000);

}

image.png

4 EME SEANCE:

PROJET:

Nous avons pour projet de réaliser un appareil capable de détecter la hauteur par rapport au sol et de l'afficher sur un écran LED. Cet appareil pourrait être très utile dans le cadre d'une activité comme l'alpinisme ou l'escalade de montagne ainsi que pour les pilotes d'avion . En effet, les vols  à très hautes altitudes peuvent être très dangereux . La raison principale est que à haute altitude il y a moins d'air, donc moins de résistance à l'air. À mesure que l'avion s'élève dans l'atmosphère, la quantité d'oxygène disponible à l'extérieur diminue jusqu'au point où elle n'est plus suffisante pour assurer une respiration efficace. Les pilotes risquent donc l'asphyxie. 

Concernant le capteur, nous avons deux idées principales: soit d'utiliser un laser afin de mesurer la distance au sol, soit un d'utiliser un capteur de pression atmosphérique qui nous permettra d'associer la pression de l'air à l'altitude.

Chacun de ces capteurs présentent des avantages et inconvénients que nous détailleront ci-dessous:

Capteur Laser: 
Avantages  Inconvénients 
  • La lumière laser fournit un petit point lumineux condensé, qui est visible même de loin. Ainsi, il est plus facile de bien ajuster le détecteur et de détecter sûrement les petites pièces sur de longues distances. 

  • La lumière laser focalisée est très riche en énergie avec à la clé une détection fiable de surfaces très variées, même en présence de lumière parasite. 

  • un alignement plus facile, une plus grande précision.



 

 

 

 

 

 

  • L’angle d’inclinaison de la personne portant le dispositif peut totalement fausser le résultat.

  • Si il y’a un obstacle sur le trajet du laser, le capteur va seulement mesurer la distance entre la personne et l’obstacle.

Avantages  Inconvénients 
  • Multifonctions: mesure à la fois la pression atmosphérique, la température et l'humidité.
  • peut-être utilisé pendant les expériences, les voyages etc..
  • Facile à utiliser 
  • Très précis
  • Hautes résolutions pour la pression et la température
  • Pression atmosphérique affectée par l'altitude et la pression 
  • Une haute humidité peut affecter le capteur et donner de fausses mesures par la suite.
Avantages Inconvénients 
  • Capteur très utilisé 

  • Renseigne sur la localisation de la personne portant l'équipement ce qui permet de déterminer l’altitude par la suite.

  • Un capteur pas du tout précis qui est perturbé généralement par les bâtiments ou par toute autre source dans la nature.

  • Ne se comporte pas comme les GPS qu’on retrouve dans nos téléphones vu que ceux-ci sont très précis grâce aux bornes télécom.

  • N’est pas utilisé en intérieur mais seulement en extérieur.

Après avoir comparé nos différents capteurs, on a fini par choisir le capteur baromètre BME 280 car celui-ci est multifonctions c'est-à-dire qu'il nous donne la température, la pression et l'humidité en une seule mesure.D'autre part, ce capteur a une consommation d'énergie très réduite, des taux de mesures plus élevés et des filtres contre les interférences environnementales.

Dans un second temps, nous avons choisi les composants dont on aura besoin afin de mettre en place notre projet:

  • Capteur de distance
  • Microcontrôleur : un microcontrôleur pour traiter les données provenant du capteur et les afficher sur l'écran LED. Des microcontrôleurs comme Arduino ou Raspberry Pi sont souvent utilisés dans ce type de projet en raison de leur polyvalence et de leur facilité d'utilisation.

  • Écran LED : Pour afficher la hauteur détectée, on peut utiliser un petit écran LED. Vous pouvez opter pour un écran à matrice de points ou un écran à sept segments, en fonction de la précision de l'affichage que vous souhaitez et de vos préférences en termes de design.

  • Alimentation électrique : Assurez-vous d'avoir une source d'alimentation électrique adéquate pour alimenter votre dispositif, que ce soit à l'aide de piles, d'une batterie rechargeable ou d'une alimentation secteur.

  • Boîtier et composants de montage :on aura besoin d'un boîtier pour abriter tous les composants de votre appareil, ainsi que des composants de montage.

Protocole Expérimental:
  • Sélectionnez votre capteur de distance : Choisissez le type de capteur de distance qui convient le mieux à vos besoins en termes de portée, de précision et de budget.

  • Configurez votre microcontrôleur : Connectez le capteur de distance au microcontrôleur et programmez-le pour lire les données du capteur.

  • Programmation : Écrivez un code pour votre microcontrôleur qui prendra les lectures du capteur de distance et les affichera sur l'écran LED.

  • Montage et assemblage : Montez tous les composants dans votre boîtier, en vous assurant que le capteur est correctement positionné pour détecter la hauteur par rapport au sol.

  • Test et débogage : Testez votre appareil pour vous assurer qu'il fonctionne correctement.

  • Finalisation : Une fois que votre appareil fonctionne correctement, finalisez le boîtier et assurez-vous que tout est sécurisé et prêt à être utilisé dans des conditions réelles.

5 EME SEANCE:

Suite à la 4ème séance dans laquelle on a choisi le bon capteur qui correspond bien à l’instrument de mesure qu’on veut créer, l’objectif majeur de la séance 5 est de mettre en marche l’instrument, d’élaborer notre montage à la perfection et de le tester à des distances différentes. 

On a commencé par connecter notre Arduino à un pc portable et on a mis le code ci-dessous:

Ensuite, on a fait quelques mesures à des étages différents mais pas très loin en distance puis on a fait une courbe sur google sheets qui semble être linéaire mais cela est dû au fait qu’il y a pas grande différence entre les mesures puisqu’on a pas accès à des étages très hauts.

Dans un troisième temps, on connecte notre écran Led à l’Arduino afin qu’il affiche les mesures directement sur l’écran lorsqu’un alpiniste a besoin de savoir l’altitude. 

on a donc utilisé le code ci-dessous: 

#include "Seeed_BME280.h"
#include <Wire.h>
#include<Wire.h>
#include"rgb_lcd.h"
rgb_lcd lcd;


/*
const int colorR=255;
const int colorG=0;
const int colorB=0;
*/
BME280 bme280;


void setup() {
    Serial.begin(9600);
    if (!bme280.init()) {
        Serial.println("Device error!");
    }


}
void loop() {
    float pressure;
     //get and print temperatures
    Serial.print("Temp: ");
    Serial.print(bme280.getTemperature());
    Serial.println("C");//The unit for  Celsius because original arduino don't support special symbols


    //get and print atmospheric pressure data
    Serial.print("Pressure: ");
    Serial.print(pressure = bme280.getPressure());
    Serial.println("Pa");


    //get and print altitude data
    Serial.print("Altitude: ");
    Serial.print(bme280.calcAltitude(pressure));
    Serial.println("m");


    //get and print humidity data
    Serial.print("Humidity: ");
    Serial.print(bme280.getHumidity());
    Serial.println("%");
lcd.begin(16, 2);
lcd.print("Altitude: ");
lcd.print(bme280.calcAltitude(pressure));
lcd.println("m");
    delay(1000);
}

Puis, on voulait rajouter une deuxième ligne sur l'écran qui indique la pression mise à part l'altitude. On a donc opté pour ce code ci-dessous à la fin:

#include "Seeed_BME280.h"
#include <Wire.h>
#include<Wire.h>
#include"rgb_lcd.h"
rgb_lcd lcd;

/*
const int colorR=255;
const int colorG=0;
const int colorB=0;
*/
BME280 bme280;

void setup() {
    Serial.begin(9600);
    if (!bme280.init()) {
        Serial.println("Device error!");
    }

}

void loop() {
    float pressure;



   
    Serial.print("Temp: ");
    Serial.print(bme280.getTemperature());
    Serial.println("C");

    Serial.print("Pressure: ");
    pressure = bme280.getPressure();
    Serial.print(pressure/100);
    Serial.println("hPa");

    Serial.print("Altitude: ");
    Serial.print(bme280.calcAltitude(pressure));
    Serial.println("m");

    Serial.print("Humidity: ");
    Serial.print(bme280.getHumidity());
    Serial.println("%");

lcd.begin(16, 2);
lcd.print("Altitude: ");
lcd.print(bme280.calcAltitude(pressure));
lcd.println("m");
   
lcd.setCursor(0,2);

lcd.print("Pres: ");
pressure = bme280.getPressure();
lcd.print(pressure/100);
    lcd.println("hPa");    
    delay(1000);
}



L’objectif est que l’instrument de mesure soit facile à utiliser, pratique et surtout léger à porter. On s’intéresse donc au design du boitier dans lequel on va mettre notre instrument:


6 EME SEANCE

Durant cette séance, nous nous sommes intéressés à l'alimentation de notre instrument de mesure de telle sorte à ce qu'il soit portable pour l'alpiniste ou pour la personne qui va l'utiliser. 

Dans un premier temps, on a essayé de brancher une batterie Li-Ion sauf que cette alternative était un peu trop risqué puisque c'est possible de court-circuiter la batterie ou de la surcharger et dans ce cas là de la faire exploser. En effet, les précautions d'utilisation sont très strictes.

Finalement, on a opté pour la batterie externe car premièrement elle est très facile à brancher et deuxièmement cette alternative n'est pas du tout risqué comme le cas de la batterie Li-Ion.

On a donc obtenu le montage ci-dessous:

Projet Personnel de Leila Lazzem

Projet Personnel 2D:

Pour mon projet personnel en 2D, j'ai décidé de réaliser le fameux symbole du geai moqueur du grand film Hunger Games. Il s'agir d'un oiseau fictif provenant de cette saga qui symbolise la rébellion et la résistance.Celui-ci se présente sous cette forme:Capture d’écran 2024-04-26 à 09.59.12.png

Afin de le réaliser, j'ai utilisé le logiciel Inkscape.

  • Dans un premier temps, j'ai téléchargé la photo du symbole ensuite je l'ai importé sur Inkscape en appuyant sur "Fichier" ensuite "importer" (sur Mac).
  • Ensuite, j'ai vectorisé  l'objet matriciel et j'ai fait les contours à la main et à l'aide de "l'outil noeuds"avec une couleur rouge car le laser découpe tout ce qui est en rouge et garde tout ce qui est en noir. IMG_8679.jpg
  • Après avoir perfectionné mon objet en faisant varier plusieurs paramètres tels que la luminosité, la résolution ,etc... , j'ai téléchargé mon objet 2D sur clé USB et je me suis rendu à la salle où se trouve la découpeuse laser au FabLab.
  • J'ai inséré la clé sur le poste et je me suis rendue sur le site trottes ruby qui va permettre l'impression de mon objet.
  • J'ai choisi le type de bois que je veux et je l'ai bien mis en place dans la machine en prenant en compte les axes pour qu'il soit droit durant l'impression.
  • Finalement, j'ai envoyé le fichier au laser et j'ai exécuté la tâche.Voici le résultat obtenu!IMG_7805.jpg

 

Projet personnel de Sacha Ferry

Projet personnel 2D

Pour mon projet personnel en 2D, j'ai décidé de réaliser à l'aide d'InkScape une gravure de l'une de mes peintures préférées, La nuit étoilé de Van Gogh.

Afin de la réaliser, plusieurs étapes sont nécessaires,

  • tout d'abord, il faut trouver l'image de la Nuit étoilé avec la meilleure résolution possible, puis l'on va l'importer dans InkScape et créer un calque
  • Capture d’écran 2024-03-17 à 21.02.47.png
  • On va ensuite créer un chemin et redimensionner l'image sur l'ensemble de la feuille, afin de se préparer à la vectoriser.Capture d’écran 2024-03-17 à 21.03.42.png
  • On va ensuite pouvoir transformer notre calque en image vectoriel de notre image de base, ce qui nous permettra ensuite d'obtenir une image qui puisse être lue par la découpeuse laser afin de pouvoir graver.Capture d’écran 2024-03-17 à 21.03.09.png
  • Après avoir régler les différents niveaux de luminosité et de résolution des détails, il faut faire en sorte que l'image vectoriel ne soit constituée que d'un seul trait, pour ce faire on supprime les noeuds inutiles qui compliqueront le processus de découpe (dans mon cas, et étant donné la nature de l'image cette étape n'a pas été nécessaire. On change enfin la couleur du trait en rouge pour vérifier que tout est bien connecté.Capture d’écran 2024-03-17 à 21.06.42.png
  • Enfin, nous obtenons l'image vectoriel de la nuit étoilé, que nous pourrons utiliser dans la découpeuse laser.

    Capture d’écran 2024-03-17 à 21.06.17.png

  • Il faut ensuite se rendre au fablab, afin d'importer notre fichier inkscape sur l'ordinateur de la salle de découpe, et l'ouvrir avec le logiciel ruby.

 On cadre l'image et la place sur la grille, puis on ajoute autour de notre image un cadre rouge afin que lorsque la gravure soit finie, elle soit découpée hors de la plaque.

On règle ensuite la qualité de gravure et de découpe ainsi que la puissance du laser ,puis l'on sélectionne le type de bois que l'on va utiliser (ici du CP peuplier de 3mm d'épaisseur) avant de préparer la découpeuse pour la gravure.

IMG_7926 - Grande.jpeg

  •  Finalement, on envoie le fichier au laser et on exécute la tâche, en prenant garde de rester à coté de la machine durant l'opération.

 

Lorsque l'opération est terminée, on sort la plaque de la découpeuse et l'on détache la gravure. Dans mon cas le bois n'était en réalité pas du CP peuplier 3mm, j'ai donc du détacher ma gravure à l'aide d'une scie sauteuse.

le résultat final est le suivant: 

 

PROJET PERSONNEL 3D :

Pour mon projet personnel en 3D, j'ai décidé de réaliser à l'aide d'OpenScad 3 briques de lego, respectivement les briques 4*2, 2*2 et 4*1.

J'ai tout d'abord mesuré les 3 briques à l'aide d'une règle. Mais la précision des mesures ayant une incertitude d'environ ± 1mm, j'ai préféré chercher la fiche technique de ces briques sur internet.

Voici donc la fiche que j'ai pu trouvé t sur laquelle seront basé mes briques.

Capture d’écran 2024-04-21 à 14.22.46.png

CODE DES BRIQUES 

Le code étant similaire pour les 3 briques, je détaillerai le code de la brique 4*2, et je n'expliquerai pour les briques 2*2 et 4*1 que les changement dans les codes.

 

BRIQUE 4*2

 Capture d’écran 2024-04-21 à 14.18.37.png

$fn=25;

difference(){
    
    cube([31.80,15.80,9.60]);
    translate([1.45,1.45])
    cube([28.90,12.90,8.60]);
}

translate([3.90,3.90])
    for ( a = [0:1] ) {
       for ( b = [0:3] ) {
          translate([b*8,a*8,9.60])
          cylinder(h=1.80,r=2.42);
       }
    }

translate([7.90,7.90])
for ( c = [0:2] ) {
    translate([c*8,0])
    difference(){
    cylinder(h=8.60,r=3.25);
    cylinder(h=8.60,r=2.40);
    }
}

 

On commence tout d'abord par définir la résolution de nos cylindre à l'aide de la fonction $fn, dont la valeur est mise à 25.

On cherche ensuite à effectuer la forme de base de la brique, qui est un cube creux de 3,18*1,58*0,96 cm.

Pour ce faire, on va réaliser une différence, une opération booléenne qui va nous permettre de soustraire deux formes, ici deux cubes. Pour s'assurer que les bords de notre cube creux sont bien épais de 2,9 mm, il va falloir décaler le cube que l'on va soustraire de la moitié de cette valeur dans les x et y, avec la transformation translate([1.45,1.45]) .

On va ensuite faire les petits cylindre au-dessus de la brique, qui servent à clipser une brique avec une autre.

Afin d'alléger le code, on va utiliser la fonction for( X = [0,N] ). Celle-ci va nous permettre de définir une variable que l'on pourra incorporer dans la transformation translate, au niveau des axes x et y, ce qui va avoir pour effet de répéter l'action de translation, nous donnant ce rendu :

 

Capture d’écran 2024-04-21 à 14.18.50.png

Finalement, on va ajouter les piliers de support de la brique, on va pour ce faire combiner les deux techniques utilisé précédemment, la différence et le for. On obtient ainsi trois cylindres creux qui vont permettre de clipser des briques lego en dessous de notre brique :

Capture d’écran 2024-04-21 à 14.19.10.png

BRIQUE 2*2

Voici le code de la brique 2*2 :  

Capture d’écran 2024-04-21 à 14.25.44.png

$fn=25;

difference(){
    
    cube([15.80,15.80,9.60]);
    translate([1.45,1.45])
    cube([12.90,12.90,8.60]);
}

translate([3.90,3.90])
    for ( a = [0:1] ) {
       for ( b = [0:1] ) {
          translate([b*8,a*8,9.60])
          cylinder(h=1.80,r=2.42);
       }
    }

translate([7.90,7.90])

    difference(){
    cylinder(h=8.60,r=3.25);
    cylinder(h=8.60,r=2.40);
    
}

La différence principale avec le code de la brique 2*2 réside dans les dimensions de la brique, qui est un véritable cube de coté 1,58 cm et dans le support de la brique, puisqu'elle n'a besoin que d'un seul cylindre creux, ce qui enlève le besoin d'utiliser un for dans la 3ème partie du code.

Voici les rendus de la brique 2*2:

Capture d’écran 2024-04-21 à 14.25.57.pngCapture d’écran 2024-04-21 à 14.26.05.png

 BRIQUE 4*1

Voici le code de la brique 4*1

 

Capture d’écran 2024-04-21 à 14.34.56.png

 

$fn=25;

difference(){
    
    cube([31.80,7.90,9.60]);
    translate([1.45,1.45])
    cube([28.90,4.90,8.60]);
}

translate([3.85,3.85])
    
       for ( b = [0:3] ) {
          translate([b*8,0,9.60])
          cylinder(h=1.80,r=2.42);
       
    }

translate([7.90,3.85])
for ( c = [0:2] ) {
    translate([c*8,0])
   
    cylinder(h=8.60,r=1.90);
    
    }

Les différences avec le code de la brique 4*2 réside dans les dimensions et le support de la brique. Au niveau des dimensions, celle-ci étant moitié moins large que la brique 4*2, elle ne nécessite qu'une seule rangée de cylindres positionnés sur le dessus de la brique, ce qui signifie que le translate du deuxième bloc ne comporte qu'une seule variable, qui se situe dans l'axe x.

Au niveau des supports, la brique 4*1 étant plus fine, les. cylindres de supports sont en conséquences plus petit et surtout, ils ne sont pas creux, c'est pourquoi l'on à enlevé la différence dans le 3ème bloc.

Voici le rendu de la brique 4*1 :

Capture d’écran 2024-04-21 à 14.35.10.pngCapture d’écran 2024-04-21 à 14.40.13.png

 

 

 

FICHIERS STL 

 

 

 

 

 

 

 

 

 

 

 

 

 

Projet Personnel de Milo Reiss Ramdani Medhurst