Les interrupteurs notés SW1 à SW8 peuvent être de classiques interrupteurs mécaniques ou des commutateurs magnétiques ou optiques.
Si dans la poursuite de cette étude (notamment pour l'ajout de la gestion d'un écran OLED) je me rend compte que le code se trouve trop à l'étroit dans le PIC 18F4550 (schéma 007), j'utiliserai un PIC 18F47J53 possédant davantage de ressources (schéma 007b).
Preset | Cde5 | Cde4 | Cde3 | Cde2 | Cde1 | Cde0 | Action | Code(s) touche(s) (scancodes) Hex-Dec |
#1 | 0 | 0 | 0 | 0 | 0 | 1 | PageDown | $4E - 78d |
#1 | 0 | 0 | 0 | 0 | 1 | 0 | PageUp | $4B - 75d |
#1 | 0 | 0 | 0 | 1 | 0 | 0 | ArrowDown | $51 - 81d |
#1 | 0 | 0 | 1 | 0 | 0 | 0 | ArrowUp | $52 - 82d |
#1 | 0 | 1 | 0 | 0 | 0 | 0 | ArrowLeft | $50 - 80d |
#1 | 1 | 0 | 0 | 0 | 0 | 0 | ArrowRight | $4F - 79d |
#2 | 0 | 0 | 0 | 0 | 0 | 1 | Enter | $28 - 40d |
#2 | 0 | 0 | 0 | 0 | 1 | 0 | Echap | $29 - 41d |
#2 | 0 | 0 | 0 | 1 | 0 | 0 | KP-Plus | $56 - 86d |
#2 | 0 | 0 | 1 | 0 | 0 | 0 | KP-Minus | $57 - 87d |
#2 | 0 | 1 | 0 | 0 | 0 | 0 | Home | $4A - 74d |
#2 | 1 | 0 | 0 | 0 | 0 | 0 | End | $4D - 77d |
#3 | 0 | 0 | 0 | 0 | 0 | 1 | F1 | $3A - 58d |
#3 | 0 | 0 | 0 | 0 | 1 | 0 | F2 | $3B - 59d |
#3 | 0 | 0 | 0 | 1 | 0 | 0 | F3 | $3C - 60d |
#3 | 0 | 0 | 1 | 0 | 0 | 0 | F4 | $3D - 61d |
#3 | 0 | 1 | 0 | 0 | 0 | 0 | F5 | $3E - 62d |
#3 | 1 | 0 | 0 | 0 | 0 | 0 | F6 | $3F - 63d |
#4 | 0 | 0 | 0 | 0 | 0 | 1 | F7 | $40 - 64d |
#4 | 0 | 0 | 0 | 0 | 1 | 0 | F8 | $41 - 65d |
#4 | 0 | 0 | 0 | 1 | 0 | 0 | F9 | $42 - 66d |
#4 | 0 | 0 | 1 | 0 | 0 | 0 | F10 | $43 - 67d |
#4 | 0 | 1 | 0 | 0 | 0 | 0 | F11 | $44 - 68d |
#4 | 1 | 0 | 0 | 0 | 0 | 0 | F12 | $45 - 69d |
Le quartz externe utilisé ici est impératif, il conditionne la stabilité des horloges internes, notamment de celle requise par le module USB qui tourne à 48 MHz. La valeur de ce quartz externe est de 8 MHz, cette fréquence est divisée par 2 avant d'attaquer le module PLL (boucle à verrouillage de phase) intégré au PIC qui délivre une horloge de 96 MHz, horloge de 96 MHz qui elle-même est ensuite divisée par deux pour délivrer un 48 MHz conforme à la norme. Le module USB travaille en effet à une fréquence de 48 MHz pour satisfaire le mode full-speed.
En résumé : horloge quartz 8 MHz divisée par 2 pour obtenir le 4 MHz nécessaire à la PLL du module USB. Les routines du logiciel qui ne sont pas liées au dialogue USB sont cadencées à 48 MHz. La résistance R2 de 1,5 kO câblée entre la ligne Data+ (D+) du bus USB et le +3,3V issu du régulateur de tension interne du PIC (sortie sur broche Vbus, pin 18) permet à l'hôte (ici un ordinateur PC) de reconnaître le périphérique (notre interface) en mode full-speed. En branchant cette interface à un ordinateur, elle sera vue comme un clavier externe par le système d'exploitation.
Numéro d'identification de vendeur VID (VENDOR_ID) = 0x04D8
(Microchip)
Numéro d'identification de produit PID
(PRODUCT_ID) = 0xE68C
(Remy MALLARD, interface USB 007)
Plusieurs types de composants peuvent faire office d'interrupteur au pied pour les interrupteurs SW1 à SW8 : commutateur mécanique simple, magnétique ou optique. Le premier type est le plus simple à mettre en oeuvre et le moins coûteux (si on pioche dans les premiers prix), mais il est en revanche sujet à une usure plus rapide (un interrupteur de ce genre se change facilement, mais on n'est pas toujours enclain à ouvrir nos appareils). Les composants utilisés pour les interrupteurs magnétiques ou optiques sont quasiment inusables, mais il faut leur associer une "mécanique de mouvement" qui elle doit durer, sachant qu'il existe des pieds humains très "actifs".
En considérant que la partie électronique est fiable et conçue pour durer, on peut considérer dans le cas présent que la fiabilité générale du système est fortement dépendante de la partie mécanique.
Remarque : le schéma montre une connexion directe entre les interrupteurs au pied et les entrées du microcontrôleur. Cela est permis ici dans le cadre du prototypage. Dans le montage final, les entrées/sorties du microcontrôleur sont évidemment filtrées.
On peut obtenir les mêmes résultats avec un clavier USB du commerce démonté, sur lequel on soude des boutons-poussoirs à chaque endroit où une touche doit être activée. Ce n'est ni très compliqué ni très simple et ça fonctionne. Les deux choses qui m'ennuient avec cette solution, c'est d'une part la place occupée par l'ensemble, d'autre part une moindre flexibilité quand on veut activer plusieurs touches d'affilé (par exemple CAPSLOCK+A) ou en même temps (par exemple CTRL+RETURN).
Le circuit n'a pas fonctionné du premier coup, la faute à l'utilisation d'une empreinte de connecteur USB erronnée (les broches 3 et 4 du connecteur USB étaient inversées). Après charcutage des pistes de cuivre et remise en ordre des connexions, tout est OK. Bien entendu, le circuit imprimé a été révisé avec une empreinte de connecteur USB un peu plus sérieuse...
Le plus drôle dans l'affaire est que le PIC a pu être programmé du premier coup (avant correction du câblage), alors que l'alimentation du circuit se faisait entre le +Vbus et la ligne D+ qui faisait alors office de masse !!!
Tests OK avec l'écran LCD utilisé pour la configuration de l'interface. Le curieux affichage sur la 3è photo n'est pas lié à un bug, mais à des tests d'affichage que j'avais oublié de désactiver. La 4è photo montre la conformité avec ce qui était attendu pour le Preset #1.
Pro - Système pro, logiciel complet non disponible en libre service.
Une version allégée et dotée du seul preset #1 sera prochainement mise ici en libre accès.
Pour le circuit 007 avec 18F4550, le connecteur 4 points de l'écran OLED est situé côté "soudure" du PCB, à proximité du connecteur 14 points dédié à l'écran LCD.
Les deux premières versions prennent plus de place, mais elles disposent de boutons-poussoirs soudés directement sur le PCB qui facilitent la mise au point - pas besoin de brancher les pédales au pied. Le circuit 007c quant à lui est plus un "amusement" qu'autre chose, je n'en avais pas vraiment besoin.
07/05/2023
- Ajout schéma 007c avec PIC18F2550 (version moins volumineuse).
23/04/2023
- Ajout photos prototype.
02/04/2023
- Première mise à disposition.