======= Plantes sonores et vidéos - Capteur capacitif interne à la carte Arduino ======= * **Porteur(s) du projet** : Justine Gendreau (DSAA DG2), Damien MUTI DESGROUAS (Prof. de Numérique) * **Date** : 05/2021 * **Contexte** : Macroprojet - 2021 * **Fichiers** : * **Lien** : * **Capteurs/Actionneurs** : * Une seule carte Arduino Uno * Résistances 1MO * Fils * 1 Bread Board ---- {{:wiki:flossmanuals:capacitif_pante_son_video:projet_plantaphonique_plan_de_travail_1.png|}} {{:wiki:flossmanuals:capacitif_pante_son_video:projet_plantaphonique-02.png|}} ===== Intentions ===== Dans le cadre de mon Macro-projet qui s’articule autour du jardin numérique mon intention a été de concevoir un cabinet de curiosité dans lequel le spectateur serait confronté à plusieurs expérimentations autour de la thématique de la plante digitalisée. L’expérimentation dont je vais vous expliciter s’intitule « Planta-phonique ». Cette expérimentation a germée tout d’abord avec cette envie de rendre visible l’invisible comme par exemple entendre le son d’une rose qui pousse. ===== Objectifs ===== L’objectif de mon expérimentation est d’intégrer la part du vivant dans mes réalisations quelle soit humaine ou végétale. Pour ce faire, j’ai souhaité confectionner une table de mixage qui produit du son et envoie de la vidéo par des interactions avec la main. Cette table de mixage est entièrement composée de plantes dont chacune, un son et une vidéo peut lui être associés. Cette installation rend audible et visible le chant des plantes. Les plantes agissent ici comme une interface. ===== Références ===== Pour ce projet je me suis inspirée de Jean Thoby un pépiniériste qui voue une véritable passion pour le monde végétale. Jean Thoby avec l’aide d’ingénieurs, ont créer un instrument de musique. Par un système de boitier et de câbles (l’un fixé au sol et l’autre accroché à la plante) ils ont réussit à mesurer la résistance électrique afin de réaliser une traduction sonore de l’activité interne du vivant. Cette création renvoie l’illusion d’une forme de vie par un ornement sonore étrange. Cette partition végétale teintée de variations, de notes secondaires et de rythmes déstructurés retranscrit de manière métaphorique l’état de santé des plantes. ===== Protocole pour 8 plantes: ===== {{:wiki:flossmanuals:capacitif_pante_son_video:shema_dessin2.jpg?800|}} ===== Installation: ===== {{:wiki:flossmanuals:capacitif_pante_son_video:shema_arduino.png?800|}} Une fois les câbles bien branchés sur la BreadBoard, insérer les trois autres fils dans les plantes. Vérifiez bien que la terre est assez humide pour que les plantes puissent être conductrices. {{:wiki:flossmanuals:capacitif_pante_son_video:branchement-03.png|}} {{ :wiki:flossmanuals:capacitif_pante_son_video:vid_20210622_175714.mp4 |}} ===== À Télécharger ===== **Ensemble des programmes Processing et Arduino :** * {{ :wiki:flossmanuals:capacitif_pante_son_video:test_7plantes_sonores.zip |}} **Télécharger et installer les librairies Processing sur l'IDE :** * [[https://processing.org/reference/libraries/video/index.html|Vidéo]] * [[https://processing.org/reference/libraries/video/index.html|Sound]] * [[https://processing.org/reference/libraries/serial/index.html|Serial]] **Problèmes récurrents :** * Vérifier si c'est bien le bon port série. * Si vous utilisez un mac laissez charger le programme pendant plusieurs minutes. * Attention aux vidéos et musiques trop lourdes. * Et si le programme ne marche toujours pas, vérifiez l'état de la connectique : les fils ne sont peut-être plus conducteurs ou la résistance n'est peut-être pas la bonne ? ===== Code ===== **1** => **Processing :** __test_7plantes_sonores > Gestion_interactivite.pde__ /** Plante sonore - Justine Gendreau * Programme Muti */ /// librairies import processing.sound.*; import processing.video.*; import processing.serial.*; // variables globales PImage im; // une image SoundFile[] son; // un son - un seul lecteur CD audio Movie vid; // une vidéo - un seul lecteur DVD vidéo // bouton image active ? // est-ce que l'image est active ? Si oui, on affiche l'image boolean animation_active = false; // true ou false (2 valleurs possibles) => 1 bit (0 ou 1) // bouton son actif ? boolean son_actif = false; float tempsDebutSon = 0; // temps du début de la musique a été joué // bouton videos active ? boolean video_active[]; /// dialogue avec la carte Arduino Serial myPort; // Create object from Serial class int inBuffer; // Data received from the serial port int donneePortSerie; // entier converti de la chaine de caractère reçue sur le port série // seuil de détection float seuil = 300; // port serie int nPlantes = 8;///////////////////// METTRE LE BON NOMBRE DE CAPTEURS /////////////// int[] serialInArray = new int[nPlantes]; // Where we'll put what we receive int serialCount = 0; // A count of how many bytes we receive int[] plante; // valeur lue pour chaque plante via le port série et Arduino boolean firstContact = false; // Whether we've heard from the microcontroller // média associés aux plantes String[] nomSonPlante; String[] nomvideosPlante; void setup() { // initialisation des paramètres d'affichage & chargement des sons, vidéos, etc. size(1300, 860); noStroke(); background(0); // initialisation des variables globale im = loadImage("images/chien.jpg"); // création et initialisation de tableau de valeur "plantes" plante = new int[nPlantes]; for (int i=0; i lancer l'animation "image" animation_active = true; } else { animation_active = false; } } void lancerAnimation() { float x = 30 + random(-20, 20); // random sur la position float y = 30 + random(-20, 20); image(im, x, y, 200, 200); } ////////////////////////////////////// Méthodes /////////////////////////////// void movieEvent(Movie movie) { //// gestion de la vidéo vid.read(); } **3** => **Processing :** __test_7plantes_sonores > SerialEvent.pde__ void serialEvent(Serial myPort) { // read a byte from the serial port: int inByte = myPort.read(); // if this is the first byte received, and it's an A, // clear the serial buffer and note that you've // had first contact from the microcontroller. // Otherwise, add the incoming byte to the array: if (firstContact == false) { if (inByte == 'A') { myPort.clear(); // clear the serial port buffer firstContact = true; // you've had first contact from the microcontroller myPort.write('A'); // ask for more } } else { // Add the latest byte from the serial port to array: serialInArray[serialCount] = inByte; serialCount++; // If we have 3 bytes: if (serialCount > nPlantes-1 ) { for (int i=0; i seuilDetection ) { //Turn on the led digitalWrite(ledPin, HIGH); // plante i activée return 255; } //Touch undetected else { //Turn off the led digitalWrite(ledPin, LOW); // plante i inactivée return 0; } }