GBC qui écrit du texte

Fais-nous partager tes créations !
Répondre
Avatar du membre
vinc
Membre
Membre
Messages : 550
Enregistré le : 12 nov. 2014 16:16
Exposant : Oui
Bulk2015 : Oui
Bulk2016 : Oui
Bulk2017 : Oui

GBC qui écrit du texte

Message par vinc »

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 ;)
Avatar du membre
techno
Membre
Membre
Messages : 2232
Enregistré le : 16 oct. 2009 20:35
Exposant : Oui
Bulk2014 : Oui
Bulk2016 : Oui
Localisation : Alsace, HERLISHEIM près COLMAR

Re: GBC qui écrit du texte

Message par techno »

Je m'en rappel bien, il fonctionnait bien à part le petit problème du soleil qui faussait la lecture du capteur et quelques embouteillages lors de la vidange de la rampe.

En tous cas, il est toujours aussi hypnotique.
adorateur de technic et de film d'horreur

Ma chaine youtube (bien pauvre) http://www.youtube.com/user/technobt/videos
Avatar du membre
Hugolin
Membre
Membre
Messages : 177
Enregistré le : 14 mars 2015 12:32
Bulk2016 : Oui
Bulk2017 : Oui
Localisation : Aicirits (64120)

Re: GBC qui écrit du texte

Message par Hugolin »

Trés très beau MOC, bravo !

Que se soit sur le fonctionnement ou sur l'esthétique, tu as fait fort. :Top:
Je l'avais déjà vue en photo, mais je ne saurais pas dire ou.
La présentation met bien en valeur tout les astuces que tu as du mettre en place pour assurer un fonctionnement optimal.
Le fait que tu n'utilise pas une débauche de moteur c'est un point très positif, ça prouve que le truc à été bien pensé.

Une petite question : juste après le trie des balles, le programme prend en compte qu'une colonne peut être vide ou le cas ne peut pas arriver ?

Encore une fois : super création. expectation
Image
Avatar du membre
vinc
Membre
Membre
Messages : 550
Enregistré le : 12 nov. 2014 16:16
Exposant : Oui
Bulk2015 : Oui
Bulk2016 : Oui
Bulk2017 : Oui

Re: GBC qui écrit du texte

Message par vinc »

Hugolin a écrit : 26 sept. 2019 07:49 Une petite question : juste après le trie des balles, le programme prend en compte qu'une colonne peut être vide ou le cas ne peut pas arriver ?
Merci Hugolin!
Oui c'est pris en compte, pour les deux colonnes de 9 balles, le programme fonctionne comme suit :
- un sous-programme fait le tri et il incrémente 2 compteurs, un compteur orange et un compteur blanc
- un autre sous-programme qui tourne en parallèle fait la sélection des balles. Quand il a besoin d'une couleur il vérifie que le compteur de la couleur est supérieur ou égale à 2 (2 car si la balle vient juste d'être triée il y a un délai pour que la balle arrive en bas du chargeur), une fois qu'il a envoyé une balle il décrémente le compteur de 1. Tout comme il gère le surplus, si le chargeur contient 9 balles (le max) ca part dans le surplus et le compteur reste à 9.
Donc le programme sait à tout instant le nombre de balle dans chaque chargeur, et le sous-programme "sélection" bouclera/attendra jusqu'à ce que le sous-programme "trieur" lui envoie les balles.

@Tehno: Ha ouai c'est vrai, j'avais eu ce problème, le rayon de soleil sur le MOC qui faussait la captation de la couleur... Dans une autre expo (Epinal) j'ai aussi eu une pile rechargeable qui ne fonctionnait pas bien, l'EV3 passant de 7.2 volts à environ 6,4 volts donnaient de fausse valeur pour le capteur de couleur, j'ai mis 1h à trouver!
Avatar du membre
PG52
Membre
Membre
Messages : 681
Enregistré le : 30 juil. 2012 20:10
Exposant : Oui
Bulk2014 : Oui
Bulk2015 : Oui
Bulk2016 : Oui
Bulk2017 : Oui
Localisation : Moselle

Re: GBC qui écrit du texte

Message par PG52 »

J'ai pu l'observer à l'oeuvre dans pas mal d'expos celui-là. C'est du bon boulot, il tourne très bien et le succès est au rendez-vous :Top:
J'aurais juste une suggestion pour le prochain : incliner le plateau pour faciliter la lecture aux plus jeunes :wink:
Avatar du membre
vinc
Membre
Membre
Messages : 550
Enregistré le : 12 nov. 2014 16:16
Exposant : Oui
Bulk2015 : Oui
Bulk2016 : Oui
Bulk2017 : Oui

Re: GBC qui écrit du texte

Message par vinc »

PG52 a écrit : 27 sept. 2019 00:17 J'aurais juste une suggestion pour le prochain : incliner le plateau pour faciliter la lecture aux plus jeunes :wink:
Je confirme c'est son défaut!
Et oui, le prochain n'aura pas ce soucis, il sera à la vertical moins quelques degrés pour pas que ca tombe expectation
B Simpson
Membre
Membre
Messages : 125
Enregistré le : 05 mai 2016 10:00
Exposant : Oui
Bulk2017 : Oui

Re: GBC qui écrit du texte

Message par B Simpson »

Salut Vinc
J'ai enfin pris le temps de lire ta présentation.
Depuis le temps que je le vois tourner, je n'avais pas encore compris que le calibrage de l'hélice se faisait avec la lumière :lol:
Pas grand chose à dire à part que tout est bien pensé clapping
Avatar du membre
TeClem8
Administrateur
Administrateur
Messages : 4506
Enregistré le : 08 févr. 2008 16:28
Ambassadeur : Oui
Exposant : Oui
Bulk2014 : Oui
Bulk2015 : Oui
Bulk2016 : Oui
Bulk2017 : Oui
Localisation : Metz

Re: GBC qui écrit du texte

Message par TeClem8 »

C'est vraiment une belle présentation.
Comme les autres, à force de la voir en Expo, on ne sait quoi dire de plus.
Le module marche bien, et il fait son effet auprès du public. Le combot parfait.

Je rejoins, Bart sur un point.
Plus personne ne prends le temps de présenter en détail ces MOCs. Je me rends compte qu'on passe à coté de beaucoup de petit détail finalement.

legpouce
« Anything that can go wrong, will go wrong » Edward Murphy

Maintenant sur FaceBook !
Mon YouTube
Avatar du membre
vinc
Membre
Membre
Messages : 550
Enregistré le : 12 nov. 2014 16:16
Exposant : Oui
Bulk2015 : Oui
Bulk2016 : Oui
Bulk2017 : Oui

Re: GBC qui écrit du texte

Message par vinc »

Merci Bart et Clem, et tant mieux si vous avez appris des trucs grâce à la présentation!
Je trouve ca bien de détailler, ne serait-ce que lorsqu'il sera démonté, 10 ans après je me souviendrai comment le truc était fait, puis ca peut servir de base pour quelqu'un qui voudrait se lancer dans ce type de GBC.
Je ne suis pas de l'ère du facebook à dire "hé les gars j'ai fais un MOC camion benne et pour faire la benne j'ai soudé 2 godets" :lol:
Répondre