Je voudrais apprendre à créer mes propres gadgets USB


29

J'écris des pilotes de périphériques de caractères Linux pour les trucs des autres depuis un certain temps. J'aimerais trouver un nouveau passe-temps et l'idée de créer mes propres gadgets USB semble vraiment bien.

Je serais ravi de pouvoir contrôler certaines LED, servos et moteurs pas à pas. J'aime vraiment apprendre de nouvelles choses par moi-même et l'excitation quand quelque chose fonctionne enfin. Je n'ai pas fait de programmation MC sérieuse, mais je connais mon chemin.

Quelqu'un peut-il recommander des kits qui seraient utiles à un noob complet? Idéalement, ce sont:

  • Compatible avec Linux
  • Capable d'expédier à l'international (je vis actuellement en Asie)
  • Offrir des kits de planche à pain

Si vous avez le temps et l'envie, des liens vers des projets sur les sites d'autres personnes qui incluent des schémas et des listes de pièces seraient grandement appréciés. Je veux étudier à partir d'exemples, mais de bons exemples, c'est pourquoi je pose la question ici.

Mon objectif final est de créer mes propres collecteurs de données - tout, des précipitations aux décibels moyens en passant par les niveaux de lumière. Désolé si cela a déjà été demandé, j'ai fait une recherche (et recherché des tags).

Réponses:


26

L' Arduino est vraiment populaire, et c'est un matériel open source, il existe donc des variantes , y compris le Freeduinos tiers appelé Bare Bones Board , le Really Bare Bones Board et le Boarduino , qui sont très agréables à utiliser avec des planches à pain. L'Arduino standard est adapté en utilisant des choses appelées Shields. Vous pouvez créer votre propre bouclier de planche à pain ou acheter quelque chose comme ce kit ProtoShield.

L'Arduino utilise une puce ou un câble FTDI USB-RS232. [L'Arduino standard est intégré, tandis que la plupart des cartes à pain utilisent un câble spécial qui contient la puce et vous permet d'économiser de l'argent.] Il existe un pilote intégré pour Linux, Mac OS X et Windows les utilisateurs peuvent télécharger un pilote. En effet, cela signifie que l'Arduino agit comme un appareil communiquant sur un port série, et qu'il est donc très facile de communiquer avec.

Pour l'utiliser, vous téléchargez également un logiciel. Il est livré avec un IDE, une chaîne d'outils AVR-GCC, une très belle bibliothèque et un logiciel pour télécharger votre programme sur la puce. Il vous cache la plupart des détails et a une grande communauté. Il est programmé dans un langage appelé "Wiring", mais c'est vraiment du C ++.

Enfin, en tant que matériel open source, il existe des schémas. En effet, je semble me souvenir d'avoir lu qu'il était assez facile de construire un modèle antérieur. La recherche de "schémas Arduino" dans votre moteur de recherche préféré vous donnera de bons résultats.

En ce qui concerne les kits, le Maker Shed propose de nombreux articles liés à Arduino en stock. Ils semblent expédier dans le monde entier. Quelques-uns d'intérêt incluent:

Le Shoppe de Wulfden (USA) possède de jolis kits d'expérimentateurs et semble expédier à l'international.

Solarbotics (Canada) dispose d'un kit d'expérimentateur Arduino ARDX , d'un ensemble de démarrage Freeduino - Ultimate et d'un ensemble de démarrage Arduino - Basic (et Ultimate ), et semble être expédié à l'international.

La page principale "Acheter" d' Arduino répertorie les fournisseurs d'Arduino dans toutes les régions du globe.

D'autres endroits que je vérifierais incluent Adafruit Industries et Sparkfun Electronics (les deux aux États-Unis).


1
Sensationnel. Merci pour le temps que vous avez consacré à une réponse aussi informative!
Tim Post

3
Je suis heureux de l'entendre. Après avoir écrit la réponse, je me suis dit: "Je ne peux pas croire que je viens de passer quarante minutes à répondre à une question sur Internet!"
Clinton Blackmore

1
Excellent article, mais il convient de noter que tous les Arduinos n'utilisent pas la puce FTDI. Par exemple, j'utilise mon Arduino Uno R3 sous OS X sans pilote installé. (Celui-ci utilise un Atmega 16U2 pour la communication USB.)
exscape

12

L'Arduino est un excellent outil pour commencer lorsque vous souhaitez créer des gadgets électroniques et il pourrait vous conduire à votre objectif final de construire un enregistreur de données . Cependant, il ne convient pas au développement USB réel car il émule un port série à l'ancienne. Il ne vous permettra pas d'en faire autre chose (comme un périphérique d'interface humaine (souris / clavier) ou un périphérique de stockage de masse (lecteur de carte / lecteur amovible)).

Si vous voulez créer de "vrais" gadgets USB, consultez le site de Jan Axelson . Il écrit des livres "débutants" sur l'USB. Développer des gadgets qui utilisent USB à ce niveau pourrait ne pas convenir aux débutants, alors l'expérience Arduino vous aidera certainement.


Merci pour le lien. Je vais sûrement le vérifier une fois que les «roues d'entraînement» se détacheront :)
Tim Post

Ce n'est pas tout à fait vrai ... Arduino Leonardo et toutes les cartes basées sur Atmega32u4 peuvent vous permettre de créer des HID et tout autre appareil personnalisé
Dmitry Gusarov

8

Je recommande fortement le tutoriel du présentateur de diaporama USB Tuxgraphics AVR. Il utilise un microcontrôleur Atmel AVR, qui a une grande communauté d'amateurs (avrfreaks, etc.), et une pile usb1.1 open-source uniquement logicielle de obdev.org. Il ne peut pas évoluer très haut (stockage de masse, par exemple), mais le produit final est un petit clavier USB HID avec deux boutons-poussoirs assignables. Il serait trivial de l'utiliser comme enregistreur de données, et quelques exemples sur obdev.org ne sont que cela (www.obdev.at/products/vusb/projects.html). Il est écrit en clair c, et la liste des pièces est de quelques dollars tout au plus.

En même temps, je recommande de construire ou d'acheter le programmateur tuxgraphics avrusb500. C'est une joie à utiliser et l'un des équipements les plus fiables que je possède. (Je ne suis pas affilié - juste un client très satisfait!)


8

Un autre appareil que j'ai voulu étudier est l' AT90USBKey . Cela fait un moment que je ne l'ai pas étudié, et je ne sais pas si vous pouvez le programmer sans Windows, mais il agira comme un périphérique USB (comme un clavier ou un périphérique de stockage de masse) ou comme un hôte USB que vous branchez d'autres appareils. Il existe des exemples de programmes disponibles, et il semble assez facile à utiliser, à condition que vous en sachiez un peu sur l'électronique et que vous puissiez coder en C.

Une recherche google pour AT90USBKey et Linux donne des résultats prometteurs.

Je sais que vous pouvez l'obtenir sur DigiKey.ca . J'ai recherché un équivalent de digikey pour l'Asie ; vous pouvez obtenir la pièce de Farnell .


Selon le site lié, il semble que la carte puisse être programmée via Jtag.
SingleNegationElimination


6

Si vous finissez par utiliser l'Arduino, j'ai porté la bibliothèque V-USB (anciennement AVR-USB) pour l'exécuter. Il est également entouré d'une classe pour faciliter l'interaction.

Vous pouvez créer des périphériques USB HID avec lui, par exemple un clavier, une souris ou un joystick. Vous pouvez également créer un périphérique générique qui utilise libusb sur l'hôte pour le contrôler - à partir de Python, C, Processing, etc.

Mon site a un blindage PCB que vous pouvez faire qui utilise une prise USB et quelques résistances, etc.:

http://code.rancidbacon.com/ProjectLogArduinoUSB

Vous pouvez écrire du code Arduino pour envoyer des frappes aussi facilement que:

UsbKeyboard.sendKeyStroke(KEY_ENTER);

ou avec un "driver" libusb vous pouvez envoyer des données comme:

UsbStream.write(0xff)

ou lire des données avec:

UsbStream.read()

--Philippe;


5

Il existe maintenant un certain nombre de cartes de développement basées sur AVR-USB.

J'ai personnellement utilisé Teensy et Bumble-B et je pense qu'ils sont tous les deux géniaux.

Teensy est sympa, car il s'intègre très bien avec l'environnement Arduino. Cela signifie que vous pouvez faire des choses comme "Mouse.init; Mouse.move (x, y)" au lieu de gérer vous-même le code USB de bas niveau. Cependant, les deux exécuteront LUFA si vous le souhaitez.



4

Object Development a créé une bibliothèque de microcontrôleurs AVR qui vous permet de créer vous-même des périphériques USB très bon marché (à partir de seulement 2-3 $). GCC pour AVR est compatible Linux. Il y a des tas d'appareils déjà fabriqués. Jetez un œil ici: http://www.obdev.at/products/vusb/projects.html


0

Cela dépend du type de gadgets USB que vous souhaitez créer et du niveau avancé. Vous mentionnez des led clignotantes. Ce type de contrôle peut être facilement archivé avec n'importe quel type de microcontrôleur avec uart et une puce ftdi (Arduino est assez populaire et facile à démarrer). La puce ftdi se connecte en série à l'UC et agit comme un convertisseur série <-> USB. Il apparaît également comme un port COM virtuel sur votre ordinateur.

Si vous souhaitez utiliser des protocoles, des pilotes et des fonctionnalités USB plus avancés, vous pouvez obtenir un uC avec une capacité USB native. Microchip a de nombreuses photos (leurs microcontrôleurs) qui peuvent le faire, par exemple. Microchip possède également de nombreuses cartes de développement dédiées à l'apprentissage de l'utilisation de l'USB. La prise en charge Atleast Microchips uc 32 bits prend également en charge les modes hôte et otg, vous pouvez donc créer un enregistreur de données qui enregistre les données sur une clé USB usuelle, que vous pouvez connecter à votre ordinateur pour lire les données. (Je suis sûr que de nombreux autres fabricants ont également des circuits intégrés et des kits de développement similaires, mais Microchip est le seul que j'ai utilisé)

Page d'accueil de Microchip / USB


0

Notez que vous n'avez pas besoin de commencer à un niveau électronique aussi bas et de gagner plus de temps de développement pour le "gizmo" lui-même. De nombreuses entreprises vendent des périphériques USB pour le marché du bricolage, par exemple:

http://www.yoctopuce.com

http://www.phidgets.com

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.