Passerelle.Infini 2023 : Camellia Sensibilis : Différence entre versions
(→prototype qu'on souhaite réaliser) |
(→ne pas toucher en dessous de ce paragraphe) |
||
(11 révisions intermédiaires par 3 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Fichier:MarathonCreatifPasserelle.Infini2023.png|200px]] | [[Fichier:MarathonCreatifPasserelle.Infini2023.png|200px]] | ||
==résumé du projet== | ==résumé du projet== | ||
+ | [[Fichier:CamelliaSensibilisfinal.jpg|600px]] | ||
Pour qui : | Pour qui : | ||
Ligne 63 : | Ligne 64 : | ||
==pistes explorée, abandonnées ou fertiles== | ==pistes explorée, abandonnées ou fertiles== | ||
− | [[Fichier:SchémasRecherches.jpg|600px]] | + | <br> |
+ | Recherches pour le socle<br> | ||
+ | [[Fichier:SchémasRecherches.jpg|600px]]<br> | ||
+ | Socle installé<br> | ||
+ | |||
+ | [[Fichier:CamelliaSensibilisPied.jpg|600px]] | ||
+ | |||
+ | | ||
+ | <br> | ||
+ | Organigramme de montage électronique<br> | ||
+ | |||
+ | [[Fichier:CamelliaSensibilisOrganigramme.jpg|600px]] <br> | ||
+ | <br> | ||
+ | Perçage avec la scie<br> | ||
+ | [[Fichier:CamelliaSensibilisPercage.jpg|600px]] | ||
==prototype qu'on souhaite réaliser == | ==prototype qu'on souhaite réaliser == | ||
Ligne 87 : | Ligne 102 : | ||
Savoirs faire | Savoirs faire | ||
− | * | + | *Codeur pour associer le capteur à l’actionneur |
− | Codeur pour associer le capteur à l’actionneur | + | |
+ | ==code== | ||
+ | <syntaxhighlight lang="Arduino" line> | ||
+ | /* Code du projet Camellia Sensibilis | ||
+ | * capteurs | ||
+ | - fin de course | ||
+ | - distance HC-SR04 | ||
+ | - température DS18B20 | ||
+ | |||
+ | Actionneurs : | ||
+ | - rubans de LED | ||
+ | - lecteurs MP3 | ||
+ | - vibreur | ||
+ | |||
+ | Scenario : | ||
+ | distance -> ruban de led | ||
+ | fin de course -> lecture aléatoire de son | ||
+ | température -> vibrations | ||
+ | ___ | ||
+ | / ___ \ | ||
+ | |_| | | ||
+ | /_/ | ||
+ | _ ___ _ | ||
+ | |_| |___|_| |_ | ||
+ | ___|_ _| | ||
+ | |___| |_| | ||
+ | Les petits Débrouillards - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/ | ||
+ | */ | ||
+ | // Appel des Bibliothèques | ||
+ | //Capteur de température DS18B20 | ||
+ | #include <OneWire.h> | ||
+ | #include <DallasTemperature.h> | ||
+ | |||
+ | // Ruban de Led | ||
+ | #include <Adafruit_NeoPixel.h> | ||
+ | |||
+ | // Lecteur MP3 | ||
+ | #include <SoftwareSerial.h> | ||
+ | #include <DFRobotDFPlayerMini.h> | ||
+ | int morceau=1; // numéro du morceau à lire de 1 à 5 | ||
+ | |||
+ | // Capteur de distance HC-SR04 | ||
+ | #include <Ultrasonic.h> | ||
+ | |||
+ | // déclaration DS18B20 - Thermomètre | ||
+ | #define ONE_WIRE_BUS 2 // broche du thermomètre | ||
+ | // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) | ||
+ | OneWire oneWire(ONE_WIRE_BUS); | ||
+ | // Pass our oneWire reference to Dallas Temperature. | ||
+ | DallasTemperature sensors(&oneWire); | ||
+ | int freq = 1000; //varaible qui fixe la fréquence du vibreur | ||
+ | |||
+ | //Capteur de distance HC-SR04 Création de l'objet ultrasonic | ||
+ | Ultrasonic ultrasonic(12, 13); //echo Broche 13, trig broche 12 | ||
+ | int calc=10; // variable de calcul de la distance | ||
+ | |||
+ | //--------Définitions Ruban de Led------------------------------------- | ||
+ | #define broche 9 // broche sur laquelle est connecté le ruban DE LED | ||
+ | |||
+ | // Nombre de led du ruban ? | ||
+ | #define nbpixels 8 | ||
+ | // Lors de la configuration de la bibliothèque NeoPixel, | ||
+ | // nous lui indiquons combien de pixels, | ||
+ | // et quelle broche utiliser pour envoyer des signaux. | ||
+ | Adafruit_NeoPixel pixels(nbpixels, broche, NEO_GRB + NEO_KHZ800); | ||
+ | // pour configurer le ruban : | ||
+ | // nomDuRuban (nombreDePixels, NumeroDeLaBroche, typeDeRuban) | ||
+ | // Les différents types de ruban : | ||
+ | // NEO_KHZ800 800 KHz bitstream (la plupart des produits Neopixel ou références de LED w/WS2812) | ||
+ | // NEO_KHZ400 400 KHz (classic 'v1' (pas v2) FLORA pixels, drivers WS2811) | ||
+ | // NEO_GRB Pixels cablés pour GRB bitstream (la plupart des produits Neopixel) | ||
+ | // NEO_RGB Pixels cablés pour RGB bitstream (v1 FLORA pixels, pas les v2) | ||
+ | // NEO_RGBW Pixels cablés pour RGBW bitstream (produits NeoPixel RGBW) | ||
+ | #define delai 30 // durée de la pause en millisecondes | ||
+ | |||
+ | // --------------Fin de course----------------- | ||
+ | const int brocheFinDeCourse = 11;// Broche où est connectée le fin de course. | ||
+ | // Variable d'etat | ||
+ | bool etatFinDeCourse = LOW; // Variable permettant de récupérer l'etat du fin de course | ||
+ | |||
+ | // --------------------Lecteur MP3-------------------- | ||
+ | SoftwareSerial mySoftwareSerial(5, 6); // TX, RX | ||
+ | DFRobotDFPlayerMini myDFPlayer ; // Creation du lecteur | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | //------------------------CAPTEURS------------------ | ||
+ | //Fin de course | ||
+ | pinMode(brocheFinDeCourse, INPUT_PULLUP);// Initialisation de la broche du bouton | ||
+ | |||
+ | //Capteur de température DS18B20 | ||
+ | Serial.println("Dallas Temperature IC Control Library Demo"); | ||
+ | // Start up the library | ||
+ | sensors.begin(); | ||
+ | |||
+ | // Capteur de distance HC-SR04 | ||
+ | //Rien à setup | ||
+ | |||
+ | //----------------------------ACTIONNEURS--------------- | ||
+ | //Ruban de Led | ||
+ | pixels.begin(); // INITIALISE l'object ruban NeoPixel | ||
+ | pixels.show(); // éteint tout les pixels aussi vite que possible. | ||
+ | pixels.setBrightness(100); // met la luminosité à 1/5 (max = 255) | ||
+ | |||
+ | //Lecteur MP3 | ||
+ | mySoftwareSerial.begin(9600) ; | ||
+ | myDFPlayer.begin(mySoftwareSerial) ; | ||
+ | myDFPlayer.setTimeOut(500) ; | ||
+ | myDFPlayer.volume(30) ; // fixe le son à 10 (maximum) | ||
+ | |||
+ | // Vibreur | ||
+ | pinMode(4, OUTPUT); | ||
+ | |||
+ | //HASARD | ||
+ | randomSeed(analogRead(5)); // Lecture broche analogique 5 | ||
+ | |||
+ | } | ||
+ | |||
+ | //Gestion du temps | ||
+ | unsigned long currentMillis = 0; | ||
+ | unsigned long previousMillis = 0; | ||
+ | unsigned long previousVibMillis = 0; | ||
+ | |||
+ | void loop() { | ||
+ | //----------------les capteurs captent--------------- | ||
+ | //FIN DE COURSE | ||
+ | // Lecture de l'état du Fin de course et stockage dans la variable etatFinDeCourse | ||
+ | etatFinDeCourse = digitalRead(brocheFinDeCourse); | ||
+ | Serial.print("état du FindeCourse : "); // on écrit dans le moniteur série | ||
+ | Serial.println(etatFinDeCourse); | ||
+ | //le bouton est "tiré" vers l'état haut (HIGH) par la résistance de pullup | ||
+ | |||
+ | //DISTANCE | ||
+ | int distance = ultrasonic.read(); | ||
+ | // affichage de la distance dans le terminal série | ||
+ | Serial.print("Distance in CM: "); | ||
+ | Serial.println(distance); | ||
+ | calc = distance/10; | ||
+ | |||
+ | //Température | ||
+ | // call sensors.requestTemperatures() to issue a global temperature | ||
+ | // request to all devices on the bus | ||
+ | Serial.print("Requesting temperatures..."); | ||
+ | sensors.requestTemperatures(); // Send the command to get temperatures | ||
+ | Serial.println("DONE"); | ||
+ | // After we got the temperatures, we can print them here. | ||
+ | // We use the function ByIndex, and as an example get the temperature from the first sensor only. | ||
+ | float tempC = sensors.getTempCByIndex(0); | ||
+ | |||
+ | // Check if reading was successful | ||
+ | if(tempC != DEVICE_DISCONNECTED_C) | ||
+ | { | ||
+ | Serial.print("Temperature for the device 1 (index 0) is: "); | ||
+ | Serial.println(tempC); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | Serial.println("Error: Could not read temperature data"); | ||
+ | } | ||
+ | |||
+ | //TEMPS | ||
+ | currentMillis = millis(); | ||
+ | |||
+ | //ACTIONNEURS | ||
+ | // Distance-Ruban de led | ||
+ | if (calc<9){ | ||
+ | calc = 8-calc; | ||
+ | Serial.print("distance calc = "); Serial.println(calc); | ||
+ | for(int i=0; i<=calc; i++) { // Les pixels sont numérotés de 0 à ... | ||
+ | pixels.setPixelColor(i, pixels.Color(0, 0, 255)); // on allume la couleur rouge à fond de la ième led | ||
+ | } | ||
+ | for(int i=calc+1; i<nbpixels; i++) { // Les pixels sont numérotés de 0 à ... | ||
+ | pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // on allume la couleur rouge à fond de la ième led | ||
+ | } | ||
+ | pixels.show(); // met à jour le ruban | ||
+ | } | ||
+ | |||
+ | |||
+ | //Fin de course - lecture MP3 Aléatoire | ||
+ | if (currentMillis - previousMillis >= 1000) { // il faut qu'il se soit passé 1 seconde entre deux lancement de musique | ||
+ | // save the last time you act | ||
+ | previousMillis = currentMillis; | ||
+ | |||
+ | if (etatFinDeCourse==0){ | ||
+ | morceau = random(1,5); | ||
+ | myDFPlayer.play(morceau); // joue le fichier son. | ||
+ | Serial.print("je joue le morceau "); Serial.println(morceau); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | //Température - fréquence de vibration | ||
+ | // la température va varier de 15 à 30°C - probablement de 17 à 25°C | ||
+ | if (tempC>19){ | ||
+ | freq = map(tempC,15,35,900,100); // à la louche | ||
+ | Serial.print("freq = "); Serial.println(freq); | ||
+ | digitalWrite(4, HIGH); | ||
+ | delay(400); | ||
+ | digitalWrite(4, LOW); | ||
+ | delay(freq); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
==ne pas toucher en dessous de ce paragraphe== | ==ne pas toucher en dessous de ce paragraphe== | ||
− | + | ||
[[Catégorie:Passerelle.infini]] | [[Catégorie:Passerelle.infini]] | ||
+ | [[Catégorie:led]][[Catégorie:ruban de led]][[Catégorie:WS1812B]] |
Version actuelle datée du 9 janvier 2024 à 17:55
Sommaire
résumé du projet
Pour qui : 4 à 6 personnes (2 personnes pour le prototype)
Quoi ? Stimuler les sens Ouvrir le groupe et à l’individu Pourquoi ? Vivre collectivement et individuellement une expérience sensorielle ? Outil de connexion à ses sensations.
Ou ? Outil de médiation dans un lieu culturel scolaire
Nom : Camélia sensibilis L’arbre sensoriel
Le but : Dispositif interactif et sensoriel donnant l’illusion de vivre une expérience pour soi alors que l’on nourrit l’exprérience de l’autre.
Comment il fonctionne Le participant émet des actions qui déclenchent des expériences
Qui va l’utiliser (prototype) 2 humains
Le récit
An 2875, fruit de centaines d’années de repli sur soi, les humains ont perdu leur faculté de communication sociale et verbale.
Dans cette société aux stimulations constantes et où les surcharges cognitives sont devenues la norme, les individus ont perdu leur rapport au corps et à l’autre. Poussés par un instinct primaire dont ils ont oubliés l’origine, chacun continu de vivre solitairement en groupe. L’évolution ayant fait son œuvre, l’espèce humaine n’est plus capable de parole. Son corps demeure physiquement le même mais l’absence de stimulations sensorielles semble l’avoir rendu insensible. Prisonnier de leur esprit et sans possibilité de communiquer avec les autres, les humains ne savent plus entrer en contact, échanger, partager, vivre des expériences communes. Le sentiment d’émerveillement, la curiosité et l’envie de découverte semble disparus.
Quatre scientifiques d’une petite planète du système lunaire observent cette humanité hypo-sensible.
Comparant leurs observations avec les archives des recherches sur cette espèce, ils se rendent compte que les humains n’ont pas toujours été ainsi.
En effet, fût un temps où ils vivaient collectivement échangeant verbalement entre eux, sensible à leur environnement grâce au concept ancestrale des 5 sens.
Afin de savoir si cette capacité a complètement disparu de la nature humaine, les quatre scientifiques décident de mener une expérience.
Partant d’une ancienne linogravure de camélia, une plante antique dont on retrouve des traces dans certaines régions terrestres, elles décident d’élaborer un dispositif sensoriel expérimental. Deux humains de laboratoires ont été capturé pour l’occasion. Présentant des caractères symptomatiques de surcharge cognitive et totalement déconnectés de leur enveloppe corporelle, ils semblent être des sujets pertinents.
Leur faisant croire à une expérience individuelle visant à comprendre leurs facultés sensorielles, les scientifiques leur réservent un dessein plus complexe. En pensant réaliser des actions individuels, le sujet A va en réalité entrer en contact avec le sujet B.
Grâce à un habile stratagème pensé par les scientifiques, les sens des individus vont être stimulés afin de permettre une exploration sensorielle créatrice d’expériences communes et de lien sociaux.
A quoi l’expérience aboutira-t-elle ? Les humains ont-ils définitivement perdu leur capacité originelle à ressentir et à communiquer ? Les sujets A et B seront-ils source d’espoir pour l’humanité ?
équipe du projet
- Bella Bates
- Caroline Denos
- Morgane Hornsperger
- Sarah Hassouni
- Élément de la liste à puces
Mentor= Sarah Maillot
Bibliographie et webographie sur le projet
Mettre ici des exemples trouvés sur web de projets qui ressemblent et des technologies qui s'en rapprochent ou qui servent d'inspiration.
sonotheque.org choix de musique entre 2 et 10 secondes
pistes explorée, abandonnées ou fertiles
Recherches pour le socle
Socle installé
Organigramme de montage électronique
prototype qu'on souhaite réaliser
Matériaux
- -branches de camélias
- -tubes en cartons de différents diamètres
- -tissus
- -matériaux diverses de récupération.
- -bois contreplaquer 18MM d’épaisseur base 45 cm hauteur 42cm
Outils
- -clef USB avec du son en MP3 (libre de droits)
- -Plezzo
- -détecteur de distance
- -détecteur de température
- -led
- -haut parleur
- -vibreur
- -scie circulaire et radiale
- -scie cloche
Savoirs faire
- Codeur pour associer le capteur à l’actionneur
code
1
2 /* Code du projet Camellia Sensibilis
3 * capteurs
4 - fin de course
5 - distance HC-SR04
6 - température DS18B20
7
8 Actionneurs :
9 - rubans de LED
10 - lecteurs MP3
11 - vibreur
12
13 Scenario :
14 distance -> ruban de led
15 fin de course -> lecture aléatoire de son
16 température -> vibrations
17 ___
18 / ___ \
19 |_| |
20 /_/
21 _ ___ _
22 |_| |___|_| |_
23 ___|_ _|
24 |___| |_|
25 Les petits Débrouillards - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
26 */
27 // Appel des Bibliothèques
28 //Capteur de température DS18B20
29 #include <OneWire.h>
30 #include <DallasTemperature.h>
31
32 // Ruban de Led
33 #include <Adafruit_NeoPixel.h>
34
35 // Lecteur MP3
36 #include <SoftwareSerial.h>
37 #include <DFRobotDFPlayerMini.h>
38 int morceau=1; // numéro du morceau à lire de 1 à 5
39
40 // Capteur de distance HC-SR04
41 #include <Ultrasonic.h>
42
43 // déclaration DS18B20 - Thermomètre
44 #define ONE_WIRE_BUS 2 // broche du thermomètre
45 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
46 OneWire oneWire(ONE_WIRE_BUS);
47 // Pass our oneWire reference to Dallas Temperature.
48 DallasTemperature sensors(&oneWire);
49 int freq = 1000; //varaible qui fixe la fréquence du vibreur
50
51 //Capteur de distance HC-SR04 Création de l'objet ultrasonic
52 Ultrasonic ultrasonic(12, 13); //echo Broche 13, trig broche 12
53 int calc=10; // variable de calcul de la distance
54
55 //--------Définitions Ruban de Led-------------------------------------
56 #define broche 9 // broche sur laquelle est connecté le ruban DE LED
57
58 // Nombre de led du ruban ?
59 #define nbpixels 8
60 // Lors de la configuration de la bibliothèque NeoPixel,
61 // nous lui indiquons combien de pixels,
62 // et quelle broche utiliser pour envoyer des signaux.
63 Adafruit_NeoPixel pixels(nbpixels, broche, NEO_GRB + NEO_KHZ800);
64 // pour configurer le ruban :
65 // nomDuRuban (nombreDePixels, NumeroDeLaBroche, typeDeRuban)
66 // Les différents types de ruban :
67 // NEO_KHZ800 800 KHz bitstream (la plupart des produits Neopixel ou références de LED w/WS2812)
68 // NEO_KHZ400 400 KHz (classic 'v1' (pas v2) FLORA pixels, drivers WS2811)
69 // NEO_GRB Pixels cablés pour GRB bitstream (la plupart des produits Neopixel)
70 // NEO_RGB Pixels cablés pour RGB bitstream (v1 FLORA pixels, pas les v2)
71 // NEO_RGBW Pixels cablés pour RGBW bitstream (produits NeoPixel RGBW)
72 #define delai 30 // durée de la pause en millisecondes
73
74 // --------------Fin de course-----------------
75 const int brocheFinDeCourse = 11;// Broche où est connectée le fin de course.
76 // Variable d'etat
77 bool etatFinDeCourse = LOW; // Variable permettant de récupérer l'etat du fin de course
78
79 // --------------------Lecteur MP3--------------------
80 SoftwareSerial mySoftwareSerial(5, 6); // TX, RX
81 DFRobotDFPlayerMini myDFPlayer ; // Creation du lecteur
82
83 void setup() {
84 Serial.begin(9600);
85 //------------------------CAPTEURS------------------
86 //Fin de course
87 pinMode(brocheFinDeCourse, INPUT_PULLUP);// Initialisation de la broche du bouton
88
89 //Capteur de température DS18B20
90 Serial.println("Dallas Temperature IC Control Library Demo");
91 // Start up the library
92 sensors.begin();
93
94 // Capteur de distance HC-SR04
95 //Rien à setup
96
97 //----------------------------ACTIONNEURS---------------
98 //Ruban de Led
99 pixels.begin(); // INITIALISE l'object ruban NeoPixel
100 pixels.show(); // éteint tout les pixels aussi vite que possible.
101 pixels.setBrightness(100); // met la luminosité à 1/5 (max = 255)
102
103 //Lecteur MP3
104 mySoftwareSerial.begin(9600) ;
105 myDFPlayer.begin(mySoftwareSerial) ;
106 myDFPlayer.setTimeOut(500) ;
107 myDFPlayer.volume(30) ; // fixe le son à 10 (maximum)
108
109 // Vibreur
110 pinMode(4, OUTPUT);
111
112 //HASARD
113 randomSeed(analogRead(5)); // Lecture broche analogique 5
114
115 }
116
117 //Gestion du temps
118 unsigned long currentMillis = 0;
119 unsigned long previousMillis = 0;
120 unsigned long previousVibMillis = 0;
121
122 void loop() {
123 //----------------les capteurs captent---------------
124 //FIN DE COURSE
125 // Lecture de l'état du Fin de course et stockage dans la variable etatFinDeCourse
126 etatFinDeCourse = digitalRead(brocheFinDeCourse);
127 Serial.print("état du FindeCourse : "); // on écrit dans le moniteur série
128 Serial.println(etatFinDeCourse);
129 //le bouton est "tiré" vers l'état haut (HIGH) par la résistance de pullup
130
131 //DISTANCE
132 int distance = ultrasonic.read();
133 // affichage de la distance dans le terminal série
134 Serial.print("Distance in CM: ");
135 Serial.println(distance);
136 calc = distance/10;
137
138 //Température
139 // call sensors.requestTemperatures() to issue a global temperature
140 // request to all devices on the bus
141 Serial.print("Requesting temperatures...");
142 sensors.requestTemperatures(); // Send the command to get temperatures
143 Serial.println("DONE");
144 // After we got the temperatures, we can print them here.
145 // We use the function ByIndex, and as an example get the temperature from the first sensor only.
146 float tempC = sensors.getTempCByIndex(0);
147
148 // Check if reading was successful
149 if(tempC != DEVICE_DISCONNECTED_C)
150 {
151 Serial.print("Temperature for the device 1 (index 0) is: ");
152 Serial.println(tempC);
153 }
154 else
155 {
156 Serial.println("Error: Could not read temperature data");
157 }
158
159 //TEMPS
160 currentMillis = millis();
161
162 //ACTIONNEURS
163 // Distance-Ruban de led
164 if (calc<9){
165 calc = 8-calc;
166 Serial.print("distance calc = "); Serial.println(calc);
167 for(int i=0; i<=calc; i++) { // Les pixels sont numérotés de 0 à ...
168 pixels.setPixelColor(i, pixels.Color(0, 0, 255)); // on allume la couleur rouge à fond de la ième led
169 }
170 for(int i=calc+1; i<nbpixels; i++) { // Les pixels sont numérotés de 0 à ...
171 pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // on allume la couleur rouge à fond de la ième led
172 }
173 pixels.show(); // met à jour le ruban
174 }
175
176
177 //Fin de course - lecture MP3 Aléatoire
178 if (currentMillis - previousMillis >= 1000) { // il faut qu'il se soit passé 1 seconde entre deux lancement de musique
179 // save the last time you act
180 previousMillis = currentMillis;
181
182 if (etatFinDeCourse==0){
183 morceau = random(1,5);
184 myDFPlayer.play(morceau); // joue le fichier son.
185 Serial.print("je joue le morceau "); Serial.println(morceau);
186 }
187 }
188
189
190 //Température - fréquence de vibration
191 // la température va varier de 15 à 30°C - probablement de 17 à 25°C
192 if (tempC>19){
193 freq = map(tempC,15,35,900,100); // à la louche
194 Serial.print("freq = "); Serial.println(freq);
195 digitalWrite(4, HIGH);
196 delay(400);
197 digitalWrite(4, LOW);
198 delay(freq);
199 }
200 }