Skip to main content

Projet Prototypage Chloé, Louly, Eloïse

Cours Arduino - Vendredi 7 fé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 dĂ©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 sĂ©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 rĂ©sistance manuellement

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

> RĂ©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 

> SĂ©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


RĂ©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 dĂ©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 rĂ©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 rĂ©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 nĂ©gative.

Lorsque le bouton du potentiomèpotentiomĂštre est tournétournĂ© --> la rĂ©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

RĂ©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

RĂ©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 dĂš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 dĂ©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

RĂ©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: 

RĂ©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 nĂ©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 rĂ©sistances de 220Ω220Ω*  
- *Fils de connexion*  

SchéSchĂ©ma de cĂą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 rĂ©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 dĂ©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 pĂ©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Ă©

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

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

SchéSchĂ©ma de cĂą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 àĂ  0°
    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 dĂ©finir un angle entre *0° et 180°180°*.  
3. **Les dĂ©lais (delay(1000);)** permettent d’d’observer chaque changement d’d’angle.  

RĂ©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 nĂ©cessaire :
- 1 Arduino Uno  
- 1 servo moteur FS90MG  
- 2 rĂ©sistances (220 ohms)  
- 1 LED rouge  
- 1 LED verte  
- CĂąblage (fils mĂąle-mĂą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 rĂ©sistance de 220 ohms  
     - Cathode àĂ  *GND*  
   - LED verte :  
     - Anode (longue patte) àĂ  *D4* via une rĂ©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() {
  // DĂ©place le servo entre 0° 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 0° et 180°180°.  
- ÀÀ chaque mouvement, l'éĂ©tat des LEDs alterne : rouge, puis vert.  
- Le dĂ©lai de 1000 ms permet une rotation claire et un changement visible des LEDs.  

RĂ©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Ă©

  • DĂ©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 dĂ©coratif en haut du rectangle pour alléallĂ©ger la structure

3/ RĂ©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
  • VĂ©rification de l’l’alignement et de la taille des pales pour un effet harmonieux
  • VĂ©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/ RĂ©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/ Résultats

Voici le rĂ©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 rĂ©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 rĂ©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 rĂ©ussi àĂ  imprimer notre moulin.

Nous avons rĂ©galement mal modélisémodĂ©lisĂ© le rayon du cercle portant les hĂ©lices. Il n'est pas parfaitement rond ce qui fait que la rotation n'est pas optimale. NĂ©anmoins ce n'est pas un rĂ©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 rĂ©duire la hauteur de couche.

Cours Dé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 rĂ©aliser un puzzle personnalisépersonnalisĂ© àĂ  partir d’d’une photo d’d’un cochon d’d’Inde, en utilisant la dĂ©coupe laser.

2. É

Étapes de rĂ©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 dĂ©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 dĂ©coupe

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

  • Cependant, la dĂ©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 dĂ©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 dĂ©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 dĂ©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 rĂ©sultat satisfaisant.