01) Étude préliminaire.

Sorte d’habitude, lorsque je développe un nouveau projet, je pars du principe qu’il est valorisant de le partager. Une telle activité prend un temps extrêmement long et s’étend sur plusieurs mois. Aussi, rédiger le didacticiel quand tout est terminé et parfaitement au point n’est pas envisageable, car au fur et à mesure de l’avancement « des travaux », j’oublie les détails techniques, les astuces, les points importants. Aussi, il est préférable pour moi de rédiger les divers documents au fur et à mesure de l’avancement du projet. Cette approche a l’avantage de dévoiler l’intégralité du cheminement, avec, c’est inévitable, des remises en cause et des changements en cours de route. L’inconvénient, c’est qu’il ne s’agit pas d’un tutoriel linéaire qui part d’un point A pour aller en ligne droite à un point B. En revanche, au point de vue expérience, c’est à mon sens beaucoup plus riche.

Les critères fondamentaux.

Sans que ce soit forcément réalisable, il me semble incontournable d’établir initialement des objectifs (Très ou trop) ambitieux, quitte lors du développement à faire des concessions et à adopter des compromis. Voici un résumé de ce à quoi je souhaiterais aboutir :
• Un ensemble dont l’apparence ressemblera le plus possible à celle de l’ENIGMA historique.
• Minimiser le nombre de circuits intégrés ajoutés à la carte Arduino NANO.
• Outre le module des « ampoules électriques, et celui du clavier, limiter au maximum les circuits imprimés typiques à réaliser. (Pas de FICHES croisées matérielles pour simplifier.)
• Si facilite la conception, utiliser au maximum des modules du commerce avec leurs bibliothèques.
• Associer un petit afficher OLED pour l’affichage des positions des Rotors.
• Trouver des solutions simples utilisables par n’importe quel internaute. Ne nécessiter qu’un outillage banal pour tout « bricoleur en électronique ».
• N’utiliser que des composants faciles à approvisionner dans le commerce en ligne.
• Machine autonome en énergie sous forme d’accumulateurs rechargeables.
• Minimiser le coût de l’ensemble.

L’ampleur du défi.

Bien que nous ne soyons jamais à l’abri de mauvaises surprises en programmation, je ne crois pas que ce sera le logiciel qui contribuera à la plus grande difficulté. Normalement, les routines de traitement sont déjà rédigées et bien au point dans le petit projet désigné en page de garde. Les procédures ont fait leurs preuves et il sera probablement possible de les réemployer pratiquement sans les modifier. Comme on va rapidement le voir, la prouesse se situe dans la gestion des Entrées/Sorties. En effet, une estimation préalable conduit à une structure « informatique » qui va se contenter d’une seule carte Arduino NANO pour gérer intégralement le traitement des données. Ce n’est déjà pas élémentaire. La difficulté majeure réside dans le nombre des Entrées/Sorties qu’il va falloir gérer. En effet, avec une cartes Arduino NANO on dispose de :
• 11 broches binaires + 8 broches analogiques soit 19 E/S configurables.
• On dispose donc de 19 broches configurables en Entrées ou en Sorties.
Faisons la liste de ce que l’on désire gérer avec ces interfaces :
• 26 LEDs pour la planche qui simules les ampoules à incandescence de la machine réelle.
• 26 touches pour le clavier de la codeuse.
• Un petit afficheur graphique OLED.
• 6 LEDs pour l’initialisation de la machine. (6 ou moins … on verra plus tard.)
• Trois ou quatre boutons poussoir pour les servitudes d’exploitation.
• Un petit bruiteur pour générer du morse ou pour le dialogue Homme machine.
• Deux multiplexeurs de type PCA9685.

RÉSUMÉ de la situation :
>>> On dispose potentiellement de 19 broches d’interfaçage.
>>> On doit gérer environ 67 liaisons extérieures.
Trouvez l’erreur !

La suite est ICI.