Contexte
Ce projet a été réalisé dans le cadre de la première semaine d’intersemestre 2015 au Téléfab par : Saad Belkhadir Mellas, Mehdi Mouayad étudiants de Télécom Bretagne, et Chloé Amiot, Léa Geay, Ronan Lecrosnier, Sarah Penanhoat étudiants de l’EESAB.
Téléfab
Etudiants de Télécom Bretagne et de l’EESAB – Site de Brest
Du 19 janvier au 23 janvier 2015
de quoi s’agit-il ?
Ce projet est une interface qui permet, via interaction avec les différents capteurs, le contrôle de certains paramètres d’une vidéo ou d’un son. Ce projet met en œuvre deux parties, qui fonctionnent d’une façon synchrone, partie matérielle et partie logicielle.
Matériels Utilisés :
- Deux cartes arduino
- Deux capteurs à ultrasons (distance)
- Un accéléromètre
- Un capteur d’inclinaison
- Boîte
- Ordinateur pour utiliser Max7
- Des fils, câbles usb
- Une boite de carton
- Plastique
- Peinture
Mise en oeuvre :
1 – Partie Logicielle :
A – Logiciel Max :
Sur le logiciel Max, une playlist est chargée avec au choix des vidéos ou des sons. Un premier capteur à ultrasons, réagissant à la distance, permet la lecture d’un des extraits de la playlist.
Le capteur d’inclinaison sert à choisir entre le mode accélérer ou le mode rembobiner et un second capteur de distance permet de faire varier la vitesse.
Enfin l’accéléromètre permet d’interrompre la vidéo ou le son en cours, et d’en choisir une nouvelle.
Perspectives d’améliorations
Le système à tendance à ralentir et se figer dès lors que les cartes arduino sont connectées. Nous n’avons pas réussi à isoler le problème mais il doit être possible de rendre le fonctionnement plus fluide.
Notre patcher sous Max est conçu pour autoriser trois éléments dans sa playlist mais il est bien sur possible de le modifier pour ajouter davantage de fichiers. La limitation est que le capteur de distance étant assez peu précis, plus il y aura d’éléments, plus le choix entre eux sera hasardeux.
En connectant un clavier midi à l’ordinateur, il est possible de rajouter des effets. Il faut alors appuyer sur une touche du clavier pour ordonner à Max de router les données arduino vers un autre effet. (voir l’image suivante)
B – Microcontrôleurs:
Nous avons utilisé deux cartes Arduino, la première sert à récupérer la distance calculée par les deux capteurs ultrasons et les mettre en entrée du logiciel Max, pour les fonctions citées en haut. La 2ème carte met en entrée la valeur de l’inclinaison et les accélérations suivant les 3 axes de l’espace.
Voilà les codes utilisés :
pour la 1ere carte :
int duration1; int distance1; int srfPin1 = 2; int duration2; int distance2; int srfPin2 = 4; int led=13; void setup() { Serial.begin(9600); pinMode(led,OUTPUT); } void loop() { pinMode(srfPin1, OUTPUT); digitalWrite(srfPin1, LOW); delayMicroseconds(2); digitalWrite(srfPin1, HIGH); delayMicroseconds(10); digitalWrite(srfPin1, LOW); pinMode(srfPin1, INPUT); duration1 = pulseIn(srfPin1, HIGH); distance1 = duration1 / 58; Serial.print('a'); Serial.println(distance1); pinMode(srfPin2, OUTPUT); digitalWrite(srfPin2, LOW); delayMicroseconds(2); digitalWrite(srfPin2, HIGH); delayMicroseconds(10); digitalWrite(srfPin2, LOW); pinMode(srfPin2, INPUT); duration2 = pulseIn(srfPin2, HIGH); distance2 = duration2 / 58; Serial.print('b'); Serial.println(distance2); if(distance1<190) { digitalWrite(led, HIGH); // allume la LED } else{ digitalWrite(led, LOW); // éteinds la LED } delay(10); }
pour la 2ème carte:
#include <Wire.h> #include "MMA7660.h" MMA7660 accelemeter; int t; void setup() { accelemeter.init(); Serial.begin(9600); pinMode(13, OUTPUT); pinMode(5, INPUT); pinMode(7, INPUT); } void loop() { int8_t x; int8_t y; int8_t z; float ax,ay,az; accelemeter.getXYZ(&x,&y,&z); Serial.print("x = "); Serial.println(x); Serial.print("y = "); Serial.println(y); Serial.print("z = "); Serial.println(z); accelemeter.getAcceleration(&ax,&ay,&az); Serial.println("accleration of X/Y/Z: "); Serial.print(ax); Serial.println(" g"); Serial.print(ay); Serial.println(" g"); Serial.print(az); Serial.println(" g"); int s = (ax*ax)+ ay*ay + az*az; Serial.print('a'); int r = abs(ax)*60; Serial.println(r); Serial.println("*************"); if (digitalRead(5)==HIGH) { t=0; Serial.print('b'); Serial.println(t); delay(200); } if (digitalRead(5)==LOW) { t=1; Serial.print('b'); Serial.println(t); delay(200); } delay(500); }
2 – Partie Matérielle :
les deux capteurs ultrason, accéléromètre et inclinomètre ont été branché avec les Arduino comme le montre les images en dessous :
Finalement l’ensemble des pièces a été monté dans une boite et branché avec l’ordinateur :
Conclusion
Une démonstration publique a été réalisé le vendredi 23 janvier, au centre vie, après 4 jours de préparation. une faiblesse a été constaté: les liaisons port série avec les cartes Arduino et l’exécution du logiciel MAX font planter l’ordinateur utilisé après un certain temps d’utilisation.
quelle est la fonction principale de « serial begin »
Et MERCI
en attendant une réponse le plus vite possible s’il vous plait