Une règle POV commandée par une application Android

Mais c’est quoi ?

Une règle POV (Persistence of vision : Persistance rétinienne) est une petite barre de 8 diodes (ou plus (ou même moins)) qui clignotent suivant un schéma précis. En déplaçant rapidement la règle, ce scintillement « dessine » des points qui permettent alors d’écrire un petit texte.

Il y a une foule d’exemples sur Internet ; motorisés, montés sur un ventilateur, une roue de vélo, un chien, un nunchaku, …

Voici ce que ça donne :

DSC01560-1920x1080Oui, ceci est une photographie, sans aucun montage ni aucune retouche (hormis le recadrage). Il suffit d’ouvrir l’obturateur (mode BULB), de faire son dessin, puis de le refermer. Il est nécessaire de disposer d’une télécommande pour cela.

J’ai choisi d’en fabriquer une simple, dont on peut changer le texte en utilisant un smartphone Android, par Bluetooth.

Fabriquer sa règle POV

Un peu de réflexion

Puisque les diodes représentent une colonne d’un caractère à un instant précis, il est nécessaire de « traduire » les caractères en colonnes de diodes. J’ai choisi ici de fixer la taille des caractères à 4 colonnes. Chaque colonne sera ainsi représentée par un nombre de 8-bits, le pixel du bas étant le bit de poids faible, et le pixel du haut le bit de poids fort.

Avec un tableur et une petite demie-heure, on peut dessiner pixel par pixel chaque caractères, pour les convertir en 4 nombres de 8-bits.

lettreOn construit de cette façon le tableau suivant de 380 octets, contenant tous les caractères ASCII affichables :

Calibrer le délai

Une étape importante lors du développement du programme est de choisir un délai entre deux colonnes d’un caractère. S’il est trop long, le caractère sera plat. S’il est trop court, le caractère sera étroit.

Une expérience simple permet de calibrer ce délai. Il suffit d’un chronomètre, et de votre bras :

  1. Chronométrez vous pendant un temps défini (10 secondes par exemple) et comptez des mouvements avec votre bras, comme si vous utilisiez cette règle. Par exemple, basculez le de 60 degrés puis revenez à votre position.
  2. Pour ma part, en 10 secondes, je fais 30 mouvements aller et retour, soit 60 trajets.
  3. Estimez le nombre de caractères que doit comporter un trajet. J’ai choisi 20.
  4. Maintenant, appliquer la formule suivante :
    D\'{e}lai = \frac{Temps_{total}}{Nombre_{trajets} \times Nombre_{caract\'{e}res}  \times Nombre_{colonnes}} = \frac{10}{60 \times 20 \times 4} \approx 2 ms

Le schéma

pov_bb

Le montage est trivial, même si, j’utilise un registre à décalage pour économiser des broches sur mon micro-contrôleur. Cela parait idiot puisqu’il y a largement de quoi faire avec les broches présentes sur un ATMega.

Pour le module Bluetooth, il s’agit d’un modèle chinois basé sur la puce BC417. Il n’y a aucune documentation officielle disponible, mais en cherchant « linvor » on trouve quelques informations utiles. Pour le configurer, je l’ai connecté au port série d’un PC, puis je lui ai envoyé les commandes AT suivantes :

 

 Le code pour le microcontrôleur

Je n’ai pas ajouter de commentaires, il est relativement lisible.

 L’application Android

Ici, j’ai triché un peu ; je me suis servi d’AppInventor du MIT. Il s’agit d’un outil en ligne permettant de fabriquer une application Android sans connaissance particulière.

pov_appJe vous fourni le fichier installable (APK), ainsi que le projet « source ». Il n’y a aucune garantie livrée avec ceux-ci.

Notez qu’il est nécessaire d’appairer votre smartphone avec le module Bluetooth avant de démarrer l’application.

Mise à jour: J’ai modifié mon code pour qu’il écrive le message reçu depuis le port série en mémoire, pour pouvoir le charger au redémarrage.

Laisser un commentaire

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

*