realisations:raspberry:telephoneasajukebox

Téléphone as a Jukebox

Ce projet recycle un vieux téléphone à cadran rotatif en jukebox avec un Raspberry Pi. Dégoté sur un site de vente en ligne d'objets d'occasion, il est dans un état nickel et date de 1978 !

L'idée est simple : composer un numéro sur le cadran déclenche la lecture d'un fichier audio correspondant. Composer le 1 joue un morceau, le 2 un autre, etc. Un Raspberry Pi logé sous le cadran écoute les impulsions électriques générées par la rotation, identifie le chiffre composé et lance la lecture via le haut-parleur du combiné.

Les numéros peuvent être aussi longs que souhaités : composer 007 joue le thème de James Bond, 3615 une pub du Minitel, 118218 les pages jaunes…

En m'inspirant des projets aselektriskbureau, s63, j'ai écrit un programme en Python qui identifie le chiffre tourné sur le cadran puis qui permet de rechercher dans une liste de fichiers le numéro correspondant.

Téléphone ouvert
Agrandir
Téléphone ouvert

Pour commencer, j'ai nettoyé le téléphone ainsi que le mécanisme de rotation du cadran afin de lui permettre de retrouver sa mobilité.

Vue intérieur
Agrandir
Vue intérieur

Le schéma de câblage de ce type d'appareil est assez simple, 4 fils sortent du cadran, ils sont notés en chiffres romains et avec des couleurs :

  • I, blanc-rouge : les impulsions
  • II, rouge : masse
  • III, bleu : interrupteur ouvert lorsque le cadran tourne
  • IV, blanc-bleu : aucune idée

Les 3 premiers sont reliés au Pi comme suit :

  • le rouge et le blanc-rouge transmettent les impulsions liées à la rotation du cadran. Lorsque le chiffre 3 est tourné, 3 impulsions sont envoyées sur ces fils. Le but du jeu est de les lire, facile non ? En les branchant sur les ports GPIO 4 et 5 puis en écoutant ces impulsions à l'aide d'un programme, il est possible de réagir en fonction d'un numéro composé. En fait, ce qui est bluffant est que la simple lecture d'un front montant sur le GPIO relié à ce cadran correspond à une impulsion ; en comptant le nombre d'impulsions, on connaît le chiffre composé par l'utilisateur. La fin de la composition d'un numéro correspond à une attente supérieure à 900 ms. Cette dernière valeur est empirique dans le cadre de ce projet, elle donne un bon compromis entre l'attente de la validation d'un numéro et la rotation du cadran pour le chiffre suivant.
  • Pour améliorer la détection d'un chiffre, le fil bleu du cadran passe à l'état haut lorsque le cadran a terminé de tourner, cela évite d'attendre trop longtemps les impulsions. Je l'ai branché sur le GPIO 17.
  • Enfin, un interrupteur est situé en haut du support métallique pour détecter si le combiné est décroché/raccroché : je l'ai branché entre le GPIO 18 et à la masse.
  • Pour la partie son, j'ai branché le haut-parleur du combiné sur la sortie audio du Pi, ici, il n'y a rien de particulier à faire : ça marche ©.

Voici un tableau de connexion des ports GPIO :

GPIO Couleur Rôle
4 blanc-rouge Impulsion du cadran
GND rouge Impulsion du cadran
17 bleu Rotation du cadran
18 blanc Interrupteur du combiné
GND blanc Interrupteur du combiné

La cinématique, bien qu'évidente, est la suivante :

  1. Décrochement du combiné : événement sur le GPIO 18 et le fichier musical du “tuuuuuuuuuuuuut” est joué correspondant à la note de musique “la”.
  2. L'utilisateur tourne une première fois le cadran pour faire le chiffre 8 : 8 impulsions sont lues sur le GPIO 4, à chaque fin de rotation, le nombre d'impulsions comptées est ajouté au numéro composé
  3. L'utilisateur tourne une 2e fois le cadran, rebelote
  4. L'utilisateur ne touche plus au cadran, au bout d'un certain délai, le programme considère que le numéro est complet et recherche dans sa base de fichiers un nom de fichier correspondant au numéro et le joue.

Pour loger le Raspberry Pi dans le téléphone, j'ai cassé ou arraché les différents composants électroniques de la carte mère afin de pouvoir le glisser sous le cadran.

Vue intérieur
Agrandir
Vue intérieur

Pour l'alimenter, j'ai repris l'approche de régulateur de tension XL4015 que j'ai déjà mis en oeuvre dans mes autres projets. J'ai utilisé le long câble, habituellement branché au mur avec la prise téléphonique en forme de T, pour y faire passer du 12 V avec un adaptateur secteur et puis au travers du régulateur 5V, j'alimente le Pi en me branchant directement sur les pins GPIO.

Vue de profil avec le Raspberry Pi
Agrandir
Vue de profil avec le Raspberry Pi

Les sources et le mode d'installation sont disponibles sur mon gitlab : https://gitlab.com/coliss86/telephoneasajukebox

Ce projet fut vraiment sympa à réaliser : il a été utilisé en conférence sur le stand de mon employeur pour agrémenter un jeu : nous avons mis de nombreux morceaux audio faisant des clins d'oeil à la culture geek, séries ou films.