P58 Transformation des spectateurs d’un concert en afficheur géant interactif
Présentation générale du projet
Contexte
Les évènements type spectacles sont de plus en plus créatifs pour en mettre plein les yeux de ces participants. Pour cela, les artistes n'hésitent plus à faire appel à de nouvelles technologies. Ce projet consiste à transformer chaque membre du public en pixel, permettant l'affichage d'une image dans l'assistance et à le faire participer au show. Chaque spectateur sera donc équipé d'un bracelet affichant une certaine lumière au moment voulu. Il fait suite au projet Capteur Communicant Intelligent. Ce genre de procéder existe avec des connexions infrarouge comme le fait pixmob, mais nous verrons que cette technologie ne permet pas de réaliser une image précise.
Objectif
Chaque bracelet sera équipé d'une carte comprenant un accéléromètre, des LEDs et une antenne, qui sont gérés par un microcontrôleur CC430. Le premier objectif, et le plus important consistera à identifier la place du porteur de bracelet. Pour cela, il faudra le localiser, premièrement de façon absolue, puis si possible, puis de façon relative par rapport aux autres bracelets. Le second objectif consistera à afficher une image, et donc à adapter la couleur de la LED à l'image en fonction de la position trouvée précédemment. Le principe de localisation développé pourra trouvé d'autres applications, comme dans le milieu industriel : on pourrait envisager des optimisations d'itinéraire ou de planification en fonction de la position du matériel, par exemple.
Cahier des charges
On dispose donc de cartes de l'IRCICA, équipés d'un microcontrôleur de type MSP430 gérant :
- un accéléromètre pour détecter les mouvements du porteur
- des LEDs permettant l'affichage du pixel
- une antenne permettant la communication et la localisation
On souhaite une localisation précise à 80cm près, correspondant à l'espace entre les sièges. Cela laisse donc une certaine marge, mais on essaiera d'être le plus précis possible. On considère que les personnes resteront à la même place tout au long du spectacle, ce qui signifie que l'opération de localisation peut être faite une seule fois au début.
Les codes d'émissions et de réception radio des cartes existent déjà, ils ne seront donc pas à refaire.
Conception et développement
Méthode
Nous commencerons par nous intéresser à la localisation, qui sera l'objectif le plus compliqué car la méthode à utiliser n'est pas certaine. Étant à temps complet sur ce projet, j'établirai ce wiki sous forme de phases plutôt que de séances. Nous allons donc voir les phases successives de réalisation du projet dans leur ordre chronologique. Chaque phase comprendra une partie explicative puis une partie applicative.
Phases d'élaboration
Phase 1 : Définition d'une technique de localisation indoor
Pour localiser les bracelets, nous voudrions nous servir de trois cartes émettant des signaux radios sur plusieurs fréquences. Le bracelet recevra alors ces signaux à une puissance dépendant de la distance à laquelle il se situe des cartes émettrices. Selon un algorithme développé par des chercheurs de l'IRCICA, on pourra alors trouver la position du bracelet en fonction de la position des émetteurs.
'Photo de l'équipement'
Phase 2 : Prise en main
La première réalisation a été de prendre en main le matériel et définir le projet. Après avoir étudié tous les documents techniques, les codes existants ainsi que le projet précédent, j'ai pu disposé du matériel et enfin effectuer différents tests pour analyser le fonctionnements des équipements. J'ai alors rencontrer plusieurs difficultés pour avoir un retour, car la sortie du microcontrôleur de la carte était difficilement accessible. J'ai ensuite pu utiliser la carte Olimex MSP430-CCRF contenant le même CC430F5137, et une sortie permettant une lecture UART plus facile.
'Photo de la nouvelle carte'
Phase 3 : Tests de localisation
Une fois le matériel pris en main, j'ai pu réaliser des tests afin de voir les résultats donnés par l'algorithme des chercheurs de l'IRCICA. Pour cela, il a fallu faire des tests sur des bandes de fréquence différentes (cf. Extrait 1) et à des positions différentes. Ces tests sont très chronophages car l'émission à toutes les fréquences est longue et la réception est souvent perturbée, et on veut un maximum de données afin d'être le plus précis possible. Une fois ces essais terminés, on m'a demandé de les refaire avec une bande de fréquence plus grande, car celle utilisée n'était pas suffisante pour avoir des résultats concluant.
for(i = CHANNEL_START; i <= CHANNEL_STOP; i += CHANNEL_STEP){ //defined in RF1A.h set_color(0xFF, 0x00, 0x00); __delay_cycles(50000); set_color(0x00, 0x00, 0x00); ChangeChannel(i); //Set channel ReceiveOff(); __delay_cycles(1000000); //Let the receiver to change freqency send_cmd('f', i+CHANNEL_STEP); //Advertise receiver to change channel __delay_cycles(DELAY); }
Phase 4 : Localisation relative
En attendant les résultats des tests précédents, on envisage une deuxième localisation afin de préciser la position du bracelet. Pour cela, on imagine une émission tour par tour des bracelets pendant que tous les autres écoutent. On peut ainsi voir lesquels reçoivent et régler les erreurs potentielles des premiers tests. On imagine donc le protocole suivant :
- 1 - Émission des tourelles pour la localisation absolue
- 2 - Calcul de la position avec l'algorithme en fonction des données sur chaque bracelet
- 3 - Émission des résultats tour à tour
- 4 - Émission tour à tour des différents émetteurs pendant que les autres écoutent
- 5 - Stockage des ID des trames reçus
- 6 - Transmission des données aux tourelles tour à tour
- 7 - Vérification des positions et rectification des erreurs
Il s'agit donc pour cette partie de développer les étapes 4, 5 et 6. On se basera sur l'algorithme utilisé pour le projet précédent mentionner en introduction.
Suite à une analyse, j'ai réaliser que les étapes 2 et 3 pouvaient être fusionnées. En effet, si on choisit de faire écouter chaque bracelet en même temps que chacun émet sa position, on évite une transmission inutile, et surtout une perte de temps.
Les étapes 3/4 et 5 sont développées, mais j'ai rencontré beaucoup de problème dès que j'essaie de créer une afin de recevoir les données des bracelets sur les tourelles, celles-ci ce déclenche instantanément. Je décide donc de me consacrer à la rédaction du rapport pour la dernière journée.
Code Final
- Archive du code développé : Fichier:Transmission RF.zip
- Documentation :
- Guide pour la programmation du CC430F5137 : Fichier:CC430usersguide.pdf
- Aide au changement de la fréquence de base : Fichier:Swra315.pdf