Projet_prototypage_groupe_Haji_Hamoudi_Ben Aboubou
MU5MN045 - PROTOTYPAGE - 2024/2025
Imène HAMOUDI & Wissal HAJI & Omayma BEN ABOUBOU
PREMIERE SEANCE - ARDUINO - Vendredi 07 Février 2025
L'objectif du projet est de mesurer la température et l'humidité à l'aide du capteur et d'effectuer des actions en fonction des valeurs obtenues.
- Si la température dépasse 20°C, un servo-moteur tourne progressivement.
- Si l'humidité dépasse 30%, une LED s'allume.
- Les données de température et d'humidité sont affichées sur le moniteur série.
Ce bloc initialise le projet en définissant les composants nécessaires. La ligne #define LED 6 assigne la broche 6 à une LED qui s'allumera en fonction de l'humidité. Ensuite, les bibliothèques Seeed_SHT35.h et Servo.h sont incluses pour gérer respectivement le capteur de température/humidité SHT35 et le servo-moteur. On déclare aussi une variable pos pour contrôler l'angle du servo et on crée un objet myservo pour l'utiliser dans le programme.
Ce bloc de code adapte le programme en fonction du modèle de carte Arduino utilisé. Si une carte SAMD est détectée (comme une Arduino MKR1000 ou Zero), alors les broches I2C (SDA = 20, SCL = 21) sont configurées en conséquence et la communication série se fera via SerialUSB. Pour une carte classique comme une Arduino Uno ou Mega, les broches utilisées sont A4 pour SDA et A5 pour SCL, et la communication série passe par Serial.
Dans la fonction setup (), on initialise le matériel. La ligne myservo.attach(9); relie le servo-moteur à la broche 9. Ensuite, pinMode(LED, OUTPUT); configure la LED en mode sortie pour qu’on puisse l’allumer ou l’éteindre selon l’humidité mesurée. La communication série est établie avec une vitesse de 115200 bauds pour afficher les données sur le moniteur série. Ensuite, sensor.init() initialise le capteur SHT35, et si l’initiation échoue, un message d’erreur "sensor init failed!!" est affiché. Enfin, un delay(1000); ajoute une pause d'une seconde avant d'entrer dans la boucle principale.
Dans la fonction loop(), plusieurs variables sont définies pour stocker les mesures du capteur. temp et hum sont des variables float qui enregistreront la température et l’humidité respectivement. Les variables value et data[6] sont définies mais ne sont pas utilisées, elles peuvent donc être supprimées sans affecter le fonctionnement du code.
Cette partie de la boucle loop() tente de lire les données du capteur SHT35 en effectuant une mesure unique avec sensor.read_meas_data_single_shot(). Si la lecture échoue (NO_ERROR n'est pas retourné), un message "read temp failed!!" est affiché, et le programme passe à l’itération suivante de la boucle sans exécuter les actions dépendantes des mesures.
Si la lecture du capteur est réussie, on affiche la température mesurée sur le moniteur série. "temperature = " est imprimé suivi de la valeur de temp, exprimée en degrés Celsius ("℃"). Cela permet de surveiller en temps réel les variations de température mesurées par le capteur.
Si la température dépasse 20°C, le servo commence à tourner progressivement. Problème : la commande myservo.write(pos); permet de donner une position au servo, mais la plupart des servos standards ne peuvent tourner que de 0 à 180°. La valeur 360 est donc incorrecte et doit être remplacée par 180 :
PROJET DE CREATION DE PRODUIT - Vendredi 07 Mars 2025
Consigne :
Ce wiki décrit le processus de modélisation et d'impression d'un objet en 3D, de la conception à la fabrication. L'objectif est de créer un objet, qu'il soit fonctionnel ou esthétique, en suivant les étapes clés du processus de fabrication additive.
Nous avons suivi une séance de formation sur Tinkercad et PrusaSlicer le Lundi 03 Mars 2025, où nous avons appris les bases de la modélisation et de la préparation à l'impression. Ce projet est donc une mise en pratique de cette formation.
Choix : Cactus Porte-Clés
Ce porte-clés en forme de cactus est conçu pour être placé à l'entrée d'une habitation. Il permet d'accrocher plusieurs clés grâce à ses bras en forme de crochets. Sa base assure une bonne stabilité sur une surface plane.
figure 1 : inspiration
Modélisation de la pièce :
La modélisation est réalisée à l'aide du logiciel Tinkercad. Plusieurs captures d'écran du modèle avec les dimensions seront insérées pour illustrer le processus.
Etapes suivies
-
Esquisse : Définition des dimensions et de la géométrie de base du cactus et de sa base.
-
Extrusion et mise en volume : Transformation de l'esquisse en un objet 3D, avec l'ajout des crochets pour les clés.
-
Détail et optimisation : Ajout de rainures esthétiques et optimisation de la forme pour une impression stable.
-
Exportation : Sauvegarde du fichier au format STL
figure 2 : Modélisation Tinkercad
Préparation à l'impression :
La préparation a été réalisée avec PrusaSlicer. Des captures d'écran du slicer seront ajoutées pour illustrer les réglages.
Paramètres utilisés
-
Slicing : Transformation du modèle en instructions pour l'imprimante.
-
Réglage des paramètres :
-
Hauteur de couche : 0.2 mm
-
Remplissage : 20%
-
Température d'extrusion : 200°C (PLA)
-
Température du plateau : 60°C
-
Vitesse d'impression : 50 mm/s
-
Supports : Aucun (malgré plusieurs échecs, ils n'ont pas permis d'améliorer l'impression)
-
Adhérence au plateau : Jupe ou bordure non activée
-
-
Génération du G-code : Enregistrement du fichier prêt à l'impression.
-
Le temps d'impression estimé est de 1h56 en mode normal.
figure 3 : Aperçu des réglages sur Pruseslicer
Impression :
figure 4 : Images de l'imprimante en fonctionnement
Vidéo de l'impression en cours
Problèmes rencontrés
Nous avons subi plusieurs échecs d'impression (5 au total). L'imprimante a détecté un filament coincé, ce qui a généré un message d'erreur et stoppé l'impression.
figure 5 : Tentatives d'impression qui ont échoué
Axes d'amélioration
-
Ajout d'un support pour stabiliser la pièce → Échec
-
Assistance du personnel du FabLab pour diagnostiquer le problème → Toujours des erreurs
-
Dernière tentative en cours avec un doublement des dimensions : La pièce est actuellement en impression, nous attendons de voir le résultat → Échec.
Découpage Laser [Boite à bijoux gravée] - Lundi 31 mars 2025
Objectif
Notre objectif est de concevoir un objet à l'aide du découpage laser, en y ajoutant une gravure. En tant qu'équipe de jeunes femmes passionnées par les bijoux, nous avons décidé de créer une boîte à bijoux pour les ranger de manière élégante et pratique.
INSPIRATION
Réalisation
Nous avons utilisé le site Festi.info pour récupérer un modèle de boîte et ajuster ses paramètres selon nos besoins. Après avoir défini les dimensions et autres réglages, nous avons exporté le fichier au format .svg.
Ensuite, nous avons importé ce modèle dans Inkscape afin de préparer la gravure.
Afin d’obtenir un tracé précis, nous avons vectorisé l’écriture en utilisant la fonction "Contour en chemin".
Cette étape nous a permis d'obtenir une gravure nette et détaillée, prête pour la découpe laser.
Résultat final :
▶️▶️▶️ LIEN VIDEO DECOUPE LASER
PROJET FINAL : Boîte à bijoux lumineuse - Avril 2025
Introduction & choix du projet
Notre objectif était de concevoir un objet personnalisé en combinant plusieurs techniques de fabrication numérique : découpe laser, impression 3D et électronique programmable -Arduino.
Au démarrage du projet, nous avons exploré plusieurs pistespour enrichir notre boîte à bijoux :
-
Option 1 : intégrer un éclairage LED automatique à l'ouverture de la boîte,
-
Option 2 : ajouter un système de diffusion musicale qui se déclencherait à l'ouverture.
Après réflexion, nous avons décidé d’opter pour l'éclairage LED pour plusieurs raisons :
-
D'un point de vue technique, l'intégration des LEDs est plus simple et moins encombrante qu'un module sonore.
-
L’esthétique : la lumière apporte une ambiance chaleureuse, mettant en valeur les bijoux à l’intérieur de la boîte.
-
La simplicité d'usage : une lumière douce est discrète et ne dérange pas l’utilisateur contrairement à une musique automatique qui pourrait devenir gênante. Les LEDs sont même particulièrement utiles pour retrouver facilement ses bijoux la nuit, sans avoir besoin d’allumer une grande lampe ou l’éclairage principal de la pièce.
Ainsi, notre choix s’est orienté vers une solution qui sublime l’objet tout en améliorant l’expérience pratique pour l’utilisateur au quotidien.
Réalisation de la boîte à bijoux via découpe laser
Conception et montage du circuit électrique
Schéma de câblage
1. Capteur Ultrason HC-SR04
-
VCC → 5V Arduino
-
GND → GND Arduino
-
TRIG → Pin 9 Arduino
-
ECHO → Pin 10 Arduino
2. Ruban LED RGB 5050
-
VCC → 5V Arduino (ou alimentation externe si beaucoup de LEDs)
-
GND → GND Arduino
-
Data IN → Pin 6 Arduino
Liste des composants :
-
Arduino Uno
-
Capteur Ultrason HC-SR04
-
Ruban LED RGB 5050
-
Câbles de connexion - 2 types : câbles Dupont Mâle-Mâle et câbles Dupont Mâle-Femelle.
Le code :#include <FastLED.h> #define TRIG_PIN 9 // Broche TRIG du HC-SR04 #define ECHO_PIN 8 // Broche ECHO du HC-SR04 #define LED_PIN 6 // Broche des LEDs WS2812b #define NUM_LEDS 60 // Nombre de LEDs #define BRIGHTNESS 50 // Luminosité (0-255) #define THRESHOLD 30 // Distance (cm) pour considérer la boîte ouverte CRGB leds[NUM_LEDS]; void setup() { Serial.begin(9600); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); FastLED.clear(); FastLED.show(); // Éteindre les LEDs au début } void loop() { long duration; int distance; // 📡 Mesurer la distance avec le HC-SR04 digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); duration = pulseIn(ECHO_PIN, HIGH); distance = duration * 0.034 / 2; Serial.print("Distance mesurée : "); Serial.print(distance); Serial.println(" cm"); if (distance > THRESHOLD) { Serial.println("📦 Boîte ouverte ! LEDs allumées !"); allumerLEDs(); } else { Serial.println("📦 Boîte fermée ! LEDs éteintes !"); eteindreLEDs(); } delay(500); } // 🔴 Fonction pour allumer les LEDs en rouge void allumerLEDs() { for (int i = 0; i < NUM_LEDS; i++) { leds[i] = CRGB(255, 0, 0); // Rouge } FastLED.show(); } // ⚫ Fonction pour éteindre les LEDs void eteindreLEDs() { for (int i = 0; i < NUM_LEDS; i++) { leds[i] = CRGB(0, 0, 0); // Noir (éteint) } FastLED.show(); }
Explication du code :
Pour la partie Arduino, nous utilisons la bibliothèque FastLED pour piloter un ruban de 30 LEDs RGB de type WS2812b. Le capteur HC-SR04 est connecté aux broches numériques 9 (TRIG) et 8 (ECHO) pour mesurer la distance entre le capteur et un objet en face.
Dans la fonction setup(), nous initialisons la communication série (pour afficher les résultats sur le moniteur série), configurons les broches du capteur, et préparons le ruban LED en réglant la luminosité à 50. Cette valeur correspond à environ 20 % de l’intensité maximale (puisque l’échelle va de 0 à 255), ce qui permet de limiter l’éblouissement et de réduire la consommation électrique. Au démarrage, toutes les LEDs sont éteintes grâce à FastLED.clear() et FastLED.show().
Dans la fonction loop(), le capteur ultrasonique effectue une mesure de distance en envoyant une impulsion. La distance est calculée, puis affichée sur le moniteur série. Si la distance mesurée est supérieure à 30 cm (THRESHOLD), cela signifie que la boîte est ouverte : toutes les LEDs s'allument en rouge. Sinon, si la distance est inférieure ou égale à 30 cm, la boîte est considérée comme fermée et toutes les LEDs sont éteintes.
Deux fonctions dédiées, allumerLEDs() et eteindreLEDs(), sont utilisées pour gérer respectivement l'allumage et l'extinction du ruban LED. Dans la fonction allumerLEDs(), chaque LED est configurée en rouge (RGB : 255, 0, 0), tandis que dans la fonction eteindreLEDs(), toutes les LEDs sont éteintes en envoyant la couleur noire (RGB : 0, 0, 0). À chaque changement, FastLED.show() est utilisé pour actualiser l’affichage du ruban.
Des messages clairs ("📦 Boîte ouverte ! LEDs allumées !" et "📦 Boîte fermée ! LEDs éteintes !") s'affichent à chaque changement d'état pour faciliter le suivi lors des tests et vérifier que le système fonctionne correctement.
Les difficultés rencontrées
Nous avons perdu une bonne heure à réaliser des tests sur un ruban de LEDs qui était dysfonctionnel. Nous avons fini par le changer et tout a fonctionné comme prévu.
Fabrication de la plaque en impression 3D