Simuler un clavier avec une carte Arduino Mega

Bonjour,

Après avoir effectué quelques recherches sur le net et n'ayant trouvé de réponse à ma question je me retourne vers ce forum.
Je Souhaiterais savoir si on peut simuler un clavier avec une carte Arduino Mega 2560 ?
J'ai vu que la Leonardo le permettait mais je n'ai pas trouvé de réponse pour la Mega.

J'ai récupéré un code écrit pour Léonardo mais je possède une Mega et lorsque je compile le code j'obtiens les erreurs suivantes :

sketch_sep01a.cpp: In function ‘void setup()’:
sketch_sep01a.cpp:34:3: error: ‘Keyboard’ was not declared in this scope
sketch_sep01a.cpp: In function ‘void loop()’:
sketch_sep01a.cpp:41:5: error: ‘Keyboard’ was not declared in this scope
sketch_sep01a.cpp:47:5: error: ‘Keyboard’ was not declared in this scope
sketch_sep01a.cpp:52:5: error: ‘Keyboard’ was not declared in this scope
sketch_sep01a.cpp:57:5: error: ‘Keyboard’ was not declared in this scope
sketch_sep01a.cpp:63:5: error: ‘Keyboard’ was not declared in this scope
sketch_sep01a.cpp:68:5: error: ‘Keyboard’ was not declared in this scope
sketch_sep01a.cpp:73:5: error: ‘Keyboard’ was not declared in this scope
sketch_sep01a.cpp:78:5: error: ‘Keyboard’ was not declared in this scope

Existe-il une solution ?

Bonjour,

jethroweb:
Après avoir effectué quelques recherches sur le net et n'ayant trouvé de réponse à ma question je me retourne vers ce forum.
Je Souhaiterais savoir si on peut simuler un clavier avec une carte Arduino Mega 2560 ?
J'ai vu que la Leonardo le permettait mais je n'ai pas trouvé de réponse pour la Mega.

L'arduino leonardo possède un port usb hardware, contrairement aux autres cartes arduino qui n'ont qu'un port série.
Les codes pour la leonardo ne compilerons donc jamais sur une mega ou une uno :wink:

Pour émuler un clavier usb avec une mega ou une carte arduino classique il faut faire un montage et utiliser la librairie V-Usb :
http://www.practicalarduino.com/projects/virtual-usb-keyboard

Ps: il faudra faire la correspondance entre les numéros de broches arduino et les ports/broches AVR dans le fichier "usbconfig.h".
http://arduino.cc/en/Hacking/PinMapping2560

jethroweb:
Bonjour,

Après avoir effectué quelques recherches sur le net et n'ayant trouvé de réponse à ma question je me retourne vers ce forum.
Je Souhaiterais savoir si on peut simuler un clavier avec une carte Arduino Mega 2560 ?

Bonsoir
Il y a clavier et clavier = piano ? , matriciel ? , porte-clefs ? autre ? :grin:

simuler/emuler un clavier de quel type/interface ?

Artouste:
Bonsoir
Il y a clavier et clavier = piano ? , matriciel ? , porte-clefs ? autre ? :grin:

simuler/emuler un clavier de quel type/interface ?

Dans un premier temps, l'idée est piloter un logiciel via des raccourcis claviers.
Donc l'idée est de simuler un clavier type keyboard pour PC

L'objectif final est de créer une interface/télécommande pour piloter Rivendell : http://technic2radio.fr/software/automation/225-rivendell

Bonjour,
Juste une astuce pour compiler un programme sans la bonne carte :

Vérifier que la carte soit débranchée
Outils/Type de carte/Arduino Leonardo (par exemple)
Compiler
Penser à remettre sur la bonne carte avant de la rebrancher

J'ai voulu testé la technique en changeant de carte dans le soft pour pouvoir compiler le code
mais je viens de m'apercevoir que je n'avais pas l'option leonardo dans "Board" !!

précision : je suis sous ubuntu 12.04

Tu dois avoir une ancienne version.
Installe la dernière version d'Arduino et essaie de garder le même dossier de sauvegarde
(au pire tu transfères d'un dossier à l'autre tous tes fichiers)
Désinstalle ensuite ta future-ancienne version.

Installe la nouvelle version de l'ide ne servira pas à grand chose :wink:
Si il veut émuler un clavier usb avec une carte mega il faut qu'il regarde du côté de Vusb et non de l'arduino leornardo.

C'est pas basé sur une mega, mais il y a peut être des choses à glaner de ce coté là: USnooBie

Salut !
Cela fait plus de 24 heures qu'il n'y a pas eu de réponses donc tu vas peut-être devoir acheter une Arduino Leonardo.
Si elle manque de broches, peut être qu'en la reliant à la Mega avec TX/RX entre ce programme dans ta Leonardo
mais attention, il n'est pas compilé !

void setup() {
  Serial.begin(9600);
  Keyboard.begin();
}

void loop() {
  if(Serial.available() > 0) {
    Keyboard.write(Serial.read());
  }
}

Change dans ton programme pour Arduino tous les "Keyboard" en "Serial" et si tu as besoin d'utiliser les touches directionnelles, trouve quatre caractères à utiliser pour ça et change le programme de la Leonardo.

Attention (bis) : attend une confirmation d'un autre programmateur pour savoir si l'on peut utiliser les broches RX/TX
entre deux cartes et parallèlement à une connexion USB.

Bonjour

Pour controler le soft sur PC par racourcis clavier il y a peut être une autre piste , à la portée d'une carte UNO ou MEGA : emuler un clavier PS2.
Une recherche avec les mots clefs 'arduino ps2 keyboard emulator' donne des réponses comme celle-ci :

Autre piste , vu que le PC à controler semble etre sous linux (soft Rivendell) : installer un demon qui recevrait les codes sur port série virtuel et les enverrait à X.
ça à l'air d'exister.... à faire confirmer ou infirmer par les connaisseurs de linux...... (linux serial keyboard ?)
https://wiki.archlinux.org/index.php/Serial_input_device_to_kernel_input

Désolé, je n'ai pas reçu de notifications pour les derniers posts sur le forum.

Merci pour tous vos messages.

J'ai commandé une carte Leonardo
mais je continue les recherches pour la Mega et les commandes par le port série.

Désolé de relancer le sujet mais je viens de tomber sur ce lien :

Quelqu'un a t-il testé ?
Cela me semble intéressant.

Non
Mais effectivement il reprogramme le chip ATmegaU8 qui fait l'interface USB sur une UNO pour le faire reconnaitre comme un clavier.
Par contre après, tu ne peut plus mettre à jour la UNO depuis l'environnement Arduino car plus de liaison série !
(a moins de reflasher ensuite le U8 avec le firmware d'origine)

Merci pour cette précision.

Mon objectif, lors de l'appui sur un bouton une "macro" est envoyé à Rivendell.
Pour cela, il faut que la carte Arduino soit reconnu par Ubuntu comme un "local GPIO"
lorsque je lance la commande : ls -lar /dev/input/by-id

Y a-t-il un moyen d'utiliser le clavier et le Serial en même temps, et ainsi éviter de flasher à chaque fois.

jethroweb:
Pour cela, il faut que la carte Arduino soit reconnu par Ubuntu comme un "local GPIO"
lorsque je lance la commande : ls -lar /dev/input/by-id

Je ne sais pas ce qu'est un "local GPIO" mais de toute évidence ce n'est pas un clavier HID USB ni un clavier PS2 (c'est à dire des claviers standards d'ordinateurs type AZERTY etc...)

Si tu part sur les exemples de Léonardo, tu va pouvoir simuler un clavier normal.
Si Rivendell peut se piloter par un clavier normal, alors tu pourra créer un clavier de substitution avec ton Arduino.
Si c'est un type de périphérique différent, alors il faudra trouver toi même comment configurer la partie logicielle USB de la Léonardo pour arriver à ce résultat.

a-t-il un moyen d'utiliser le clavier et le Serial en même temps, et ainsi éviter de flasher à chaque fois.

Sur Léonardo oui. Voir l'exemple KeyboardSerial.

Mais dans l'article en référence, il s'agit d'une modif utilisant un firmware alternatif pour le chip d'interface 32U8 de la Uno.
En théorie il doit être possible de faire une équivalent de keyboard+Serial pour ce chip mais comme derrière il ne dispose que de la liaison série pour discuter avec l'ATmega328 de la UNO, ca va poser des difficultés.

En simulant un clavier, j'utilise les raccourcis clavier du logiciel, mais ce n'est pas l'objectif final.
J'ai déjà réussi à piloter Rivendell avec une manette de jeux USB mais j'étais limité à 8 boutons.
Je souhaite pouvoir simuler 25 boutons, d'où l'idée du arduino.
Vidéo avec la manette :

Et donc quand tu branches une manette USB sur Ubuntu elle apparait comme "local GPIO" ?

Au final ce que tu veux émuler ce n'est pas un clavier mais une super-manette à 25 boutons.
Il ne reste plus qu'a trouver comment configurer l'interface USB d'une Léonardo pour la faire passer pour une super-manette...

EDIT: je google, je google :
http://rivendell-de.googlecode.com/svn/base/trunk/rivendell/docs/GPIO.txt : bof, pas rès utile. Fait référence à des cartes du commerce reconnues par Rivendell jusqu'à 24 entrées.
http://technic2radio.fr/forum/6-software/41-rivendell : tiens tiens, je pense que l'auteur n'est pas loin :wink:

Là : un article dans la même veine que le précédant mais cette fois le firmware chargé dans le 32U8 émule un joystick
C'est peut être une base de départ : http://hunt.net.nz/users/darran/weblog/a3599/