Merci

C’est à dire que c’est mon métier. Je suis concepteur électronique.

Cela dit en passant, en m’engageant sur la voie du développement libre, j’ai dû apprendre sur le tas de nouveaux logiciels. En particulier, FreeCAD et KiCAD.

C’est vraiment super intéressant de développer en mode libre, ça fait sortir des sentiers battus de l’entreprise. Ça me fait toucher à des disciplines qui sont pas les miennes habituellement. Comme la mécanique, la menuiserie et la programmation.

Prochaine étape, se former au langage C (gros défit pour moi)…
Tu n’a jamais pensé à utiliser un firmware open source comme QMK ?

Si tu veut apprendre un langage C pour le plaisir d’apprendre ça ne colle pas, mais QMK est LE firmware open source qui marche du feu de dieu. Je participe d’ailleurs en ce moment à la trad FR de la doc.
Tu peut concevoir ton propre PCB, lui incorporer l’un MCU supporté par QMK et tu aura accès à toutes de nombreuses fonctionnalités avancées.

https://beta.docs.qmk.fm/features

Personnellement je ne me dirigerais pas dans la conception d’un firmware from scratch car tous les petits trucs basiques à coder comme le debounce sont longs à coder mais surtout ce sont des problèmes auquel la communauté a déjà répondu.

Mes propres claviers soudés à la main sont sur QMK, donc je pourrais certainement t’aider si tu choisie cette voie. Tu peut me contacter sur Discord si tu veut en parler : 4sStylZ#0812
Bonjour
Lilian avait pensé à un controleur I2C mais ni lui ni moi ne sommes familiers de cette technologie , alors on à décidé de voir ce qu'on pouvait faire avec un arduino micro (ou deux)
Le problème c'est qu'on doit gérer plus de 100 touches
Or avec QMK on ne peux gérer que 10x10 = 100 touches avec un arduino micro

J'ai donc eu l'idée au lieu de lire les touches enfoncées en numériques 0/1 de les lire en analogique et de mettre deux touches par ligne lue
On peux donc assigner 2 fois plus de touches avec le même nombre de fils = 200 touches pour l'arduino micro
chercher fred260571 sur github repository twoKey (en cours d'écriture)

J'ai un proto fully fonctionnel sur breadboard le code est ici (Le debounce est codé) :
Sur mon github How-to-build-a-keyboard (le tutoriel en cours d'écriture)
Mon code peut gérer l'appui simultané de 200 touches , par contre il est limité par la librairie USB de l'arduino qui ne peux en gérer que 6

J'ai aussi développé une librairie pour envoyer des codes USB/HID avec l'arduino
Aussi sur mon github KeyboardHID

Par contre j'ai essayé d'installer/configurer QMK pour l'arduino micro , j'ai galéré pour la partie hardware (je ne suis pas électronicien), mais j'ai fini par comprendre grâce à votre très bon tutoriel , j'ai aussi réussi à le compiler et à le télécharger dans l'arduino
Mais je ne suis arrivé à rien avec la configuration du software QMK : impossible de comprendre comment indiquer quelles sont les broches d'entré/sortie de l'arduino , ni comment "déclarer" les touches
A+
Fred
PS : Désolé pour les liens github que je voulais mettre mais j'ai ce message :"Vous n'êtes pas autorisé à mettre des liens" 🙁
---
EDIT Fork Bomb : 15 octobre 2019 @ 23h16
🙂
(
Message aux admins :
Fred260571 est l’une des personnes dont je parlais plus haut qui s’est engagé sur le projet ToucheLibre.
Vous pouvez lui donner les droits pour les liens, les images et autres. Il a toute ma confiance.
)

QMK ?
Bonne question. C’est en effet une des pistes que nous avons étudié.

Dans le projet ToucheLibre, nous avions une problématique particulière. Nous voulions plus de touche qu’il est basiquement disponible sur un clavier standard. 112 touches au lieu de 105 touches. Et qui plus est, avec des fonctionnalités qui n’existe pas classiquement.
Par exemple, sur le pavé numérique l’ajout de «^» avec un scancode bien différent de la touche morte «^».

Donc on avait plusieurs solutions :

* Vivre avec les possibilités de QMK. Mais la personnalisation de la configuration n’est pas si simple à comprendre et on avait peur d’aboutir à des impossibilités. (4sStylZ, merci pour ta participation à la traduction de QMK et je te souhaite bien du courage.)

* Faire un fork de QMK. Mais le code source de QMK est assez compliqué et pas très bien documenté. (Il faut se palucher un véritable labirynthe de la mort. Car trop peu de choses sont dites sur les entrées/sorties et quel est le role de chaque bout de code…)

* Tout refaire depuis le début. C’est ce que je ferais sans hésiter si j’avais les compétences en programmation. Car il y a rien de mieux pour maîtriser son design et personnalisé comme bon nous semble. C’est généralement ce que font les pro. C’est d’ailleurs ce que j’ai fait sur les parties mécanique et électronique.

* Partir des bibliothèques Arduino. C’est bien quand on débute en C. Ça permet de mettre les mains à la pâte progressivement.
C’est ce que nous avons fait on verra bien jusqu’où ça nous mène. Pour autant, nous ne fermons pas définitivement la porte de QMK. Ça reste au moins une source d’inspiration et au plus un engagement communautaire pour amener des briques qui vont dans le sens de ToucheLibre et peut‑être même pour d’autre projet…


Sur l’électronique, il y avait aussi plusieurs possibilités :

* Le choix du microcontrôleur. Il en existe plein qui peuvent faire le boulot. Nous avons choisi le ATmega32u4, pour plusieurs bonnes raisons. 1/ Il donne un USB de classe HID, rien de mieux pour faire un clavier. 2/ C’est celui de l’arduino micro, et donc on profite de la communauté Arduino. 3/ C’est l’une des références les plus utilisés par QMK, et donc on profite de la communauté QMK et on peut changer en cours de route la stratégie de développement logiciel.

* Ensuite pour augmenter le nombre de touche gérable, il fallait plus de pins GPIO. Là aussi plusieurs possibilités. 1/ Utiliser 2 ATmega32u4 avec deux configurations de scancode différentes et les connecter tous les deux au PC par l’intermédiaire d’un HUB USB. --> {écarté, trop lourd}. 2/ 2 ATmega32u4 mais qui parle entre eux par I²C. L’un étant master et parle au PC, l’autre étant slave et se comporte comme un IO expander. C’est l’une de possibilité offerte par QMK en particulier pour les claviers splités. --> {écarté, trop dépendant de QMK} 3/ Utilisé un vrai IO expander. En particulier le ECE1099, qui un expander penser pour une application clavier, il fait automatiquement le scan de la matrice de touches et donc simplifie grandement le code. Il devient envisageable de piloter avec de simple bibliothèque Arduino. --> {Solution de secours retenu si la suivante ne marche pas. Cette option est en non‑monté sur la carte}. 4/ Faire une matrice analogique de touches. C’est une idée de Fréd et une mise en œuvre électronique de moi. Je sais pas s’il existe un brevé dessus. Mais je pense qu’il y a là une certaine innovation. C’est un mixte entre une mesure analogique et une matrice logique de touche comme classiquement. --> {Solution retenu, elle est sans conteste la moins chers et la plus fun}

Comme le dit Fréd, cette dernière solution permet de multiplier le nombre de touche gérable. Pour que tout le monde comprenne, dans un clavier classique, les touches sont disposées en matrice et piloté logiquement. Il y a par exemple 10 pins configurées en sortie qui envoie séquenciellement une tension sur toutes les colonnes. Puis par exemple, 10 pins configurées en entrée pour lire séquentiellement toutes les lignes. Et ainsi voir si une colonne a été connecté à une ligne par actionnement d’une touche.

Avec notre solution matrice analogique, à chaque nœud ligne/colonne, on n’a plus simplement un interrupteur, mais 2, 3 ou 4 interrupteurs (au delà ça marche pas à moins d’avoir un ADC de compétition) qui donne par combinaison des valeurs de tension différentes sur un ADC placer sur les lignes.

On est parti sur ×2 (2 interrupteurs par nœud) pour des raisons de simplicité et de fiabilité. Mais, on peut faire du ×3. Théoriquement du ×4 est possible mais ça pose des problèmes de fiabilité car les valeurs de tension possibles sont trop rapprochées. Il faut une référence de tension au poil et les perturbations électromagnétiques risque de tout planté.



Par ailleurs, le clavier marchera soit sur USB ou soit sur Bluetooth (développé dans un second temps).


Prochainement, les sources de ToucheLibre seront disponibles sur un espace GitLab dédié au projet.
On voulais utiliser un vrai IO expander (le ECE1099), mais on à décidé que passer par une utilisation de l'arduino / QMK nous permettrait de produire un prototype fonctionnel rapidement, et qu'il serait plus simple à ce moment de recruter un pro de l'I2C
Sinon j'ai oublié de mentionné que j'ai implémenté les macros dans mon code : on peut écrire un petit programme qui appuie ou relâche des touches , y insérer des delay ...
Bref le code est un chouia complexe mais je suis en train d'écrire un tuto pour bien l'expliquer
PS : merci pour les liens 🙂
Beaucoup de choses dites et je peux peut-être répondre à certaines : 

Le pro micro de sparkfun et tous les clones pro micro sont en effet peu adaptés à un un grand clavier. Ce qu’il vous faut dans ce cas c’est peut-être un Teensy++ 2.0 ou alors tweaker un pro micro à 25 pins : http://www.40percent.club/2018/05/black-pro-micro-25-pins.html

Je valide votre choix d’un MCU qui est connu de la communauté.

Pour ce qui est des keycodes. Qmk permet d’insérer tous les keycodes de la normes hid, ainsi que des caractères unicodes ou des macros de textes. Donc en théorie on peut insérer tous les caractères qu’on veut.
Teensy++ 2.0, pro micro, Arduino micro, c’est du pareil au même. Ils utilisent tous le ATmega32U4.

Dans ToucheLibre, on a fait notre propre carte pour avoir un bon facteur de forme et une bonne intégration dans notre mécanique.
Après, on a exactement les mêmes possibilités que les autres.

Oui, ce que fait QMK est fort intéressant. Et on garde cette idée sous le coude. Mais il va nous falloir un certain temps avant de se l’approprier. QMK n’est pas si simple.
Après, si tu veux nous donner un coup de main tu es le bienvenu.
Notre stratégie actuelle est de commencer par simple puis de grossir au fur et à mesure.


Le clavier a été pensé dès le départ pour être modulaire. Il y a 5 cartes différentes pour faire face aux évolutions technologiques et anticiper les erreurs de design. Avec 5 cartes on n’est pas obligé de refaire une carte complète à chaque fois…
Expliquez moi par MP comment vous voulez communiquer, idéalement un petit vocal discord serait pas mal je pense pour que je vous explique le système de la matrice et comment l’implémenter dans QMK.
4 mois plus tard
ToucheLibre_fini_00

ToucheLibre, ça marche!!!

Ce message est écrit avec le clavier ToucheLibre.

Quel plaisir de jouer enfin avec mon clavier… Je me sens tel un petit Édison qui communique pour la première fois avec son téléphone (toute proportion gardée et avec toute la modestie qui m’incombe biensûr).

Voici quelques photos de la bête: 😛

ToucheLibre_fini_01

ToucheLibre_fini_02
Description de détail :

Fait en noyer, finition à la cire
Switch Cherry ML, équivalent au MX marron avec moins de course

*

petits repères tactiles
bord des touches teintées avec de la cire cuivrée
ToucheLibre_fini_03
ToucheLibre_fini_04

*

Poignet en cuir
ToucheLibre_fini_05

*

Le bouton mystère et les leds indicatrices
ToucheLibre_fini_06

*

Surface anti‑dérapante en liège
ToucheLibre_fini_07

*

bouton ON/OFF en bois
câble USB tissé par mes soins
ToucheLibre_fini_08

*

Ouvrons la boite
ToucheLibre_fini_09

*

carte électronique de toute beauté
ToucheLibre_fini_10
ToucheLibre_fini_11
ToucheLibre_fini_12
ToucheLibre_fini_13
Côté sensation, c’est très agréable.

Rien que la sensation du bois, ça n’a rien à voir avec le plastique
La géométrie est vraiment sympa, un confort comme attendu.
Il faut que je me réhabitue pour retrouver ma vitesse d’avant, mais ça devrait aller.

ToucheLibre_fini_14
Il reste encore du boulot côté logiciel, mais c’est très encourageant.
Toutes les touches de base fonctionnent sur Linux et Windob (MacOS pas testé).
Les pilotes de ma disposition Kéa fonctionne sous Linux et Windob.

Reste à programmer les fonctions avancés:
* Touches supplémentaires sur le pavé numérique (spécial pour ToucheLibre), c’est‑à‑dire: (),^€=
* Touche compose et l’accès aux niveaux 5, 6, 7, 8 pour windows (OK sous Linux)
* Pilotage des Leds indicatrices
* Bluetooth
* Macro diverses et variées…
Ma chatte attend avec impatience la souris…

ToucheLibre_fini_15





Bien à vous
Lilian
Travail super impressionnant !
Bravo !
Passionnant votre projet ! Bravo !

Ça me botterait vraiment de le fabriquer si les plans droit et gauche étaient inclinés. Je n’aime pas trop la disposition classique parallèle à la table, je trouve que les poignets sont plus confortables lorsque la paume de la main est légèrement orientée vers le centre de la table.
Merci beaucoup.

OK, je partagerais bientôt les sources de ToucheLibre.
Si, je ne l’ai pas fait plus vite. C’est parce que je sais pour l’avoir vécu plusieurs fois que la créativité collective est une chose fort délicate.
Et, j’ai besoin d’exprimer solitairement ce que j’ai en tête sans devoir batailler avec les idées de trop de gens.
C’est un phénomène assez commun, plus une œuvre est intime moins elle est partageable.
Je souhaitais poser solidement les bases du projet avant de le partager.

Je mettrai les sources sur GitLab prochainement.

Caracole, ça serait avec plaisir si tu souhaites fabriquer un clavier ToucheLibre. En effet, c’est une problématique importe.
Si le logiciel libre est super simple à copier en masse. Le matériel libre, lui, souffre du mur de la fabrication. Parce que ça demande de l’argent pour les matières premières et les outillages. Et aussi pas mal de travail.
Si tu souhaites rejoindre le projet, tu peux me contacter.

Oui, j’avais penser à incliner les côtés gauche et droite. J’ai même voulu faire quelque chose de plus 3D à la façon du Kinesis. Mais c’est trop compliquer. J’y ai donc renoncer. De plus, en faisant des maquettes, je me suis rendu compte qu’en réalité, la main s’incline naturellement d’environ 10° du fait que la chaire au niveau du pouce est plus épaisse que de l’autre côté. Avec ces tests, je n’ai pas réellement ressenti le besoin d’incliner d’avantage.

À l’avenir, je n’exclue pas la possibilité de faire quelques choses plus en relief. Mais pour cela, il faudra mettre en œuvre du fraisage numérique sur des planches de bois but. C’est nettement plus compliqué. Sans parler des conséquences côté circuit imprimé… De plus, le risque avec les planches de bois brut, c’est la déformation. Avec le contre‑plaqué, on est sûr de la stabilité. De plus, avec une forme plane, c’est plus facile de mettre en œuvre la technique du placage de feuille de bois. L’avantage, avec les feuilles de bois, c’est qu’on peut accéder à de très jolie essence à moindre frais.

Tu vois la question de l’inclinaison pour l’un, ou la question de je ne sais quoi pour l’autre, peut conduire à des débats sans fin qui peuvent parfois ruiner un projet. Je n’ai plus la patience pour cela. Et notre temps à tous est limité. L’important est souvent d’avancer, même si c’est pas parfait. Pour autant que la perfection existe.
7 jours plus tard
Incroyable rendu.

Tu dois absolument le poster sur geekhack.org, le présenter, et je suis sur que tu aurait tes chances au concours « Keyboard of the month » ou « Keyboard of the year ».
Si tu veut je peux te faire le post en Anglais.
Comment ça marche leur concours ?
Il me semble comprendre que chaque mois quelqu’un gagne. Et qu’à la fin de l’année, les 12 gagnants concourent pour être le gagnant de l’année.

Mais est‑ce qu’il faut s’inscrire volontairement au concours, ou Est‑ce que c’est quelqu’un qui décide de vous nominer ?

L’année dernière, j’avais fait un post (juste pour introduire mon projet), mais, j’avais pas eu masse de retour.…
post_1_geekhack
C'est une œuvre d'art… félicitations!
4sStylZ, j’ai vu que tu m’as nominé pour le «keyboard of the month» de février.
Merci beaucoup. 🙂 😉 🙂

À tous,
Bon ben. Si vous souhaitez soutenir mon projet vous savez ce qu’il vous reste à faire… 😛
Si j’ai bien compris le vote se tiendra entre le 24 février et le 8 mars.

Hoouuu, il y a de la compèt’ ce mois‑ci, ça va être serrer…