Soulaimane ZARIOUH


18/10/23 : Cours 

27/10/23: 

 

Objet : Sphère emprisonnée dans une cage 

OpenScad

// Taille du cube
T = 10; 
// Épaisseur des arêtes
E = 1;
// Longueur du pavé
L = T + 2;  
// Diamètre de la sphère
D = T;

difference() {
    // Cube principal
    cube(T, center=true);

    // Soustraction des pavés pour chaque axe
    
    // Axe X
    translate([0, 0, 0])
    cube([L, T - 2 * E, T - 2 * E], center=true);
    
    // Axe Y
    translate([0, 0, 0])
    cube([T - 2 * E, L, T - 2 * E], center=true);
    
    // Axe Z
    translate([0, 0, 0])
    cube([T - 2 * E, T - 2 * E, L], center=true);
}

// Sphère
sphere(r=D/2, $fn=100);


image.pngimage.png


La sphère étant trop simplifiée, j'ai trouvé la commande $fn pour améliorer le lissage de celle-ci.

IdeaMaker

image.png

image.png

Paramètres de l'impression: Modèle d'imprimante utilisé : RAISE3D E2. Type de filament: PLA de 1.75mm.

Profil d'impression sélectionné: qualité rapide.

Paramètres spécifiques

Hauteur de couche: 0,2500 mm. Densité de remplissage: 10%.

Poids de l'objet imprimé: 8.6

Coût théorique de l'impression: 0.21 S

Temps d'impression prévu initialement : 54 min. Temps d'impression réel: 47 min

image.pngimage.png

Le bas de la sphère est mal fini, plus de support permettrait de surement une meilleure finition.

16/11/23 : 

Titre du Projet : Impression 3D d'un Textile Type "NASA Fabric" en PLA

Objectif du Projet : Créer un objet complexe inspiré du tissu développé par la NASA, composé d'unités hexagonales interconnectées. Ce design devait permettre un certain degré de liberté de mouvement dans une direction, tout en restant rigide dans l'autre.

Première Tentative :

Deuxième Tentative :

image.pngimage.png

Réflexions et Perspectives : Cette expérience m'a appris l'importance de vérifier attentivement les paramètres d'impression, surtout après des modifications. La qualité d'impression laisse aussi à désirer; une buse d'impression plus fine et un temps d'impression plus long pourrait permettre d'améliorer le rendu. La structure complex rend surement l'utilisation du four compliqué



Conception du Prototype avec Arduino Uno

Objectif du Projet

Choix des Composants

  1. Capteurs de Force Résistifs (FSR) :

    • Dimension et Type : Carrés de 4 cm, choisis pour leur taille adéquate et leur capacité à mesurer la force exercée sur les sangles.
    • Justification : Les FSR sont faciles à intégrer avec Arduino et suffisamment sensibles pour détecter des variations de poids.
  2. Système de Notification par Vibration :

    • Choix du Feedback Haptique : Sélectionné pour sa discrétion et sa capacité à communiquer directement avec l'utilisateur sans distraction visuelle ou sonore.
    • Compatibilité avec Arduino : Les moteurs de vibration sont simples à contrôler via l'Arduino Uno.

Conception du Circuit

Développement du Logiciel

Tests et Validation

.

image.png

image.png

const int vibpin1 = 4;
const int buttonpin= 2 ;
const int vibpin2 = 5;

int button_state=0;
int enable_state=0;
int i =0; // last button state

int sensorVal1= 0;
int sensorVal2= 0;
float voltage1 = 0 ;
float voltage2 = 0 ;
float delta = 0;

int current_buttonState;
int oldState =0 ;
int butval=0;

unsigned long lastDebounceTime = 0;  // the last time the output pin was toggled
unsigned long debounceDelay = 50;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(vibpin1, OUTPUT);
  pinMode(buttonpin, INPUT_PULLUP);
  pinMode(vibpin2, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  //button_state = digitalRead(buttonpin);
  
  if (digitalRead(buttonpin)== HIGH && !button_state ){
    enable_state =1;
    button_state = !button_state;
    delay(500);
  }
  if (digitalRead(buttonpin)== HIGH && button_state ){
    enable_state =0;
    button_state = !button_state;
    delay(500);
  }

  /*
  if (button_state ==1) {
    // reset the debouncing timer
    enable_state= 1 ;
  }else{
    enable_state=0 ;
  }
  */


  if (enable_state==1 ){
    sensorVal1= analogRead(A0);
    sensorVal2= analogRead(A1);
    voltage1 = sensorVal1*(5.0/1023) ;
    voltage2 = sensorVal2*(5.0/1023) ;
    delta = abs(voltage1-voltage2) ;
    Serial.println(delta);
    delay(200); 

    if (delta>0.8){
      if (voltage1 > voltage2){
        digitalWrite(vibpin1, HIGH);
        delay(100);
        digitalWrite(vibpin1, LOW);
      }else if (voltage2>=voltage1){
        digitalWrite(vibpin2, HIGH);
        delay(100);
        digitalWrite(vibpin2, LOW);
      }
      

    }else if (delta<=0. && delta>0.2 && voltage1>0.2 && voltage2>0.2){
      digitalWrite(vibpin1, HIGH);
      digitalWrite(vibpin2, HIGH);
      delay(500);
      digitalWrite(vibpin1, LOW);
      digitalWrite(vibpin2, LOW);
      delay(1500);
      enable_state=0;
      button_state = !button_state; // pas sur 
    }else{
      digitalWrite(vibpin1, LOW);
      digitalWrite(vibpin2, LOW);
    }
    
    
  // end if enable state
  }

}


Revision #7
Created 26 October 2023 16:17:59 by Zariouh Soulaimane
Updated 24 January 2024 15:51:22 by Zariouh Soulaimane