Question:
Réveillez le PC Windows via un événement USB à partir d'un Raspberry Pi
seveves
2015-07-13 14:58:07 UTC
view on stackexchange narkive permalink

Est-il possible de réveiller un PC Windows de veille / hibernation via un événement USB provenant d'un Raspberry Pi?

Lorsque mon PC Windows est en veille et que je déplace ma souris, le PC se réveille . C'est exactement ce que je veux faire avec une application exécutée sur mon Raspberry Pi (si je connecte le Raspberry Pi au port USB de mon PC).

J'ajouterai bientôt ma solution @ppumkin ... J'ai élaboré quelque chose de similaire basé sur les réponses actuelles. Merci à tous! Bien sûr, j'accepterai une réponse
Cinq réponses:
Greenonline
2015-07-13 16:06:28 UTC
view on stackexchange narkive permalink

Vous avez, potentiellement, trois options:

  • USB vers USB (pas possible car RPi ne peut agir qu'en mode hôte);
  • USB vers Arduino vers GPIO ( Voir ci-dessous)
  • USB vers GPIO (voir REMARQUE)

REMARQUE: Si vous allez connecter le GPIO à USB, vous devez utilisez des optocoupleurs ou des niveleurs de tension, tels que le tampon hexadécimal 74HC4050, car l'USB fonctionne à 5 V et le GPIO est à 3 V, donc sans eux, vous courriez le risque de frire le RPi

Si vous utilisez un Arduino (Leonardo, Due ou Micro) comme interface, alors oui. Il existe des bibliothèques de souris et de claviers, qui permettent à l'Arduino d'envoyer des événements de touche et / ou de souris au RPi.

Si vous utilisez un Arduino Pro Mini conçu pour fonctionner à 3,3 V, le besoin d'opto-coupleurs ou de niveleurs de tension est réduit. Sur instructables.com, vous trouverez un plan pour connecter un Arduino Mini à un RPi, en fabriquant un Hoody. J'ai fait cet appareil et il fonctionne très bien.

Hoody - Arduino Micro to a Pi

Une fois que vous avez construit le Hoody, puis avec l'ajout d'une interface FTDI vers USB et les bibliothèques vous devriez être prêt à partir.

FTDI to USB interface

L'Arduino Pro Mini connecté à (et alimenté par) une carte de dérivation SparkFun FTDI Basic et USB Câble mini-B. Notez que sur les cartes Pro Mini antérieures, l'orientation du connecteur à 6 broches peut être inversée; vérifiez que les mots GRN et BLK sont alignés sur le Pro Mini et le FTDI Basic Breakout.

Comme je l'ai déjà dit, je l'ai déjà construit - pour moins de 10 £, en me procurant des matériaux sur eBay.

Attention, procurez-vous un 3.3V Pro Mini, et PAS le 5V, sinon un décalage du niveau de tension et des opto-coupleurs seront nécessaires.

ADDENDA: Je ne suis pas sûr à 100% que les bibliothèques Clavier / Souris fonctionneront avec un Pro Mini (car elles nécessitent des périphériques 32u4), cependant, il serait assez facile d'écrire un croquis qui déclenche les signaux appropriés vers le FTDI.

Comme le souligne David Freitag dans les commentaires ci-dessous, le Pro Micro est compatible avec les bibliothèques et fonctionne également à 3,3 V et donc ferait le choix le plus approprié.

MISE À JOUR: Je viens d’acheter un de ces clones 3.3V Pro Micro, sur ce site de vente aux enchères bien connu, afin de déconner, d’émuler clics de souris.

Hm je n'ai pas encore d'arduino mais un beaglebone noir. Mais cette voie semble très prometteuse.
Votre addendum est correct, les bibliothèques USB ne fonctionneront pas pour le Pro Mini car il utilise un Atmega328 qui ne possède pas de périphériques USB. La carte que vous auriez dû suggérer est la Pro * Micro * 3.3V. https://www.sparkfun.com/products/12587
@DavidFreitag - Il y a apparemment une certaine confusion dans la convention de dénomination utilisée par les différents fabricants. Je faisais référence au [Pro Mini 3.3V] (https://www.arduino.cc/en/Main/ArduinoBoardProMini). Pour être honnête, ils sont probablement très importants, et le point principal que je voulais faire comprendre était que l'utilisation d'un Arduino 3,3 V nécessite _une logique de colle sans colle _... Cependant, oui, le Pro Micro serait _beaucoup_ plus approprié que il est compatible avec les bibliothèques de touches et de souris. Merci d'avoir fait remarquer cela. Je vais chercher à en acheter un. :-)
@Greenonline Il n'y a pas vraiment de confusion, la même partie existe en tant qu'appareil Arduino. Le seul problème est qu'ils ne proposent qu'un appareil 5V. Voir ici: https://www.arduino.cc/en/Main/ArduinoBoardMicro
Piotr Kamoda
2015-07-13 15:09:12 UTC
view on stackexchange narkive permalink

Lisez ceci. Il semble que raspi ne soit pas un périphérique esclave (fonctionne comme une souris - l'envoi de telles données via USB sera impossible). Mais il existe d'autres options USB, certains PC ont l'option «Wake via LAN», ce qui signifie qu'il est possible de réveiller le PC via un signal LAN, comme ici.

Naturellement, vous pouvez essayer de décomposer le câble USB à une extrémité et de le connecter au GPIO. Ensuite, vous pouvez simuler ce que vous souhaitez, mais cela nécessite probablement beaucoup de connaissances.
Merci pour votre réponse mais WoL ou d'autres techniques ne sont pas autorisées pour mon cas d'utilisation. Dans tout autre cas d'utilisation, ce serait aussi mon premier choix :)
@Piotr - Cependant, si vous allez connecter le GPIO à l'USB, vous devez utiliser des optocoupleurs ou des niveleurs de tension car l'USB fonctionne à 5V et le GPIO est à 3V, donc sans eux, vous courriez le risque de ** frire ** le RPi
@Greenonline merci pour la clarification, mais ce n'était qu'une proposition générale, pas une solution complète.
En utilisant une souris existante (interface cachée), briser le câble USB et l'alimenter via GPIO ne fonctionnerait pas?
@PiotrKamoda - Pas de soucis ... Votre idée est vraiment bonne. Voir ma réponse pour une solution étendue :-)
@Greenonline [les tensions de signalisation USB] (https://en.wikipedia.org/wiki/USB#Signaling) sont loin d'être près de 5 V. La basse / pleine vitesse (commune pour HID) va jusqu'à 3,6 V (à la terre? .. . bien que la différence puisse atteindre 7,2 V?), qu'un Pi devrait être capable de gérer. J'ai aussi le sentiment que cela ne fonctionnera tout simplement pas parce que la signalisation USB est différentielle - au mieux, vous auriez un sacré temps à essayer de simuler cela sur GPIO. Vous aurez peut-être plus de chance avec un périphérique I2C, mais je ne suis pas sûr qu'il en existe un qui puisse également servir de périphérique USB.
@Bob - Merci de l'avoir signalé. Je cherchais au mauvais endroit, la [section alimentation] (https://en.wikipedia.org/wiki/USB#Power) ...
Ghanima
2015-07-13 15:49:11 UTC
view on stackexchange narkive permalink

En fait, je pense que c'est possible. Je ne veux pas entrer dans les détails de ce qu'il faut faire du côté PC de ce plan, mais pour le Pi:

Le port USB du RPi est techniquement un On-the-go (OTG) puce et devrait prendre en charge à la fois un ensemble réduit de fonctionnalités hôte et client et pourrait donc jouer le rôle d'un esclave USB tel qu'un HID. Cependant, les types B / B + du RPi ne prennent pas en charge le mode périphérique qui est lié au hub USB inclus et au fait que l'Ethernet est tunnelé via USB ( voir).

Mais ... les périphériques d'interface utilisateur (HID) tels que les souris n'ont besoin que de l'USB 1.1 Low Speed ​​ avec un débit de données de 1,5 MBit / s. Il existe donc de nombreuses solutions qui utilisent des piles USB logicielles pour émuler un périphérique USB. Ces exemples utilisent généralement des microcontrôleurs qui sont bien moins «puissants» que le RaspberryPi (mais bien sûr, ils ont également une surcharge nettement inférieure). Les exemples incluent la prise Igor (un récepteur de télécommande IR basé sur un microcontrôleur Atmel) ou les «faux» claviers ou «enregistreurs de frappe» basés sur un microcontrôleur. Cela devrait être vraiment possible avec un Pi.

Si nous en croyons À quelle vitesse GPIO + DMA? Une entrée Multi I2S puis 1,5 MBit / s devrait être possible sur le GPIO avec DMA.

mephisto
2015-07-13 22:56:45 UTC
view on stackexchange narkive permalink

Windows et le bios de nombreux ordinateurs prennent en charge les événements «Wake on LAN». Consultez les options du menu de votre bios pour voir ce qu'il y a. Vérifiez également que votre routeur ne bloque pas les messages «Wake on LAN». Comment en envoyer un à partir d'un raspberryPi B via Ethernet m'est inconnu, mais je suis beaucoup plus convaincu que cela pourrait être le cas.

La raison en est que l'usb a une extrémité «ordinateur», généralement avec le connecteur large plat à quatre boîtes aux lettres et une extrémité «périphérique» pour les appareils photo et autres appareils esclaves. Couper deux câbles USB pour créer un câble à double extrémité serait désagréable et devrait être méconnu par au moins une extrémité. L'alimentation micro-usb 5V du pi utilise uniquement les fils + 5V DC et GND avec les deux autres non connectés, donc je ne perdrais pas de temps à essayer de faire passer des données.

L'autre façon consiste à télécharger quelques éléments sur le pi jusqu'à ce que vous puissiez activer une LED sur le tableau de bord à partir des broches GPIO sur le pi. Vous aurez également besoin d'une transistors et configurez-la sur votre tableau d'affichage pour basculer une batterie 5V ou 6V et une autre LED. Lorsque vous pouvez basculer un appareil 5V sur le tableau de bord via le GPIO 3.3V, soudez des fils supplémentaires parallèles à l'interrupteur d'alimentation principal à l'avant de votre PC. La plupart du temps, ce sont +5 et GND, sauf lorsque l'interrupteur est enfoncé. Maintenant, faites allumer votre pi pendant 0,6 seconde, comme si quelqu'un venait d'appuyer sur l'interrupteur principal de la machine Windows. Je ne sais pas encore si cela fera ce que vous voulez. Si vous devez faire de même avec un câble USB dont le maître est le PC, il y a peut-être un moyen.

cnnrznn
2015-07-14 04:50:52 UTC
view on stackexchange narkive permalink

Avez-vous déjà travaillé avec le dossier / dev sous Linux? Sinon, il y a un tableau sur cette page ( http://www.tldp.org/LDP/intro-linux/html/sect_03_01.html) qui décrit joliment chaque répertoire dans root (/) .

Le dossier / dev contient les fichiers Linux qui appartiennent à vos appareils (c'est-à-dire les disques durs, le moniteur, la RAM, etc.). Lorsque vous connectez un appareil, dans votre cas, l'usb, à l'ordinateur, il devrait apparaître sous ce dossier.

Je le ferais:

  1. ls dans le dossier / dev avant et après la connexion de l'usb du pi à la machine Windows pour déterminer quel fichier dans / dev appartient au port USB.

  2. Ensuite, écrivez un script simple pour écrire des données dans ce fichier. Exemple:

    • echo "1234" >> {filename}
  3. Ensuite, appelez ce fichier depuis un autre programme ou chaque fois que vous voulez réveiller le PC.

    • Pour tester cela, vous pouvez taper la commande manuellement dans le terminal.

Voyez si cela fonctionne. Mon idée est que l'activité de l'USB déclenchera le réveil de votre machine Windows. Je suis curieux donc si j'en ai l'occasion, je vais essayer ceci avec ma propre machine pi / windows.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...