GBC qui écrit du texte

Présentez-nous vos créations...
Avatar de l’utilisateur
Vinz
Level 6
Level 6
 
Messages: 371
Localisation: Nancy
Âge: 37 ans

Messagepar Vinz » Mer Sep 25, 2019 5:11 pm

Bonjour :hello:

Je vous présente la dernière version de mon module GBC qui écrit du texte. La présentation est tardive puisqu’il tourne depuis fin 2017 dans les expo de l’Est.

J'ai mis des GIF au fur et à mesure des explications pour que la review soit plus explicite, ouai le MOC est pas simple... mais ca vaut le coup d'essayer de le comprendre!

Cahier des charges :
- Objectif :
  • Ecrire du texte
  • Optimiser les moteurs et mécanismes
  • Fiabilité pour tourner en expo
  • Structure type Akiyuki : ça fait bien fini et ça facilite le transport.
  • Cheminement « lisible »
  • Montrer le tri par couleur
- Contraintes
  • Visuelle : les balles doivent être toujours visibles dans le cheminement principal
  • Utiliser qu’un set EV3 pour les composants électriques
  • Couleur Dark Bluish Gray avec quelques touches aux couleurs de l’EV3 : Blanc/Rouge/Gris

Image

Image

Architecture du MOC :

Un des objectifs était de n’utiliser qu’un seul set EV3 pour faire ce MOC, je vais vous décrire comment j’y suis parvenu en combinant les fonctions et mécanismes par moteur et les capacités des capteurs pour optimiser leur nombre.
Le circuit du module est semi-fermé car il nécessite un grand nombre de balles pour fonctionner. Le plateau se vide dans le bac d’entrée plutôt qu’en sortie du module pour ne pas engorger les modules suivants.
La montée par chaine et la descente en "S" sont à considérer comme un autre module permettant de faire la boucle du circuit.

  1. Le bac d’entrée : 1 moteur Power Fonction XL
    La première contrainte est de stocker un grand nombre de balles. Pour réguler l’alimentation du module avec la contrainte du poids de toutes les balles, il y a un double ascenseur pour monter 6 balles puis une roue (inspirée d’Akiyuki). La rotation de la roue est synchronisée avec l’ascenseur ce qui évite un engorgement et permet d’avoir une roue tout le temps chargée sans surplus.
    Image
  2. Trieur de balle : 1 moteur EV3 Medium, 1 capteur de couleur
    Le but était de cacher le capteur de couleur comme dans le module d’Akiyuki et d’avoir un trieur simple et « lisible » pour le public.

    Un capteur de couleur (situé dessous, avant l’hélice) mesure la réflexion de la lumière. Le blanc réfléchissant le plus la lumière, cela permet de le distinguer de l’orange ou de l’absence de balle.

    J’ai fait beaucoup de prototype avant d’arriver à ce trieur qui d’apparence parait simple.
    En fonction de la couleur, il tourne de 120° ou -120° (1/3 de tour car 3 branches). S’il y a une succession de balles identiques il tournera dans le même sens ce qui est assez esthétique plutôt que de revenir dans une position initiale. La rotation de 120° se fait en 2 temps, la pause permet à la balle de se caler dans le creux pour ne pas générer de blocage, cela diminue énormément la rapidité de tri mais c’est en cohérence avec la cadence de la suite du module.

    Image

    Je vous parlais d’optimisation de capteur : J’ai utilisé une astuce pour calibrer l’hélice car le moteur perd quelques degrés de précision à force de tourner. Il se calibre, à chaque envoi de colonne, en tournant degré par degré², jusqu’à trouver la réflexion maximum de lumière, dès que la réflexion diminue, c’est que la position de calibrage est le degré d’avant.
    Image


    Une fois triées, ces balles vont dans 2 chargeurs de 9 balles. Il y a une déviation spécifique (slope rouge) permettant de gérer le surplus de balle. Par exemple si on attend une balle orange et que l’on a 13 balles blanches successives, il faut mettre les 4 balles dans un rebus.
    Image

    Le chemin des balles du rebus est caché car il n’apportait rien dans la lisibilité du MOC. Les balles remontent par une pompe à balle. J’utilise un patin en caoutchou de 2 tenons Image pour maintenir les balles en position verticale (je ne suis pas fan des pompes à balles qui redescendent quand il n’y a pas de balle qui arrive).
    Image

    L’alimentation du module est volontairement plus rapide que la capacité de tri afin de faire tourner des balles dans le reste du circuit. Quand le chargeur avant l’hélice est rempli, il y a une déviation qui court-circuite tout le module pour arriver directement dans la sortie. Cela est utile quand le module a fini d’écrire car le tri s’arrête ainsi les balles font leur petit tour dans les modules suivants. Un ralentisseur en bas de la pente (beam 3L rouge) assure une vitesse contenue pour passer sereinement le zig-zag de fin.
    Deux sorties possibles, soit latérale soit en ligne droite.
    Image
  3. Sélection des balles : 1 moteur EV3 Large
    Un seul moteur sélectionne soit une balle blanche, soit une balle orange.
    Ici la contrainte est le poids des 9 balles du chargeur, il fallait un mécanisme qui retienne les balles et qui évite que les balles « sautent ». La solution est d’exercer un mouvement perpendiculaire à la force exercée par le poids des balles. La première balle se loge dans un demi-liftarm 3x3 (rouge), en tournant pour libérer la balle un demi-liftarm 3x3 avec quart d’ellipse (rouge) vient bloquer les balles suivantes.
    Le maintien en position « quart de tour » se fait par un montage liftarm 2x4 (vert sur l’image) contre un coté du knob (jaune). Le moteur (axe du centre) fait tourner un liftarm rouge 3L pour actionner soit le knob de gauche ou de droite suivant la couleur à envoyer .
    Image
    Image

    Autre optimisation de capteur : Ici j’utilise dans le code l’état=bloqué du moteur détecté par « on note la position du moteur, on demande au moteur de tourner, on reprend de suite la position du moteur. Si la position n’a pas changé c’est qu’il est bloqué. ». On tourne dans un sens, une butée (en bleu) permet de bloquer le moteur (fig. 1), en sens inverse on compte le nombre de degré jusqu’à retoucher la butée (fig. 2) puis on divise le nombre de degrés par 2 et le moteur est ainsi calibré en position centrale (fig. 3) !
    Image

  4. Envoi colonne et vidange : 1 moteur EV3 Large, 1 capteur pression
    Première problématique : Les balles font 14mm de diamètre, la mesure d’une unité Lego (tenon pour les intimes) est de 8mm. Un rail du plateau fait 2 tenons soit 16mm ; il y a donc un décalage au bout de 5 balles et la 5ème ne tombe plus en face du rail (fig. 1). Pour aligner les balles aux rails, il y a un décroché d’un demi tenon à la 1ère balle (fig. 2), ainsi en basculant chaque balle va dans le rail adéquat.
    Image

    Les rails sont constitués d’une tile et d’un panel, l’espace de 2 tenons moins l’épaisseur du panel approche le diamètre d’une balle, ainsi elles sont parfaitement guidées jusqu'au bout du plateau et ne sautent pas. Pour accentuer la couleur orange de l’écriture, le plateau est blanc comme la seconde couleur des balles.

    Fonction 1 : La colonne est envoyée par basculement.
    Image
    Fonction 2 : La vidange des balles se fait en levant le plateau par un mécanisme type « scissor lift » (~ élévation ciseau) actionné par rack.
    Image
    Pour éviter un engorgement les rails sont vidés par 2 à la fois grâce à des butées à différentes hauteurs. La purge des balles est assez jolie à voir.
    Image

    Un seul moteur envoie la colonne (basculement) et vidange les balles du plateau (levée). Le rack étant actionné par une vis sans fin, il faut beaucoup de tour pour le faire bouger alors que le basculement nécessite moins d’un tour. Ainsi en utilisant un différentiel pour le basculement, j’ai pu mettre les deux mécanismes sur le même moteur.
    Quelques explications :
    - En entrée du différentiel : le moteur
    - La « cage » du différentiel Image: relié à une « gear 8t avec axe 1,5L » Image (par le liftarm rouge ci-dessous) qui actionne une crémaillère pour le basculement
    - Sortie du différentiel : relié à une démultiplication 12t/20t avec un pin à friction pour avoir une force supérieure au mouvement du basculement.
    Ainsi, une fois basculée la cage du différentiel est bloquée et la force d’entrée fuite par la sortie
    Image
    Image


Programmation :
Dans mes premières versions, j’utilisais l’éditeur de bloc fourni par Lego, on arrive très vite aux limites du logiciel avec un programme conséquent.
Pour cette version, j’utilise ev3dev et le programme est intégralement scripté en python. Maitrisant le script shell, le python s’en approche beaucoup.

Note : Pour ceux qui ont lu le détail de la précédente version du MOC, la programmation est sensiblement identique.

  1. Sélection du texte :
    On choisit le texte dans le programme. Les caractères possibles sont : de A à Z, de 0 à 9, espacement et quelques ponctuations. Le plateau permet d'écrire 9 à 10 caractères.
  2. Ecriture du texte :
    Chaque caractère est traduit en séquence de balle.

    Prenons l’exemple du A, en considérant que 1=écriture, 0=l’arrière-plan, on traduit cela :
    Ligne1= 010
    Ligne2= 101
    Ligne3= 111
    Ligne4= 101
    Ligne5= 101

    Ainsi l’affichage en balle donnerait (écriture = balles orange, arrière-plan = balles blanches) :
    OOO
    OOO
    OOO
    OOO
    OOO

    Cette traduction est faite pour tous les caractères.
    Le programme analyse le texte à écrire pour déterminer la séquence des balles orange/blanches par ligne.

    Prenons l’exemple d’écrire LEGO :
    1. Le programme va prendre chaque lettre et y insérer un espacement (traduit par une colonne de balles blanches) entre chaque lettre.
      Ainsi, la finalité est :
      OOOOOOOOOOOOOOOO
      OOOOOOOOOOOOOOOO
      OOOOOOOOOOOOOOOO
      OOOOOOOOOOOOOOOO
      OOOOOOOOOOOOOOOO
    2. Le programme va créer la séquence de balle pour chaque ligne
      La séquence est
      Code: Tout sélectionner
      Ligne1 : 100011101110111
      Ligne2 : 100010001000101
      Ligne3 : 100011001010101
      Ligne4 : 100010001010101
      Ligne5 : 111011101110111

      Le but est d’écrire colonne par colonne en commençant par la dernière ligne, car la première balle envoyée se retrouvera en bas.
    3. Le programme en déduit le nombre de colonne, ici nbColonne=15
    4. Il positionne un avancement à 1
    5. Il prend comme séquence de balle la valeur de la colonne en commençant par la dernière ligne (Ligne 5)
      Donc :
      1ere balle : Ligne5 [avancement] = Ligne5 [1] = 1 = O
      2eme balle : Ligne4 [avancement] = Ligne4 [1] = 1 = O
      3eme balle : Ligne3 [avancement] = Ligne3 [1] = 1 = O
      4eme balle : Ligne2 [avancement] = Ligne2 [1] = 1 = O
      5eme balle : Ligne1 [avancement] = Ligne1 [1] = 1 = O
      La séquence va donc être 5 balles couleur écriture, donc 5 balles orange
    6. On incrémente avancement de 1 : avancement=2
    7. On continue avec la colonne suivante : Il prend comme séquence de balle la valeur de la colonne en commençant par la dernière ligne (Ligne 5)
      Donc :
      1ere balle : Ligne5 [avancement] = Ligne5 [2] = 1 = O
      2eme balle : Ligne4 [avancement] = Ligne4 [2] = 0 = O
      3eme balle : Ligne3 [avancement] = Ligne3 [2] = 0 = O
      4eme balle : Ligne2 [avancement] = Ligne2 [2] = 0 = O
      5eme balle : Ligne1 [avancement] = Ligne1 [2] = 0 = O

      La séquence va donc être 1 balles couleur écriture et 4 balles couleur arrière-plan: 1 balle orange, 4 balles blanches.

      Ce qui donne sur le plateau
      OO
      OO
      OO
      OO
      OO
    8. Ainsi de suite, on poursuit jusqu’à ce que avancement=nbColonne

Vidéo :


Voila, je pense avoir bien détaillé le fonctionnement de cette création, et encore je vous ai épargné les astuces pour la fiabilité.
J'en suis vraiment content et il est aprécié en expo ; J'ai fais les 8 expos suivantes et ca tournait plutot bien tout au long des weekends, ce GBC est assez fiable (et les personnes qui exposent du GBC savent à quel point c'est compliqué!) avec un peu de graisse au teflon pour huiller la mécanique ca se fait bien.
- NANCY 2017 (3/4/5 Novembre) LUDIBRIQUES
- REIMS 2018 (17/18 MARS) BRICK EN BULLES
- COLMAR 2018 (29/30 JUIN) FANABRIQUES
- CLENAY/DIJON 2018 (6/7 OCTOBRE) FESTIBRIQUES
- NANCY 2018 (10/11 NOVEMBRE) LUDIBRIQUES
- REIMS 2019 (9/10 MARS) BRICK EN BULLES
- EPINAL 2019 (4/5 MAI) SPINABRICK
- METZ 2019 (1 JUIN) MAKERLAND

Je pense ne plus l'exposer dans l'EST car il a déjà fait 2 éditions, mais le conserver encore 1 an au cas où je ferais une expo dans l'ouest ou sud-est.
J'ai déjà le cahier des charges du successeur, l'objectif sera toujours d'écrire avec les billes, avec 1 seul moteur cette fois ci ;)

MisterBrique
Level 7
Level 7
 
Messages: 585

Messagepar MisterBrique » Mer Sep 25, 2019 8:13 pm

Combien de temps de réflexion avant le montage ?
Heureux possesseur du rare #8082, de 3 #8880, 2 #8865, 1 #8860 et 2 #8868.

Avatar de l’utilisateur
MrBleu
Level 6
Level 6
 
Messages: 310
Localisation: Lyon
Âge: 47 ans

Messagepar MrBleu » Mer Sep 25, 2019 8:47 pm

Un grand bravo pour le moc, on imagine bien le nombre d'itérations qu'il a fallu tester pou aboutir à un ensemble aussi fiable !

Un grand merci pour le partage soigné et très didactique : peut importe qu'il arrive deux ans après (comme bcp d'autres, je l'avais déjà vu), mais cette review nous donne une bien meilleure lisibilité de points qui semblent être des détails en apparence mais qui font tout ! (ex. le re-calibrage auto très bien pensé)

:resp:

Avatar de l’utilisateur
GThreepwood_MI
Level 6
Level 6
 
Messages: 433
Localisation: LYON

Messagepar GThreepwood_MI » Mer Sep 25, 2019 8:57 pm

Sympa, ça détend de regarder les lettres s'écrire doucement.
Faudra pas écrire "Celui qui lit ça est un c.. :D
Bravo pour cette belle machine :clap:

Tofe59
Level 6
Level 6
 
Messages: 345
Localisation: Douaisis
Âge: 40 ans

Messagepar Tofe59 » Mer Sep 25, 2019 8:59 pm

Merci pour toutes les explications.
Très beau MOC et très fiable, bravo à toi ;)

Avatar de l’utilisateur
TechToth
Level 6
Level 6
 
Messages: 319
Localisation: maine et Loire
Âge: 46 ans

Messagepar TechToth » Mer Sep 25, 2019 9:45 pm

Bonsoir à tous, :hello:
Toutes mes félicitations pour la qualité du GBC ainsi que pour les explications vraiment détaillées, c'est tout à fait propice à inspirer d'autres MOCeurs, j'adore ! :frotte:
Même près plusieurs mois je le trouve toujours aussi original et bien pensé. La classe ! 8)

Avatar de l’utilisateur
Vinz
Level 6
Level 6
 
Messages: 371
Localisation: Nancy
Âge: 37 ans

Messagepar Vinz » Jeu Sep 26, 2019 12:27 pm

Merci pour vos retours!
La réflexion se fait petit à petit, c'est pas le plus long de définir son cahier des charges d'autant plus que j'avais l'expérience de la version d'avant.
Comme je n'ai pas un débit de 1 MOC par mois, je prends le temps de détailler ce que je fais, et c'est aussi l'intérêt d'un MOC parce que l'on ne se rend pas forcément compte de ce que ca implique quand on le voit au global

Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 19495
Âge: 37 ans
revieweurmoceurstarwarsexpertambassadeur

Messagepar Anio » Jeu Sep 26, 2019 12:43 pm

Sympa de GBB.

Je ne maitrise pas forcément les aspects liés à la synchronisation ou au Mindstorms.

Je me contenterai d'un modeste commentaire sur l'esthétique : recouvrir de tiles 1xn DBG toutes les poutres Technic studless en hole on top (avec des demi pin Technic, ça se fait facilement).
Je pense que visuellement ça fera une bien meilleure finition (notamment sur le toboggan en "S"). :)
Think outside the box.

Tout plein de liens utiles dans mon profil ! :P

Avatar de l’utilisateur
Vinz
Level 6
Level 6
 
Messages: 371
Localisation: Nancy
Âge: 37 ans

Messagepar Vinz » Jeu Sep 26, 2019 1:35 pm

Anio a écrit:Je pense que visuellement ça fera une bien meilleure finition (notamment sur le toboggan en "S"). :)

Vu la finition du reste c'est vrai que ca aurait pu, je n'ai plus beaucoup de stock en tile DBG vu les kilomètres qu'il y a déjà sur le module principal :lol:
Je note l'idée pour les prochains
Aussi ca ressort beaucoup parce que c'est une vue de haut, à hauteur d'yeux, posé sur une table c'est moins flagrant, mais du coup c'est ceux de la rampe qui se voient :pfff:
Image

gaiapat
Level 5
Level 5
 
Messages: 153

Messagepar gaiapat » Ven Sep 27, 2019 10:37 am

Merci pour tes explications, bien pédagogiques :clap:
Serait-il possible de réaliser un "texte défilant" en vidant par groupe de colonnes et non par ligne ?
(s'il reste de la place dans la mémoire)
Pour GAIA, l'an vert vaut l'an droit

Avatar de l’utilisateur
mathieulego
Level 8
Level 8
 
Messages: 930
Localisation: Région de Sarreguemines - Strasbourg
Âge: 25 ans

Messagepar mathieulego » Sam Sep 28, 2019 10:32 am

J'avais adorer la cinématique de ce GBC en expo ! Beau travail :resp:


Retourner vers Vos MOCs Technic

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 24 invités

cron