Hackable 17 est chez votre marchand de journaux !

Voici venir un nouveau numéro de Hackable, pour mars/avril !

Au menu, le plat de résistance sera l’utilisation d’une fonctionnalité furieusement intéressante intégrée aux cartes Arduino Leonard et Micro : le support USB en tant que périphérique.

Dit comme ça, cela semble presque anodin, mais le microcontrôleur ATmega32u4 qui anime ces deux modèles permet, tout simplement, de créer n’importe quel périphérique USB. Dans l’absolu, il est possible de tout créer, mais le plus accessible dans l’environnement de développement (IDE) Arduino concerne les périphériques USB HID et donc, en particulier, tout ce qui relève du domaine des claviers USB. Et c’est précisément avec cela que nous allons jouer dans ce numéro de printemps…

Pour découvrir le sujet dans la bonne humeur et surtout en pratique, trois projets seront réalisés, du plus simple au plus avancé :

  • émuler des raccourcis claviers comme Ctrl+C et Ctrl+V à partir de pressions sur des boutons avec un croquis de quelques lignes,
  • créer un contrôleur de volume audio qui envoie des « pressions » sur les touches d’un clavier multimédia émulé (et ça marche tout aussi bien avec Windows, GNU/Linux, macOS et même Android qui pensent avoir affaire à un vrai clavier),
  • et enfin, sortir de la poussière un vieux clavier IBM XT pour lui donner une seconde jeunesse en le transformant en clavier USB (technique qui fonctionnera avec de nombreux autres modèles pour un minimum d’efforts (NeXT, Amiga, Sun, SGI, etc.)).

Mais ce n’est là qu’une partie de ce qui se trouve dans ce numéro. Le sommaire complet se trouve un peu plus loin, mais avant cela voici une mise en images (animées même) de quelques projets de cette 17ème édition :

Au sommaire de ce numéro :

  • Équipement
    • p.04 : Utilisez un programmeur d’EPROM avec votre Raspberry Pi
  • Ardu’n’co
    • p.14 : Créez un effet « feu » avec une matrice de leds
  • En couverture
    • p.24 : Créez des boutons à copier/coller
    • p.30 : Créez un contrôleur de volume pour votre ordinateur
    • p.44 : Transformez un vieux matériel de 30 ans en clavier USB
  • Embarqué & Informatique
    • p.60 : Configurez un clavier Bluetooth pour votre Pi
    • p.66 : Changez la configuration des leds de votre Raspberry Pi
  • Démontage, Hacks & Récup
    • p.76 : Utilisez votre Arduino UNO comme périphérique USB
  • Repère & Science
    • p.88 : Les codes tournants ou comment ne pas envoyer le même message deux fois

Ce numéro de Hackable est actuellement disponible chez votre marchand de journaux et dans notre boutique en ligne.

Vous pouvez également vous abonner à Hackable Magazine, en version papier ou PDF, en visitant la page dédiée dans notre boutique web.

13 commentaires sur “Hackable 17 est chez votre marchand de journaux !

  1. Bonjour Denis,

    Je suis un fidèle lecteur depuis le numéro 1, et depuis je ne rate pas un seul n°.

    Tout d’abord bravo pour cette revue que vous portez à « bout de bras » et votre style rédactionnel très lisible.

    Je découvre le monde Arduino et mes progrès sont lents par manque de temps et… de mémoire…

    Intéressé par l’enregistreur décrit dans le n°15, j’ai réalisé le montage.
    J’ai remplacé le module BME280 par un AM2315 et supprimé la mesure de la pression et des mesures visible, ir et uv dans la version 2 du projet.
    Mon montage utilise une EEPROM 24LC256 de chez microchip montée sur un module EEPROM de chez DFRobot .
    J’ai mis cette EEPROM à l’adresse 0x50.
    Après pas mal de recherche, je n’arrive pas à faire fonctionner le montage.
    Le compteur indique toujours une valeur élevée supérieure à 8300, la commande « réinit » ne ré initialise pas ce compteur, la valeur du compteur reste identique avant et après ré init.
    Même problème avec une autre EEPROM.
    Je ne n’arrive pas à comprendre le fonctionnement des lignes :

    eep.write(0, (byte *) &compteur, sizeof(compteur));
    eep.read(0, (byte *) &compteur, sizeof(compteur));

    à quel moment le compteur est il mis à zéro ???

    Merci par avance pour votre aide, et pleins de caresses à Monsieur Copper.

    Amicalement,

    Jean-François.

  2. Re bonjour Denis,

    Pour compléter mon précédent message :
    J’ai mis des « mouchards » dans le croquis et voici ce que j’observe sur la console :

    Boucle enregistrement :
    RTC 1307 = 1489332940
    Temperature = 26.90
    Humidite = 33.20

    Ecriture dans l’ EEPROM
    Valeur actuelle du compteur : 8639
    Valeur de ret : 9
    Valeur de sizeof compteur : 2
    Valeur mesdata : 12

    Valeur actuelle du compteur apres incrementation : 8640
    Cavalier en place : pas d’enregistrement

    >>>> là je fait la commande « reinit »

    Valeur actuelle du compteur : 8640
    Effacement compteur
    Valeur apres effacement du compteur : 8640
    Cavalier en place : pas d’enregistrement….

    Pour permettre cet enregistrement j’ai été obligé de tricher en modifiant le test if dans la void enreg():

    Serial.println( » « );
    // Une erreur ?
    if(ret = 0) // normalement c’est : if(ret != 0)
    return;

    Car dans mon croquis « ret » n’est jamais à 0 et l’enregistrement est donc impossible.

    Amicalement,
    Jean-François

  3. Re bonjour Denis,

    Bon après une petite ballade, j’ai tout simplement testé le croquis en ajoutant la ligne : compteur = 0;
    avant les deux lignes :
    eep.write(0, (byte *) &compteur, sizeof(compteur));
    eep.read(0, (byte *) &compteur, sizeof(compteur));

    et remis le test à if (ret !=0)

    Après cette manip, le croquis semble fonctionner correctement.

    « ret » reste bien à 0, et « compteur » s’incrémente bien à partir de 0 après le réinit.

    En attendant merci encore pour ce montage.

    Amicalement,
    Jean-François

  4. Denis… Après vérification…

    J’ai utilisé le 1er croquis Github (enregistreur) pour mon montage, ce premier croquis n’a pas la ligne :
    compteur = 0;
    alors que le second croquis (enregistreur V2) est fonctionnel, le problème c’est que je bossais à partir de la lecture de la revue et page 29 dans le morceau de croquis en haut de la page la ligne compteur = 0; est manquante… car issue du premier croquis.

    En conclusion il faut charger sur Github le croquis V2
    Bon ça m’a fait un excellent exercice :-)

    Amicalement,
    Jean-François

    • En effet, il y avait un bug (et je me demande comment il a pu passer au travers des mailles puisque les croquis mis en ligne sont ceux utilisés pour les articles). Merci de votre retour, j’ai corrigé le fichier en ligne. Désolé pour cette erreur, mais je suis cependant ravi que ayez identifié par vous même le problème :)

  5. Je crois rêver en page 5 : l’annonce d’un projet d’ordinateur 8 bits par le GRAND Denis Bodor. Je croise les doigts pour qu’il penche sur la version Zilog (E)Z80, qui est encore à la vente pour moins de 5€ , et en format DIP bien pratique ;-). Je brûle d’en apprendre davantage sur ce projet. Son ampleur méritant plusieurs articles, s’agira-t-il d’un numéro spécial ?

    Quant à l’article sur la récupération du clavier IBM XT, il résume à lui tout seul l’esprit du hacking. Denis (si je peux me permettre de l’appeler par son prénom) nous démontre l’étendue de son savoir, sa soif inextinguible d’apprendre, et très rare pour des experts de sa pointure, un sens de la pédagogie dont beaucoup d’enseignants feraient bien de s’inspirer. Chapeau bas maître Bodor ! ;-)

  6. Hello,

    Merci ce Hackable est vraiment bien, je suis ravi par l’article sur le clavier que je ne tarderai pas trop a mettre en oeuvre. Je n’ai pas encore tout lu car plus toufu a comprendre. Dailleurs a ce sujet en page 54 il est ecrit:

    « L’autre point intéressant est la valeur affichée : 10 […] Nous avons 10 flancs montants ou descendants et donc 10 bits, non 11 ! »

    Je me demande si cela ne vient pas du fait que dans le code, il est specifie interval=10 allant de pair avec une frequence appropriee. Je pense que avec interval=20 on aurait eu une valeur de 20, et du coup pas forcement 20 bits. Non?
    Il y a peut etre quelquechose avec les bits de start et de stop? Je ne suis pas sur… En tout cas je pige pas, desole.

    et pour finir je n’ai pas compris la syntaxe: xtmap[touche & 127]; en page 58, en particulier: touche & 127.

    Decidement !

    Cordialement.

    • En effet, les deux « 10 » peuvent semer la confusion.

      Le « interval=10 » n’est la que pour définir un temps de 10ms d’écoute avant de réinitialiser « cpt ». Littéralement « on compte les changements d’état pendant 10ms puis on affiche le résultat si cpt est supérieur à 0 ». 10ms est plus qu’il n’en faut pour compter les flancs montant découlant de la pression d’une touche et les 10 détections n’ont pas de rapport avec la valeur de « interval ». Je n’ai pas fait l’essai mais vu la fréquence, avec « interval » à 5, donc en 5ms, on compterait également 10 flancs montants.

      Le « & » est un ET logique. 127 correspond en binaire à « 01111111 ». De ce fait quelque soit la valeur de « touche », on ne garde que les 7 bits de poids faible (les 7 premiers en ignorant le bit 7), et par exemple « 00001111 » et « 10001111 » donneront tous deux « 00001111 », la touche numéro 15. On masque « touche » pour ne garder que les 7 bits qui nous intéressent, puisque le 8ème n’est là que pour faire la différent entre une pression et un relâchement.

      J’espère avoir éclairé votre lanterne :)
      a+

      • Hello et merci pour votre reponse,

        Oui en effet, j’ai à présent bien compris touche&127.

        Quant aux 10 bits, je devine maintenant que le signal d’horloge est envoyé 1 fois … Et c’est tout. J’imaginais le signal d’horloge comme celui d’une horloge de salon, continue imperturbable et qui « tic-tac » même quand on appuis pas sur les touches du clavier. Je me rends compte que cette perception n’est peut-être pas très appropriée !
        Dans un futur plus ou moins proche (après le projet courant) je compte faire cela pour récupérer un très vieil ordinateur portable (1996), qui n’a plus que le clavier et l’écran (probablement un peu hot, l’écran) d’à peu près ok. Le but : remplacer ses entrailles par une raspberry-pi.

        Cordialement.

        • Il faut imaginer le signal d’horloge non pas comme un métronome qui bas la cadence même s’il n’y a pas de musique, mais plutôt comme une « touche » de validation demandant au système d’en face de prendre en compte l’état du signal de donnée (haut ou bas).

          En ce qui concerne la réutilisation d’un vieille écran ce n’est pas forcément difficile mais ça peut demander un ou plusieurs convertisseurs pour passer du HDMI de la Pi à du VGA, du composite, du RVB… etc. Généralement, on trouve davantage d’informations dans le sens inverse sur le net, pour utiliser un écran HDMI/DVI avec une vieille machine. Mais rien n’est impossible quand on est têtu :)

Laisser un commentaire