Mise en œuvre des Animated Snake Eyes Bonnets POUR RASPBERRY PI

I- Présentation

1.      Support

L’utilisation des « Animated Snake Eyes Bonnet » est possible avec le Raspberry Pi, sur lequel est rattaché un Pi Bonnet.

Le Raspberry Pi est un nano-ordinateur mono-carte, à faible coût et hautes performances, mis au point au Royaume-Unis par la Raspberry Pi Fondation. Le Raspberry Pi en est actuellement à sa septième génération : le Raspberry Pi 3 B+. Intégré d’un processeur 64bits, 1Go de mémoire, Bluetooth, Eternet, 4 ports USB 2.0, 40 borches GPIO, HDMI, ports vidéo, slot pour carte micro SD et une prise d’alimentation connecteur USB pour 5,1V. Pour connaître la version de son Raspberry, il faut exécuter la commande « cat/proc/cpuinfo » sur le terminal après avoir branché et allumé son Raspberry Pi.

 

 

Depuis la sortie du premier Raspberry Pi, de nombreux modules ont été créés pour modifier et améliorer les capacités du Raspberry Pi. Des écrans (tactiles ou non), des chapeaux, des capots, des caméras, … les possibilités, en matière de projet, sont infinie. Sa prise en main est simple : il vous suffit de brancher votre téléviseur, souris, clavier ainsi que l’alimentation, et vous pouvez commencer.

Le Raspberry Pi est en « Open Source » ce qui signifie que tout le monde à l’autorisation de lire, modifier et construire le contenu, à l’exception de la puce principale, le « SoC Broadcomm » (Système sur puce), qui gère de nombreux composants principaux. Bien que plus lent qu’un ordinateur moderne, il reste un ordinateur complet et fournit les capacités attendues pour un niveau de consommation d’énergie faible. Le Raspberry Pi a été conçu pour le système d’exploitation Linux et de nombreuses distributions Linux ont une version optimisée pour le Raspberry Pi.

Les deux options les plus populaires sont Raspbian, basé sur l’OS Debian, et Pidora, basé sur Fedora. L’Arduino est une autre option qui s’adresse à ceux qui veulent créer des projets électroniques. Cependant, il ne s’agit que d’un microcontrôleur, il exécute exclusivement des petits blocs de code spécifique écrit par la personne qui l’utilise. Il existe de nombreuses cartes d’extension qui lui donnent plus de possibilité.

 

2.    Animated snake eyes bonnets

Les « Animated Snake Eyes Bonnet » sont des accessoires pour le Raspberry Pi. Ils permettent d’utiliser deux écrans LCD de 128 x 128 pixel, et fournit également quatre entrées analogiques pour les capteurs. Ils peuvent être utilisé dans des masques, robots, animatronique (créature robotisée), …

 

Ce produit est composé du Pi Bonnet et d’en-têtes pour le brancher au Raspberry. Il peut fonctionner sur tous les Raspberry avec un en-tête 2x20 (Pi B +, Pi 2, Pi 3, Pi Zéro, …), mais de meilleures performances seront possible avec le Pi 3.

 

Il s’agit de la suite du projet « Electronic Animated Eyes » qui utilisait le Teensy 3.2. Bien que composé d’un microcontrôleur performant, le code du projet en a exploité l’espace et les performances.

Le Raspberry Pi est utilisé comme alternative et offre des avantages :

  • Meilleur rendu visuel 3D avec l’utilisation de OpenGL (calcul d’image 2D et 3D) et l’anticrénelage (effet visuel caractérisé par des motifs en forme d’escaliers sur des contours obliques)
  • Processeur plus rapide, RAM abondante et double bus SPI (circuit communiquant avec un schéma maître-esclave, le maître contrôlant la communication)
  • Code de rendu des yeux en Python, facilitant la personnalisation

Mais il comporte également des inconvénients :

  • Le temps de démarrage du système est plus long à partir d’une carde SD, le Teensy ayant tout le code en mémoire flash
  • Procédure d’arrêt explicite
  • Ne convient pas aux applications portables : utilise plus de puissance et la carte SD le rend moins robuste

 

 

II-                   Mise en œuvre

1.      Materiel

Pour l’utilisation des « Animated Snake Eyes Bonnets », il est recommandé d’utiliser les écrans TFT de 128x128 pixels, TFT IPS de 240x240 pixels ou des écrans OLED. Les OLED ont un meilleur angle de vision, un excellent contraste et une bonne saturation des couleurs, mais sont un peu cher. Les écrans TFT sont plus accessible, mais le rendu est légèrement  « délavé ». Les TFT IPS sont un bon compromis entre le coût et le rendu. Il faut aussi avoir un Raspberry avec en-tête GPIO de 40 broches, et le plus récent possible. Bien qu’il fonctionnera sur une carte Pi Zéro ou autre carte simple cœur, les performances seront bien inferieures.

  • Ecrans OLED : il faut utiliser les lignes « supérieures » avec le mot OLED. Les 11 broches des écrans OLED se branchent directement aux 11 broches de la carte du capot. Il faut brancher les fils dans le même ordre pour le capot et pour les écrans, c’est-à-dire de « SI » à « GI », sans qu’aucun fils ne se croisent.

  • Ecrans TFT ou TFT IPS : il faut utiliser les lignes « inférieures » avec le mot TFT. Comme pour les écrans OLED, il faut brancher les fils dans le même ordre pour le capot et les écrans, mais cette fois ci de « Vin » à « Lite ».

Dans les histoires de science-fiction, il n’y a ni de haut, ni de bas dans l’espace. Pour le branchement des fils c’est la même chose. Ce qui importe c’est que les câbles soit branché des écrans au capot. Mais à l’heure actuelle, le logiciel considère que les écrans sont orientés de façon à ce que les broches de connexion soient sur le bord supérieurs.

Ci-dessous des possibles dispositions de l’installation. Des broches ont été soudées à la carte du capot et aux écrans, permettant ainsi la jonction des rubans de fils.

            

En utilisant des câbles ruban « arc-en-ciel », qui possède 10 couleurs, vous aurez deux fils de la même couleurs (les écrans utilisant 11 fils). Cependant il est possible d’utiliser 7 fils pour avoir un gain d’espace. Pour l’écran OLED, les broches SC, SD et 3V peuvent être ignorées, pour les écrans TFT ce sont les broches 3V3 SO, CCS, et Lite qui peuvent être ignorées. Pour une bonne netteté des écrans, il faut que les câbles soit court et bien rangés, sinon il pourrait y avoir des interférences électriques qui entraîne des problèmes d’animations.

2.    Logiciel

a)      Pi

Pour faire fonctionner ce projet, il faut que vous installiez la dernière version de Raspbian Lite, téléchargeable sur le site web de Raspberry Pi.

L’installation nécessitera :

  • Clavier USB
  • Moniteur HDMI
  • Réseaux (Ethernet, Wi-Fi)

Insérez la carte micro SD, puis connectez le moniteur, le clavier et le câble Ethernet. Le système va redémarrer deux fois, à la seconde fois connectez-vous avec l’identifiant « pi » et le mot de passe « raspberry ». Ensuite, lancez l’outil pour une configuration initiale.

Pour la suite il est conseiller de changer le mot de passe, d’activer le SSH (vous permettra de vous connecter au système à l’aide d’un programme terminal sur le réseau) et d’y ajouter le Wi-Fi.

b)     Options du Pi-Eyes

Tout d’abord vous devez exécuter ce qui suit sur la commande.

Il s’agit d’un script permettant d’installer tout les logiciel prérequis, et poseras quelques questions pour savoir votre configuration actuelle (notamment concernant le type d’écran que vous avez choisi).

Apres l’installation et la mie en place, il est possible que les yeux présentent des « pépins ». Si ce n’est pas le cas, votre matériel est prêt, dans le cas contraire vous devez vous connecter à votre Raspberry en SSH et exécuter les commandes suivantes :

Si vous utilisez des écrans TFT :

Si vous utilisez des écrans OLED :

Les affichages cesseront de se mettre à jour. Puis selon l’écran que vous utilisez, le code sera différent.

  • Le premier argument (-o, -t ou -i) : il définit le type d’afficheur utilisé ; OLED, TFT ou IPS, respectivement.
  • Le deuxième argument (-b) : il correspond au débit maximum pour les affichages. Plus le débit binaire est élevé, plus l’animation est fluide, mais la vitesse d’exécution peut être impactée.
  • Le troisième argument : il s’agit du débit qui sera utilisé.
    • OLED: Pour les écrans OLED, le débit par défaut est 10 000 000 (soit 10 MHz)
    • TFT : Pour les écrans TFT, le débit par défaut est 12 000 000 (soit 12 MHz)
    • IPS : Pour les écrans IPS, le débit par défaut est 96 000 000 (soit 96 MHz)

Pour que l’affichage soit fluide, modifier le dernier argument en mettant une valeur inférieure, comme ci-dessus. Si un seul des deux écrans présente des problèmes, il faut réduire la vitesse jusqu’à que les deux fonctionnent correctement. Une fois que la valeur trouvée, appuyez sur « Ctrl + C » puis exécuter la ligne de commande suivante :

Vous trouverez quelques lignes plus loin :

(Ou -t si vous utilisez des écrans TFT) et modifiez-la, de façon à pouvoir modifier la valeur du débit.

Enregistrez les modifications, quittez l’éditeur, puis redémarrer le Raspberry :

Après moins d’une minute, les yeux devraient se relever, sans pépins. Sinon répéter les étapes jusqu’à que vous soyez satisfait.

3.     Personnalisation

a)      Matériel

Par défaut, les yeux s’animent seuls et regardent au hasard. Cependant avec du matériel il est possible de contrôler la direction des yeux, les clignotements ainsi que la dilatation de la pupille.

i-                    Commandes analogiques

Les commandes analogiques ajoutées doivent inclure des connexions aux broches 3.3V et GND.

Il est possible de connecter XOUT et YOUT d’une manette de jeu aux broches analogiques A0 et A1. Les paramètres du code activent le joystick. La fonction de clic du joystick permet de contrôler le clignement des yeux (broche GPIO23).

 

 

 

Pour que les pupilles se contractent ou non en fonction de la lumière, il faut connecter une cellule photoélectrique et une résistance 10K. Les entrées analogiques pour les pupilles sont activées dans le code par défaut.

 

 

 

Pour le contrôle manuel de la dilatation de la pupille, un potentiomètre 10K peut être utilisé. Le pied central se connecte à la broche A2. Il s’agit de la même entrée que pour la photocellule, pour une commande analogique différente.

 

 

 

ii-                  Boutons

Les yeux clignotent de façon autonome, mais il est possible d’ajouter un ou plusieurs boutons pour les faire clignoter sur commande. Il est possible de les faire clignoter individuellement.

 

Pour les boutons, il faut connecter chaque « jambe » GND à celle opposée à une broche numérique.

  • GPIO 22 : clin d’œil gauche
  • GPIO 23 : clin d’œil des deux yeux
  • GPIO 24 : clin d’œil droit

 

 

 

iii-                Changements logiciels

Le code doit être ajusté pour utiliser les caractéristiques présentées plus tôt. Le code se trouve en exécutant « /boot/Pi_Eyes/eyes.py ». Les paramètre de configuration matérielle peuvent être trouvée en haut du code :

Par exemple, pour activer l’entrée du joystick et d’une cellule photoélectrique, il faut définir JOYSTICK_X_IN, JOYSTICK_Y_IN et / ou PUPIL_IN sur les numéros de canal analogique (0 à 3).

b)     Look

i-                    Changer le code Python

Le script d’installation place le code ainsi que les données dans le répertoire « /boot/Pi_Eyes ». En utilisant des écrans TFT, TFT IPS ou OLED, le script Python se nomme « eyes.pi ». Après avoir modifié le code, il faut rallumer le raspberry, et le code sera exécuter au démarrage.

Certaines commandes mentionnées plus haut permettent de modifier quelques éléments concernant l’apparence des yeux. Par exemple : AUTOBLINK. Si AUTOBLINK est défini sur False, les yeux cesseront de clignoter automatiquement et ne répondront qu’aux pressions des boutons.

ii-                  Changer les graphiques

Certains aspects, tel que la couleur de l’iris, peuvent être modifiés. Ces fichiers se situent dans le répertoire « / boot / Pi_Eyes / graphics ». Il est conseiller de ne pas écraser les fichiers originaux, mais de créer de nouveaux fichiers et de modifier leur emplacement dans la section qui commence à la ligne 122 :

Les formats graphiques les plus courant (JPG, GIF, PNG) sont pris en charge. Les images devant être carrées.

Les graphiques sont stockés à plat puis sont déroulés. L’iris (fichier iris.jpg) est la couleur de l’œil. Il suffit de modifier la teinte et la saturation, ou alors créer quelque chose de personnalisé. La sclérotique (fichier sclera.png) est le blanc de l’œil. Ce fichier PNG est un fichier transparent, il est conseiller, lors de l’édition, de conserver cette transparence.

   

Il est déconseillé de modifier le troisième fichier « lidMap » à la ligne 79, car il est possible que l’éditeur ne conserve pas les noms et le fichier ne pourras pas être exécuter.

« eyes.svg » est un fichier SVG qui gère la forme et la taille de divers éléments. Il est possible faire des yeux de chèvres, dragon, … Pour ce faire les logiciels InkScape et Adobe Illustrator peuvent modifier des fichiers SVG.

  • Le cercle bleu le plus large ne peut être modifié, il est là pour référence et représente les limites extérieures du globe.
  • Le trajet de l’iris détermine la taille du bord externe de l’iris par rapport à l’ensemble de l’œil.
  • « pupilMin » et « pupilMax » sont la taille et la forme de la pupille dans ses positions les plus contractées et les plus dilatées. Cela n’a pas besoin d’être un cercle (comme pour le fichier dragon-eyes.svg).
  • Deux cercles bleu supplémentaire « scleraFront » et « scleraBack » sont utilisé pour le balayage de blanc de l’œil.
  • Les chemins rouges sont utilisés pour l’animation des paupières. « upperLidOpen » et « upperLidClosed » sont la forme de la paupière supérieure dans ses positions complètement ouverte et complètement fermée. « lowerLidOpen » et « lowerLidClosed » sont les mêmes pour la paupière inférieure.

 

III-             Conclusion

Les « Animated Snake Eyes Bonnet » sont des accessoires pour le Raspberry Pi. Ce dernier est un nano-ordinateur possédant de nombreux accessoires. L'utilisation des « Animated Snake Eyes Bonnet » est possibles en ajoutant un capot au Raspberry Pi, puis brancher les yeux au capot. Les yeux s’affichent sur un ou plusieurs écrans. Il existe trois types d'écrans TFT, TFT IPS ou OLED. Les écrans TFT IPS étant un bon compromis entre coût et rendu.

Sur le chapeau Adafruit, il y a deux lignes pour brancher des broches. Une fois le matériel mis en place, il ne manque plus qu'à faire l'installation du Pi. Pour ce faire, il est nécessaire d'avoir un clavier USB, un moniteur HDMI et un internet, de nombreuses commandes sont nécessaires pour finaliser l'installation. Ensuite il faut aussi installer les yeux, pendant l'installation des questions seront posées selon la configuration du matériel.

L'avantage avec ce produit est qu'il est possible de personnaliser les yeux soit avec le matériel, soit le visuel. Le rajout de matériel (commandes analogiques, boutons ou modification du logiciel) peut permettre de contrôler la direction, le clignement des yeux et la dilation de la pupille. Le visuel quant à lui peut être modifié à partir du code. Il est possible de modifier l'iris ainsi que le blanc de l'œil, simplement en modifiant/ remplaçant des fichiers.

La prise en main des « Animated Snake Eyes Bonnet » est simple, et si jamais un problème est rencontré, il existe une grande communauté de développeur qui sont là pour aider.

 

Aurélie MASTALERZ

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *