Projets:Hackberry Fabrikarium Inde

De wikilab

Description du projet

Le projet Hackberry Feedback a été développé pour que les personnes amputées et utilisatrices de la main Hackberry puissent avoir un feedback lorsqu'elles saisissent un objet. Le retour pourrait se traduire par une sensation de température et/ou de force.

Ce projet comprend la fixation de deux types de capteurs, détectant température et force, sur la main imprimée Hackberry 3D. Il y aura deux résistances de détection de force, une sur le pouce et l'autre sur la paume et la résistance sensible à la température sera quant à elle fixée sur la paume. Ces capteurs permettront à une personne amputée de ressentir la température et la force lors de la saisie d'un objet. La fixation de ces capteurs se présente comme une amélioration de la main imprimée Hackberry 3D.

Le diagramme schématique suivant résume le projet Hackberry Feedback System.


Schéma Hackberry Feedback.jpg

Equipe

  • Hinal Shah
  • Sourabh ZunkeSourabh Zunke
  • Jean Noel Lefèvre
  • ashish kumarpardeshi
  • Bodo Hoenen
  • Delphine Bézier
  • Akshit GandhiAkshit Gandhi
  • Sahal Hashim
  • Sanskruta Dhotre
  • Farhan KhanFarhan Khan
  • Nicolas Huchet

Matériel nécessaire

  • Arduino Uno
  • Capteur de température
  • Bouton tactile capacitif
  • WS2813 LedStrip - 144 Leds / mètres (20 leds)
  • Résistances 10K ohm
  • Résistances de détection de force
  • Servomoteur
  • Interrupteurs

Outils nécessaires

Main Hackberry

La fabrication de la main Hackberry imprimée en 3D implique l'assemblage de diverses pièces imprimées en 3D. Ci-joint le lien qui fournit toutes les informations concernant la fixation des différentes parties:

https://myhumankit.org/en/tutoriels/myoelectric-exiii-hand/

Système de rétroaction FSR

Les FSR, c'est-à-dire les résistances de détection de force, sont des capteurs qui permettent de détecter la pression physique, la compression et le poids. Le FSR est composé de 2 couches séparées par une entretoise. Plus on appuie sur, plus ces points d'élément actif touchent le semi-conducteur qui fait descendre la résistance. Les FSR sont fondamentalement une résistance qui change sa valeur résistive (en ohms Ω) en fonction de la pression exercée.

Le FSR a été tirée de 5V et abaissée par une résistance de 10K (un simple diviseur de tension) de manière à ce que nous obtenions en sortie une résistance correspondante à la pression appliquée.

  • Reportez-vous au schéma ci-dessous pour faire le système de rétroaction FSR
  • Connectez un FSR à la broche analogique A5 pour lire la force du pouce
  • Connectez un FSR à la broche analogique A4 pour lire la force de la paume (Palm)

code

Temperature feedback

#include <Servo.h> 

#define FORCELEN 50
Servo feedback;
int FRsensor_Thumb = A5;  //Analog pin to read Thumb force
int FRsensor_Palm = A4;   //Analog pin to read Pam force
int Thumb_value = 0;
int Palm_value = 0;
int max_force = 0;  //maximum force
int degree = 0;
int THUMBFORCE[FORCELEN]; //Array for mean filter on the thumb force
int PALMFORCE[FORCELEN];  //Array for mean filter on the palm force
int thumb_index = 0;      // Global index of thumb filter array
int palm_index = 0;       // Global index of palm filter array

void setup() {
  Serial.begin(9600);  
  feedback.attach(3);
  feedback.write(0);
  int thumb_val = analogRead(FRsensor_Thumb);
  int palm_val = analogRead(FRsensor_Palm);
  //Initializing the array's
  for(int i=0; i<FORCELEN; i++){
   THUMBFORCE[i] = thumb_val;
   PALMFORCE[i] = palm_val; 
  }
  
}

int thumbfilter(int val){
  float result;
  THUMBFORCE[thumb_index++] = val;
  //Cyclic array implementation
  if(thumb_index > FORCELEN){
    thumb_index = 0;
  }
  float sum = 0;
  for(int i=0; i<FORCELEN; i++){
    sum = sum + THUMBFORCE[i];  //Sum of all values in array
  }
  result = sum/FORCELEN;    //Average of the array
  return (int)result;
}

int palmfilter(int val){
  float result;
  PALMFORCE[palm_index++] = val;
  if(palm_index > FORCELEN){
    palm_index = 0;
  }
  float sum = 0;
  for(int i=0; i<FORCELEN; i++){
    sum = sum + PALMFORCE[i];
  }
  result = sum/FORCELEN;
  return (int)result;
}

void loop() {
  Thumb_value = thumbfilter(analogRead(FRsensor_Thumb));
  Palm_value = palmfilter(analogRead(FRsensor_Palm));
  max_force = max( Thumb_value, Palm_value);
  Serial.print(1000);
  Serial.print("\t");
  Serial.print(Thumb_value);
  Serial.print("\t");
  Serial.print(Palm_value);
  Serial.print("\t");
  degree = map(max_force, 0, 1023, 0, 60);  //mapping the force to servo rotation in degrees (0-60)
  //degree = max_force*0.06;
  feedback.write(degree); //writing the feedback to the servo
  Serial.print(degree);
  Serial.print("\t");
  Serial.println("");
  delay(5);  
}