Scanner d'images LEGO-EV3
Scanner d'images construit à l'aide de l'ensemble LEGO Mindstorms EV3 Education et d'une roue supplémentaire. Comprend la source du logiciel Mindstorms EV3 et les instructions de construction. Numérise du papier de 8,5 pouces de large, mais peut être adapté à des formats de page similaires.
Entrées
- Boutons briques – Pour contrôler les menus de configuration
- Ultrasons – Détecter quand le papier est inséré
- Capteur tactile – Réinitialiser la position du capteur de couleur par collision
- Capteur de lumière – Scannez les pixels pour créer une image
Sortir
- Image en niveaux de gris de 44 x 32 pixels, 8 bits
- Fichier CSV représentatif des valeurs de données bitmap 8 bits en niveaux de gris
- Image tramée à l'écran
Parties
Cette construction nécessite des pièces d'un ensemble LEGO MINDSTORMS EV3 et une grande roue supplémentaire, qui pourrait être obtenue à partir d'un autre ensemble identique ou d'un ensemble de voitures.
Détails de la construction et du capteur
- Ce robot met en œuvre deux configurations d'engrenages de force, l'une pour déplacer le capteur de lumière sur l'axe horizontal, à travers un monorail, la seconde pour fournir un mécanisme d'enroulement du papier contenant l'image à numériser.
- Le mécanisme d'enroulement et le monorail utilisent tous deux un gros moteur.
- Un contrepoids est utilisé pour aligner la roue du monorail avec la force normale exercée par la surface du monorail.
- Près de la bobine se trouve un capteur infrarouge qui permet de détecter le moment où le papier est inséré.
- Deux capteurs tactiles sont placés à chaque coin du scanner. Ils sont utilisés pour détecter quand le monorail atteint un virage. Seul le capteur du côté droit est actuellement utilisé.
Remarques sur le logiciel
Le programme se compose de quatre étapes : interface utilisateur, numérisation, impression de l'image, enregistrement de l'image. L'interface utilisateur est conçue en adaptant le paradigme MVC à la programmation séquentielle en briques. Il permet n écrans de configuration, avec une valeur à configurer par écran. Les variables utilisées plus tard dans le programme correspondent chacune à un paramètre.
Écrans de configuration
- uiPrintScreen : bool – Si vrai, une image tramée de 1 bit sera imprimée sur l'écran de l'EV3, pour ressembler à l'image en niveaux de gris dans la RAM.
- uiSaveState : bool – Si vrai, un fichier CSV sera généré à partir des données dans la RAM. Ce fichier ressemble à un fichier bitmap et peut être converti en bitmap à l'aide d'un programme externe tel que A-VEKT Image CSV Converter.
- XStartPos : numérique – Indique la position de départ en pouces, sur l'axe X.
- YStartPos : numérique – Indique la position de départ en pouces, sur l'axe Y.
- width : numérique – Indique la largeur de l'image en pouces.
- height : numérique – Indique la hauteur de l'image en pouces.
Phase de numérisation
- Avant la numérisation, l'utilisateur est invité à insérer le papier à numériser et la position du capteur de lumière est réinitialisée à la position initiale.
- La numérisation consiste à déplacer le capteur d'image sur le monorail et le papier sur la bobine, pour créer une matrice de points numérisés indépendamment.
- Lors de la numérisation, une ligne est numérisée de droite à gauche et la suivante est numérisée de gauche à droite. Cela réduit le temps d'analyse.
- Une fois la numérisation terminée, le papier restant est enroulé à l'arrière du scanner.
Phase d'impression
- Cette phase est facultative et activée par défaut. Elle consiste à imprimer l’image sur l’écran.
- L'image numérisée contient des données en niveaux de gris, mais l'écran de l'EV3 est en noir et blanc 1 bit. Pour compenser, chaque pixel numérisé est transformé en un motif de 4 pixels sur 4 à l'aide du tramage ordonné (Bayer), qui est ensuite imprimé à l'écran.
Phase de sauvegarde
- Cette phase est facultative.
- Étant donné que le bloc de fichiers de l'EV3 est limité à l'enregistrement uniquement de caractères imprimables, une image bitmap ne peut pas être générée par programme. Au lieu de cela, un fichier CSV est utilisé.
- Le CSV peut être converti en bitmap à l'aide de « A-VEKT Image CSV Converter » avec le paramètre de canal alpha 8 bits.
- Lors de la création du CSV, les lignes analysées à l'envers sont réorganisées dans un deuxième tableau.
Améliorations
- La précision du scanner pourrait être améliorée avec un deuxième ensemble, qui pourrait être utilisé pour créer un axe X à deux rails au lieu d'un monorail.
- En raison des forces exercées par les câbles, le monorail est parfois instable, ce qui entraîne une mise au point variable lors de la capture de certains pixels.
- Le logiciel peut être amélioré. Je le publie tel qu'il était lorsque j'ai arrêté de travailler dessus.
- Je n'ai pas l'intention de continuer à développer ce projet jusqu'à ce que LEGO publie une version de LEGO MINDSTORMS EV3 pour les systèmes d'exploitation Linux ou que je trouve une autre raison impérieuse d'acheter mon propre ensemble Mindstorms EV3.
Licences et droits d'auteur
- Les fichiers sources sont partagés sous la licence publique générale GNU 2.0
- Les images d'instructions et le contenu supplémentaire sont partagés sous la licence Creative Commons Attribution 4.0 International.
- Le droit d'auteur est partagé entre l'Université de Porto Rico à Arecibo et moi-même.
Avis de non-responsabilité
- J'ai développé cela pour m'amuser dans le cadre d'un cours d'introduction à la robotique de l'Université de Porto Rico à Arecibo.
- Ce scanner est vaguement basé sur l'imprimante du « Guide non officiel de l'inventeur LEGO MINDSTORMS NXT 2.0 ».
- LEGO, MINDSTORMS, MINDSTORMS EV3, MINDSTORMS NXT sont des marques commerciales et/ou des droits d'auteur du groupe LEGO. Leur utilisation n’implique aucune affiliation ou approbation de leur part.