Projet Prototypage Chloé, Louly, Eloïse
Cours Arduino - Vendredi 7 fé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édéveloppement + IDE (logiciel) + BibliothèBibliothèque de fonctions (accéaccéder aux fonctionnalitéfonctionnalités)
→→ 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é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érésistance manuellement
> Transistors : interrupteur qu'on peut piloter avec la carte arduino àà des tensions supésupérieures àà celle àà laquelle l'arduino fonctionne
> Ré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éSélectionner le port de l'arduino --> COM3 Arduino Uno
Changer la vitesse de clignotement :
> modifier la valeur dans : delay(xxx)
Faire clignoter une LED classique :
Code :
RéRésultat :

Fonctionnement du bouton en arduino :
Un bouton est un composant éélectronique utiliséutilisé pour dé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érésistance pull-up ou pull-down
Faire afficher bouton presser
Code :
Fonctionnement du potentiomèpotentiomètre :
Un potentiomèpotentiomètre est une ré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énégative.
Lorsque le bouton du potentiomèpotentiomètre est tournétourné --> la rérésistance interne change --> le tension en sortie est modifiémodifiée
Faire fonctionner un potentiomèpotentiomètre :
Code :
RéRésultat :
Variation de la tension
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/
> Ouvrir le code test : File>Examples>Grove_Sunlight_Sensor>SI1151
RéRésultat :
AprèAprès passage de fils de couleurs devant le capteur.
Test 1 de fonctionnement du capteur I2C :
Demande àà ChatGPT : "Peux-tu modifier le code ci-dessous pour que dè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 :
Explication des modifications :
1. Ajout de #define LED_PIN 3 pour dé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éRésultat :
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é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
MontageMatéMatériel né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érésistances de 220Ω220Ω*
- *Fils de connexion*
SchéSchéma de câ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é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é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é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éRéponse: Pour faire fonctionner un *servomoteur FS90MG* avec un *Arduino*, voici ce dont tu as besoin :
MatéMatériel nénécessaire :
- 1x Arduino (Uno, Mega, etc.)
- 1x Servomoteur *FS90MG*
- 1x RéRésistance de 330Ω330Ω (optionnel pour protéprotéger le signal)
- 3x CâCâbles de connexion
SchéSchéma de câ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°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édéfinir un angle entre *0°0° et 180°180°*.
3. **Les dédélais (delay(1000);)** permettent d’d’observer chaque changement d’d’angle.
RéRésultat :
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énécessaire :
- 1 Arduino Uno
- 1 servo moteur FS90MG
- 2 rérésistances (220 ohms)
- 1 LED rouge
- 1 LED verte
- CâCâblage (fils mâmâle-mâ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érésistance de 220 ohms
- Cathode àà *GND*
- LED verte :
- Anode (longue patte) àà *D4* via une ré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éDéplace le servo entre 0°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°0° et 180°180°.
- ÀÀ chaque mouvement, l'éétat des LEDs alterne : rouge, puis vert.
- Le dédélai de 1000 ms permet une rotation claire et un changement visible des LEDs.
RéRésultat :
Alternance LED rouge / LED verte selon la rotation du cerveau moteur
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ée
Dé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’unebutébutée pourééviter que letélétéléphone glisse
2/ ModéModélisation
CréCréation d'une base rectangulaire solide- Ajout
d’d’un planinclinéincliné pour le support dutélétéléphone IntéIntégration de 2butébutées pour maintenir les 2 base rectangulaire en placePerçPerçage d'un troudédécoratif en haut du rectangle pouralléalléger la structure
3/ RéRésultat
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 defenê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éationd’d’un axe central avec un petit cercle- Ajout de quatre pales
symésymétriques en formeallongéallongée VéVérification del’l’alignement et de la taille des pales pour un effet harmonieuxVéVérification des proportions entre le moulin et les pales.CréCréation d'un bout pour fixer les pales sur le cylindrepréprésent sur le toit.
3/ RéRésultat
Impression 3D via le logiciel PRUSASLICER
1/ Exportation
- Enregistrement des 2
modèmodèles en format STL pourl’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éRésultats
Voici le ré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 :
Voici maintenant le rérésultat de notre moulin, régléréglé via le logiciel Prusaslicer puis impriméimprimé sur une imprimante 3D Prusa :
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éréglages que nous avons finalement appliquéappliqués :
AprèAprès plusieurs tentatives, nous avons finalement réréussi àà imprimer notre moulin.
Nous avons rérégalement mal modélisémodélisé le rayon du cercle portant les héhélices. Il n'est pas parfaitement rond ce qui fait que la rotation n'est pas optimale. NéNéanmoins ce n'est pas un ré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éréduire la hauteur de couche.
Cours Dé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éréaliser un puzzle personnalisépersonnalisé àà partir d’d’une photo d’d’un cochon d’d’Inde, en utilisant la dédécoupe laser.
2. ÉÉtapes de ré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.
Nous avons
vectorisévectorisél’l’image et mis le fond en noir afind’d’optimiserl’l’impression.
b.
2) CréCréation du puzzle
Nous avons récupérérécupéré une image de puzzle sur internet.
L’L’image du puzzle aétéétévectorisévectorisée et les traits dedédécoupe ontétéété mis en rouge.L’L’image du cochond’d’Inde et le motif du puzzle ontétéétésuperposésuperposés dans notre logiciel de conception, Inkscape.
c.
3) PremièPremière tentative de dédécoupe
-
L’L’impression del’l’image du cochond’d’Indes’s’est biendéroulédéroulée. -
Cependant, la
dédécoupen’n’a pasétéétéréaliséréalisée. -
AprèAprès analyse, nous avonsidentifiéidentifié deux erreurs :-
Le fond avait
étéété mis en rouge au lieu des contours du puzzle. -
Le contour du puzzle
éétaitdoublé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.
-
Le contour unique du puzzle a
étéété mis en rouge pourêêtre reconnu comme une ligne dedédécoupe. -
La taille du puzzle a
étéétéajustéajustée pour correspondre parfaitementàà la planche contenantl’l’image du cochond’d’Inde.
-
Cette fois, la
dédécoupe laser afonctionnéfonctionné correctement et nous avons obtenu notre puzzlefinaliséfinalisé.
3.Conclusion Conclusion
:
Ce projet nous a permis d’d’apprendre àà manipuler des fichiers vectoriels pour la dé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érésultat satisfaisant.