Passerelle.infini:toutestson : Différence entre versions
(→MONTAGE TECHNIQUE DES OBJETS) |
(→Catégories) |
||
(7 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 51 : | Ligne 51 : | ||
* une batterie, | * une batterie, | ||
* un haut parleur | * un haut parleur | ||
+ | |||
+ | [[Fichier:Passerelle.infiniTouEstSon.JPG|300px]] | ||
====Code CUFF==== | ====Code CUFF==== | ||
<syntaxhighlight lang="Arduino" line> | <syntaxhighlight lang="Arduino" line> | ||
+ | ///////////////////// | ||
+ | // TOUT EST SON // | ||
+ | ///////////////////// | ||
+ | // TOUT EST SON est une Capteur de mouvement générateur de sons. | ||
+ | // Il a été réalisée dans le cadre du hackathon "Passerelle.infini" les 24 & 25 février 2022 | ||
+ | // Le hackathon "Passerelle.infini" est organisé par le Centre d'Art Passerelle, Les petits débrouillards | ||
+ | // Avec la participation de Tyfenn Leluc - designeuse et Thibault Beugin formateur | ||
+ | |||
+ | // Le programme est inspiré du programme "Basic demo for accelerometer readings" de Adafruit MPU6050 | ||
+ | /* | ||
+ | |||
+ | BROCHAGE | ||
+ | _________________ | ||
+ | / D1 mini \ | ||
+ | - |[ ]RST TX[ ]| - | ||
+ | - |[ ]A0 -GPIO RX[ ]| - | ||
+ | |[ ]D0-16 5-D1[X]| - SCL MPU6050 | ||
+ | RX MP3-TF-16P |[X]D5-14 4-D2[X]| - SDA MPU6050 | ||
+ | resistance 1K - TX MP3-TF-16P |[X]D6-12 0-D3[ ]| - | ||
+ | - |[ ]D7-13 2-D4[ ]| LED_BUILTIN | ||
+ | - |[ ]D8-15 GND[X]| - GND (MPU6050, MP3-TF-16P) | ||
+ | - |[ ]3V3 . 5V[X]| - MPU6050, MP3-TF-16P | ||
+ | | +---+ | | ||
+ | |_______|USB|_______| | ||
+ | |||
+ | |||
+ | +-------\_/--------+ | ||
+ | +5V |[X] MP3-TF-16P [ ]| | ||
+ | resistance 1K - TX |[X] [ ]| | ||
+ | RX |[X] __________ [ ]| | ||
+ | |[ ]| |[ ]| | ||
+ | |[ ]| CARTE |[ ]| | ||
+ | Haut-Parleur |[X]| SD |[ ]| | ||
+ | GND |[X]| |[ ]| | ||
+ | Haut-Parleur |[X]| |[ ]| | ||
+ | |___|__________|___| | ||
+ | |||
+ | |||
+ | |||
+ | _________________ | ||
+ | | MPU6050 ()| | ||
+ | +5V |[X]VCC | | ||
+ | GND |[X]GND G | | ||
+ | D1 |[X]SCL ___ Y | | ||
+ | D2 |[X]SDA | | | | | ||
+ | |[ ]XCA |___| 5 | | ||
+ | |[ ]XCL . 2 | | ||
+ | |[ ]ADO Y 1 | | ||
+ | |[ ]INT ->X | | | ||
+ | |_______________()| | ||
+ | |||
+ | |||
+ | Matériel : | ||
+ | - des fils dupont. | ||
+ | - un Wemos D1 mini | ||
+ | - un lecteur MP3 MP3-TF-16P | ||
+ | - une carte SD microSD | ||
+ | - un shield batterie 18650 | ||
+ | - une batterie 18650 | ||
+ | - un cable USB | ||
+ | - un capteur gyroscopique GY-521 MPU6050 | ||
+ | |||
+ | ___ | ||
+ | / ___ \ | ||
+ | |_| | | | ||
+ | /_/ | ||
+ | _ ___ _ | ||
+ | |_| |___|_| |_ | ||
+ | ___|_ _| | ||
+ | |___| |_| | ||
+ | Les petits Débrouillards - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/ | ||
+ | Antony Le Goïc-Auffret 25 février 2022 | ||
+ | */ | ||
+ | |||
+ | |||
+ | #include <Adafruit_MPU6050.h> | ||
+ | #include <Adafruit_Sensor.h> | ||
+ | #include <Wire.h> | ||
+ | #include "Arduino.h" | ||
+ | #include "SoftwareSerial.h" | ||
+ | #include "DFRobotDFPlayerMini.h" | ||
+ | |||
+ | // D6 est le RX du ESP8266, connecte au TX du MP3-TF-16P | ||
+ | // D5 est le TX du ESP8266, connecte au RX du MP3-TF-16P | ||
+ | SoftwareSerial mySoftwareSerial(14, 12); // RX, TX | ||
+ | DFRobotDFPlayerMini myDFPlayer; | ||
+ | |||
+ | long hasard; // declaration d'une variable long | ||
+ | int nombreDeSons = 4; // indiquer le nombre de sons sur la carte SD. Chaque fichier est numeroté 00X. | ||
+ | |||
+ | |||
+ | Adafruit_MPU6050 mpu; | ||
+ | |||
+ | float X; | ||
+ | float Y; | ||
+ | float Z; | ||
+ | |||
+ | int son = 0; | ||
+ | |||
+ | void initialisation(){ | ||
+ | Serial.println(); | ||
+ | Serial.println(F("TOUT EST SON")); | ||
+ | Serial.println(F("Initialisation du lecteur mp3 ... (peut prendre 3 a 5 secondes)")); | ||
+ | |||
+ | if (!myDFPlayer.begin(mySoftwareSerial)) { // utilise softwareSerial pour communiquer avec le MP3-TF-16P. | ||
+ | Serial.println(F("Incapable de demarrer:")); | ||
+ | Serial.println(F("1. Verifiez les connexions!")); | ||
+ | Serial.println(F("2. Inserez la carte SD!")); | ||
+ | while (true); | ||
+ | } | ||
+ | Serial.println(F("TOUT EST SON est prêt !")); | ||
+ | |||
+ | myDFPlayer.setTimeOut(500); // place la communication serie time out 500ms | ||
+ | myDFPlayer.volume(26); // regle le volume (de 0 a 30). | ||
+ | myDFPlayer.play(1); // joue le premier fichier son. | ||
+ | } | ||
+ | |||
+ | void setup(void) { | ||
+ | mySoftwareSerial.begin(9600); | ||
+ | Serial.begin(115200); | ||
+ | |||
+ | while (!Serial) | ||
+ | delay(10); // will pause Zero, Leonardo, etc until serial console opens | ||
+ | |||
+ | Serial.println("Adafruit MPU6050 test!"); | ||
+ | |||
+ | // Try to initialize! | ||
+ | if (!mpu.begin()) { | ||
+ | Serial.println("Failed to find MPU6050 chip"); | ||
+ | while (1) { | ||
+ | delay(10); | ||
+ | } | ||
+ | } | ||
+ | Serial.println("MPU6050 Found!"); | ||
+ | |||
+ | mpu.setAccelerometerRange(MPU6050_RANGE_8_G); | ||
+ | Serial.print("Accelerometer range set to: "); | ||
+ | switch (mpu.getAccelerometerRange()) { | ||
+ | case MPU6050_RANGE_2_G: | ||
+ | Serial.println("+-2G"); | ||
+ | break; | ||
+ | case MPU6050_RANGE_4_G: | ||
+ | Serial.println("+-4G"); | ||
+ | break; | ||
+ | case MPU6050_RANGE_8_G: | ||
+ | Serial.println("+-8G"); | ||
+ | break; | ||
+ | case MPU6050_RANGE_16_G: | ||
+ | Serial.println("+-16G"); | ||
+ | break; | ||
+ | } | ||
+ | mpu.setGyroRange(MPU6050_RANGE_500_DEG); | ||
+ | Serial.print("Gyro range set to: "); | ||
+ | switch (mpu.getGyroRange()) { | ||
+ | case MPU6050_RANGE_250_DEG: | ||
+ | Serial.println("+- 250 deg/s"); | ||
+ | break; | ||
+ | case MPU6050_RANGE_500_DEG: | ||
+ | Serial.println("+- 500 deg/s"); | ||
+ | break; | ||
+ | case MPU6050_RANGE_1000_DEG: | ||
+ | Serial.println("+- 1000 deg/s"); | ||
+ | break; | ||
+ | case MPU6050_RANGE_2000_DEG: | ||
+ | Serial.println("+- 2000 deg/s"); | ||
+ | break; | ||
+ | } | ||
+ | |||
+ | mpu.setFilterBandwidth(MPU6050_BAND_21_HZ); | ||
+ | Serial.print("Filter bandwidth set to: "); | ||
+ | switch (mpu.getFilterBandwidth()) { | ||
+ | case MPU6050_BAND_260_HZ: | ||
+ | Serial.println("260 Hz"); | ||
+ | break; | ||
+ | case MPU6050_BAND_184_HZ: | ||
+ | Serial.println("184 Hz"); | ||
+ | break; | ||
+ | case MPU6050_BAND_94_HZ: | ||
+ | Serial.println("94 Hz"); | ||
+ | break; | ||
+ | case MPU6050_BAND_44_HZ: | ||
+ | Serial.println("44 Hz"); | ||
+ | break; | ||
+ | case MPU6050_BAND_21_HZ: | ||
+ | Serial.println("21 Hz"); | ||
+ | break; | ||
+ | case MPU6050_BAND_10_HZ: | ||
+ | Serial.println("10 Hz"); | ||
+ | break; | ||
+ | case MPU6050_BAND_5_HZ: | ||
+ | Serial.println("5 Hz"); | ||
+ | break; | ||
+ | } | ||
+ | |||
+ | Serial.println(""); | ||
+ | delay(100); | ||
+ | |||
+ | initialisation(); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | /* Get new sensor events with the readings */ | ||
+ | sensors_event_t a, g, temp; | ||
+ | mpu.getEvent(&a, &g, &temp); | ||
+ | |||
+ | X = a.acceleration.x; | ||
+ | Y = a.acceleration.y; | ||
+ | Z = a.acceleration.z; | ||
+ | |||
+ | /* Print out the values */ | ||
+ | Serial.print("Acceleration X: "); | ||
+ | Serial.print(X); | ||
+ | Serial.print(", Y: "); | ||
+ | Serial.print(Y); | ||
+ | Serial.print(", Z: "); | ||
+ | Serial.print(Z); | ||
+ | Serial.println(" m/s^2"); | ||
+ | |||
+ | Serial.println(""); | ||
+ | delay(500); | ||
+ | // déclenchement X | ||
+ | if ((abs(X)>8) & (abs(Y)<8) &(abs(Z)<8)) { | ||
+ | son = 1; | ||
+ | Serial.print("son = "); | ||
+ | Serial.println(son); | ||
+ | myDFPlayer.play(son); // joue le fichier son. | ||
+ | } | ||
+ | // déclenchement Y | ||
+ | if ((abs(X)<8) & (abs(Y)>8) &(abs(Z)<8)) { | ||
+ | son = 2; | ||
+ | Serial.print("son = "); | ||
+ | Serial.println(son); | ||
+ | myDFPlayer.play(son); // joue le fichier son. | ||
+ | } | ||
+ | // déclenchement Z | ||
+ | if ((abs(X)<8) & (abs(Y)<8) &(abs(Z)>8)) { | ||
+ | son = 3; | ||
+ | Serial.print("son = "); | ||
+ | Serial.println(son); | ||
+ | myDFPlayer.play(son); // joue le fichier son. | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
− | |||
===WAVE=== | ===WAVE=== | ||
un détecteur composé de carton alvéolé double cannelure | un détecteur composé de carton alvéolé double cannelure | ||
Ligne 66 : | Ligne 311 : | ||
* un haut parleur | * un haut parleur | ||
− | + | [[Fichier:Passerelle.infiniToutEstSon2.JPG|300px]] | |
+ | ====Sources d'inspiration==== | ||
* capteur de Couleur GY-31 : tuto https://electroniqueamateur.blogspot.com/2020/09/capteur-de-couleurs-tcs3200-gy-31-et.html | * capteur de Couleur GY-31 : tuto https://electroniqueamateur.blogspot.com/2020/09/capteur-de-couleurs-tcs3200-gy-31-et.html | ||
* lecteur mp3/Wave :https://www.wikidebrouillard.org/wiki/Item:DFPlayer_Lecteur_MP3 | * lecteur mp3/Wave :https://www.wikidebrouillard.org/wiki/Item:DFPlayer_Lecteur_MP3 | ||
+ | |||
+ | |||
====Code WAVE==== | ====Code WAVE==== | ||
<syntaxhighlight lang="Arduino" line> | <syntaxhighlight lang="Arduino" line> | ||
+ | ///////////// | ||
+ | // WAVE // | ||
+ | ///////////// | ||
+ | // WAVE est une Capteur de couleur générateur de sons. | ||
+ | // Il a été réalisée dans le cadre du hackathon "Passerelle.infini" les 24 & 25 février 2022 | ||
+ | // Le hackathon "Passerelle.infini" est organisé par le Centre d'Art Passerelle, Les petits débrouillards | ||
+ | // Avec la participation de Tyfenn Leluc - designeuse et Thibault Beugin formateur | ||
+ | /* | ||
+ | Ce programme est inspiré du programme "Détection de couleur avec Arduino" | ||
+ | https://electroniqueamateur.blogspot.com/2020/09/capteur-de-couleurs-tcs3200-gy-31-et.html | ||
+ | |||
+ | |||
+ | +-----+ | ||
+ | +----[PWR]-------------------| USB |--+ | ||
+ | | +-----+ | | ||
+ | | GND/RST2 [ ][ ] | | ||
+ | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | ||
+ | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | ||
+ | | AREF[ ] | | ||
+ | | GND[ ] | | ||
+ | | [ ]N/C SCK/13[ ] | | ||
+ | | [ ]IOREF MISO/12[ ] | | ||
+ | | [ ]RST MOSI/11[X]~| - RX MP3-TF-16P | ||
+ | | [ ]3V3 +---+ 10[X]~| - resistance 1K - TX MP3-TF-16P | ||
+ | VCC | [X]5v -| A |- 9[ ]~| | ||
+ | GND | [X]GND -| R |- 8[ ] | | ||
+ | | [ ]GND -| D |- | | ||
+ | | [ ]Vin -| U |- 7[X] | - LED | ||
+ | | -| I |- 6[X]~| - OUT | ||
+ | | [ ]A0 -| N |- 5[X]~| - S3 | ||
+ | | [ ]A1 -| O |- 4[X] | - S2 | ||
+ | | [ ]A2 +---+ INT1/3[X]~| - S1 | ||
+ | | [ ]A3 INT0/2[X] | - S0 | ||
+ | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | ||
+ | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | ||
+ | | [ ] [ ] [ ] | | ||
+ | | UNO_R3 GND MOSI 5V ____________/ | ||
+ | \_______________________/ | ||
+ | |||
+ | |||
+ | +-------\_/--------+ | ||
+ | +5V |[X] MP3-TF-16P [ ]| | ||
+ | 10 - resistance 1K - TX |[X] [ ]| | ||
+ | 11 - RX |[X] __________ [ ]| | ||
+ | |[ ]| |[ ]| | ||
+ | |[ ]| CARTE |[ ]| | ||
+ | Haut-Parleur |[X]| SD |[ ]| | ||
+ | GND |[X]| |[ ]| | ||
+ | Haut-Parleur |[X]| |[ ]| | ||
+ | |___|__________|___| | ||
+ | |||
+ | 7 2 3 | ||
+ | __________|__|__|________ | ||
+ | | () [ ][X][X][X][ ] () | | ||
+ | | INT LED S0 S1 VCC | | ||
+ | | GY-31 | | ||
+ | | _ - _ | | ||
+ | | ( ) / \ ( ) | | ||
+ | | / _ \ | | ||
+ | | ( |_| ) | | ||
+ | | \ / | | ||
+ | | ( ) \_ _ _/ ( ) | | ||
+ | | | | ||
+ | | GND OUT S2 S3 VCC | | ||
+ | | () [X][X][X][X][X] () | | ||
+ | |-------|--|--|--|--|-------| | ||
+ | GND 6 4 5 +5V | ||
+ | |||
+ | Matériel : | ||
+ | - des fils dupont. | ||
+ | - un Arduino UNO | ||
+ | - un capteur de couleur GY-31 | ||
+ | - un lecteur MP3 MP3-TF-16P | ||
+ | - une carte SD microSD | ||
+ | - un shield batterie 18650 | ||
+ | - une batterie 18650 | ||
+ | - un cable USB | ||
+ | |||
+ | Schéma de l'Arduino en ASCII-ART CC-By http://busyducks.com/ascii-art-arduinos | ||
+ | Sous licence CC-By-Sa (http://creativecommons.org/licenses/by-nc-sa/3.0/) | ||
+ | */ | ||
+ | /* | ||
+ | ___ | ||
+ | / ___ \ | ||
+ | |_| | | | ||
+ | /_/ | ||
+ | _ ___ _ | ||
+ | |_| |___|_| |_ | ||
+ | ___|_ _| | ||
+ | |___| |_| | ||
+ | Les petits Débrouillards - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/ | ||
+ | */ | ||
+ | |||
+ | // définitions des broches utilisées sur l'Arduino | ||
+ | #define brocheS0 2 | ||
+ | #define brocheS1 3 | ||
+ | #define brocheS2 4 | ||
+ | #define brocheS3 5 | ||
+ | #define brocheLecture 6 | ||
+ | #define brocheLED 7 | ||
+ | |||
+ | #include "Arduino.h" | ||
+ | #include "SoftwareSerial.h" | ||
+ | #include "DFRobotDFPlayerMini.h" | ||
+ | |||
+ | // 10 est le TX de l'arduino, connecte au TX du MP3-TF-16P | ||
+ | // 11 est le RX de l'arduino, connecte au RX du MP3-TF-16P | ||
+ | SoftwareSerial mySoftwareSerial(10, 11); // RX, TX | ||
+ | DFRobotDFPlayerMini myDFPlayer; | ||
+ | |||
+ | // valeur mesurée pour chaque couleur | ||
+ | int rouge, vert, bleu, total, son; | ||
+ | |||
+ | void initialisation(){ | ||
+ | Serial.println(); | ||
+ | Serial.println(F("Wave")); | ||
+ | Serial.println(F("Initialisation du lecteur mp3 ... (peut prendre 3 a 5 secondes)")); | ||
+ | |||
+ | if (!myDFPlayer.begin(mySoftwareSerial)) { // utilise softwareSerial pour communiquer avec le MP3-TF-16P. | ||
+ | Serial.println(F("Incapable de demarrer:")); | ||
+ | Serial.println(F("1. Verifiez les connexions!")); | ||
+ | Serial.println(F("2. Inserez la carte SD!")); | ||
+ | while (true); | ||
+ | } | ||
+ | Serial.println(F("WAVE est prêt !")); | ||
+ | |||
+ | myDFPlayer.setTimeOut(500); // place la communication serie time out 500ms | ||
+ | myDFPlayer.volume(26); // regle le volume (de 0 a 30). | ||
+ | myDFPlayer.play(1); // joue le premier fichier son. | ||
+ | } | ||
+ | |||
+ | void setup() { | ||
+ | |||
+ | pinMode(brocheS0, OUTPUT); | ||
+ | pinMode(brocheS1, OUTPUT); | ||
+ | pinMode(brocheS2, OUTPUT); | ||
+ | pinMode(brocheS3, OUTPUT); | ||
+ | pinMode(brocheLED, OUTPUT); | ||
+ | pinMode(brocheLecture, INPUT); | ||
+ | |||
+ | // éteignons les LEDs pour l'instant | ||
+ | digitalWrite(brocheLED, LOW); | ||
+ | |||
+ | // Réglage de l'échelle de fréquence à 2% (plus facile à lire avec pulseIn) | ||
+ | digitalWrite(brocheS0, LOW); | ||
+ | digitalWrite(brocheS1, HIGH); | ||
+ | |||
+ | mySoftwareSerial.begin(9600); | ||
+ | Serial.begin(115200); // initialise la connexion serie vers le PC a 115200 bauds | ||
+ | |||
+ | initialisation(); | ||
+ | } | ||
+ | |||
+ | |||
+ | void loop() { | ||
+ | |||
+ | digitalWrite(brocheLED, HIGH); // on allume les LEDs | ||
+ | |||
+ | digitalWrite(brocheS2, LOW); // rouge | ||
+ | digitalWrite(brocheS3, LOW); | ||
+ | rouge = pulseIn(brocheLecture, LOW); | ||
+ | |||
+ | Serial.print("rouge: "); | ||
+ | Serial.print(rouge); | ||
+ | |||
+ | digitalWrite(brocheS2, HIGH); // vert | ||
+ | digitalWrite(brocheS3, HIGH); | ||
+ | vert = pulseIn(brocheLecture, LOW); | ||
+ | |||
+ | Serial.print(" vert: "); | ||
+ | Serial.print(vert); | ||
+ | |||
+ | digitalWrite(brocheS2, LOW); // bleu | ||
+ | digitalWrite(brocheS3, HIGH); | ||
+ | bleu = pulseIn(brocheLecture, LOW); | ||
+ | |||
+ | Serial.print(" bleu: "); | ||
+ | Serial.println(bleu); | ||
+ | |||
+ | digitalWrite(brocheS2, HIGH); // lumière complète, sans filtre | ||
+ | digitalWrite(brocheS3, LOW); | ||
+ | total = pulseIn(brocheLecture, LOW); | ||
+ | /* | ||
+ | Serial.print(" total: "); | ||
+ | Serial.println(total); | ||
+ | */ | ||
+ | digitalWrite(brocheLED, LOW); // on éteint les LEDs | ||
+ | delay(1000); // pause avant la prochaine mesure | ||
+ | |||
+ | // déclenchement rouge | ||
+ | if ((rouge<1200) & (vert>2000) & (bleu>2000)) { | ||
+ | son = 1; | ||
+ | Serial.print("son = "); | ||
+ | Serial.println(son); | ||
+ | myDFPlayer.play(son); // joue le fichier son. | ||
+ | } | ||
+ | // déclenchement vert | ||
+ | if ((rouge>1500) & (vert<2000) & (bleu>2000)) { | ||
+ | son = 2; | ||
+ | Serial.print("son = "); | ||
+ | Serial.println(son); | ||
+ | myDFPlayer.play(son); // joue le fichier son. | ||
+ | } | ||
+ | // déclenchement bleu | ||
+ | if ((rouge>5000) & (vert>3500) & (bleu<2000)) { | ||
+ | son = 3; | ||
+ | Serial.print("son = "); | ||
+ | Serial.println(son); | ||
+ | myDFPlayer.play(son); // joue le fichier son. | ||
+ | } | ||
+ | // déclenchement jaune | ||
+ | if ((rouge<900) & (vert<900) & (bleu>1000)){ | ||
+ | son = 4; | ||
+ | Serial.print("son = "); | ||
+ | Serial.println(son); | ||
+ | myDFPlayer.play(son); // joue le fichier son. | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Catégories== | ==Catégories== | ||
[[Catégorie:Passerelle.infini]] | [[Catégorie:Passerelle.infini]] | ||
+ | |||
+ | [[Catégorie:Arduino]] |
Version actuelle datée du 15 janvier 2024 à 16:04
Sommaire
LE PROJET
Une quête sensible commence, à portée de mains: deux dispositifs. Ceux-ci sont des oeuvres et média pour créer une oeuvre sensorielle, en l'occurence, sonorisée et ce par le mouvement et la couleur. Ce projet est une création à partir de son(s) et de couleur(s) où chacun peut expérimenter les notions d'intérieur et d'extérieur à soi. L'utilisateur de ces objets est à la fois créateur et spectateur. Pas de passivité avec ces deux dispositifs vous pouvez ainsi voyager dans une autre dimension en écoutant seulement les différents modules sonores qui vous traverseront par le biais de la mouvance de votre propre corps ou par l'attraction d'une couleur sur laquelle vous aurez portez votre regard.
LE PUBLIC VISE
Tout public, avec un regard particulier envers les plus jeunes.
POURQUOI?
L'idée ici est de susciter les sens, la curiosité, la créativité. Créer un mouvement, une chorégraphie. Découvrir des sons qui nous sont étranger. Cohabiter avec l'espace qui nous entoure, en découvrir un autre ici et maintenant.
Le 1ER Dispositif serait une manière de générer du son dans un espace silencieux. Le 2ÈME dispositif serait un moyen de générer du son de manière plus solitaire (casque) dans un espace bruyant.
MONTAGE TECHNIQUE DES OBJETS
CUFF
Un manchon en polyéthylène moussé et cartonnage fermé avec du velcro.
Des matériaux électroniques :
- un capteur de position,
- un lecteur MP3 équipé d'une micro carte SD,
- un D1 mini,
- une batterie,
- un haut parleur
Code CUFF
1
2 /////////////////////
3 // TOUT EST SON //
4 /////////////////////
5 // TOUT EST SON est une Capteur de mouvement générateur de sons.
6 // Il a été réalisée dans le cadre du hackathon "Passerelle.infini" les 24 & 25 février 2022
7 // Le hackathon "Passerelle.infini" est organisé par le Centre d'Art Passerelle, Les petits débrouillards
8 // Avec la participation de Tyfenn Leluc - designeuse et Thibault Beugin formateur
9
10 // Le programme est inspiré du programme "Basic demo for accelerometer readings" de Adafruit MPU6050
11 /*
12
13 BROCHAGE
14 _________________
15 / D1 mini \
16 - |[ ]RST TX[ ]| -
17 - |[ ]A0 -GPIO RX[ ]| -
18 |[ ]D0-16 5-D1[X]| - SCL MPU6050
19 RX MP3-TF-16P |[X]D5-14 4-D2[X]| - SDA MPU6050
20 resistance 1K - TX MP3-TF-16P |[X]D6-12 0-D3[ ]| -
21 - |[ ]D7-13 2-D4[ ]| LED_BUILTIN
22 - |[ ]D8-15 GND[X]| - GND (MPU6050, MP3-TF-16P)
23 - |[ ]3V3 . 5V[X]| - MPU6050, MP3-TF-16P
24 | +---+ |
25 |_______|USB|_______|
26
27
28 +-------\_/--------+
29 +5V |[X] MP3-TF-16P [ ]|
30 resistance 1K - TX |[X] [ ]|
31 RX |[X] __________ [ ]|
32 |[ ]| |[ ]|
33 |[ ]| CARTE |[ ]|
34 Haut-Parleur |[X]| SD |[ ]|
35 GND |[X]| |[ ]|
36 Haut-Parleur |[X]| |[ ]|
37 |___|__________|___|
38
39
40
41 _________________
42 | MPU6050 ()|
43 +5V |[X]VCC |
44 GND |[X]GND G |
45 D1 |[X]SCL ___ Y |
46 D2 |[X]SDA | | | |
47 |[ ]XCA |___| 5 |
48 |[ ]XCL . 2 |
49 |[ ]ADO Y 1 |
50 |[ ]INT ->X | |
51 |_______________()|
52
53
54 Matériel :
55 - des fils dupont.
56 - un Wemos D1 mini
57 - un lecteur MP3 MP3-TF-16P
58 - une carte SD microSD
59 - un shield batterie 18650
60 - une batterie 18650
61 - un cable USB
62 - un capteur gyroscopique GY-521 MPU6050
63
64 ___
65 / ___ \
66 |_| | |
67 /_/
68 _ ___ _
69 |_| |___|_| |_
70 ___|_ _|
71 |___| |_|
72 Les petits Débrouillards - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
73 Antony Le Goïc-Auffret 25 février 2022
74 */
75
76
77 #include <Adafruit_MPU6050.h>
78 #include <Adafruit_Sensor.h>
79 #include <Wire.h>
80 #include "Arduino.h"
81 #include "SoftwareSerial.h"
82 #include "DFRobotDFPlayerMini.h"
83
84 // D6 est le RX du ESP8266, connecte au TX du MP3-TF-16P
85 // D5 est le TX du ESP8266, connecte au RX du MP3-TF-16P
86 SoftwareSerial mySoftwareSerial(14, 12); // RX, TX
87 DFRobotDFPlayerMini myDFPlayer;
88
89 long hasard; // declaration d'une variable long
90 int nombreDeSons = 4; // indiquer le nombre de sons sur la carte SD. Chaque fichier est numeroté 00X.
91
92
93 Adafruit_MPU6050 mpu;
94
95 float X;
96 float Y;
97 float Z;
98
99 int son = 0;
100
101 void initialisation(){
102 Serial.println();
103 Serial.println(F("TOUT EST SON"));
104 Serial.println(F("Initialisation du lecteur mp3 ... (peut prendre 3 a 5 secondes)"));
105
106 if (!myDFPlayer.begin(mySoftwareSerial)) { // utilise softwareSerial pour communiquer avec le MP3-TF-16P.
107 Serial.println(F("Incapable de demarrer:"));
108 Serial.println(F("1. Verifiez les connexions!"));
109 Serial.println(F("2. Inserez la carte SD!"));
110 while (true);
111 }
112 Serial.println(F("TOUT EST SON est prêt !"));
113
114 myDFPlayer.setTimeOut(500); // place la communication serie time out 500ms
115 myDFPlayer.volume(26); // regle le volume (de 0 a 30).
116 myDFPlayer.play(1); // joue le premier fichier son.
117 }
118
119 void setup(void) {
120 mySoftwareSerial.begin(9600);
121 Serial.begin(115200);
122
123 while (!Serial)
124 delay(10); // will pause Zero, Leonardo, etc until serial console opens
125
126 Serial.println("Adafruit MPU6050 test!");
127
128 // Try to initialize!
129 if (!mpu.begin()) {
130 Serial.println("Failed to find MPU6050 chip");
131 while (1) {
132 delay(10);
133 }
134 }
135 Serial.println("MPU6050 Found!");
136
137 mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
138 Serial.print("Accelerometer range set to: ");
139 switch (mpu.getAccelerometerRange()) {
140 case MPU6050_RANGE_2_G:
141 Serial.println("+-2G");
142 break;
143 case MPU6050_RANGE_4_G:
144 Serial.println("+-4G");
145 break;
146 case MPU6050_RANGE_8_G:
147 Serial.println("+-8G");
148 break;
149 case MPU6050_RANGE_16_G:
150 Serial.println("+-16G");
151 break;
152 }
153 mpu.setGyroRange(MPU6050_RANGE_500_DEG);
154 Serial.print("Gyro range set to: ");
155 switch (mpu.getGyroRange()) {
156 case MPU6050_RANGE_250_DEG:
157 Serial.println("+- 250 deg/s");
158 break;
159 case MPU6050_RANGE_500_DEG:
160 Serial.println("+- 500 deg/s");
161 break;
162 case MPU6050_RANGE_1000_DEG:
163 Serial.println("+- 1000 deg/s");
164 break;
165 case MPU6050_RANGE_2000_DEG:
166 Serial.println("+- 2000 deg/s");
167 break;
168 }
169
170 mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
171 Serial.print("Filter bandwidth set to: ");
172 switch (mpu.getFilterBandwidth()) {
173 case MPU6050_BAND_260_HZ:
174 Serial.println("260 Hz");
175 break;
176 case MPU6050_BAND_184_HZ:
177 Serial.println("184 Hz");
178 break;
179 case MPU6050_BAND_94_HZ:
180 Serial.println("94 Hz");
181 break;
182 case MPU6050_BAND_44_HZ:
183 Serial.println("44 Hz");
184 break;
185 case MPU6050_BAND_21_HZ:
186 Serial.println("21 Hz");
187 break;
188 case MPU6050_BAND_10_HZ:
189 Serial.println("10 Hz");
190 break;
191 case MPU6050_BAND_5_HZ:
192 Serial.println("5 Hz");
193 break;
194 }
195
196 Serial.println("");
197 delay(100);
198
199 initialisation();
200 }
201
202 void loop() {
203
204 /* Get new sensor events with the readings */
205 sensors_event_t a, g, temp;
206 mpu.getEvent(&a, &g, &temp);
207
208 X = a.acceleration.x;
209 Y = a.acceleration.y;
210 Z = a.acceleration.z;
211
212 /* Print out the values */
213 Serial.print("Acceleration X: ");
214 Serial.print(X);
215 Serial.print(", Y: ");
216 Serial.print(Y);
217 Serial.print(", Z: ");
218 Serial.print(Z);
219 Serial.println(" m/s^2");
220
221 Serial.println("");
222 delay(500);
223 // déclenchement X
224 if ((abs(X)>8) & (abs(Y)<8) &(abs(Z)<8)) {
225 son = 1;
226 Serial.print("son = ");
227 Serial.println(son);
228 myDFPlayer.play(son); // joue le fichier son.
229 }
230 // déclenchement Y
231 if ((abs(X)<8) & (abs(Y)>8) &(abs(Z)<8)) {
232 son = 2;
233 Serial.print("son = ");
234 Serial.println(son);
235 myDFPlayer.play(son); // joue le fichier son.
236 }
237 // déclenchement Z
238 if ((abs(X)<8) & (abs(Y)<8) &(abs(Z)>8)) {
239 son = 3;
240 Serial.print("son = ");
241 Serial.println(son);
242 myDFPlayer.play(son); // joue le fichier son.
243 }
244 }
WAVE
un détecteur composé de carton alvéolé double cannelure
des matériaux électroniques :
- un bouton poussoir,
- un capteur de Couleur GY-31,
- une batterie,
- un D1 mini,
- un lecteur MP3 équipé d'une micro carte SD,
- un haut parleur
Sources d'inspiration
- capteur de Couleur GY-31 : tuto https://electroniqueamateur.blogspot.com/2020/09/capteur-de-couleurs-tcs3200-gy-31-et.html
- lecteur mp3/Wave :https://www.wikidebrouillard.org/wiki/Item:DFPlayer_Lecteur_MP3
Code WAVE
1
2 /////////////
3 // WAVE //
4 /////////////
5 // WAVE est une Capteur de couleur générateur de sons.
6 // Il a été réalisée dans le cadre du hackathon "Passerelle.infini" les 24 & 25 février 2022
7 // Le hackathon "Passerelle.infini" est organisé par le Centre d'Art Passerelle, Les petits débrouillards
8 // Avec la participation de Tyfenn Leluc - designeuse et Thibault Beugin formateur
9 /*
10 Ce programme est inspiré du programme "Détection de couleur avec Arduino"
11 https://electroniqueamateur.blogspot.com/2020/09/capteur-de-couleurs-tcs3200-gy-31-et.html
12
13
14
15 +-----+
16 +----[PWR]-------------------| USB |--+
17 | +-----+ |
18 | GND/RST2 [ ][ ] |
19 | MOSI2/SCK2 [ ][ ] A5/SCL[ ] |
20 | 5V/MISO2 [ ][ ] A4/SDA[ ] |
21 | AREF[ ] |
22 | GND[ ] |
23 | [ ]N/C SCK/13[ ] |
24 | [ ]IOREF MISO/12[ ] |
25 | [ ]RST MOSI/11[X]~| - RX MP3-TF-16P
26 | [ ]3V3 +---+ 10[X]~| - resistance 1K - TX MP3-TF-16P
27 VCC | [X]5v -| A |- 9[ ]~|
28 GND | [X]GND -| R |- 8[ ] |
29 | [ ]GND -| D |- |
30 | [ ]Vin -| U |- 7[X] | - LED
31 | -| I |- 6[X]~| - OUT
32 | [ ]A0 -| N |- 5[X]~| - S3
33 | [ ]A1 -| O |- 4[X] | - S2
34 | [ ]A2 +---+ INT1/3[X]~| - S1
35 | [ ]A3 INT0/2[X] | - S0
36 | [ ]A4/SDA RST SCK MISO TX>1[ ] |
37 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] |
38 | [ ] [ ] [ ] |
39 | UNO_R3 GND MOSI 5V ____________/
40 \_______________________/
41
42
43 +-------\_/--------+
44 +5V |[X] MP3-TF-16P [ ]|
45 10 - resistance 1K - TX |[X] [ ]|
46 11 - RX |[X] __________ [ ]|
47 |[ ]| |[ ]|
48 |[ ]| CARTE |[ ]|
49 Haut-Parleur |[X]| SD |[ ]|
50 GND |[X]| |[ ]|
51 Haut-Parleur |[X]| |[ ]|
52 |___|__________|___|
53
54 7 2 3
55 __________|__|__|________
56 | () [ ][X][X][X][ ] () |
57 | INT LED S0 S1 VCC |
58 | GY-31 |
59 | _ - _ |
60 | ( ) / \ ( ) |
61 | / _ \ |
62 | ( |_| ) |
63 | \ / |
64 | ( ) \_ _ _/ ( ) |
65 | |
66 | GND OUT S2 S3 VCC |
67 | () [X][X][X][X][X] () |
68 |-------|--|--|--|--|-------|
69 GND 6 4 5 +5V
70
71 Matériel :
72 - des fils dupont.
73 - un Arduino UNO
74 - un capteur de couleur GY-31
75 - un lecteur MP3 MP3-TF-16P
76 - une carte SD microSD
77 - un shield batterie 18650
78 - une batterie 18650
79 - un cable USB
80
81 Schéma de l'Arduino en ASCII-ART CC-By http://busyducks.com/ascii-art-arduinos
82 Sous licence CC-By-Sa (http://creativecommons.org/licenses/by-nc-sa/3.0/)
83 */
84 /*
85 ___
86 / ___ \
87 |_| | |
88 /_/
89 _ ___ _
90 |_| |___|_| |_
91 ___|_ _|
92 |___| |_|
93 Les petits Débrouillards - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
94 */
95
96 // définitions des broches utilisées sur l'Arduino
97 #define brocheS0 2
98 #define brocheS1 3
99 #define brocheS2 4
100 #define brocheS3 5
101 #define brocheLecture 6
102 #define brocheLED 7
103
104 #include "Arduino.h"
105 #include "SoftwareSerial.h"
106 #include "DFRobotDFPlayerMini.h"
107
108 // 10 est le TX de l'arduino, connecte au TX du MP3-TF-16P
109 // 11 est le RX de l'arduino, connecte au RX du MP3-TF-16P
110 SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
111 DFRobotDFPlayerMini myDFPlayer;
112
113 // valeur mesurée pour chaque couleur
114 int rouge, vert, bleu, total, son;
115
116 void initialisation(){
117 Serial.println();
118 Serial.println(F("Wave"));
119 Serial.println(F("Initialisation du lecteur mp3 ... (peut prendre 3 a 5 secondes)"));
120
121 if (!myDFPlayer.begin(mySoftwareSerial)) { // utilise softwareSerial pour communiquer avec le MP3-TF-16P.
122 Serial.println(F("Incapable de demarrer:"));
123 Serial.println(F("1. Verifiez les connexions!"));
124 Serial.println(F("2. Inserez la carte SD!"));
125 while (true);
126 }
127 Serial.println(F("WAVE est prêt !"));
128
129 myDFPlayer.setTimeOut(500); // place la communication serie time out 500ms
130 myDFPlayer.volume(26); // regle le volume (de 0 a 30).
131 myDFPlayer.play(1); // joue le premier fichier son.
132 }
133
134 void setup() {
135
136 pinMode(brocheS0, OUTPUT);
137 pinMode(brocheS1, OUTPUT);
138 pinMode(brocheS2, OUTPUT);
139 pinMode(brocheS3, OUTPUT);
140 pinMode(brocheLED, OUTPUT);
141 pinMode(brocheLecture, INPUT);
142
143 // éteignons les LEDs pour l'instant
144 digitalWrite(brocheLED, LOW);
145
146 // Réglage de l'échelle de fréquence à 2% (plus facile à lire avec pulseIn)
147 digitalWrite(brocheS0, LOW);
148 digitalWrite(brocheS1, HIGH);
149
150 mySoftwareSerial.begin(9600);
151 Serial.begin(115200); // initialise la connexion serie vers le PC a 115200 bauds
152
153 initialisation();
154 }
155
156
157 void loop() {
158
159 digitalWrite(brocheLED, HIGH); // on allume les LEDs
160
161 digitalWrite(brocheS2, LOW); // rouge
162 digitalWrite(brocheS3, LOW);
163 rouge = pulseIn(brocheLecture, LOW);
164
165 Serial.print("rouge: ");
166 Serial.print(rouge);
167
168 digitalWrite(brocheS2, HIGH); // vert
169 digitalWrite(brocheS3, HIGH);
170 vert = pulseIn(brocheLecture, LOW);
171
172 Serial.print(" vert: ");
173 Serial.print(vert);
174
175 digitalWrite(brocheS2, LOW); // bleu
176 digitalWrite(brocheS3, HIGH);
177 bleu = pulseIn(brocheLecture, LOW);
178
179 Serial.print(" bleu: ");
180 Serial.println(bleu);
181
182 digitalWrite(brocheS2, HIGH); // lumière complète, sans filtre
183 digitalWrite(brocheS3, LOW);
184 total = pulseIn(brocheLecture, LOW);
185 /*
186 Serial.print(" total: ");
187 Serial.println(total);
188 */
189 digitalWrite(brocheLED, LOW); // on éteint les LEDs
190 delay(1000); // pause avant la prochaine mesure
191
192 // déclenchement rouge
193 if ((rouge<1200) & (vert>2000) & (bleu>2000)) {
194 son = 1;
195 Serial.print("son = ");
196 Serial.println(son);
197 myDFPlayer.play(son); // joue le fichier son.
198 }
199 // déclenchement vert
200 if ((rouge>1500) & (vert<2000) & (bleu>2000)) {
201 son = 2;
202 Serial.print("son = ");
203 Serial.println(son);
204 myDFPlayer.play(son); // joue le fichier son.
205 }
206 // déclenchement bleu
207 if ((rouge>5000) & (vert>3500) & (bleu<2000)) {
208 son = 3;
209 Serial.print("son = ");
210 Serial.println(son);
211 myDFPlayer.play(son); // joue le fichier son.
212 }
213 // déclenchement jaune
214 if ((rouge<900) & (vert<900) & (bleu>1000)){
215 son = 4;
216 Serial.print("son = ");
217 Serial.println(son);
218 myDFPlayer.play(son); // joue le fichier son.
219 }
220
221
222 }