Skip to main content

Projet Prototypage Chloé, Louly, Eloïse

Cours Arduino - Vendredi 7 vrier 2025

Introduction :

Raspberry Pi : petit ordinateur trètrès puissant pilotépiloté par un microprocesseur qui ne fait que calculer, toutes les autres caractécaractéristiques de l’l’ordinateur se trouvent autour avec systèsystème d’d’exploitation implantéimplanté àà l’intél’intérieur

Calculs : intelligence artificielle, musiques, console de jeu,

Arduino : Carte programmable pilotépilotée par un microcontrômicrocontrôleur (petit ordinateur dans une petite puce) qui contient de la rame, du rome, des processeurs, des entréentrées/des sorties

Board de veloppement + IDE (logiciel) + BibliothèBibliothèque de fonctions (accéaccéder aux fonctionnalitéfonctionnalités) 

https://www.arduino.cc/

Automatisation de signaux numénumériques et analogiques (alimenter des led, des capteurs)

NuméNumérique : 
  • 1/ éétat haut 5V
  • 2/ éétat bas 0V
Composant de base de l'arduino :

> LED : resistance trètrès faible donc ajouter une resistance en rie 

> Resistance : limitation du courant --> IntensitéIntensité = U/R  (si la resistance 0 alors l'intensitéintensité est àà l'infini --> la LED grille)

> Condensateurs : pile qui compense les variations de courants 

> PotentiomèPotentiomètre : composant qui permet l'interaction arduino/utilisateur, sert àà ajuster une valeur de sistance manuellement

> Transistors : interrupteur qu'on peut piloter avec la carte arduino àà des tensions supésupérieures àà celle àà laquelle l'arduino fonctionne

> gulateur : composant qui stabilise la tension d'alimentation fournie àà la carte 

TéléTéléchargement du code : 

> Indiquer la carte téléchargétéléchargée : Arduino AVR Boards --> Arduino Uno 

> lectionner le port de l'arduino --> COM3 Arduino Uno Capture d’écran 2025-02-07 à 11.07.11.pngCapture d’écran 2025-02-07 à 11.07.11.png

Changer la vitesse de clignotement : 

> modifier la valeur dans : delay(xxx)


Faire clignoter une LED classique :

Code : 

Capture d’écran 2025-02-07 à 11.10.22.pngCapture d’écran 2025-02-07 à 11.10.22.png


sultat : 

Capture d’écran 2025-02-07 à 11.25.56.pngCapture d’écran 2025-02-07 à 11.25.56.png
Fonctionnement du bouton en arduino :

Un bouton est un composant éélectronique utiliséutilisé pour clencher une action lorsqu'il est pressépressé

Un bouton a 2 éétats :

> AppuyéAppuyé (HIGH ou 1) --> Le circuit est ferméfermé, un signal éélectrique passe

> RelâchéRelâché (LOW ou 0) --> Le circuit est ouvert, aucun signal ne passe

Un bouton a au minimum 2 broches : 

> Une broche connectéconnectée àà une entréentrée numénumérique d’d’Arduino

> Une broche connectéconnectée àà la masse (GND), souvent avec une sistance pull-up ou pull-down

Faire afficher bouton presser

Code : 

Capture d’écran 2025-02-07 à 11.44.29.pngCapture d’écran 2025-02-07 à 11.44.29.png

Fonctionnement du potentiomèpotentiomètre : 

Un potentiomèpotentiomètre est une sistance variable avec trois broches :

> Broche 1 (VCC / +5V) Alimentation positive.

> Broche 2 (Sortie / Curseur - Signal) Donne une tension variable entre 0V et 5V.

> Broche 3 (GND / Masse) Alimentation gative.

Lorsque le bouton du potentiomèpotentiomètre est tournétourné --> la sistance interne change --> le tension en sortie est modifiémodifiée

Faire fonctionner un potentiomèpotentiomètre : 

Code : 

Capture d’écran 2025-02-07 à 12.03.12.pngCapture d’écran 2025-02-07 à 12.03.12.png

sultat : 

Variation de la tension 

image.png

Fonctionnement d'un capteur I2C : 

Un capteur I2C est un capteur qui utilise le protocole I2C pour communiquer avec un microcontrômicrocontrôleur ou un ordinateur. C'est une manièmanière simple et efficace de connecter plusieurs capteurs en utilisant seulement 2 fils

Notre capteur : Grove - Sunlight Sensor

Documentation : https://wiki.seeedstudio.com/Grove-I2C_High_Accuracy_Temp%26Humi_Sensor-SHT35/

image.png

> Ouvrir le code test : File>Examples>Grove_Sunlight_Sensor>SI1151

sultat : 

AprèAprès passage de fils de couleurs devant le capteur. 

image.png

Test 1 de fonctionnement du capteur I2C : 

Demande àà ChatGPT : "Peux-tu modifier le code ci-dessous pour que s que la luminositéluminosité est supésupérieure àà 10, la lampe LED s'allume:

#include "Si115X.h"

Si115X si1151;

/**
 * Setup for configuration
 */
void setup()
{
    Serial.begin(115200);
    if (!si1151.Begin()) {
        Serial.println("Si1151 is not ready!");
        while (1) {
            delay(1000);
            Serial.print(".");
        };
    }
    else {
        Serial.println("Si1151 is ready!");
    }
}

/**
 * Loops and reads data from registers
 */
void loop()
{
    Serial.print("IR: ");
    Serial.println(si1151.ReadIR());
    Serial.print("Visible: ");
    Serial.println(si1151.ReadVisible());

    delay(500);
}"

Code : 

image.png

image.png

Explication des modifications : 
1. Ajout de #define LED_PIN 3 pour finir la broche de la LED.  
2. Initialisation de pinMode(LED_PIN, OUTPUT) dans setup().  
3. Lecture de la luminositéluminosité visible avec si1151.ReadVisible().  
4. Condition if (visibleLight > 10) pour allumer ou ééteindre la LED

sultat : 

image.png

Test 2 de fonctionnement du capteur I2C : 

Demande àà ChatGPT : "Quand c'est supésupérieur àà 15 je veux allumer ma LED rouge et quand c'est inféinférieur àà 15 je veux allumer la lampe bleu. Modifie le Code et donne le montage: 

ponse: D'accord ! Voici le code modifiémodifié pour :  
> Allumer la LED rouge si la luminositéluminosité *est supésupérieure àà 15
> Allumer la LED bleue si la luminositéluminosité *est inféinférieure ou éégale àà 15

Montage
MatéMatériel cessaire :
- *Arduino avec Grove Base Shield*  
- *Capteur de lumièlumière Si1151* (déjàdéjà branchébranché sur le port I2C du Grove Shield)  
- *LED rouge* (branchébranchée sur *D3*)  
- *LED bleue* (branchébranchée sur *D4*)  
- *2 sistances de 220Ω220Ω*  
- *Fils de connexion*  

SchéSchéma de blage :
1. *Capteur Si1151*  
   - DéjàDéjà connectéconnecté au port *I2C* du *Grove Base Shield* (pas besoin de modification).  

2. *LED Rouge*  
   - *Anode (+) D3*  
   - *Cathode (-) GND (via sistance 220Ω220Ω)*  

3. *LED Bleue*  
   - *Anode (+) D4* "

Code :

cpp
#include "Si115X.h"

Si115X si1151;

#define LED_ROUGE 3  // Broche de la LED rouge
#define LED_BLEUE 4  // Broche de la LED bleue
#define SEUIL_LUMIERE 15  // Seuil de luminositéluminosité pour le changement

void setup() {
    Serial.begin(115200);
    pinMode(LED_ROUGE, OUTPUT);
    pinMode(LED_BLEUE, OUTPUT);

    if (!si1151.Begin()) {
        Serial.println("Si1151 n'est pas prêprêt !");
        while (1) {
            delay(1000);
            Serial.print(".");
        };
    }
    else {
        Serial.println("Si1151 est prêprêt !");

 }
}

void loop() {
    int visibleLight = si1151.ReadVisible();  // Lire la valeur de la lumièlumière visible

    Serial.print("LumièLumière visible : ");
    Serial.println(visibleLight);

    if (visibleLight > SEUIL_LUMIERE) {
        digitalWrite(LED_ROUGE, HIGH);  // Allume LED rouge
        digitalWrite(LED_BLEUE, LOW);   // ÉÉteint LED bleue
    } else {
        digitalWrite(LED_ROUGE, LOW);   // ÉÉteint LED rouge
        digitalWrite(LED_BLEUE, HIGH);  // Allume LED bleue
    }

    delay(500);
}

Explication du Code : 
1. On finit les broches des *LEDs rouge et bleue*.  
2. Dans la *loop(), on lit la luminositéluminosité du capteur **Si1151*.  
3. Si la valeur est *> 15, la **LED rouge* s'allume et la *LED bleue* s'ééteint.  
4. Si la valeur est * 15, la **LED bleue* s'allume et la *LED rouge* s'ééteint.  
5. Le code se met àà jour *toutes les 500ms*.  

Fonctionnement du servomoteur :

Un contrôcontrôleur de moteur est un composant éélectronique qui permet de contrôcontrôler avec préprécision le mouvement d'un moteur en recevant des commandes d'un microcontrômicrocontrôleur/ordinateur et en ajustant la tension et le courant envoyéenvoyés au moteur

Envoi d'un signal PWM : signal riodique sur lequel on fait varier la durédurée de l'impulsion par une alternance rapide entre un éétat "haut" (tension maximale) et un éétat "bas" (tension nulle)

Demande àà ChatGPT : Comment faire fonctionner un servomoteur FS90MG via une arduino. Donne moi le montage et le code associéassocié

ponse: Pour faire fonctionner un *servomoteur FS90MG* avec un *Arduino*, voici ce dont tu as besoin :  

MatéMatériel cessaire :
- 1x Arduino (Uno, Mega, etc.)  
- 1x Servomoteur *FS90MG*  
- 1x sistance de 330Ω330Ω (optionnel pour protéprotéger le signal)  
- 3x bles de connexion  

SchéSchéma de blage :
Le servomoteur *FS90MG* a *trois fils* :  
- *Rouge (VCC)* *5V* de l'Arduino  
- *Marron ou Noir (GND)* *GND* de l'Arduino  
- *Orange (Signal)* *Broche D9* de l'Arduino  

⚠ *Remarque importante :* Si le moteur force trop, il est préfépréférable d’d’utiliser une alimentation externe 5V (et relier les GND ensemble).

Code : 
On utilise la bibliothèbibliothèque *Servo.h* pour contrôcontrôler le moteur.  

cpp
#include <Servo.h>

Servo monServo;  // CréCréation d'un objet Servo

void setup() {
    monServo.attach(9); // ConnectéConnecté àà la broche D9
}

void loop() {
    monServo.write(0);   // Position àà
    delay(1000);         // Attendre 1 seconde
    monServo.write(90);  // Position àà 90°90°
    delay(1000);
    monServo.write(180); // Position àà 180°180°
    delay(1000);
}

Explication du code :
1. **monServo.attach(9);** Indique que le moteur est connectéconnecté sur la broche *D9*.  
2. **monServo.write(angle);** Permet de finir un angle entre * et 180°180°*.  
3. **Les lais (delay(1000);)** permettent d’d’observer chaque changement d’d’angle.  

sultat : 

image.png

Devoir pour le lundi 3 mars - Test de fonctionnement du servomoteur : 

Demande àà ChatGPT : "Comment faire tourner un servomoteur FS90MG. A chaque rotation une LED s'allume (soit rouge soit vert). Peux tu me donner le code et le montage associéassocié sur arduino uno?

MatéMatériel cessaire :
- 1 Arduino Uno  
- 1 servo moteur FS90MG  
- 2 sistances (220 ohms)  
- 1 LED rouge  
- 1 LED verte  
- blage (fils le-le)  

SchéSchéma de montage : 
1. Connecte la broche de signal du servo (génégénéralement orange) àà la broche *D9* de l’l’Arduino.  
2. Branche la broche de puissance (rouge) du servo àà *5V* et la masse (noire) àà *GND*.  
3. Connecte les LED :  
   - LED rouge :  
     - Anode (longue patte) àà *D3* via une sistance de 220 ohms  
     - Cathode àà *GND*  
   - LED verte :  
     - Anode (longue patte) àà *D4* via une sistance de 220 ohms  
     - Cathode àà *GND* "

Code : 

cpp
#include <Servo.h>

Servo monServo;
const int ledRouge = 3;
const int ledVerte = 4;

int position = 0;     // Position initiale du servo
bool ledState = false; // ÉÉtat LED : false = rouge, true = verte

void setup() {
  monServo.attach(9);           // Connecte le servo sur la broche 9
  pinMode(ledRouge, OUTPUT);   
  pinMode(ledVerte, OUTPUT);   
  digitalWrite(ledRouge, LOW);
  digitalWrite(ledVerte, LOW);

  Serial.begin(9600);
}

void loop() {
  // place le servo entre et 180°180°
  position = (position == 0) ? 180 : 0;

monServo.write(position);

  // Alterne les LEDs
  if (ledState) {
    digitalWrite(ledRouge, LOW);
    digitalWrite(ledVerte, HIGH);
  } else {
    digitalWrite(ledRouge, HIGH);
    digitalWrite(ledVerte, LOW);
  }

  ledState = !ledState; // Inverse l'éétat

  Serial.print("Servo àà la position : ");
  Serial.println(position);

  delay(1000); // Pause d'une seconde entre les rotations
}

Explications du code : 
- Le servo oscille entre et 180°180°.  
- ÀÀ chaque mouvement, l'éétat des LEDs alterne : rouge, puis vert.  
- Le lai de 1000 ms permet une rotation claire et un changement visible des LEDs.  

sultat : 

Alternance LED rouge / LED verte selon la rotation du cerveau moteur 

image.png

Cours Arduino - Lundi 3 mars 2025

Conception 3D sur le site TINKERCAD : 

CréCréation d'un support pour télétéléphone

1/ IdéIdé

  • finition des dimensions et de la forme
  • Inclinaison pour un bon angle de vue
  • Large base pour assurer la stabilitéstabilité
  • Ajout d’d’une butébutée pour ééviter que le télétéléphone glisse

2/ ModéModélisation 

  • CréCréation d'une base rectangulaire solide
  • Ajout d’d’un plan inclinéincliné pour le support du télétéléphone
  • IntéIntégration de 2 butébutées pour maintenir les 2 base rectangulaire en place
  • PerçPerçage d'un trou coratif en haut du rectangle pour alléalléger la structure

3/ sultat 

Capture d’écran 2025-03-03 à 21.57.06.pngCapture d’écran 2025-03-03 à 21.57.06.png

CréCréation d'un objet de notre choix pour le cours de vendredi 7 mars 

1/ Conception de la structure

  • Base cylindrique pour repréreprésenter le corps du moulin
  • Toit conique pour donner un aspect traditionnel
  • Ajout d’d’une porte et de fenêfenêtres circulaires 
  • Petit cylindre sur le côtécôté du toit pour rajouter les pales du moulin

2/ Ajout des pales du moulin

  • CréCréation d’d’un axe central avec un petit cercle
  • Ajout de quatre pales symésymétriques en forme allongéallongée
  • rification de l’l’alignement et de la taille des pales pour un effet harmonieux
  • rification des proportions entre le moulin et les pales.
  • CréCréation d'un bout pour fixer les pales sur le cylindre préprésent sur le toit. 

3/ sultat 

Capture d’écran 2025-03-03 à 22.22.04.pngCapture d’écran 2025-03-03 à 22.22.04.png

Impression 3D via le logiciel PRUSASLICER

1/ Exportation

  • Enregistrement des 2 modèmodèles en format STL pour l’l’impression 3D
  • Ouverture des 2 modèmodèles sur le logiciel 
  • Remplissage 20% 
  • Rajout de supports pour supporter le cylindre préprésent sur le toit. 

2/ sultats

Voici le sultat du support pour télétéléphone, que nous n'avons pas impriméimprimé mais avec lequel nous avons pris en main le logiciel Prusaslicer :

capture-decran-2025-03-03-a-22-37-04.png

Voici maintenant le sultat de notre moulin, régléréglé via le logiciel Prusaslicer puis impriméimprimé sur une imprimante 3D Prusa :

Capture d’écran 2025-03-03 à 22.11.12.pngCapture d’écran 2025-03-03 à 22.11.12.png

WhatsApp Image 2025-03-06 à 09.35.05_c7229dc2.jpgWhatsApp Image 2025-03-06 à 09.35.05_c7229dc2.jpgWhatsApp Image 2025-03-06 à 09.35.05_6a830466.jpgWhatsApp Image 2025-03-06 à 09.35.05_6a830466.jpg

ProblèProblèmes rencontrérencontrés & améaméliorations envisagéenvisagées : 

Au miment de l'impression sur l'imprimante 3D PRUSA, les socles ne restaient pas fixéfixés àà la plaque de support, ce qui a entraînéentraîné l'ééchec des impressions. Le filament s'accumulait au niveau de la buse. Nous avons réaliséréalisé que l'imprimante n'avait pas étéété correctement configuréconfigurée via le logiciel PrusaSlicer.

Voici les glages que nous avons finalement appliquéappliqués :

Capture d’écran 2025-03-06 à 09.56.55.pngCapture d’écran 2025-03-06 à 09.56.55.png

AprèAprès plusieurs tentatives, nous avons finalement ussi àà imprimer notre moulin.

Nous avons galement mal modélisémodélisé le rayon du cercle portant les lices. Il n'est pas parfaitement rond ce qui fait que la rotation n'est pas optimale. anmoins ce n'est pas un el problèproblème car il tourne malgrémalgré tout, ce qui éétait le but envisagéenvisagé.

Pour finir, nous aurions préférépréféré que le moulin soit plus "lisse". Nous saurons donc pour la prochaine fois que nous devrons duire la hauteur de couche.

Cours coupe Laser - Lundi 3 mars 2025

Projet : Puzzle avec la photo d’d’un cochon d’d’Inde

1.

Objectif du projet

L’L’objectif de ce projet éétait de aliser un puzzle personnalisépersonnalisé àà partir d’d’une photo d’d’un cochon d’d’Inde, en utilisant la coupe laser.

2. É

Étapes de alisation

a.

1) PréPréparation de l’l’image

  • Nous avons pris une photo du cochon d’d’Inde.

  • L’L’image a étéété convertie en noir et blanc pour un meilleur contraste.

image.png

  • Nous avons vectorisévectorisé l’l’image et mis le fond en noir afin d’d’optimiser l’l’impression.

  •  

b.

2) CréCréation du puzzle

  • Nous avons récupérérécupéré une image de puzzle sur internet.

image.png

  • L’L’image du puzzle a étéété vectorisévectorisée et les traits de coupe ont étéété mis en rouge.

  • L’L’image du cochon d’d’Inde et le motif du puzzle ont étéété superposésuperposés dans notre logiciel de conception, Inkscape.

image.png

c.

3) PremièPremière tentative de coupe

  • L’L’impression de l’l’image du cochon d’d’Inde s’s’est bien déroulédéroulée.

  • Cependant, la coupe n’n’a pas étéété réaliséréalisée.

  • AprèAprès analyse, nous avons identifiéidentifié deux erreurs :

    1. Le fond avait étéété mis en rouge au lieu des contours du puzzle.

    2. Le contour du puzzle éétait doublédoublé, ce qui pouvait perturber la machine.

d.

 

4) Corrections et deuxièdeuxième essai

  • Nous avons modifiémodifié le fichier en supprimant le contour en double.

image.png

  • Le contour unique du puzzle a étéété mis en rouge pour êêtre reconnu comme une ligne de coupe.

  • La taille du puzzle a étéété ajustéajustée pour correspondre parfaitement àà la planche contenant l’l’image du cochon d’d’Inde.

image.png

  • Cette fois, la coupe laser a fonctionnéfonctionné correctement et nous avons obtenu notre puzzle finaliséfinalisé.

image.png

image.png

3.

Conclusion Conclusion
:

Ce projet nous a permis d’d’apprendre àà manipuler des fichiers vectoriels pour la coupe laser et àà comprendre l’l’importance des paramèparamètres de conception (couleur des lignes, superposition des calques, ajustement des dimensions). MalgréMalgré une erreur initiale, nous avons su diagnostiquer et corriger le problèproblème pour aboutir àà un sultat satisfaisant.