Table des matières

UVibes

Brassard (plus utilisé dans le projet)

Boîte d'intérieur de 10.5\*8\*4.5 cm

tous les fichiers de découpe ici : uv_sense.zip

Code

Code pour le capteur UV Grove :

// Watch video here: https://www.youtube.com/watch?v=jFP13uhgy04

/* 

Connection:

 Arduino           Ultraviolet (UV) sensor
 A0 (Analog 0)          SIG
 +5V                    VCC
 GND                    GND
 
  */

// UV index explanation: http://www2.epa.gov/sunwise/uv-index-scale
// UV index explanation: http://www.epa.gov/sunwise/doc/what_is_uvindex.html

float Vsig;

void setup(){
  Serial.begin(9600);
}
 
void loop()
{  
  int sensorValue;
  long  sum=0;
  for(int i=0;i<1024;i++)
   {  
      sensorValue=analogRead(A0);
      sum=sensorValue+sum;
      delay(2);
   }   
 sum = sum >> 10;
 Vsig = sum*4980.0/1023.0; // Vsig is the value of voltage measured from the SIG pin of the Grove interface
 Serial.print("The voltage value: ");
 Serial.print(Vsig);
 Serial.print(" mV    --   ");
 
if (Vsig < 50) {
    Serial.print("UV Index: 0 "); Serial.println("   Exposure level - NONE (You're probably at home!) ");
 }
if (Vsig > 50 && Vsig < 227) {
    Serial.print("UV Index: 1 "); Serial.println("   Exposure level - LOW (You're probably at home!) ");
 }
if (Vsig > 227 && Vsig < 318) {
    Serial.print("UV Index: 2 "); Serial.println("   Exposure level - LOW (You can go outside and have fun!) ");
 }
if (Vsig > 318 && Vsig < 408) {
    Serial.print("UV Index: 3 "); Serial.println("   Exposure level - MODERATE (Sun starts to annoy you) ");
 }
if (Vsig > 408 && Vsig < 503) {
    Serial.print("UV Index: 4 "); Serial.println("   Exposure level - MODERATE (Sun starts to annoy you) ");
 }
if (Vsig > 503 && Vsig < 606) {
    Serial.print("UV Index: 5 "); Serial.println("   Exposure level - MODERATE (Sun starts to annoy you) ");
 }
if (Vsig > 606 && Vsig < 696) {
    Serial.print("UV Index: 6 "); Serial.println("   Exposure level - HIGH (Get out from the sunlight! get out now!) ");
 }
if (Vsig > 696 && Vsig < 795) {
    Serial.print("UV Index: 7 "); Serial.println("   Exposure level - HIGH (Get out from the sunlight! get out now!) ");
 }
if (Vsig > 795 && Vsig < 881) {
    Serial.print("UV Index: 8 "); Serial.println("   Exposure level - VERY HIGH (Get out from the sunlight! get out now!) ");
 }
if (Vsig > 881 && Vsig < 976) {
    Serial.print("UV Index: 9 "); Serial.println("   Exposure level - VERY HIGH (If you value your health, don't go outside, just stay at home!) ");
 }
if (Vsig > 976 && Vsig < 1079) {
    Serial.print("UV Index: 10 "); Serial.println("   Exposure level - VERY HIGH (If you value your health, don't go outside, just stay at home!) ");
 }
if (Vsig > 1079 && Vsig < 1170) {
    Serial.print("UV Index: 11 "); Serial.println("   Exposure level - EXTREME (If you value your health, don't go outside, just stay at home!) ");
 }
if (Vsig > 1170) {
    Serial.print("UV Index: 11+ "); Serial.println("   Exposure level - EXTREME (You will probably die in 3, 2, 1... Just JOKING, don't be scared...) - intensity of sunlight is really at maximum ");
 }
}

Code pour le vibreur

const int motorPin = 3;

void setup()
{
pinMode(motorPin, OUTPUT);
}

void loop()
{
digitalWrite(motorPin, HIGH);
delay(1000);
digitalWrite(motorPin, LOW);
delay(59000);
}

On branche le vibreur sur le pin A1, le capteur UV sur A0 sur le shield.
Toutes les 5 secondes, une vibration indique la tranche d'UV reçus.
Code final

float Vsig; //déclaration de la variable Vsig
int motorPin = A1; //déclaration de la variable motorPin pour le vibreur

void setup() {
  pinMode(motorPin, OUTPUT); //on met le motorPin en mode sortie
  Serial.begin(9600);
}

void loop()
{
  int sensorValue; //on déclare la variable sensorValue
  long  sum = 0; //on déclare la variable sum
  for (int i = 0; i < 1024; i++) \\pour i allant de 0 à 1024, sensorValue prend la valeur lue par le capteur UV
  {
    sensorValue = analogRead(A0);
    sum = sensorValue + sum;
    delay(2);
  }
  sum = sum >> 10;
  Vsig = sum * 4980.0 / 1023.0; // Vsig is the value of voltage measured from the SIG pin of the Grove interface
  Serial.print("The voltage value: ");
  Serial.print(Vsig);
  Serial.print(" mV    --   ");
//on affiche différents messages sur le moniteur en fonction de l'index UV
  if (Vsig < 10) { //niveau 1 : petite vibration
    Serial.print("UV Index: 0 "); Serial.println("   Exposition - NULLE  ");
    digitalWrite(motorPin, HIGH);
    delay(100);
  }

  if (Vsig > 10 && Vsig < 30) { //niveau 2 : vibration + longue
    Serial.print("UV Index: 3 "); Serial.println("   Exposition - MOYENNE ");
    digitalWrite(motorPin, HIGH);
    delay(700);
  }
  if (Vsig > 30 && Vsig < 50) { //3e niveau : 2 vibrations
    Serial.print("UV Index: 6 "); Serial.println("   Expoition - FORTE ");
    digitalWrite(motorPin, HIGH);
    delay(700);
    digitalWrite(motorPin, LOW);
    delay(100);
    digitalWrite(motorPin, HIGH);
    delay(700);
  }
  if (Vsig > 50 && Vsig < 75) { //4e niveau : 3 vibrations
    Serial.print("UV Index: 8 "); Serial.println("   Exposition - TRES FORTE ");
    digitalWrite(motorPin, HIGH);
    delay(700);
    digitalWrite(motorPin, LOW);
    delay(100);
    digitalWrite(motorPin, HIGH);
    delay(700);
    digitalWrite(motorPin, LOW);
    delay(100);
    digitalWrite(motorPin, HIGH);
    delay(700);
  }
  if (Vsig > 75) { //5e niveau : une vibration presque continue
    Serial.print("UV Index: 11 "); Serial.println("   Exposition - EXTREME ");
    digitalWrite(motorPin, HIGH);
    delay(4500);
  }

  digitalWrite(motorPin, LOW);
  delay(5000);
}

Scénario

Je sors de chez moi, il y a un ciel gris comme c'est toujours le cas à Paris. J'ai UVibes sur le ventre, il m'indique qu'il n'y a pas d'UV ou peu dans la maison. Lorsque je sors, je ne m'attends pas à ce qu'il y en ait plus et pourtant UVibes se met à vibrer beaucoup plus fort. Je comprends physiquement que les UV traversent les nuages et que l'on peut attraper un coup de soleil même lorsque le soleil n'est pas aussi visible que sous un ciel bleu à la plage. Je me déplace donc différemment, en marchant à l'ombre ou je me protège des rayons. A force de porter UVibes, je ne me rends plus compte de sa présence et j'ai comme un nouvel outil qui me permet de percevoir les rayons UV.

La science

Les rayonnements ultraviolets ont été découverts en 1801 par le physicien allemand Johann Wilhelm Ritter.
La lumière qui nous permet de voir ce qui nous entoure est désignée sous le nom de lumière visible et se compose des couleurs de l’arc-en-ciel.
Les rayons UV sont perceptibles par certains animaux, comme les abeilles, mais pas par les humains, on l'appelle même “lumière noire”. En effet, leur longueur d'onde (380-200 nm) n’appartient pas au spectre du visible (400 à 800 nm). Ce sont des rayonnements électromagnétiques, et il existe plusieurs catégories d’UV.

Si l'on peut percevoir le monde qui nous entoure, c'est grâce à nos sens et nos mouvements dans l'environnement qui nous est donné (on ne perçoit rien à l’état statique). Ici, en couplant déplacement et intensité de la vibration de UVibes on crée une nouvelle perception des rayons UV.

La perception du champ invisible modifie notre champ des possibles. En percevant les UV on se rend compte de leur concentration : on se déplace différemment dans l’espace, on peut se protéger, se mettre à l'abri ou au contraire sortir en toute insouciance…
Une des questions est de savoir comment retranscrire et rendre perceptible une information qui ne l’est pas. La perception des ondes dans le spectre visible se fait grâce aux yeux, à la vision. Lorsque l'on cherche une représentation des ondes électromagnétiques, elle est souvent visuelle. Ici, on supplée ce sens par le sens du toucher via un dispositif haptique.

On ne crée pas un nouveau sens (c'est le toucher qui joue un rôle ici) mais on crée une nouvelle sensibilité aux rayons UV auparavant inexistante.
Il a été prouvé qu'une stimulation tactile via un dispositif de substitution sensori-motrice activait des zones du cerveau qui ont un rôle fondamental dans la représentation spatiale visuelle et l'apprentissage topographique chez les personnes malvoyantes. Ces mêmes zones du cerveau sont également activées lors de la lecture du braille ainsi que le cortex pariétal (qui permet de guider nos mouvements du corps et du regard) et le cortex d'association visuelle supérieure.

Posters

Journal de bord

Mardi 11 décembre

Achat d'un petit vibreur (chez Letmeknow en boutique) + recherche de la documentation pour effectuer le montage correctement.

Quelques tests effectués au FabLab pour voir si ça fonctionne correctement.


Mercredi 12 décembre

Création sur Inkscape et découpe du brassard. On a fait plusieurs essais car notre planche n'était pas plate et ça brûlait à cause des flammes crées par l'air. Finalement, ça a rendu une belle bande souple.

Nous avons réfléchi à comment rendre le projet autonome, nous avons donc décidé d'incorporer une pile dedans afin de pouvoir aller dehors librement pour tester pleinement l'expérience → achat d'une pile 9V.


Jeudi 13 décembre

Nous avons fait les tests du capteur UV car la valeur ne changeait pas en intérieur. Finalement, en se mettant près des fenêtres dans la rotonde on a réussi à capter des valeurs plus grandes.


Vendredi 14 décembre

Soudure des tous petits fils du vibreur avec des plus gros fils pour qu'ils tiennent sur la breadboard + avancement sur le code.


Lundi 17 décembre

Nous avons pris les mesures de l'arduino et tout le câblage pour créer une boîte. Nous avons fait des tests pour avancer le code.


Mardi 18 décembre

Découpe de la boîte.

Nous voulions découper des fentes de chaque côté du brassard pour y mettre des rubans de scratch, mais en testant le brassard, nous l'avons cassé.
Nous avons alors décidé de faire un petit bout de ceinture, avec le vibreur à l'extérieur de la boîte près du corps. Nous avons donc percé un trou dans une des grosses faces de la boîte pour laisser le vibreur à l'extérieur et les fils à l'intérieur de la boîte. Le vibreur étant autocollant, nous l'avons fixé sur la boîte. Nous avons collé les deux morceaux cassés de notre brassard sur cette même face autour du trou avec de la colle à bois, obtenant ainsi une boîte qui se fixe comme une ceinture. Sur l'autre grosse face, nous avons fait un trou pour laisser passer les fils du capteur UV que l'on a fixé dessus avec du scotch double face.
Nous avons fait un code qui fonctionne.


Mercredi 19 décembre

On a peint la boîte en noir.

En faisant quelques tests, on a de nouveau cassé la bande souple.

Nous avons décidé de changer de méthode comme de toute façon c'était trop fragile. Nous avons donc percé deux petits trous pour laisser passer un lacet.

Nous avons dû poncer la boîte à cause des restes de la bande souple qui étaient bien collés puis nous avons repeint la boîte.

Nous avons également soudé les fils du clip pour la pile qui se débranchaient trop facilement.
A l'aide de la découpeuse silhouette, nous avons découpé un autocollant pour le logo de notre objet.
Nous avons finalisé les posters. Nous avons également adapté le code pour sentir un plus grand panel de vibrations car nous sommes en plein hiver et il n'y a pas beaucoup d'UV.


Jeudi 20 décembre

Aujourd'hui c'était le compte-rendu de notre projet.

Nous avons du modifier notre code pour l'adapter à la journée. En effet, nous sommes en hiver donc l'intensité des UV est plutôt faible. Il a fallu réadapter notre échelle.
Brève explication du code utilisé :
si quantité d'UV est très faible alors l'utilisateur reçoit une très faible vibration sur le ventre environ 0,1 s.
si quantité d'UV est faible alors l'utilisateur reçoit une faible vibration sur le ventre 0,7 s.
si quantité d'UV est moyenne alors il reçoit deux vibrations de 0,7 secondes espacées d'un intervalle de 0,1 s.
si quantité d'UV est forte alors il reçoit trois vibrations de 0,7 secondes espacées d'un intervalle de 0,1 s.
si quantité d'UV est très forte alors le vibreur vibre en presque continu (impossible à tester car pas assez de rayons UV aujourd'hui).

Après avoir réalisé notre test en extérieur, notre professeur à pointé différents problèmes. En effet ayant réalisé notre projet, nous savons comment il fonctionne, comment on doit l'utiliser, et ce qu'il doit nous indiquer. Mais un utilisateur lambda si on ne lui explique pas ne trouvera pas tout de suite le sens du dispositif. Il aurait fallu créer une jauge sur le côté qui explique, indique à l'utilisateur ce qu'il doit faire ou bien juste une notice avec :
1 vibration = faible → supportable.
2 vibrations = moyen → mettre un chapeau + crème solaire.
3 vibrations = forte → chapeau + crème solaire toute les 2 heures.
vibration continue = très forte → éviter le soleil!!! + protections solaires.

Par ailleurs, il aurait fallu calculer exactement les durées d'exposition à partir desquelles il est dangereux de rester sous le soleil. Le risque avec notre dispositif est de rendre l'utilisateur moins prudent car il lui assure une sécurité alors que c'est l'inverse qui est recherché.