Etape 2: Explication du circuit et choix des composants
Circuit

Le circuit a été fait sur EasyEDA.
Explication choix des composants du circuits
Nous avons décidé de faire un macropad 3×3, car c’est un bon nombre de boutons, il n’y en a ni trop ni pas assez.
Il y a deux façons de connecter les switches (boutons), soit en assignant à chaque switch un pin du microcontrôleur soit en faisant une matrice.
La première option est bien s’il n’y a pas beaucoup de switch.
- Simplification du circuit
- Meilleure réactivité : chaque bouton est lu directement, sans nécessité de balayage matriciel (polling), ce qui réduit la latence.
- Détection simultanée des touches : Permet d’éviter les limitations liées au « ghosting » et au « key rollover » des claviers matriciels.
- Facilité de programmation : chaque bouton peut être traité indépendamment, ce qui simplifie le code de gestion des entrées.
- Moins de consommation CPU : pas besoin de parcourir une matrice régulièrement, ce qui peut être utile pour les microcontrôleurs à ressources limitées.
La deuxième option est nécessaire lorsqu’on se retrouve à avoir beaucoup de switches. C’est la plus courante.
Il existe deux principales manières de détecter quelle touche est pressée dans une matrice de clavier. La première, qui est la plus courante, consiste à balayer les lignes ou les colonnes une par une. On applique une tension successivement sur chaque ligne (ou colonne) et on vérifie en parallèle quelles colonnes (ou lignes) enregistrent une connexion. Ainsi, lorsqu’une touche est pressée, elle établit un contact entre une ligne et une colonne, permettant d’identifier précisément sa position. Ce balayage est répété rapidement pour actualiser en continu l’état du clavier. Cette méthode est avantageuse, car elle optimise la consommation d’énergie et réduit la charge sur le microcontrôleur en n’activant qu’une partie de la matrice à la fois.
Une seconde approche consiste à appliquer une tension sur toutes les lignes ou toutes les colonnes simultanément. Lorsqu’une touche est pressée, le système scanne rapidement l’ensemble des colonnes ou des lignes pour détecter où la connexion s’est faite. Cette méthode peut offrir une détection plus rapide, mais elle peut aussi entraîner une consommation d’énergie plus importante et nécessite une gestion plus complexe du microcontrôleur.
En général, la première méthode est privilégiée pour sa simplicité et son efficacité, tandis que la seconde peut être utile dans des cas spécifiques nécessitant une détection ultra-rapide.
Des diodes sont aussi utilisées afin d’éviter le « ghosting » (phénomène où certaines touches ne s’enregistrent pas lorsqu’on appuie simultanément sur plusieurs touches). J’ai choisi des diodes 1N4148 SMD SOD-123, elles sont couramment utilisées car très rapides et fiables.
Matrice 3×3
Pour les switches, il y a trois types différents :
- Linéaires : appréciés pour le silence et réactivité, le switch glisse avec douceur.
- Tactiles : on sent un petit retour comme une vibration (entre linéaire et clicky).
- Clicky : « clic » audible, retour sonore et tactile.
Il existe ensuite plusieurs marques de switches, Cherry MX, Kailh, Gateron, Flaretech, Razer, Logitech, Roccat,… J’ai décidé de partir sur des switch Kailh box white (clicky). Pour pouvoir changer les switches facilement selon la préférence des personnes qui vont construire le kit, nous avons décidé de mettre des hot swap, ce qui permet de fixer les switches sans avoir à les souder et ainsi pouvoir les changer facilement.
Pour les keycaps il faut aussi faire attention qu’ils soient compatibles.
Sur le macropad, je voulais aussi:
- un rotary encoder pour contrôler le volume (ce rotary encoder n’a pas besoin d’avoir une connexion directe à une alimentation) .
Les broches A et B d’un encodeur rotatif sont les sorties de signal en quadrature, utilisées pour détecter la rotation et la direction du mouvement (signaux carrés décalés dans le temps). Ce décalage permet de déterminer la direction de rotation. Si A change avant B → Rotation dans un sens. Si B change avant A → Rotation dans l’autre sens - un écran OLED pour afficher du texte ou des petites images (I2C)
- des leds RGB pour faire joli. Nous avons hésité à mettre des leds sous les switchs, mais nous sommes partis sur un style différent avec les leds sous le circuit imprimé.
Pour le microcontrôleur, j’ai choisi un Arduino pro micro basé sur l’ATmega32U4 (5V/16Mhz), il est petit, est reconnu directement comme un HID (Human Interface Device) et peut tout alimenter. Nous avons décidé de ne pas mettre des pins femelles qui serviraient à ne pas souder directement le microcontrôleur sur le circuit imprimé, car ça prendrait plus de place.
Enfin, pour flash le microcontrôleur, on doit faire un court-circuit entre les GND et RST pins et pour faciliter la tâche, nous avons ajouté un petit bouton SMD.