Actuellement on peut effectuer l’initialisation complète de notre réplique d’Énigma. L’écran graphique est stable. Il est temps d’introduire dans cette machine l’intervention des éléments virtuels du tableau des FICHES croisées et ceux du Brouilleur. C’est le démonstrateur P07_Cryptage.ino qui se charge de cette mission. Les routines de traitement étant intégrées au corps du programme, pour les vérifier il faut crypter du texte et vérifier sur une machine de référence fiable que le chiffrage est identique.
Comparer le comportement de notre réplique celui d’une machine fiable.
Préambule aux essais du démonstrateur P07 il nous faut acquérir et apprendre à se servir d’une Enigma de Reference qui par la suite sera désignée par [Enigma]. Pour ce faire, consulter impérativement les six fiches de Fiche n°27 à Fiche n°32. Faisant usage du contenu de ces dernières, ne passer à la suite de ce didacticiel lorsque vous aurez parfaitement maîtrisé l’initialisation et l’usage de cette [Enigma]. Fort de ce savoir-faire on peut s’aventurer dans l’exploration de P07. Pour expérimenter ce démonstrateur on va effectuer les nombreuses manipulations proposées de la page P12 à la page P16 dans le petit manuel au format A5 nommé UTILISER Énigma.pdf fourni dans le dossier <Documents>.
Le programme d’exploitation ultime.
À partir du moment où l’on peut entièrement initialiser la machine et l’utiliser en Chiffrage / Décryptage, tant qu’il reste de la place disponible dans la zone réservée au programme et celle des données dynamiques, on peut ajouter des fonctions et des options nouvelles qui améliorent la qualité opérationnelle de notre réplique. On ne va pas s’en priver, c’est le programme ultime P08_EXPLOITER_Enigma.ino qui apporte ces améliorations, certaines relevant du luxe, d’autres s’avérant presque indispensables. Si vous avez consulté d’autres didacticiels en ligne dont je suis l’auteur, vous savez que j’éprouve un plaisir non dissimulé à rentabiliser au maximum l’utilisation de ce merveilleux ATmega328. Tant qu’il reste de la place disponible, « j’en rajoute une couche ». Et bien pour P08 il sera difficile de faire mieux en termes d’occupation des zones disponibles.
Un simple regard sur la copie d’écran de la Fig.35 nous apprend que l’on a consommé l’intégralité des cellules réservées au programme. Il ne reste plus un seul octet non utilisé ! Pour ce qui est de la rentabilité, c’est le summum, mais si on découvre un aléas dans le programme, il n’y a aucune possibilité d’ajouter du code pour corriger, il faudra faire de la place. (Par exemple en diminuant les écrans du « HELP ».) Si vous consultez la Fiche n°34 et la Fiche n°35 vous constaterez que l’EEPROM est aussi saturée, il ne reste plus une seule cellule disponible.
La version du compilateur utilisé.
Choisir la version du compilateur C++ qui nous sert à créer le programme objet et à le téléverser dans Arduino n’est pas sans conséquence. Pour des raisons personnelles, je commence toujours à développer avec la version 1.7.9 qui a créé tous les démonstrateurs ainsi que P08. Du coup les informations relatives à la taille que présente le programme au cours de son évolution ne sont vraies que si l’on compile avec 1.7.9, car il faut savoir que les version ultérieures ont été optimisées, et elles produisent un code binaire qui prend bien moins de place. Par exemple :
Conclusion : Si l’on compile avec 1.8.0 on dispose immédiatement de 2160 octets de libres pour améliorer le programme. Difficile de trouver encore de nouvelles options, mais on pourrait améliorer les affichages en respectant les accentués, mieux décrire la liste commandes etc.
Alors pourquoi ne pas profiter de cette manne ?
Rien à voir avec une sorte de lassitude qui inciterait à en rester là . Au contraire, j’adore programmer et j’aurais été enchanté de poursuivre le développement logiciel en 1.8.0 jusqu’à y saturer les 30720 cellules de SDRAM. Mais pour une raison que je n’ai pas réussi à déterminer, compilé avec cette mouture de l’IDE le programme sur certaines fonctions ne se comporte plus correctement. Alors je préfère me contenter d’un P08 en version 1.7.9 qui est stable et dont je peux garantir le bon fonctionnement et ne pas courir le risque de vous proposer « une planche savonnée ».
Un avertissement « de couverture ».
Observant la Fig.35 on constate que le compilateur affiche en orange une alerte pour le moins inquiétante. Rassurez-vous, les développeurs du compilateur « ouvrent le parapluie » pour nous mettre en garde d’un danger potentiel. Mais dans notre cas il n’y a rien à craindre. Du reste ce n’est pas la première fois que je sature le skech et l’EEPROM, et mes programmes ont toujours fonctionné parfaitement. (Mis à part parfois lors d’un bug découvert tardivement mais corrigé sans conséquence sur la stabilité du programme.) En réalité, cette précaution je pense doit être prise dans la mesure où la collision entre la PILE et le TAS n’est pas vérifiée par le programmeur. Hors ce phénomène n’est pas directement lié à la taille du programme, mais à sa boulimie en mémoire dynamique. Pour notre cas il reste 322 octets entre la PILE et le TAS. C’est largement suffisant pour que P08 soit stable. Hors un programme bien plus petit en taille pourrait diverger. Il suffirait qu’il utilise des procédures récursives avec une plongée en grand nombre dans des appels sans retour empilant de surcroit des données locales. En résumé, les concepteurs du compilateur sont prudents car ils savent que ce problème sournois peut se produire pour tout logiciel, et ils nous en avertissent à leur façon. (Voir à ce sujet le chapitre 24 en page 66 du didacticiel mentionné en page 1.)
Utiliser le programme ultime d’exploitation.
C’est dans le tutoriel de Linéaire.pdf ou dans le livret UTILISER Énigma.pdf que sont expérimentées les dernières fonctions et options ajoutées à P08 de la page P17 à la page P24 qui terminent votre formation d’opérateur télégraphique. Toutefois, l’option de mesure de la tension du +5Vcc de la carte Arduino ne sera crédible que si l’on complète le circuit imprimé qui supporte OLED et le petit clavier par les composants du schéma de la Fiche n°25. Ces éléments on été facilement ajoutés car un peu de place était prévue « pour le cas où » sur la plaquette cuivrée. Le dessin du circuit imprimé donné en Fiche n°17 et Fiche n°18 a été également mis à jour. Cet ajout est visible avec zoom sur Image 34.JPG sur laquelle on voit que la résistance de 4,7kΩ passe sous la tige du condensateur de 470µF. Sur Image 35.JPG nous avons une vue d’ensemble du circuit imprimé ainsi modifié et sur Image 36.JPG la vue coté cuivre de ce petit ajout.
Étude et réalisation du dernier circuit imprimé, celui des 26 LEDs oranges.
Ultime étude électronique, pour des raisons d’optimisation de l’encombrement de notre réplique d’Énigma, le circuit imprimé du tableau des ampoules simulées aura la même largeur que celui du clavier principal et taillé dans le même lots de circuits de prototypage. Comme pour son frère ainé du clavier, il sera complété par une petite plaquette située sur le dessous servant de support aux connecteurs coudés HE14 de liaison avec les multiplexeurs. Ce circuit de complément est parfaitement visible sur Image 37.JPG ou sur la Fig.36 qui montrent que les 27 petits fils électriques de liaison entre les deux éléments sont protégés par un petit carton rigide. Ce carton est isolé sur Image 38.JPG qui en définit très bien la forme et les contours. Les dessins de ces derniers circuits imprimés sont proposés dans les Fiche n°40 et
Fiche n°41. Comme à chaque fois on commence par les composants de faible hauteur, montré en Image 39.JPG. Mais ici s’arrête provisoirement le soudage, car avant de souder les fils de liaison avec le petit circuit de complément il faut assembler les LEDS. Il n’est pas question de procéder comme avec le clavier, c’est à dires tout terminer et réaliser ensuite la façade. On va commencer par réaliser le dessus du coffret qui constitue la façade. Ainsi il sera facile de placer toutes les LEDs bien centrées sur les alésages avant de les souder. La Fig.38 présente le résultat final avec pour bénéfice une facilité pour déposer et surtout réintroduire les 26 LEDs dans la façade. Sur Image 40.JPG on peut observer la façade entièrement terminée. (Galerie d’images : 4) C.I. des 26 ampoules) Pour vous aider dans la réalisation du coffret, vous trouverez dans la dossier <DESSINS> les planches avec la cotation précise des éléments composant le coffret. Les divers dessins sont classés dans des sous dossiers. C’est dans le sous dossier <01 Façade du coffret> que sont réunies les informations relatives à la façade du coffret. Sur Image 41.JPG on peut voir la « vitre » qui recouvre l’étiquette d’Image 42.JPG à imprimer. C’est dans le dossier <Documents> que l’on trouve le fichier Étiquettes à imprimer.PDF. Notons au passage que les trois lettres coloriées en vert concernent les options du code Morse. Image 43.JPG et Image 44.JPG présentent le circuit imprimé achevé. Il reste alors à réunir les fils du petit C.I. de complément d’Image 45.JPG et d’Image 46.JPG ce que montrent Image 47.JPG et Image 48.JPG. Puis on assemble les deux étiquettes avec leurs « vitres » ainsi que les deux circuits imprimés pour aboutir à la façade terminée d’Image 49.JPG et de l’autre coté sur Image 50.JPG.
La suite est ICI.