Et non, il ne s’agit pas du système de vision dernier cri permettant de connaitre la position de tout objet dans un rayon de 3m (quoi que... ce système a été mis au point et sera installé pour une démo mais c’est une autre histoire).
Il s’agit d’un projet annexe (mais néanmoins indispensable) permettant de donner au robot une expression en représentant son "état" (d’esprit ?) par deux yeux lumineux. On saura ainsi si le robot est content (il vient de marquer), mécontent (il a laissé échappé une bonne occasion), anxieux (il voit passer les secondes sans avoir de balles), dubitatif (s’il est perdu), etc... Les combinaisons sont infinies ou plus précisément, tiendront dans une puce de 8 kilobytes.
A intervalles réguliers (pour éviter de changer d’expression trop souvent), le programme principal analysera quelle expression répond le mieux à la situation présente.
Réalisation technique
La matrice
Nous utilisons deux matrices à leds blanches de 8x8 points de 5mm sur des carrés de 60mm de côté.
Ce sont les matrices LC2088TW1C 8x8 Dot Matrix White de LC LED Inc., une société américaine très sympathique puisqu’ils nous ont aussi envoyé des échantillons de leurs produits. Qu’ils en soient ici remerciés.
Test d’une led
Le principe a été testé sur une led seule, avec deux transistors.
Matrice allumée
Et voila, ça fonctionne !
Pobot Eyes : première vidéo
envoyé par JulienPobot
Electronique
On utilise une carte ICmega8 comportant un AVR ATmega8 : on utilise deux pattes pour communiquer avec les yeux.
Patte ICmega8 | Port ATmega8 | Rôle |
---|---|---|
patte 27 | PD1 | TX |
patte 29 | GND | masse commune |
Normalement, la patte 27 est indiquée non connectée, il faut faire appel au schéma indiqué en fin de la datasheet de l’ICmega8 pour retrouver la patte 1 du port D de l’ATmega8.
Développement logiciel
Nicolas nous présente le code source (en cours de dév.) :
Dans l’atmega8 ("emotion engine"), j’ai un stock d’images. J’ai ensuite une structure qui définit un gros film (suite de paire d’indice d’image). J’ai ensuite un structure qui définit un point de départ dans le gros film et un nombre de frame. Une "commande" est l’indice de ce mini clip.
Je pense rajouter un mode purement bypass pour que l’on puisse écrire directement sur l’écran avec l’i2c (pour debug).
Dans les ATtiny ("graphic synthetiser"), il y a juste une image au reset qui est rafraichit en permanence. Le système poole l’uart pour vérifier l’arrivée d’une trame.
Les trucs à faire :
– la gestion de l’interface I2C (pour l’instant, c’est le bouton qui cycle sur les modes)
– changer le rafraichissement qui dépend trop de l’activité de la liaison série (trop de différence entre pas de réception et test du CRC sur la trame complète, je voulais éviter de rater des interruptions), il faut passer le rafraichissement sur timer, cela ne devrait pas gêner la liaison série, tout en gardant une luminosité
uniforme.
– trouver le faux contact de la colonne
– trouver l’origine de la très mauvaise qualité de la liaison série (qui ne tourne qu’à 4800 Bauds !), il y a plein d’erreurs en cas de nombreux front (les images toutes noires ou toute blanches passent bien), la vérification du CRC est enlevé sinon rien ne passe.
– faire plus d’images :)
Possibilités expressives
Nous définissons chaque expression sous forme d’une icone de 8x8 pixels. On peut utiliser un logiciel (IcoFX pour n’en citer qu’un) qui permettra de construire rapidement tous les patterns qui nous passent par la tête.
Par exemple, voici une croix, pour une expression "clown" ou "explosion de joie".
Le fichier .ico correspondant :
Nicolas a développé un logiciel permettant de simuler ce qui se passe et ainsi visualiser les différentes expressions. Voici par exemple de grands yeux implorants qui vous rappelleront un personnage à poils d’un dessin animé célèbre avec un ogre vert :)