Clavier Adafruit

Introduction

Je cherche une espèce de télécommande pour piloter plusieurs équipements dans ma maison:

  • Des lampes
  • Ma matrice de LED
  • Tout autre équipement que je pourrais être amené à installer

Je suis tombé sur ce clavier à construire soi même. Une petite carte feather est incluse et peut être programmée. Cela semble parfait pour mon besoin, avec l'avantage d'être vraiment souple pour répondre à presque n'importe quel future nécessité.

Montage

Le colis est reçu avec toutes les pièces. Mais je réalise que malheureusement par défaut c'est une feather M4 express qui n'a aucune connectivité avec l'extérieur :( Pas très pratique pour ce que je veux faire. J'ai donc changé cet élément par une HUZZAH32 qui contient un ESP32 et qui fournit une interface Wi-Fi.

Colis

Le montage est extrêmement bien décrit sur le site d'Adafruit et ne comporte réellement aucune difficulté. Il faut quand même avoir des bons ongles pour être capable de bien enlever les protections sur les éléments du boitier, ce qui n'est pas mon cas.

Un peu de soudure est nécessaire, pour d'abord souder les fils au Feather.

Feather Soudure Feather

Et ensuite souder les 4 PCB portant les LEDs ensemble, car j'ai choisi un clavier 8x8 plutôt qu'un clavier 4x4.

Soudures Fils Soudures finies

En quelques minutes on arrive à avoir un clavier monté et terminé, en tout cas pour la partie hardware.

LED du clavier Clavier nu Clavier

Update

Contrairement à ce que l'on peut voir sur les photos, j'ai fait évoluer mon clavier pour qu'il soit autonome, en embarquant non seulement une batterie, mais aussi un interrupteur.

Partie software

Je suis parti du principe que je voulais quelque chose de minimaliste dans le clavier et qu'il serait au final piloté par un serveur. L'avantage de ce système est que toutes les mises à jour ne nécessitent pas de modifier le firmware du clavier et cela rend les choses beaucoup plus souples.

Clavier

Le clavier possède un code minimaliste qui lui permet:

  • De se connecter à un réseau Wi-Fi
  • D'envoyer des informations en UDP disant quel bouton a été appuyé ou relâché
  • De recevoir des informations en UDP disant quelles LEDs doivent être allumées et en quelle couleur

Le code C++ se trouve ici et ne comporte aucune difficulté, quand on est habitué à coder sur des Arduino (ce qui n'était pas mon cas avant ce projet).

Serveur

Le serveur possède toute l'intelligence et pilote entièrement le clavier. Il est complètement codé en python et le code peut se trouver ici. Il reçoit les appuis/relâchements de chaque touche envoyée par le clavier et renvoie (ou non) les LEDsà allumer. Je l'ai rendu compatible avec l'outil LEDMatrix que j'ai développé et que j'ai un peu décrit ici (en tout cas pour sa partie afficheur LED).

Ce que le serveur fait dépend vraiment de ce que l'on souhaite… A l'heure actuelle j'ai implémenté plusieurs modes permettant de:

  • Piloter certaines lampes de ma maison
  • Jouer à des jeux que j'ai implémentés
    • Trouver la touche secrète, style trouver un nombre entre 1 et 1000 et le clavier allume une touche pour dire si la touche secrète est plus en haut/bas et droite/gauche
    • Un sudoku
    • Un puissance 4

L'avantage de ce système et que l'ajout de fonctionnalités se fait extrêmement facilement.

Résultats

Trouver la touche secrète

Puissance 4

Sudoku

Bug

A l'heure actuelle j'ai un bug quand on appuie sur le bouton 0x18, il arrive par moment (assez rarement quand même) que le clavier envoie l'information comme quoi les boutons 0x0, 0x8, 0x10 et 0x18 ont tous été appuyés. A l'heure actuelle, je ne sais pas si c'est un problème hardware, ou un problème du driver du clavier.