MegafonLenina : un jukebox à cadran

Le point de départ de ce projet est l'objet lui-même, un téléphone à cadran de marque polonaise, probablement fabriqué dans les années 1980. Faire fonctionner un tel appareil sur le réseau français en 2020 représente un défi qui dépasse le cadre d'une simple « expérience électronique ». Outre le manque d'informations (1) qui pourraient suggérer une interopérabilité des matériels et réseaux téléphoniques français et polonais à cette époque, l'abandon définitif du réseau téléphonique commuté (RTC) analogique offre peu d'avenir à ce type de matériel. L'objectif de ce circuit est donc de mettre en valeur les mécanismes originaux de cet objet (le cadran de composition, la sonnerie mécanique et le décrochage du combiné) dans un but ludique, la difficulté étant de les adapter à une utilisation hors du réseau téléphonique pour lequel ils ont été conçus. Le fonctionnement retenu est relativement simple. A l'allumage, le téléphone sonne. Lorsque le combiné est décroché, une tonalité d'attente est jouée dans le combiné, jusqu'à la composition d'un numéro sur le cadran, qui déclenche la lecture d'un fichier mp3. La séquence se termine une fois le combiné raccroché.

MegafonLenina - vue extérieure

En principe, le téléphone est à l'origine alimenté par un courant continu de 60V (48V en France) via la prise téléphonique, auquel se superpose un courant alternatif envoyé par le central téléphonique pour déclencher la sonnerie mécanique en cas d'appel (courant de tension 80V et de fréquence 50 Hz en France) ou pour émettre différentes tonalités (attente de composition, ligne occupée). Ici, c'est un Arduino Nano, construit autour d'un microcontrôleur 8 bits ATmega328, qui régit le fonctionnement de l'appareil : déclenchement de la sonnerie, état du combiné (décroché/raccroché), numéro composé par l'utilisateur, lecture de la tonalité d'attente et celle des pistes sonores. Le code du programme est largement basé sur celui proposé par Pascal Engélibert. L'alimentation choisie (courant continu de tension 9V) permet d'alimenter de manière satisfaisante l'ensemble du circuit sans conversion. L'Arduino Nano acceptant sans problème une tension de 12V, il serait possible d'aller jusqu'à cette valeur en choisissant un relais adapté pour la sonnerie (voir ci-après).

La sonnerie du téléphone est constituée d'un battant, dont la base est pourvue d'un électroaimant, qui bascule pour frapper à tour de rôle l'une des deux cloches, chacune produisant un son différent (2). A l'origine, la réception d'un appel déclenchait l'envoi d'un courant alternatif qui changeait l'état de l'électroaimant à la fréquence de 50Hz et provoquait la bascule pendant une durée déterminée. Ce système est « simulé » ici par un relais DPDT alimenté en 9V, dont la commutation (bascule) est pilotée par un transistor bipolaire 2N2222A (type NPN) qui laisse passer le courant ou non en fonction de l'état haut ou bas d'une sortie numérique de l'Arduino. L'électroaimant change de polarité à chaque commutation, provoquant à chaque fois la percussion du battant contre la cloche opposée. La fréquence de la sonnerie est ici de 25Hz, c'est-à-dire 25 percussions par seconde (l'électroaimant change d'état toutes les 40 millisecondes). Cette fréquence peut être modifiée (3) dans le code. Une diode 1N4001 dite « de roue libre » polarisée en inverse est placée en parallèle de la bobine du relais, afin de protéger le transistor et le microcontrôleur du phénomène d'induction électromagnétique (4).

L'interrupteur présent sous le combiné du téléphone est relié à une des entrées numériques du microcontrôleur, elle-même reliée à l'alimentation électrique par le biais de la résistance de tirage interne à l'Arduino (mode INPUT_PULLUP). Par défaut (combiné raccroché), l'interrupteur est fermé (5), l'entrée numérique est reliée à la masse et est au niveau électrique bas. Lorsque le combiné est décroché, l'entrée est au niveau haut. L'Arduino, qui alimente et pilote via sa sortie +5V et son port série le module DFPlayer Mini (employé dans un précédant circuit), commande à ce dernier la lecture de la tonalité d'attente. La bibliothèque nécessaire à la prise en charge du module DFPlayer Mini est importée au début du programme.

Le cadran de composition rotatif se comporte également comme un interrupteur, qui s'ouvre un nombre de fois égal au numéro composé (6). Concrètement, une fois remonté puis relâché par l'utilisateur lors de la composition d'un numéro, le cadran revient à sa position initiale (grâce à un système d'engrenages et de ressorts) et provoque pendant ce temps l'ouverture de l'interrupteur (constitué d'une lame métallique mobile et d'une lame fixe) à une fréquence donnée. Ainsi, plus le numéro composé est grand, plus la course du cadran jusqu'à sa position initiale sera longue et plus le nombre d'ouvertures de l'interrupteur pendant cette période sera grand. A l'origine, ces ouvertures de lignes étaient interprétées par le central téléphonique comme des impulsions correspondant au numéro composé. Ici, l'une des lames est reliée à la masse, l'autre à une entrée numérique de l'Arduino utilisée comme précédemment (mode INPUT_PULLUP), par défaut à l'état électrique bas (circuit fermé).

MegafonLenina - schéma

Le programme de comptage des impulsions (ouverture du circuit, niveau électrique haut) mérite une attention particulière. Si une première impulsion est détectée, le compteur s'incrémente et on temporise le temps que l'interrupteur change d'état (ici, 45 millisecondes, valeur déterminée d'après les tests). On retient le moment de la dernière impulsion à l'aide de la fonction millis(), qui renvoie le temps écoulé depuis le début du programme, valeur à laquelle on ajoute 100 millisecondes qui permettent d'attendre une éventuelle impulsion supplémentaire. Si pendant cette durée une autre impulsion est détectée, le compteur s'incrémente à nouveau. La boucle se poursuit jusqu'à ce qu'aucune autre impulsion ne soit détectée dans l'intervalle de 100 millisecondes (condition vérifiée si la durée d'exécution du programme est égale ou supérieure au temps enregistré de la dernière impulsion + 100ms). Dans ce cas, l'Arduino considère que la composition est terminée et commande au DFPlayer Mini la lecture de la piste correspondant au nombre d'impulsions.

Ce projet présente plusieurs intérêts :

Fichiers

Notes

1. Deux indices néanmoins. Cet article de la revue Réseaux, paru en 1992, nous apprend que des lignes téléphoniques sous licence Alcatel sont déployées dans les années 1980 en Pologne. La prise du téléphone utilisé signale de son côté une tension d'alimentation de 60V en courant continu, contre 48V pour l'alimentation des téléphones en France.

2. Probablement un demi-ton de différence.

3. Dans la limite de la vitesse maximale de commutation du transistor et du relais. Par ailleurs, la sonnerie mécanique était à l'origine pilotée sous 80V. Il est possible qu'à des fréquences trop élevées, l'alimentation de 9V ne soit pas suffisante pour produire un son satisfaisant : le battant pourrait ne pas frapper suffisamment fort les deux cloches ou ne pas réaliser une course complète avant sa bascule. A noter qu'une molette de réglage du niveau sonore de la sonnerie était souvent présent sur ce type de téléphone ; celle-ci permet de jouer sur la course du battant.

4. Explication : un courant électrique parcourant un conducteur produit un champ magnétique. De même, un courant électrique apparaît dans un conducteur qui est soumis à un champ magnétique. Cette propriété appelée induction électromagnétique est utilisée dans des composants comme les relais, moteurs et convertisseurs CC-CC qui intègrent une bobine à cet effet. Quand un tel composant cesse d'être alimenté, la tension aux bornes de la bobine s'inverse. Le dispositif qui le pilote (microcontrôleur, transistor) risque dans ce cas de subir une surtension par retour de courant “parasite”. Dans le cas du transistor, la tension entre son collecteur et son émetteur est alors égale à la somme de la tension d'alimentation et de la tension aux bornes de la bobine. La solution consiste à le protéger grâce à une diode dite de roue libre polarisée en inverse et placée en parallèle de la bobine, à l'entrée du collecteur, de sorte à bloquer la tension inverse. Le courant qui continue à circuler dans la bobine se décharge dans la diode.

5. Attention, c'est souvent l'inverse. Si c'est le cas, il faut penser à remplacer LOW par HIGH à la ligne 52 du programme :

if(digitalRead(PIN_COMBINE) == LOW) { // si le combiné est raccroché

6. Il se ferme un même nombre de fois, mais la situation a été simplifiée pour l'explication.


 Instructions

Le projet ne pose de problèmes particuliers. L'installation de l'IDE Arduino et la programmation de l'Arduino Nano sont expliquées sur la page dédiée. L'utilisation du DFPlayer Mini est expliquée sur la page du projet Master Blaster.

Matériel

Coût de revient estimé : 39,60€. Le coût est calculé à partir des catalogues RS Components (composants) et Gotronic (modules). Les prix relevés sont ceux des composants à l'unité ou vendus en petites quantités.

Ressources