Contrôlez votre ordinateur à distance grâce à PCRemote !

Suite au développement en cours d’une nouvelle version de PCRemote, cet article n’est plus valable. Le fonctionnement des nouvelles versions du programme de contrôle reste peu changé. Attention, pensez à mettre à jour votre Arduino également !

Récemment, j’ai acheté un Arduino Uno sur Sparkfun, avec un écran classique (monochrome 16×2) et une diode infrarouge. Au début j’avais pas vraiment d’idées mais il y a quelques jours une grande envie – et un grand besoin – me sont venus : contrôler mon ordinateur à distance grâce, non pas à mon téléphone, mais à la télécommande de ma télé. Je vais donc vous expliquer comment je m’y suis pris et comment refaire la même chose, avec chaque fois plusieurs niveaux de complexité : si vous êtes intéressé, si vous voulez refaire pareil, et si vous voulez vraiment tout savoir sur ce que j’ai fait.

Entrons vite dans le vif du sujet avec les prérequis !

  • Un [tooltip content=”Un Arduino (le modèle Uno étant le plus répandu) est un microcontrôleur, une sorte de petit ordinateur qui permet de se familiariser facilement avec l’électronique quand on débute, et de faire rapidement de grands projets.” url=”” ]Arduino Uno[/tooltip] (ou n’importe quel autre si vous savez le programmer, ici le programme ne fera que quelques dizaines de lignes et ne posera aucune difficulté).
  • [tooltip content=”La diode infrarouge nous servira à recevoir les données émises par la télécommande sur l’Arduino”]Une diode infrarouge[/tooltip] (récepteur, hein, pas émetteur) comme celle-ci, par exemple.
  • Une télécommande (qui peut aussi être votre smartphone s’il dispose d’un émetteur infrarouge), celle de votre télévision par exemple, ou à défaut celle-ci (attention les piles ne sont pas incluses !). Normalement, n’importe quel truc avec un émetteur infrarouge doit faire l’affaire et être compatible avec le système.
  • Un ordinateur avec Windows.
  • (Facultatif) : un écran LCD pour permettre à l’Arduino d’afficher des informations, comme la plupart de ceux que vous pouvez trouver ici (attention, si vous voulez faire exactement comme moi et que ça marche directement, prenez un dont le nom ressemble à Basic 16×2 Character LCD – [Couleur] 5V (faites bien attention au 5V)). Il n’est nullement indispensable mais ajoute un petit plus au système !
  • (Facultatif) : Visual Studio 2013, si vous souhaitez pouvoir modifier le programme sur l’ordinateur.

Commençons avec le montage électronique. Il s’agit de quelque chose de très, très simple. Je vous fournis un schéma Fritzing :

J'ai pensé à mettre des fils de différentes couleurs, moi.
J’ai pensé à mettre des fils de différentes couleurs, moi.

Difficile de faire plus simple… Pour les branchements, l’écran devrait être pareil, mais vous devriez vérifier en ce qui concerne la diode, parce que je sais d’expérience que leur schéma n’est pas le même que pour la mienne… N’hésitez pas à aller voir les datasheets ou regarder si les gens ne proposent pas des exemples !

Bon… Une fois ceci fait, on va s’occuper de mettre le programme de l’Arduino en route. Que faire ? Tout d’abord, téléchargez les fichiers ci-dessous :

[dl url=”https://thomaskowalski.net/wp-content/uploads/2014/06/IRremote.zip” title=”IRremote” desc=”La librairie qui nous permettra de récupérer les infos de la diode infrarouge.” type=”arduino” align=”center”]

[dl url=”https://bitbucket.org/ThomasKowalski/pcremote-arduino-sketch/raw/master/PCRemote.ino” title=”PCRemote” target=”blank” desc=”Le skectch Arduino qui va nous permettre d’interpréter les signaux.” type=”arduino” align=”center”]

La librairie est à placer dans le dossier libraries de votre carnet de sketchs !

Une fois ceci fait, ouvrez le fichier extrait avec l’IDE Arduino et envoyez le à votre microcontrôleur. Pensez tout de même à modifier cette ligne :

int IRpin = A0;

Si jamais vous n’avez pas relié la patte des données de la diode à A0 mais à un autre pin !

Bref, si le code est compilé sans problème et que l’Arduino a bien reçu on peut maintenant vérifier que ça fonctionne. Attrapez votre télécommande préférée et ouvrez le moniteur série ! Normalement, vous devriez voir apparaître des nombres lorsque vous appuyez sur différentes touches de la télécommande. Vous remarquerez que sur certaines télécommandes, un même bouton a plusieurs nombres associés (jusqu’à des dizaines parfois). Cela peut venir de deux choses : soit la réception de la diode est mauvaise (si vous êtes loin ou que vous orientez mal la télécommande) et des infos se perdent, soit la télécommande est “intelligente” : au lieu d’envoyer “Volume + ; Volume + ; Volume + ; Volume +”, elle enverra “Volume + prolongé”. Ça peut paraître con mais ça permet de faciliter le programme de la télé. Si vous recevez bien des nombres, vous pouvez passer à la suite, autrement, vérifiez que tous les branchements sont bien effectués et que vous ne vous êtes pas trompé de pins / patte.

Si vous avez un écran : essayez de mettre en commentaire toute la partie contenue dans loop() et ajoutez :

void loop() {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Hello !");
}

Si ça ne fonctionne pas, vérifiez encore une fois que vos branchements sont bons.

Passons à la véritable partie intéressante : la partie traitement des données par notre programme pour Windows (qui est nettement plus conséquent que celui de l’Arduino évidemment).

Si vous êtes uniquement utilisateur

Si vous êtes uniquement utilisateur, je vais vous expliquer comment mettre tout ce petit monde en route. Tout d’abord vous devrez télécharger le programme de contrôle ci-dessous :

[dl url=”https://bitbucket.org/ThomasKowalski/pcremote-pc-server/raw/master/PCRemote/bin/Debug/PCRemote.exe” target=”blank” title=”PCRemoteServer” desc=”Le logiciel qui se connectera à l’Arduino et interprétera les données.” type=”software” align=”center”]

Ceci fait, vous n’avez qu’à lancer le programme contenu dans l’archive (vous pouvez l’extraire où vous voulez puisque le programme stocke ses fichiers ailleurs sur l’ordinateur). Vous devriez voir une fenêtre de ce type apparaître :

La première chose que vous devrez faire est d’essayer de vous connecter à l’Arduino. Pour ce faire, choisissez un port (le même que celui utilisé par Arduino IDE pour envoyer les sketchs) et cliquez sur connecter. Normalement, s’il arrive à se connecter, il vous le dira dans le log. Autrement, vérifiez que le moniteur série d’Arduino IDE n’est pas ouvert ou que ce dernier n’est pas en train de communiquer avec le microcontrôleur. Dans le pire des cas, redémarrez votre ordinateur. Si vous avez un écran, il devrait afficher Connecte / [le nom de votre ordinateur]. Pour continuer, cliquez sur le bouton ajouter en haut à droite.

  1. Cliquez sur le bouton Capturer. S’il est grisé, c’est que vous n’êtes pas connecté à l’Arduino.
  2. Appuyez sur la ou les touches de votre télécommande que vous voulez utiliser pour cette action. Je vous recommande d’appuyer plusieurs fois sur la même et également de manière prolongée, pour capturer tous les signaux que peut envoyer une touche, et ainsi réduire la marge d’erreur.
  3. Cliquez sur Arrêter la capture.
  4. Sélectionnez une action dans la liste de gauche.
  5. (Si vous avez sélectionné une action qui demande un paramètre spécial, comme Terminer processus ou Lancer une application personnalisée, entrez le nom de l’application ou son chemin dans le champ en bas).
  6. Cliquez sur Valider.
  7. Dans la fenêtre principale, cliquez sur Enregistrer.
  8. Essayez de faire l’action : ça devrait fonctionner.

Que peut-on faire ensuite ?

Bah c’est à peu près tout… vous pouvez configurer autant de contrôles que vous le souhaitez bien entendu, sachant qu’une touche ne peut faire qu’une action (si une touche est présente deux fois dans la configuration, seule la première ligne sera prise en compte). Ensuite, pour avoir une plus grande visibilité, vous pouvez fermer la fenêtre de configuration / connexion. Vous aurez alors un panneau de visualisation sur le bureau ainsi qu’une icône dans la barre de notification qui vous permettra d’afficher la fenêtre principale. Pour terminer, vous pouvez cliquer sur le bouton Paramètres pour accéder… aux paramètres. Il n’y en a pas énormément :

  • Dossier des captures d’écran : là où seront enregistrées les captures d’écran effectuées par la commande screnshot.
  • Nom de l’ordinateur : nom qui s’affichera en bas de l’écran lors de la connexion.
  • Lancer au démarrage : est-ce-que PCRemote doit automatiquement se lancer au démarrage de Windows ?

Normalement, je crois que j’ai tout dit ! Bien entendu, le logiciel est encore amené à beaucoup évoluer et à devenir plus stable (notamment au niveau de la réception qui est un peu gérée avec les pieds…) mais je pense que j’ai déjà fait quelque chose de largement utilisable (puisque je l’utilise au quotidien)… Si vous avez une quelconque question, n’hésitez pas !

Si vous voulez savoir comment ça marche :

Afin de gagner en lisibilité, j’ai préféré mettre cette partie sur une page à part. [dl url=”https://thomaskowalski.net/pcremote-programmation” title=”Programmation” desc=”Page à propos de la programmation du serveur PC Remote” type=”redirection” align=”center”]