我想学习如何制作自己的USB小工具


29

我一直在为其他人编写Linux字符设备驱动程序。我想找到一个新的爱好,而制作自己的USB gizmos的想法似乎真的很整洁。

我很高兴能够控制某些LED,伺服和步进电机。我真的很喜欢独自学习新事物,当事物最终起作用时,我会很兴奋。我没有做过认真的MC编程,但是知道我的方法。

谁能推荐一些对一个完整的菜鸟有用的工具包?理想情况下,它们是:

  • Linux友好
  • 能够进行国际运输(我目前居住在亚洲)
  • 提供面包板套件

如果您有时间和爱好,那么非常感谢您链接到其他人的站点上包含原理图和零件清单的项目的链接。我想从例子中学习,但是要有很好的例子,这就是为什么我在这里问。

我最终的目标是创建自己的数据收集器-从降雨到平均分贝再到光照水平的一切。抱歉,如果以前有人问过,我确实进行了搜索(并搜索了标签)。

Answers:


26

Arduino的是非常受欢迎的,而且它是开源硬件,所以也有变化,包括第三方Freeduinos称为裸骨板,在真裸骨板Boarduino,这是非常好的与面包板使用。标准Arduino使用称为Shields的东西进行了修改。您可以制作自己的面包板防护罩,也可以购买类似ProtoShield Kit的防护罩

Arduino使用FTDI USB-RS232芯片或电缆。[标准的Arduino内置了,而大多数面包板使用的是内部装有芯片的特殊电缆,为您节省了一些钱。]有一个用于Linux,Mac OS X和Windows的内置驱动程序。用户可以下载驱动程序。实际上,这意味着Arduino充当了通过串行端口进行通信的设备,因此非常易于通信。

要使用它,您还需要下载软件。它带有一个IDE,一个AVR-GCC工具链,一个非常不错的库以及将程序上传到芯片上的软件。它向您隐藏了大多数细节,并拥有一个强大的社区。它使用一种称为“接线”的语言进行编程,但实际上是C ++。

最后,作为开源硬件,这里有原理图。实际上,我似乎还记得阅读过的文章,即建立一个较早的模型相当容易。在您喜欢的搜索引擎中搜索“ Arduino原理图”将为您带来良好的结果。

至于套件,Maker Shed提供了许多与Arduino相关的物品。他们似乎在世界各地运送。一些有趣的包括:

美国沃夫登Wulfden)的Shoppe有一套不错的实验工具包,并且似乎已在国际上销售。

Solarbotics(加拿大)拥有ARDX Arduino实验套件Freeduino Starter捆绑包-UltimateArduino Starter捆绑包-Basic(和Ultimate),并且似乎已在全球发售

主要的Arduino的“买入”页面列出了Arduino的在全球各个领域的厂商。

我要检查的其他地方包括Adafruit IndustriesSparkfun Electronics(均在美国)。


1
哇。感谢您抽出宝贵的时间回答问题!
蒂姆·波斯特

3
我很高兴听到它。写完答案后,我心想:“我不敢相信我花了40分钟在互联网上回答问题!”
克林顿·布莱克莫尔

1
很棒的帖子,但应该注意的是,并非所有的Arduino都使用FTDI芯片。例如,我在OS X下使用未安装驱动程序的Arduino Uno R3。(该人使用Atmega 16U2进行USB通信。)
退出2012年

12

当您要构建电子小工具时,Arduino是一个很好的工具,它可能使您最终达到构建数据记录器的目标。但是,由于它模拟了老式的串行端口,因此不适合用于真正的USB开发。它不会让您将它放入其他任何东西(例如人机界面设备(鼠标/键盘)或大容量存储设备(读卡器/可移动驱动器))。

如果您想制作“真实的” USB小工具,请查看Jan Axelson的网站。他撰写有关USB的“入门”书籍。尽管在这种级别上开发使用USB的小工具可能不适合初学者,所以Arduino的经验肯定会助您一臂之力。


谢谢你的链接。一旦“训练轮”脱落,我就一定会检查一下:)
Tim Post

事实并非如此……Arduino Leonardo和所有基于Atmega32u4的板都可以让您制造HID和任何其他自定义设备
Dmitry Gusarov

8

我强烈推荐Tuxgraphics AVR USB幻灯片演示者教程。它使用Atmel AVR微控制器,该微控制器具有庞大的业余爱好者社区(avrfreaks等),以及来自obdev.org的仅开源软件usb1.1堆栈。它无法扩展得很高(例如,大量存储),但最终产品是带有两个可分配按钮的小型USB HID键盘。将其用作数据记录器将是微不足道的,obdev.org上的一些示例就是这样(www.obdev.at/products/vusb/projects.html)。它是用干净的c编写的,零件清单最多是几美元。

同时,我建议构建或购买Tuxgraphics avrusb500程序员。使用它是一种乐趣,也是我拥有的最可靠的设备之一。(我不隶属,只是一个非常满意的客户!)


8

我想研究的另一台设备是 AT90USBKey。自从我研究它已经有一段时间了,我不确定是否可以在没有Windows的情况下为它编程,但是它将充当USB设备(例如键盘或大容量存储设备)或USB主机您将其他设备插入的电源。有可用的示例程序,并且只要您对电子学有所了解并且可以使用C进行编程,它看起来就相当容易使用。

谷歌搜索AT90USBKey和Linux的结果令人鼓舞。

我知道您可以从DigiKey.ca获得它。我查找了相当于亚洲Digigikey ; 您可以从Farnell获得部分。


根据链接的站点,看起来该板可以通过Jtag进行编程。
SingleNegationElimination


6

如果您最终使用Arduino,我已经移植了V-USB(以前称为AVR-USB)库以在其上运行。它还包装有一个类,以使交互更容易。

您可以使用它创建USB HID设备,例如键盘,鼠标或操纵杆。您还可以创建一个通用设备,该设备在主机上使用libusb对其进行控制-通过Python,C,Processing等。

我的站点有一个PCB屏蔽层,可以使用USB插座和一些电阻器等制成:

http://code.rancidbacon.com/ProjectLogArduinoUSB

您可以编写Arduino代码以轻松发送击键,如下所示:

UsbKeyboard.sendKeyStroke(KEY_ENTER);

或使用libusb“驱动程序”可以发送如下数据:

UsbStream.write(0xff)

或使用以下方式读取数据:

UsbStream.read()

菲利普


5

现在有许多基于AVR-USB的开发板。

我亲自使用了前面提到的Teensy和Bumble-B,并认为它们都很棒。

Teensy很不错,因为它可以与Arduino环境很好地集成在一起。这意味着您可以执行“ Mouse.init; Mouse.move(x,y)”之类的操作,而不用自己处理低级USB代码。不过,如果需要,它们都将运行LUFA。




0

这取决于您要制作哪种类型的USB小工具以及高级程度。您提到闪烁的指示灯。可以使用带有uart和ftdi芯片的任何类型的微控制器轻松归档这种控制(arduino非常流行,并且很容易上手)。ftdi芯片串行连接到uC,其作用类似于串行<-> USB转换器。它还在您的计算机上显示为虚拟COM端口。

如果您想使用更高级的USB协议,驱动程序和功能,则可以获得具有本机USB功能的uC。例如,Microchip有许多图片(它们的微控制器)可以做到这一点。Microchip还拥有许多专用于学习使用USB的开发板。Atleast Microchips 32位uC还支持主机和otg模式,因此您可以构建一个数据记录器,将数据保存到通用USB记忆棒中,然后可以将其插入计算机以读取数据。(我敢肯定,其他许多制造商也有类似的IC和开发套件,但Microchip是我使用的唯一芯片)

Microchip的主页/ USB


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.