Arbalet MEKI (fr)


#1

Le projet Arbalet MEKI est un projet que nous allons réaliser pendant 1 mois dans le cadre de notre licence pro DAWIN (Développement d’Application WEB), pour enrichir le projet Arbalet et dans une optique de rendre encore plus ludique et facile l’utilisation des outils Arbalet.

Nous sommes 5 étudiants et nous allons réaliser une application (Arbalet Meki Live) permettant à un public non-initié de programmer un équipement Arbalet à l’aide d’un langage graphique facile d’utilisation.
Parmi ces langages il existe Scratch, Snap!, Blockly (liste non exhaustive).

  • Le langage graphique anciennement utilisé était Snap! nous allons passer à la technologie Blockly et recréer des blocs adaptés aux équipements lumineux Arbalet.

  • Création d’une application multi-plateformes (Windows, MacOs, Linux), le choix de la technologie ElectronJS semble judicieuse pour le développement de celle-ci.
    L’application proposera aussi un modèle de client-serveur: un enseignant avec l’application serveur tandis que les élèves utilisent l’application cliente. L’enseignant pourrait ainsi choisir qui a la main sur la table lumineuse Arbalet Lava et récupérer le contrôle à tout moment.

  • Remplacement du microcontrôleur Arduino par un microcontrôleur ESP32 qui apportera le support du bluetooth (BLE) et la connexion WIFI aux équipements Arbalet.

  • Développement d’une application mobile (Android et IOS) permettant d’interagir avec un équipement via le bluetooth(BLE). La fonctionnalité principale attendue consiste en un simulateur de “manette” (contrôleur de jeu) permettant de jouer aux jeux s’exécutant sur Arbalet. Ainsi un smartphone pourrait remplacer les manettes filaires qui sont actuellement utilisées. ( Récupération et adaptation de l’application manette réalisé dans le cadre du projet Arbalet St-Jean)

Le projet a commencé le lundi 4 février et se conclut pour nous le 8 mars.


#2

Retour sur le début de projet (1) :
Phase 1 : Comprendre et définir le cadre projet

  • Entretien avec 2 professeurs de notre licence pour leur expliquer notre projet 20 min.

  • Echanges avec Yoan Mollard afin d’éclaircir les zones de flou et ainsi pouvoir nous lancer dans le projet.

  • Traitement des informations qui nous ont été donné, classification et traitement.

Phase 2 : Gestion de projet
Afin de bien savoir ce qu’on a faire et quel est l’ordre d’importance, nous avons mit en place, en équipe, un backlog afin de définir les différentes User Story (une description simple et compréhensible d’une fonctionnalité).

Création de diagrammes :

  • Diagramme d’activité

  • Diagramme de séquences

  • Diagramme de cas d’utilisation

Phase 3 : Création de maquettes

  • Maquette pour l’interface d’administration du professeur ( application Arbalet Meki Live)

  • Maquette pour l’interface de programmation graphique pour les élèves

Phase 4 : Préparation de la phase de démo de lundi 11 février matin

  • L’application Arbalet Meki lance le serveur et voit les sessions qui s’y connecte.

  • Lancer un programme depuis l’ESP32 (microcontrôleur) pour allumer les lumières de la table lumineuse (Arbalet Lava)

  • Allumer une led grâce a son téléphone et le bluetooth relié à l’ESP


#3

Début du sprint 1
La première semaine de projet s’est conclue par la réalisation de deux maquettes, l’intégration d’une première page et la mise en place de la première fonction de notre application ElectronJs ( permettre à des ordinateurs d’accéder au serveur de l’ordinateur du professeur et de s’y connecter), nous avons aussi réalisé toute la partie gestion de projet (backlog, diagrammes et distributions des taches), avons changé le microcontrôleur arduino par un microcontrôleur ESP32.

Première phase de démos ce matin
Pour la démonstration de ce matin nous avons fait deux démonstrations, une qui consistait à montrer qu’on avait réussi à lancer un programme initialement prévu pour un microcontrôleur Arduino sur un ESP 32 afin de lancer des séquences lumineuses sur la table Arbalet Lava ( table lumineuse programmable).

  • Point positif les leds s’allument

  • Point négatif certaines leds avaient un comportement étrange

La deuxième démonstration consistait à montrer les premières étapes de l’application Arbalet Meki Live

  1. Le professeur lance l’application Arbalet Meki Live
  2. Il lance un serveur
  3. Les élèves se connectent a ce serveur en tapant l’IP de ce serveur dans leur barre de recherche
  4. L’élève entre son prénom
  5. Le professeur voit l’élève connecté sur son interface et peut dire que c’est l’élève qui a la main sur la table lumineuse.

-> Maquette de l’interface du professeur

Cette démonstration nous permet de savoir quels axes nous devons travailler par la suite :

  1. Régler le problème des leds
  2. Savoir comment faire communiquer notre application avec notre ESP32

Notre entrevue avec Yoan Mollard nous a permis d’éclaircir ces deux points.
-> Analyse du problème sur les leds, on s’est aperçu que la tension au début de la chaîne de led était de 5 V alors qu’en fin de chaîne la tension n’est plus qu’à 3,5 V.

-> Pour la communication entre notre application et l’ESP32 nous allons donc utiliser le port série.


#4

Fin Sprint 1

Problème de comportement de nos leds :
Cette semaine Yoan nous a aidé à analyser et trouver le problème de nos leds, il a réalisé trois tests avant de trouver le problème.

  • On constatait que le problème se constatait lorsqu’on arrivait a une rangée de leds précise, on a donc changé cette rangée mais sans succès le problème persistait

  • On a regardé si le problème était lié aux câbles qui étaient probablement pas assez résistant pour conserver une tension de 5 v entre la led 1 et la led 150, mais après quelques tests, le problème restait le même.

  • On a testé les leds avec l’arduino pour voir si le problème venait de l’ESP, avec l’arduino plus de problème, le problème était donc lié à l’ES. Après des recherches Yoan a trouvé le problème et là corrigé.
    -> Forum qui nous a permit de corriger le problème : https://forums.adafruit.com/viewtopic.php?t=117327

Communication via le port Série :
Concernant la communication depuis notre application avec l’ESP32, nous allons communiquer avec le port série.
Pour communiquer avec le port série il faut envoyer les actions en binaire.
La trame se compose de l’en-tête, nombres de pixels qu’on va changer, le numéro du pixel qu’on va changer, et sa couleur en RGB.

Intégration de blockly :

Dans ce projet nous devions passer du langage graphique Snap! au langage graphique Blockly et donc recréer certains blocs pour pouvoir allumer des leds.
Une fois tous les blocs réalisé nous les avons intégrer a notre projet et nous avons fait matché avec notre charte graphique.

Ecran de simulation
Lorsque les élèves cherchent à créer un programme, ils ont a leur disposition un écran de simulation de la table lumineuse, ça leur permet de visualiser leur programme, voir si il fonctionne comme ils le souhaitent et une fois satisfait de leur code, ils peuvent demander au professeur pour avoir la main sur la table et ainsi visualiser leur programme sur la table Arbalet Lava.

En ajoutant les bons blocs on peut réaliser un drapeau tricolore par exemple.

Démonstration de lundi :

  • On ouvre l’application Arbalet Meki Live

  • On lance le serveur

  • L’élève se connecte a ce serveur en tapant l’IP de ce serveur dans leur barre de recherche

  • L’élève entre son prénom

  • Le professeur voit l’élève connecté sur son interface

  • L’élève va réaliser son premier programme par exemple faire un drapeau tricolore

Si on arrive à bien intégrer la nouvelle bibliothèque sur notre ESP32 on pourra peut-être allumer une led avec une commande javascript et ainsi le montrer lors de la démonstration.


#5

Début du sprint 2
La semaine dernière nous avons très bien avancé sur l’application, puisque nous avons réalisé les différents blocs dont nous avons besoin pour programmer facilement et graphiquement une table lumineuse. Nous pouvons exécuter notre code pour simuler l’animation directement dans notre navigateur web. Cependant, nous avons des améliorations a faire, avoir une interface en français et en anglais, empêcher les bugs liés aux boucles infinies en javascript, avoir des textes d’indications de chaque bloc pour guider l’élève.

Nos grandes difficultés en ce début de projet se portaient sur la table lumineuse où l’on devait résoudre les mauvais comportement de certaines leds, après avoir identifié le problème nous l’avons résolu en installant une nouvelle bibliothèque qui se fait comprendre par nos leds et qui les allume et gère sans provoquer de scintillement non voulu.
On doit donc donc adapter notre code pour qu’il soit compatible avec cette nouvelle bibliothèque.
Pour changer la couleur d’une led on peut utiliser deux méthodes, RGB (Red Green Blue aussi appelé en français RVB Rouge Vert Bleu) et HSV (Hue, Saturation, Lightness ou Teinte Saturation Lumière en français).

Comment créer une couleur en fonction des différents paramètres qu’on rentre pour la méthode HSV et RGB.

Dans cet exemple les couleurs sont déterminés en fonction d’un pourcentage d’un paramètre par exemple 100 % du Red ou 100 % de saturation et 50 % de light pour avoir du rouge.
Nous on parlera directement en binaire avec des octets donc 100 % sera égale à 255 et 50 % à 128.

Cette semaine nous devons réussir le pont entre notre interface blockly et la table arduino pour se faire on aura besoin de node.js et du port série.

Démonstration du lundi :
Aujourd’hui nous avons fait une démonstration de l’interface blockly, nos professeurs ont pu faire leurs premiers programmes et les visualiser sur le simulateur de l’interface web.


#6

Fin Sprint 2
Problèmes Hardware
Après avoir installé une nouvelle bibliothèque sur notre ESP32, nous n’avions plus de problème de scintillement, nous avons donc pu réaliser nos premiers programmes en javascript et les faire exécuter sur la table passant par le port série. Après plusieurs tests on s’est aperçu que les performances n’étaient pas du tout bonne, on ne pouvait pas allumer plus de 46 leds et on ne pouvait pas augmenter la vitesse d’allumage d’une led.
On a donc compris que nous avions un problème de saturation de mémoire, on a donc cherché à optimiser les trames.
Une fois les trames optimisés, seulement 4 rubans lumineux marchaient, mais le problème ne venait pas du code. On a donc inspecté notre table et on s’est aperçu qu’un fil c’était dé-soudé… Direction le fablab et nous voilà avec une table fonctionnelle.

Partie Software
Blockly :
On peut maintenant exporter et importer des programmes a executer.
L’intérêt de cette fonctionnalité est toujours dans un but pédagogique , en effet même si blockly est un langage graphique donc plus facile à assimiler qu’un langage standard. Faire son premier programme face à une feuille blanche reste très compliqué. Avec cette fonctionnalité, les élèves pourrons importer des exemples de programmes déjà fourni par l’application, réalisé par leur professeur ou par la communauté, ainsi ils pourront analyser un code fonctionnel et le reproduire.

L’application IONIC :
Une application mobile avait été réalisé pour l’installation du mur lumineux à la gare Saint Jean, dans l’application on retrouvait une manette pour contrôler se mur et d’interagir avec lui.
Cette semaine nous avons enrichi cette application pour rajouter le menu de configuration de la table Arbalet Lava.

Démonstration du lundi 4 mars :

  • Sur l’interface Blockly on importe un code

  • On l’exécute dans le visualiseur de notre navigateur web

  • On l’exécute sur la table