Ryan Vicente
Projet porte-savon
Le but du projet
Pour cette première semaine de cours, le premier mini-projet à réaliser est un porte-savon imprimé en 3D. Pour réaliser cette impression. Nous allons créer deux structures :
- Une base 'contenant' designée en 3D sur Tinkercad
- Une grille à déposer dans le contenant désignée en 2D sur InkScape
Le but est de créer une structure fonctionnelle qui permet à l'eau de s'écouler sans que le savon ne se ramolisse. Une fois les patrons réalisée, la structure sera imprimée à l'aide d'IdeaMaker.
La base du porte-savon
La base du porte savon est composée de plusieurs blocs de bases présents sur Tinkercad. Pour réaliser la structure de base :
- J'ai créer un cube allongé ayant les bords arrondis
- J'ai utilisé un second cube de perçage allongé ayant des bords droits afin de trouer le premier bloc (via une union) tout en laissant un fond
Il a été décidé de mettre en place un robinet sur l'un des angles de la structure afin de faciliter l'écoulement de l'eau lors du versement de l'eau stagnante. Pour réaliser ce robinet il a fallu :
- Créer un cylindre et le déposer dans l'un des coins de la base
- Créer un second cylindre de perçage pour trouer le cylindre
Le résultat de ces premières opérations a donné :
J'ai ensuite pu ajouter des cales pour placer la grille sur le porte-savon à l'aide de triangles rectangles placés sur la partie interne de la base :
La base a été réalisée en différentes versions :
Avec porte-blaireau
Avec grille intégrée
Sans robinet et avec grille intégrée
Pour l'exercice, la version de base qui sera utilisée est la version classique avec robinet.
La grille du porte-savon
Afin de réaliser la grille du porte-savon j'ai utilisé InkScape. À l'aide de cette plateforme OpenSource et libre, j'ai pu réaliser le motif de ma grille en 2D, en utilisant des motifs de bases tels que le rectangle et le polygone.
- Créer un rectangle dans les mesures souhaitées
- Dessiner le motif souhaité à l'aide des formes de bases disponibles
- Une fois les formes superposées sur le rectangle à l'endroit adéquat, utiliser le booléen 'Différence' afin de soustraire le motif au rectangle et ainsi créer la grille
La grille mesure 110mm sur 80mm pour correspondre aux mesures de la plus part des savons
Le document vectoriel (.svg) ainsi issu d'InkScape peut être extrudé sur Tinkercad à côté de la base du porte-savon.
Si la grille n'arrive pas Ă s'uploader sur Tinkercad, il faut faire une capture d'Ă©cran de la grille 2D et faire passer cette capture d'objet matriciel Ă vectoriel sur InkScape. Il faut ensuite uploader ce nouveau document sur Tinkercad.
Mesures en millimètres
Mise en impression
Une fois les deux éléments regroupés sur le même document Tinkercad (.stl), ils peuvent être modélisés en 3D sur IdeaMaker pour préparer l'impression 3D. L'impression sera alors modélisée sur un document .Gcode (langage des machines outils) :
Caractéristiques d'impression
- Afin d'imprimer le porte-savon, nous allons privilégier un remplissage à 10% afin d'apporter une certaine solidité à l'objet qui sera utilisé sans utiliser trop de matière (et ne pas rendre le coût de production trop élevé).
- Pour optimiser la résistance et la dureté du porte-savon, il est judicieux de l'imprimer en 3-4 coques.
- Du point de vue de l'adhérence, il semblerait qu'il n'y ai pas besoin de mettre des supports (ou de bords) en place pour l'impression.
- La hauteur de la couche restera 0,25mm par défaut.
- Temps d'impression estimé : 6h 44min 49sec
- Coût estimé d'impression : 2,36€
- Quantité estimée : 78,6g / 26,35m
Le prix moyen d'un porte-savon étant de 5€ il est possible de vendre le porte-savon au double du coût de production à minima.
Documents sources (joints Ă la page)
- Grille du porte-savon (.svg)
- Porte-savon (.stl)
RĂ©aliser un montage Ă©lectronique Arduino
Le but du projet
Le deuxième cours consiste en l'apprentissage de l'électronique à travers la modélisation de circuit Arduino sur Tinkercad. Après avoir compris les bases de la conception électronique, le but du cours est de pratiquer sur de vrais circuits à l'aide de l'application Arduino afin de pouvoir automatiser des actions et apporter de la complexité et de nouvelles fonctionnalités à nos prototypes. Dans ce cours, nous utiliserons des Arduino Uno. L'ensemble des modalités et convention relatives à l'Arduino sont disponibles sur le lien 'Introduction à l'Arduino' ci-joint.
La loi d’Ohm
La loi d'Ohm est la loi de base en électronique. C'est une loi physique empirique qui lie l'intensité du courant électrique traversant un dipôle électrique à la tension à ses bornes. Cette loi permet de déterminer la valeur d'une résistance.
U = R*I
- U la tension aux bornes de la résistance ;
- I l’intensité du courant qui circule à travers la résistance ;
- R la valeur de la résistance.
Codes
Programme Blink (débutant)
#define LED 10
int compteur = 0;
void setup()
{
Serial.begin(9600); // permet de dire que l'on va initier une communication entre l'ordinateur et le circuit Ă la vitesse 9600
pinMode(LED, OUTPUT); // déclaration de la pin 10 comme sortie
}
void loop()
{
Serial.print("Debut de la boucle ");
Serial.println(compteur);
digitalWrite(LED, HIGH);
delay(1000); // ne rien faire pendant 1000ms
digitalWrite(LED, LOW);
delay(1000); // ne rien faire pendant 1000ms
compteur++; // incrémentation du compteur
}
Le programme Blink est le programme de base que les Ă©tudiants en Ă©lectronique apprennent en premier afin de s'exercer. Il permet de comprendre comment :
- Utiliser le format Java
void setup()
{
}
void loop()
{
}
- Définir une pin : Annoncer à l'ordinateur sur quelle partie de l'Arduino (numéro de la pin connectée) est connecter le composant auquel nous allons donner des informations (ou duquel nous allons prendre les informations).
#define LED 10
// La led est connectée sur la pin 10
- Annoncer la communication entre l'ordinateur et le circuit
Serial.begin(9600)
- Utiliser une première fonction d'action
digitalWrite(LED, HIGH);
// Permet d'allumer la led `
delay(1000)
// Ne rien faire pendant 1000ms
Programme Bouton
#define BTN 8
void setup()
{
pinMode(BTN, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
if( digitalRead(BTN) == LOW )
{
Serial.println("Button pressed");
}
delay(100);
}
Le programme Bouton fait intervenir un bouton dans le circuit. Cela permet d'introduire le code des boucles conditionnelles if.
Programme Buzzer
#define POT A0
#define BUZZ 9
void setup()
{
pinMode(POT, INPUT);
pinMode(BUZZ, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int pot = analogRead(POT);
Serial.println(pot);
// int buzzfreq = map(pot, 0, 1023, 1000, 20000);
// tone(BUZZ, buzzfreq);
// delay(1000);
// noTone(BUZZ);
}
Programme moteur
Pour tester en pratique nos connaissances acquises lors de la matinée de théorie. J'ai décidé de travailler sur la mise en place d'un circuit électronique composé d'un servomoteur (permettant une rotation de 180°). Le but de ce circuit est d'apprendre à manipuler les composants électronique et de se familiariser avec la recherche de code et de prendre en main la plateforme de programmation Arduino.
Le servomoteur a été branché à l'Arduino selon les modalités suivantes :
- L'alimentation V a été connectée au 5V de l'Arduino à travers le breadboard
- La masse GND a été connectée au ground de l'Arduino à travers le breadboard
- Le signal S a été connecté à la pin 8 de l'Arduino
Sur cette photo il est possible de distinguer un quatrième câble marron qui sort du servomoteur. Ce câble permet de connecter une alimentation externe au servomoteur (ce qui n'est pas nécessaire ici.)
Le code suivant a été utilisé pour faire tourner la tête rotative du servomoteur trois fois :
- De 0° à 90°
- De 90° à 180°
- De 180° à 0°
#include <Servo.h> // on inclut la bibliothèque servo
Servo servoMoteur; // on crée un objet servo appelé servoMoteur
void setup(){
// on associe le servo Ă la broche 2 d'Arduino
servoMoteur.attach(8);
}
void loop(){
// on déplace le servo à la position 0º
servoMoteur.write(0);
delay(1000); // pause de 1 seconde
// on déplace le servo à la position 90º
servoMoteur.write(90);
delay(1000); // pause 1 seconde
// on déplace le servo à la position 180º
servoMoteur.write(180);
delay(1000); // pause 1 seconde
}
Programme Capteur & Moteur
Afin de complexifier l'exercice, il a été décidé de rajouter un capteur infrarouge au circuit afin d'activer le moteur lorsqu'un objet est détecté par le capteur. Pour cela, le capteur a été connecté à l'alimentation et à la masse de l'Arduino à travers le breadboard et le signal a été dirigé vers la pin 10 de l'Arduino.
Le code suivant a permis de mettre en place le montage afin de faire tourner le moteur quand un objet est détecter par le capteur :
#include <Servo.h> // on inclut la bibliothèque servo
int inputPin = 10; // choose the input pin (for sensor)
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
Servo servoMoteur; // on crée un objet servo appelé servoMoteur
void setup(){
// on associe le servo Ă la broche 2 d'Arduino
servoMoteur.attach(8);
pinMode(inputPin, INPUT); // declare sensor as input
Serial.begin(9600);
Serial.print("calibrating sensor ");
}
void loop(){
val = digitalRead(inputPin); // read input value
Serial.println(val);
if (val == HIGH) { // check if the input is HIGH
// on déplace le servo à la position 0º
servoMoteur.write(180);
} else {
servoMoteur.write(0); // turn motor OFF
}
}