Gostaria de aprender a fazer meus próprios dispositivos USB

29

Estou escrevendo drivers de dispositivo de caracteres Linux para coisas de outras pessoas há algum tempo. Gostaria de encontrar um novo hobby e a ideia de criar meus próprios dispositivos USB parece realmente interessante.

Eu ficaria emocionado em poder controlar alguns LEDs, servos e motores de passo. Eu realmente gosto de aprender coisas novas por conta própria e da emoção quando algo finalmente funciona. Eu não fiz nenhuma programação séria de MC, mas sei o que fazer.

Alguém pode recomendar alguns kits que seriam úteis para um noob completo? Idealmente, são eles:

  • Compatível com Linux
  • Capaz de enviar internacionalmente (atualmente moro na Ásia)
  • Oferecer kits de placa de ensaio

Se você tiver tempo e inclinação, os links para projetos nos sites de outras pessoas, que incluem esquemas e listas de peças, serão muito apreciados. Eu quero estudar a partir de exemplos, mas bons exemplos, e é por isso que estou perguntando aqui.

Meu objetivo final é criar meus próprios coletores de dados - de chuva a decibéis médios e níveis de luz. Desculpe se isso já foi solicitado antes, eu pesquisei (e pesquisei tags).

Tim Post
fonte

Respostas:

26

O Arduino é realmente popular e é um hardware de código aberto, por isso existem variações , incluindo os Freeduinos de terceiros chamados Bare Bones Board , o Really Bare Bones Board e o Boarduino , que são ótimos para usar com as placas de ensaio . O Arduino padrão é adaptado usando coisas chamadas Shields. Você pode fazer seu próprio escudo de tábua de pão ou comprar algo como este Kit ProtoShield.

O Arduino usa um chip ou cabo FTDI USB-RS232. [O Arduino padrão tem embutido, enquanto a maioria dos painéis usa um cabo especial que possui o chip e economiza algum dinheiro.] Existe um driver embutido para Linux e Mac OS X e Windows os usuários podem baixar um driver. Efetivamente, isso significa que o Arduino atua como um dispositivo que se comunica em uma porta serial e, portanto, é muito fácil se comunicar.

Para usá-lo, você também baixa o software. Ele vem com um IDE, uma cadeia de ferramentas AVR-GCC, uma biblioteca muito boa e um software para carregar seu programa no chip. Ele esconde a maioria dos detalhes de você e tem uma ótima comunidade. É programado em uma linguagem chamada "Wiring", mas é realmente C ++.

Por fim, sendo um hardware de código aberto, existem esquemas por aí. Na verdade, me lembro de ter lido que era bastante fácil construir um modelo anterior. Procurar "Esquemas do Arduino" no seu mecanismo de pesquisa favorito fornecerá bons resultados.

Quanto aos kits, o Maker Shed oferece muitos itens relacionados ao Arduino em estoque. Eles parecem ser enviados ao redor do mundo. Alguns de interesse incluem:

O Shoppe em Wulfden (EUA) possui ótimos kits de experimentadores e parece ser enviado internacionalmente.

A Solarbotics (Canadá) possui um kit ARDX Arduino Experimenter's , um Freeduino Starter Bundle - Ultimate e um Arduino Starter Bundle - Basic (e Ultimate ) e parece ser enviado internacionalmente.

A página principal "compra" do Arduino lista os fornecedores de Arduino em todas as áreas do mundo.

Outros lugares que eu verificaria incluem a Adafruit Industries e a Sparkfun Electronics (ambas nos EUA).

Clinton Blackmore
fonte
1
Uau. Obrigado pelo tempo que você colocou em uma resposta tão informativa!
Tim Post
3
Fico feliz em ouvir isso. Depois de escrever a resposta, pensei: "Não acredito que passei quarenta minutos respondendo a uma pergunta na internet!"
Clinton Blackmore
1
Ótimo post, mas note que nem todos os Arduinos usam o chip FTDI. Por exemplo, eu uso o meu Arduino Uno R3 no OS X sem nenhum driver instalado. (Que se usa uma Atmega 16U2 para a comunicação USB.)
Exscape
12

O Arduino é uma ótima ferramenta para começar quando você deseja criar dispositivos eletrônicos e pode levar você ao seu objetivo final de criar um registrador de dados . No entanto, não é adequado para o desenvolvimento real de USB, pois emula uma porta serial antiquada. Não permitirá que você faça isso de outra forma (como um dispositivo de interface humana (mouse / teclado) ou um dispositivo de armazenamento em massa (leitor de cartões / unidade removível)).

Se você deseja criar dispositivos USB "reais", visite o site de Jan Axelson . Ele escreve livros para iniciantes sobre USB. O desenvolvimento de gadgets que usam USB nesse nível pode não ser adequado para iniciantes, portanto a experiência do Arduino definitivamente o levará a caminho.

bpijls
fonte
Obrigado pelo link. Eu certamente irá verificá-la uma vez que os 'rodinhas' sair :)
Tim Publicar
Isso não é bem verdade ... Arduino Leonardo e todas as placas baseadas Atmega32u4 pode deixá-lo fazer HID e quaisquer outros dispositivos personalizados
Dmitry Gusarov
8

Eu recomendo o tutorial do apresentador de slides Tuxgraphics AVR USB. Ele usa um microcontrolador Atmel AVR, que possui uma grande comunidade de entusiastas (avrfreaks etc.), e uma pilha usb1.1 de software livre, de software livre, de obdev.org. Ele não pode ser escalado muito alto (armazenamento em massa, por exemplo), mas o produto final é um pequeno teclado USB HID com dois botões atribuíveis. Seria trivial usá-lo como um registrador de dados, e alguns dos exemplos em obdev.org são exatamente isso (www.obdev.at/products/vusb/projects.html). Está escrito em c limpo e a lista de peças custa alguns dólares, no máximo.

Ao mesmo tempo, recomendo construir ou comprar o programador tuxgraphics avrusb500. É uma alegria usar e um dos equipamentos mais confiáveis ​​que possuo. (Eu não sou afiliado - apenas um cliente muito satisfeito!)

qartis
fonte
8

Outro dispositivo que eu queria examinar é o AT90USBKey . Já faz um tempo desde que eu o analisei, e não tenho certeza se você pode programá-lo sem o Windows, mas ele funcionará como um dispositivo USB (como um teclado ou dispositivo de armazenamento em massa) ou como um host USB em que você conecta outros dispositivos. Existem programas de amostra disponíveis e parece razoavelmente fácil trabalhar, desde que você conheça um pouco sobre a eletrônica e possa codificar em C.

Uma pesquisa no google por AT90USBKey e Linux apresentou resultados promissores.

Eu sei que você pode obtê-lo no DigiKey.ca . Procurei um equivalente digikey para a Ásia ; você pode obter o papel da Farnell .

Clinton Blackmore
fonte
Segundo o site vinculado, parece que o quadro pode ser programado via Jtag.
SingleNegationElimination
6

Você também pode querer verificar Teensy .

tuupola
fonte
6

Se você acabar usando o Arduino, portarei a biblioteca V-USB (anteriormente AVR-USB) para executá-lo. Também inclui uma classe para facilitar a interação.

Você pode criar dispositivos USB HID, por exemplo, teclado, mouse ou joystick. Você também pode criar um dispositivo genérico que usa o libusb no host para controlá-lo - do Python, C, Processamento etc.

Meu site tem uma blindagem PCB que você pode usar que usa uma tomada USB e alguns resistores, etc:

http://code.rancidbacon.com/ProjectLogArduinoUSB

Você pode escrever o código do Arduino para enviar pressionamentos de teclas tão facilmente quanto:

UsbKeyboard.sendKeyStroke(KEY_ENTER);

ou com um "driver" libusb, você pode enviar dados como:

UsbStream.write(0xff)

ou leia dados com:

UsbStream.read()

--Philip;

seguidor
fonte
5

Agora existem várias placas de desenvolvedor baseadas em AVR-USB.

Eu pessoalmente usei o Teensy e o Bumble-B mencionados anteriormente e acho que ambos são ótimos.

Teensy é legal, porque se integra muito bem ao ambiente do Arduino. Isso significa que você pode fazer coisas como "Mouse.init; Mouse.move (x, y)" em vez de lidar com o código USB de baixo nível. Ambos executarão o LUFA, se você desejar.

Laen
fonte
5

Aqui está um simples projeto PIC USB meu:

http://www.leonheller.com/usb

PCBs estão disponíveis.

Leon Heller
fonte
4

A Object Development criou uma biblioteca para microcontroladores AVR que permite criar dispositivos USB muito baratos por conta própria (a partir de apenas 2 a 3 dólares). O GCC para AVR é ​​compatível com Linux. Já existem centenas de dispositivos fabricados. Dê uma olhada aqui: http://www.obdev.at/products/vusb/projects.html

avra
fonte
0

Depende do tipo de dispositivo USB que você deseja criar e do nível avançado. Você menciona leds piscantes. Esse tipo de controle pode ser facilmente arquivado com qualquer tipo de microcontrolador com uart e um chip ftdi (o arduino é bastante popular e fácil de começar). O chip ftdi se conecta ao uC em série e atua como um conversor USB <-> serial. Ele também aparece como uma porta COM virtual no seu computador.

Se você quiser fazer uso de protocolos, drivers e recursos USB mais avançados, poderá obter um UC com capacidade USB nativa. O microchip tem muitas fotos (seus microcontroladores) que podem fazer isso, por exemplo. O Microchip também possui muitas placas de desenvolvimento dedicadas ao aprendizado do uso do usb. O Atleast Microchips de 32 bits também suporta o uC, e otg -modes, para que você possa criar um registrador de dados que salve os dados em um cartão de memória USB comum, que pode ser conectado ao computador para ler os dados. (Tenho certeza de que muitos outros fabricantes também possuem CIs e dev-kits similares, mas o Microchip é o único que eu usei)

Página inicial do Microchip / USB

varesa
fonte
0

Observe que você não precisa iniciar em um nível eletrônico tão baixo e poupar mais tempo de desenvolvimento para o "dispositivo" em si. Muitas empresas vendem dispositivos USB para o mercado de bricolage, por exemplo:

http://www.yoctopuce.com

http://www.phidgets.com

martinm
fonte