Arbalet St-Jean (fr)


#1

Contexte, acteurs et objectifs

Notre groupe de 12 étudiants du Club Innovation de l’IUT de Bordeaux a été associé au projet Arbalet Saint Jean sur le thème du Pixel Art. Plusieurs acteurs se sont unis en conséquence pour le mener à bien : SNCF Gares et Connexions, la fondaiton Bordeaux Université, le Club Innovation de l’IUT regroupant les départements GMP, GEII et INFO, sous la maîtrise d’œuvre de l’association Arbalet Living Lab qui a proposé le projet.

Nous avons quatre mois d’octobre à février pour imaginer, concevoir et fabriquer Arbalet Saint Jean qui sera exposé à la gare SNCF. Nous rédigerons ici notre carnet de bord à chaque séance de travail rédigé tour à tour par un étudiant du groupe.

Le mur de pixel est composé de leds et doit suivre le principe déjà développé par le projet Arbalet : faire du pixel-art de manière animée, artistique, esthétique et destinée au divertissement (Le mur doit proposer des jeux, par exemple). Le projet doit également être programmable et re-programmable afin de s’améliorer durablement. Ainsi, nous devrons suivre des contraintes liées à un cahier des charges fonctionnelles en matière de dimensions, de sécurité (le mur est installé dans un endroit publique et verra passer devant lui 30 000 voyageurs par jour). À terme, le mur devra mesurer environ 1,5m * 2m.

Un prototype fonctionnel du projet devra être livré avant noël à la gare pour être soumis aux tests. Des améliorations du projet seront ensuite ajoutées grâce à un second prototype qui restera au département et qui nous permettra de travailler dessus directement à l’IUT.


#2

Séance 1 :

Nous devions définir certaines technologies selon quelques questions :

1) Quelle est la différence entre un micro-contrôleur et un micro-ordinateur ?
Un ordinateur traite des informations grâce à un système d’exploitation et ses composants, notamment le processeur.
Un micro-contrôleur est un circuit intégré (il possède sa propre mémoire RAM, sa mémoire etc.), il est moins cher mais est moins performant qu’un processeur et n’a pas de système d’exploitation à cause de sa petite capacité de mémoire.

2) Qu’est qu’un Arduino, comment s’en servir, quelle est la philosophie d’Arduino?
Arduino est une société qui fabrique des circuits imprimés qui possèdent un micro-contrôleur. Tous ces composants sont libres (à part le micro-contrôleur), ce qui signifie qu’on peut apporter des modifications au système afin de s’en servir comme bon nous semble. Ainsi il à plusieurs applications : la domotique, l’électronique etc. le mot d’ordre étant la facilité d’utilisation.

3) Qu’est ce qu’un protocole SPI ou I2D ?
Il s’agit de protocoles qui définissent la manière dont l’information est transmise entre les systèmes.
- Le protocole SPI utilise 3 câbles : 1 clock (qui donne la cadence de transmission des informations), un câble de transmission de l’information du système maître vers le système esclave (le maître ne peut communiquer qu’avec un esclave à la fois), et un câble de transmission de l’information du système esclave vers le système maître (les esclaves ne peuvent pas communiquer entre eux).
- Le protocole I2D à la même fonction que le protocole SPI mais n’utilise que 2 câbles : 1 câble transmet la cadence et l’information du système maître vers esclave en même temps, l’autre câble transmet l’information du système esclave vers le système maître. Ce protocole offre ainsi une synchronisation de l’information.

4) Qu’est ce que la technologie Daisy Chain ?
Il s’agit de la transmission physique d’information entre 2 ordinateurs au sein d’une même chaîne (grâce à des câbles). Il y a un câble de l’ordinateur 1 vers 2 puis de 2 vers 3 etc. Ainsi l’ordinateur 2 pourra communiquer avec l’ordinateur 5 par exemple.

5) Qu’est ce qu’un espace de couleur ? Qu’est ce qu’un espace de couleur RVB et HSB ?
Un espace colorimétrique RVB est une représentation des couleurs dans un système de synthèse définie dans un repère à 3 dimensions.
HSB est un système de codage des couleurs selon leur valeur dans le cercle colorimétrique.

  • H : parcourir les couleurs dans le spectre.
  • S : gérer la saturation.
  • B : gérer la luminosité.

6) Qu’est ce que la loi d’ohm ? Quelle est la différence entre intensité et tension ?
La loi d’ohm est utilisée en électronique pour calculer la tension du circuit grâce à la relation U = R*I avec U la tension, R la résistance et I l’intensité du courant.
La tension d’un circuit est la différence de « niveau électrique » entre les bornes d’un dipôle (par exemple entre la borne + et – d’une pile), la tension est fixe et ne change pas au sein d’un même circuit. L’intensité, est le « débit » d’électrons dans le circuit, quand un circuit comporte plusieurs dipôles consommateurs d’électricité, le « débit » d’électrons doit être logiquement plus conséquent.

7) Qu’est ce que l’IoT ?
Il s’agit simplement des échanges d’informations dans des dispositifs liés à Internet (notamment grâce aux technologies Sigfox et LoRa car ils présentent une faible consommation d’énergie).

8) Qu’est qu’un bus de données informatiques ?
Il s’agit de conducteurs numériques qui servent à transmettre les données au sein d’un système numérique. Il est ainsi utilisé pour communiquer.

9) Qu’est que LPWAN, Sigfox et LoRa ?
Ce sont des protocoles de communication sans fils à basse consommation d’énergie (et donc aussi à bas débit) qui utilisent des antennes.

10) Définir un octet et un bit ?
Un bit est la contraction de binary digit qui veut dire chiffre binaire, en effet un bit ne peut prendre que deux valeurs : 0 ou 1. C’est un élément de base en informatique. Un octet est un « groupe » de 8 bits. Une information est toujours codée au minimum sur un octet, jamais en bits « seuls ».

11) Définition de signal analogique et numérique :
Un signal analogique est un signal continu qui varie au court du temps (il comporte une infinité de valeurs). Un signal numérique ne contient que des valeurs discrètes codées en binaire (il est donc parfois moins précis que le signal analogique). Le passage du signal analogique à numérique se fait grâce à un CAN (convertisseur analogique-numérique). Le signal va passer par 3 étapes : échantillonnage, quantification et codage.

12) Qu’est ce que la programmation impérative VS la programmation orientée objet ?
On fait de la programmation impérative quand on manipule des types de variable abstraits, il s’agit d’organiser les fonctions de son programme. La programmation orientée objet est plus destinée à créer des objets dans le programme et se reconnaît par l’organisation des objets dans le programme par les méthodes utilisées sur ces objets (grâce à des classes notamment).


#3

Séance 2

Fonctionnement simplifié

Nous allons relier les LED de chaque pixels par des relais, puis relier ces relais à un ordinateur de contrôle.

Pour les entrées/sorties, les périphériques (eg. un joystick) seraient reliés à l’ordinateur de contrôle, qui à son tour donnerait des ordres aux microcontrôleurs, et à leur tour aux LEDs.

Analyse fonctionnelle

1. Diagramme des cas d'utilisation

On voit trois groupes d’utilisateurs ; on s’intéresse aux actions qu’ils peuvent effectuer face au Mur.

  • Voyageurs
    → Jouer
    → Observer
    → Commenter
  • Internautes
    → Commenter
    → Mettre à jour
    → Publier (proposer de nouvelles animations)
    → Simuler (avant de publier)
  • Techniciens SNCF
    → Diagnostiquer

2. Domaines

2.1. LED & Alimentation

Il existe plusieurs sortes de LED, 3V, 12V ou 220V. Une tension de plus de 50V étant dangereuse pour les humains, nous ne dépasserons pas les 12V.
Les LEDs se trouvent soit par rubans de 30 LED/m, 50 LED/m ou 60 LED/m.

Au niveau de l’alimentation, il faut pouvoir convertir le 230V~ en 12V-. Il faut aussi s’assurer que l’intensité du courant ne dépasse pas 2A (risque d’incendie).

2.2. Support

D’après l’ERP (Établissement Recevant Public), cinq niveaux de sécurité face aux risques d’incendie existent, de M0 (incombustible) à M4 (très facilement inflammable).
Nous avons donc choisi en premier lieu de construire le support du projet en bois ignifugé M1 ; mais le responsable du département GMP, qui va se charger du montage, nous a conseillé un aliage de zinc et d’acier, ou de l’innox à la place, car le département GMP est orienté métaux. L’innox a comme avantage de ne pas nécessiter de peinture, mais il coûte plus cher.

De l’aluminium a été conseillé pour les réflecteurs (le quadrillage entre les pixels), et la position de l’ordinateur de contrôle se pose toujours.

2.3. Intéractions

Comment l’utilisateur va-t-il intéragir avec Arbalet ?

Nous avons tout d’abord pensé à un joystick ou une manette (type console de salon). Ces dispositifs sont peu coûteux et simples à gérer, mais peu orignaux.

Une tablette tactile pourrait aussi être un bon périphérique pour choisir l’animation, etc. La technologie tactile est cependant fragile, ce qui peut poser problème dans le contexte d’une gare.

Un dispositif de Leap Motion pourrait aussi être intéressant ; son aspect et son fonctionnement sans contact en font un objet très futuristique dont l’aura irait parfaitement avec l’aspect du mur. Cependant, les prérequis sont importants ; Windows 7+ ou Mac uniquement, 2Go de RAM, un processeur i3, i5 ou i7.

Un point d’accès Wi-Fi offrant une site internet simplifié pourrait être avantageux. Simple à mettre en place, il permet à n’importe qui équipé d’un smartphone d’intéragir, sans nécessiter de télécharger d’application, ce qui est très avantageux pour l’utilisateur. Une interface simple pourrait permettre de choisir l’animation à jouer dans la liste.

2.4. Contrôle

Le mur sera probablement opéré par un Raspberry Pi (ordinateur équipé pour intéragir avec des micro-controleurs). Le Raspberry tourne sous Raspbian (Linux), et permet grâce au port GPIO (General Purpose In Out) de communiquer avec les micro-controleurs en daisy chain.

Chaque micro-controleur serait équipé de 4 LEDs et serait numéroté de sorte que le centre de contrôle puisse leur parler indépendamment.

2.5. Site web

Le site web permettrait aux internautes de modifier leurs programmes ou de les publier sur la base de données d’Arbalet pour qu’ils soient utilisables dans la gare. Il sera équipé d’un espace pour modifier le code, d’un choix de difficulté (pour utiliser une version plus ou moins simplifiée de l’API), et d’un simulateur pour pouvoir tester le programme chez soi.

Les programmes seront alors envoyés aux modérateurs, qui pourront les accepter ou les refuser. À partir de ce moment-là, il sera possible de les afficher sur le mur dans la gare.

Pour la prochaine fois

Nous allons préparer le cahier des charges à l’attention de GMP et aller les rencontrer pour obtenir leur avis.


#4

Séance 3 :

Pour cette troisième séance nous avons vérifier la bonne cohérence du cahier des charges, conçu des circuits Arduino dont un feu tricolore ainsi que visiter le DUT GMP qui vont concevoir la partie matérielle du projet Arbalet St-Jean.

I. Vérification du cahier des charges

Nous avons eu le droit à une explication du cahier des charges avec ses contraintes :

  • Définition de la fonction principale (FP) et fonction contrainte (FC)
  • FP : contenir le rectangle qui contient les pixels
  • FC : résister à la chaleur, pouvoir s’ouvrir pour la maintenance
  • Critère : qui va définir l’intitulé, pour y mettre des unités
  • On a ajouté des choses dans le tableau “Caractérisation”

Mais aussi d’une bonne partie de la liste des matériaux après notre travail de recherche :

  • Contour de l’armoir en acier zingué (résistance feu : M0)
  • Intérieur avec une couche d’aluminium (M0)
  • Placer LEDs dans Polycarbonate (M1)
  • Caisson de la même largeur que l’écran et longueur de celle du panneau d’affichage pour placer l’alimentation en dessous du panneau d’affichage
  • Alimentation reliée à une prise murale

II. Utilisation des circuits Arduino

Nous avons eu carte blanche pour comprendre et créer un circuit via l’Arduino. Un groupe à eu l’idée de créer un feu tricolore à l’aide de trois leds (rouge, jaune et verte), ainsi qu’un système d’alerte sonore pour les personnes mal-voyantes grâce à un buzzer. Voici le résultat final :

On travaille sur la partie #Arduino au #DutInfo @arbalet_project @ClubInnoUB pic.twitter.com/1rDCm5ZHXc

— EL QUEBAS (@hellamphi) 19 octobre 2017

III. Rencontre avec les GMP pour la partie matérielle

Pour finir nous sommes allés rencontrer les étudiants du DUT Génie Mécanique et Production qui vont concevoir la partie matérielle du projet Arbalet St-Jean grâce au cahier des charges réalisé plus tôt.

Collaboration entre #DUTinfo et #DUTgmp pour la création du mur de pixels @arbalet_project @ClubInnoUB pic.twitter.com/kENrSekbjb

— EL QUEBAS (@hellamphi) 19 octobre 2017

Nous sommes finalement arrivés à un point d’accord sur le montage des guirlandes de LED. Nous avons fini l’entretien avec le test d’une guirlande à la bonne échelle via une batterie pour l’alimentation. A la semaine prochaine !

Mise en pratique de la guirlande des LEDs #DUTinfo #DUTgmp@arbalet_project @ClubInnoUB pic.twitter.com/X0gojnIhbr

— EL QUEBAS (@hellamphi) 19 octobre 2017

#5

Séance “bonus” : Arbalet 127

Mercredi dernier (le 25/10), nous étions invités à participer à un atelier de programmation sur le mur Arbalet 127 au FabLab 127° à Cap Sciences.

Ce fut une bonne occasion de découvrir comment les programmeurs de tous niveaux peuvent profiter des aspects ludique et interactif du mur de pixels.

Yoan a d’abord commencé par expliquer le fonctionnement de Jupyter Notebook, un environnement interactif de programmation qui permet d’exécuter facilement du code en Python. Ce Notebook ainsi que le langage de programmation utilisé ont permis aux novices présents de pouvoir exécuter rapidement et facilement le code qu’ils produisaient.

L’approche pédagogique de Yoan consistait à les amener à créer et exécuter des scripts de plus en plus complexes en introduisant l’utilisation de nouvelles fonctionnalités (telles la temporisation, la colorimétrie ou encore les boucles). Un exemple serait le passage de l’affichage d’un drapeau constitué de trois bandes de couleur séparées puis à une temporisation pour afficher le drapeau progressivement et enfin un dégradé.

Cette séance exceptionnelle nous a permis d’observer l’enthousiasme des gens vis à vis du mur et de la programmation ainsi que de programmer le mur de pixels grâce à l’API Arbalet. Qu’ils soient novices ou avancés, les programmeurs se sont amusés à créer des animations durant les deux heures qu’a duré la séance.


#6

Séance 4 :
Nous sommes à cette séance réellement rentré dans le vif du sujet : la programmation de nos tant attendues bandes de LEDS.

Notre équipe, découpée en groupes de 2, a continué à manipuler des microcontrôleurs Arduino avec cette fois comme objectifs de créer des animations avec une bande de 20 LEDS. Au programme codage d’Arc-en-Ciel, de Snakes, de cercles concentriques et tout un tas d’autres animations toutes plus colorées les unes que les autres.

Cette séance, qui se déroule toujours dans la bonne humeur, a pour but de nous familiariser avec le matériel Arduino en vue de la programmation d’un mur entier de LEDS.

Nous avons également visualisé sur un oscilloscope le signal de commande des LEDS. C’est un signal basé sur le protocole SPI qui utilisent normalement trois broches : MOSI (communication maître vers escale), MISO (communication esclave vers maitre) et CLOCK (horloge qui indique à chaque instant où un bit doit être lu). Le maître est Arduino et il pilote les LEDS qui sont esclaves, nous n’avons donc pas besoin de MISO. L’oscilloscope nous a permis de visualisé les deux signaux MOSI (courbe en jaune) et CLOCK (bleu) et décoder les octets envoyés (rose).


#7

Séance 5

Lors de cette séance, notre but était d’une part de commencer à monter la matrice de notre panneau, c’est-à-dire de produire l’assemblage de LEDS et d’autre part de réfléchir à l’organisation de notre programme utilisé pour coder les animations.

Nous nous sommes alors divisés en deux équipes: une s’occupant de la première tâche, l’équipe hardware ou “équipe matérielle” et une autre s’occupant du logiciel, l’équipe software.

Equipe software:


Bien que peu nombreuse, notre équipe de techniciens a tout d’abord mis dans une unique séquence nos différentes animations réalisées lors de la séance précédente, avant d’étudier le fonctionnement général du logiciel:
Il lui faut une interface, qui lorsqu’elle est appliquée à un programme créé par l’utilisateur, ne fonctionne que si des règles bien précises sont respectées, lui permettant ainsi de savoir quoi faire et d’éviter de nombreux risques de bug!

Equipe hardware:


Malgré un espace de travail peu… avantageux, notre équipe hardware n’a pas chômé!
Le but étant de créer la matrice, il fallait tout d’abord dénuder de nombreux fils afin d’alimenter chaque bandeau de LEDS. Mais comment relier tous les fils à l’alimentation?
Il suffit de réduire leur nombre à l’aide de nos WAGO! Comme nous pouvons le voir ci-dessous, ces objets nous permettent de relier plusieurs fils entre eux et ainsi d’en réduire - de manière conséquente - leur nombre.

Enfin, notre équipe a relié les bus de commandes de chaque LED en série, jusqu’à finalement les lier à notre carte de commande Arduino.

En combinant ainsi ce montage au résultat du travail de notre équipe software, on a pu atteindre un résultat concluant!


#8

Séance 6

Cette séance est le prolongement de la séance 5, en effet lors de cette séance nous avons pu mettre en oeuvre ou continué ce que nous avions commencé lors de la séance 5:

Equipe software:
Mise en place de l’architecture pour la préparation du séquenceur, d’une fonction permettant la conversion de valeur RGB en valeur HSV. Et enfin notre équipe à commencée à travailler sur la gestion des pixels.

Premier pas pour certain sur l’outil GIT.

Equipe hardware:

Notre équipe hardware a fini lors de la séance le montage des LEDs afin d’obtenir un montage de LEDs de 15*20 pour tester lors des prochaines séances les animations créées. Cependant le montage SPI a été modifié. Précedemment le signal SPI était généré par le logiciel, il est maintenant généré par un composant de la carte Arduino. Le signal SPI est un signal haute fréquence, ce signal étant auparavant émis par le logiciel ralentissait celui ci car le logiciel était accaparé par la génération du signal. Passer le signal SPI sur la carte Arduino allège donc le logiciel et permet donc une meilleure efficacité.


#9

Seance 6
Cette seance était entièrement consarée au software, le hardware étant fini depuis la séance précédente et en attendant la fabrication du mur par l’équipe de GMP.
La première partie de la séance a permis de faire un point sur l’état du projet et de donner quelques consignes pour les animations. Un membre de l’équipe du séquenceur à demandé de faire des corrections dans les premières annimations:

  • éviter les variables globales

  • faire très attention à la taille des animations (nombres d’octets limités)

  • préférer des tableaux de booléens plutôt que d’entiers

De plus, avant de continuer la programmation, nos deux professeurs ont donné un petit cours sur la Programmation Orientée Objet, surtout pour les élèves de première année qui n’ont pas encore commencé ces cours. Qu’est ce qu’un objet, une classe, les pointeurs, durée de vie d’une variables… Même pour les secondes années, cela n’a pas fait de mal de faire un petit rappel.

Tout le reste de la séance a permis d’avancer sur la programmation, le groupe du séquenceur a continué de corriger les erreurs, les autres groupes (4-5 élèves) ont continué leurs animations, les corriger ou les améliorer en fonctions des conseils donnés en début de séance, ou créer de nouvelles animations.

On espère avoir la mur prêt pour la prochaine séance, ce qui nous permettrait de commencer le câblage pour le mur de la Gare Saint-Jean, qui devrait être plus long que notre premier essai, les LEDs devront être vissées, les circuits d’alimentations un petit peu changés.

Petit cours sur la POO:


#10

Séance 7 : Démarrage de l’assemblage final

Hardware : Le département GMP ayant terminé de fabriquer la structure qui réceptionnera les pixels colorés, il faut maintenant les assembler et les câbler. Il y a exactement 226 vis à installer et 120 connexions électriques à établir. 6 étudiants se mettent en route pour l’assemblage et le câblage final pendant que 6 autres finalisent les modèles d’animations colorées.

Software : Les 6 autres terminent des animations de Pixel Art simples en vue de la mise en gare prochaine.

En outre, il est décidé de reproduire les deux animations phares qui donnent leur identité aux projets Arbalet : la roue des couleur désynchronisée (swipe), ainsi que les flash bleus (lagoon). Ces animations font partie du SDK Python Arbalet. Sauf que dans notre cas le matériel et donc le langage de programmation n’est pas le même, nous programmons en C++, il faut donc réimplémenter les animations. Mais l’exercice est moins facile qu’il n’y parait : Python (et le SDK Arbalet) possède tout un tas d’outils utiles pour simplifier la création de nouveaux schémas de couleurs. Sur ce projet il faut donc se creuser les méninges pour obtenir un résultat visuellement identique … mais avec un code différent !

Nous recevons par ailleurs une équipe de tournage qui vient filmer les étudiants au travail afin de réaliser un film de making of mis en ligne par SNCF Gares et Connexions. La fondation Bordeaux Université a également publié un communiqué annonçant l’installation prochaine dans la gare.

Livraison en gare

Le 18 décembre 2017, les enseignants, Arbalet Living Lab et l’équipe technique SNCF ont transporté puis branché le mur Arbalet Saint Jean en gare. Ce type d’installation dans un établissement public de cette catégorie nécessite la vérification d’un bureau de contrôle intervenu dans la journée. Retrouvez les images de l’installation sur Twitter.

La livraison étant effectuée, les élèves continueront de travailler sur un doublon “non carrossé” de l’électronique conservé au sein de l’IUT afin d’apporter de l’interactivité à ce dispositif de Pixel Art d’ici un mois.


#11

Séance 8

Jeudi 21 Décembre 2017, c’était la dernière séance avant les vacances de Noël. Nous avions fait 3 groupes répartis sur plusieurs activités pour faire des interactions avec le mur. En général c’était des jeux. Un groupe se chargeait du code permettant la connexion via le Bluetooth, du joueur au jeu. Le deuxième groupe avait choisi de faire un Snake, et le dernier de faire un casse-brique.

Bluetooth : ce sera la base des interactions. L’option Bluetooth permettra d’interagir avec les jeux développés. On a commencé à câbler le module Bluetooth pour qu’il puisse communiquer avec l’Arduino. Donc on a choisi de prendre un level shifter pour convertir l’état haut du signal de 3 volts à 5 volts. Pour pouvoir coder avec le module, il nous a fallu télécharger la bibliothèque. Après ça, nous avons commencé à travailler dessus. Nous avons téléchargé également une application Smartphone qui reproduit une manette, que nous avons réussi à connecter avec le module. Seulement nous n’arrivons pas à traduire correctement le signal reçu.

Snake : le deuxième groupe à choisi de travailler sur le jeu snake. Mais il y a certaines erreurs dû à des problèmes de pointeurs.

Casse-briques : le dernier groupe réalise un casse brique. Il reste quelques problèmes à régler. Mais il y a quand même la balle en mouvement (qui rebondit sur les bords), les briques qui disparaissent quand la balle passe dessus et la raquette.