Quel est le moyen le plus simple et le moins cher de s'interfacer avec USB?

17

Si je voulais créer un appareil simple qui communique avec mon ordinateur, disons peut-être un interrupteur qui pourrait couper mon ordinateur lorsqu'il est allumé et éteint et le brancher via USB, quelle serait la manière la moins chère et la plus simple d'accomplir cela?

Sean
la source
4
regardez ma portée de puce unique USB ici , il est difficile de faire avec moins de pièces 1 ATTiny45 et quelques zener, 2 canaux HID
Projet très cool!
Code Painters

Réponses:

10

Le plus simple? Prenez un Arduino et écrivez quelques lignes de Python. Les Arduino sont incroyablement faciles à programmer, ne nécessitent aucun matériel supplémentaire pour fonctionner et sont très populaires . Python a une bibliothèque série très simple et est un jeu d'enfant à écrire.

Exemple de code

Python: exécutez ce script en tant que service. J'utilise Ubuntu, donc ce script affichera une notification vous indiquant quand un bouton a été pressé sur l'Arduino.

#! /usr/bin/python

import serial
import pynotify

ser = serial.Serial('/dev/ttyUSB0', 9600)
while True:
  x = ser.read()
  if x == 'b':
    # Show notification
    n = pynotify.Notification("Arduino", "The button was pressed.")
    n.show()

Arduino:

void setup(){
  // Assuming button is active low and on pin 4
  pinMode(4, INPUT);
  Serial.begin(9600);
}

void loop(){
  if(digitalRead(4) == LOW){
    Serial.print('b');
  }
}

 

Nick Pascucci
la source
pouvez-vous fournir plus de détails sur l'utilisation de pyserial pour interfacer avec Arduino? Échantillon de code ou liens appréciés.
LeanerRocky
1
Chose sûre. Consultez l'exemple.
Nick Pascucci
J'apprécie vraiment l'exemple. Tu es une légende !!
LeanerRocky
Ça ne va pas être le moins cher.
quick_now
ce n'est pas "interface avec usb" mais ftdi série seulement.
nonchip
8

Construisez un périphérique USB Human Interface Device Class. Il s'agit de la même classe utilisée par les claviers, les souris, les joysticks, les manettes de jeu, etc. Votre PC prend déjà en charge le pilote de périphérique complet pour les périphériques HID, donc l'accès au logiciel est facile. Vous trouverez de nombreux pointeurs et même des exemples de code sur la page HID de Jan Axelson . Parcourez son site pour de nombreuses bonnes informations liées au développement de périphériques USB.

Beaucoup de petites familles de microprocesseurs peuvent faire des DHI. Je l'ai même vu faire à faible vitesse USB avec un AVR 8 broches ATtiny entièrement dans le logiciel.

Choisissez votre puce préférée, puis recherchez dans ses "ressources habituelles" des échantillons HID.

Une autre approche consiste à fabriquer un dispositif de communication série. Il existe plusieurs solutions monopuce de FTDI . Le FT232R est un choix populaire. Les pilotes sont requis, mais les pilotes certifiés Windows sont connus de l'assistant Nouveau matériel détecté, donc l'installation n'est pas difficile. Une fois installé, vous disposez d'un appareil qui ressemble à un port COM. D'autres pilotes sont disponibles qui vous permettront d'accéder à ses broches GPIO et de l'utiliser dans des modes plus avancés.

Mise à jour, 2015: il y avait un lien vers http://www.lvr.com/hidpage.htm , qui semble avoir pourri le lien et le nouvel emplacement découvert grâce à El Marce . Jan's Lakeview Research est toujours une excellente source d'informations sur l'utilisation pratique de l'USB.

RBerteig
la source
Le lien de Jan Axelson est rompu. J'ai trouvé cela ( janaxelson.com/hidpage.htm ) en recherchant sur Google: "jan axelson a caché la page". Serait-ce si gentil de vérifier que c'est la bonne? Merci!
El Marce
Merci. C'est son site maintenant. Je suppose que Lakeview Research a perdu ou publié son ancien nom de domaine et qu'il a été saisi par quelqu'un de nouveau.
RBerteig
1
Si vous choisissez d'emprunter la voie FTDI, assurez-vous d'obtenir un câble avec une pièce FTDI authentique. FTDI (une entreprise chinoise) est tombé malade et fatigué de voir ses puces contrefaites, alors ils ont appris à leurs chauffeurs à reconnaître leurs propres puces. Cela a causé beaucoup de problèmes aux personnes qui ont acheté des radios bidirectionnelles avec des câbles de programmation construits avec les puces contrefaites, car le fabricant de la radio a acheté les puces contrefaites (espérons-le par erreur!).
John R. Strohm
1
FTDI est une société anglaise (enfin écossaise en fait) basée à Glasgow.
quick_now
@RBerteig link work?
Fast Snail
6

Voici un article de blog très détaillé http://msdn.microsoft.com/en-us/devlabs/dd491992 avec un logiciel pour utiliser un PIC18F4550 de moins de 5 $ pour interfacer via USB en tant que périphérique HID standard. Le logiciel fourni peut être utilisé pour s'interfacer avec n'importe quel appareil HID, donc si vous voulez une autre puce, le logiciel fonctionnera toujours.

Un autre avantage supplémentaire est que le billet de blog vous montre comment effectuer une communication bidirectionnelle afin que vous puissiez non seulement interfacer un commutateur, mais également allumer et éteindre une LED.

JonnyBoats
la source
3

Voici un projet simple à moi utilisant un PIC18F2455, basé sur le logiciel USB de Brad Minch. Les PCB sont disponibles auprès d'Olimex.

Leon Heller
la source
2

Si cela ne vous dérange pas le microcontrôleur basé sur Cortex-M3, jetez un œil au LPC1343 de NXP . C'est seulement 6,30 $ chez Digikey (1 pièce). Il y a une fonctionnalité très cool - firmware pour le stockage et les périphériques HID dans la ROM de la puce!

Par rapport à une solution avec puce FTDI + microcontrôleur, il y a une puce de moins :)

Peintres de code
la source