Chciałbym nauczyć się, jak tworzyć własne gadżety USB

29

Od jakiegoś czasu piszę sterowniki urządzeń znakowych dla Linuksa do rzeczy innych ludzi. Chciałbym znaleźć nowe hobby, a myśl o tworzeniu własnych gadżetów USB wydaje się naprawdę fajna.

Byłbym podekscytowany, mogąc kontrolować niektóre diody LED, serwomechanizmy i silniki krokowe. Naprawdę lubię uczyć się na własną rękę i emocje, gdy coś w końcu działa. Nie zrobiłem żadnego poważnego programowania MC, ale znam swoją drogę.

Czy ktoś może polecić jakieś zestawy, które byłyby pomocne dla kompletnego nooba? Idealnie są to:

  • Przyjazny dla systemu Linux
  • Możliwość wysyłki za granicę (obecnie mieszkam w Azji)
  • Oferta zestawów do makiet

Jeśli masz czas i ochotę, linki do projektów na stronach innych osób, które zawierają schematy i listy części, będą mile widziane. Chcę uczyć się na przykładach, ale dobrych przykładach, dlatego tutaj pytam.

Moim ostatecznym celem jest stworzenie własnych modułów zbierających dane - od opadów deszczu przez średnie decybele po poziomy oświetlenia. Przepraszam, jeśli wcześniej o to pytano, szukałem (i wyszukiwałem tagi).

Tim Post
źródło

Odpowiedzi:

26

Arduino jest bardzo popularne, a to open hardware, więc istnieją odmiany , w tym osób trzecich Freeduinos zwanego szkielety Board , The Really szkielety Board , a Boarduino , które są bardzo miłe dla korzystania z breadboards. Standardowe Arduino jest dostosowywane za pomocą rzeczy zwanych Shields. Możesz stworzyć własną tarczę do krojenia chleba lub kupić coś takiego jak ten zestaw ProtoShield.

Arduino wykorzystuje układ lub kabel FTDI USB-RS232. [Standardowe Arduino ma wbudowane, podczas gdy większość kart chlebowych używa specjalnego kabla z chipem w środku i pozwala zaoszczędzić trochę pieniędzy.] Jest wbudowany sterownik dla Linuksa, Mac OS X i Windows użytkownicy mogą pobrać sterownik. W efekcie oznacza to, że Arduino działa jako urządzenie komunikujące się przez port szeregowy, dzięki czemu bardzo łatwo się z nim komunikować.

Aby z niego skorzystać, pobierasz również oprogramowanie. Jest wyposażony w IDE, łańcuch narzędzi AVR-GCC, naprawdę ładną bibliotekę i oprogramowanie do wgrania programu na układ. Ukrywa przed Tobą większość szczegółów i ma świetną społeczność. Jest programowany w języku „Wiring”, ale tak naprawdę jest to C ++.

Wreszcie, będąc sprzętem typu open source, istnieją schematy. Rzeczywiście, wydaje mi się, że pamiętam, że zbudowanie wcześniejszego modelu było dość łatwe. Wyszukiwanie „schematów Arduino” w ulubionej wyszukiwarce daje dobre wyniki.

Jeśli chodzi o zestawy, Maker Shed oferuje na stanie wiele przedmiotów związanych z Arduino . Wydaje się, że wysyłają je na cały świat. Niektóre z nich obejmują:

Shoppe w Wulfden (USA) ma ładny eksperymentatorów zestawy, i wydaje się wysłanie przedmiotu za granicę.

Solarbotics (Kanada) ma ARDX Arduino eksperymentatora Kit , a Freeduino Starter Bundle - Ostatecznego oraz Arduino Starter Bundle - Basic (i Ostatecznego ), a wydaje się wysłanie przedmiotu za granicę.

Na „kupuj” na głównej stronie Arduino listy Arduino sprzedawców we wszystkich obszarach naszego globu.

Inne miejsca, które bym sprawdził, to Adafruit Industries i Sparkfun Electronics (oba w USA).

Clinton Blackmore
źródło
1
Łał. Dziękujemy za czas poświęcony na udzielenie tak pouczającej odpowiedzi!
Tim Post
3
Miło mi to słyszeć. Po napisaniu odpowiedzi pomyślałem sobie: „Nie mogę uwierzyć, że spędziłem czterdzieści minut, odpowiadając na pytanie w Internecie!”
Clinton Blackmore,
1
Świetny post, ale należy zauważyć, że nie wszystkie Arduino używają układu FTDI. Na przykład używam mojego Arduino Uno R3 w systemie OS X bez zainstalowanego sterownika. (Ten używa Atmega 16U2 do komunikacji USB.)
exscape
12

Arduino to świetne narzędzie na początek, gdy chcesz budować elektroniczne gadżety, i może doprowadzić cię do ostatecznego celu, jakim jest zbudowanie rejestratora danych . Jednak nie nadaje się do prawdziwego programowania USB, ponieważ emuluje stary port szeregowy. Nie pozwoli ci przekształcić się w nic innego (np. Human Interface Device (mysz / klawiatura) lub Mass Storage Device (czytnik kart / dysk wymienny)).

Jeśli chcesz tworzyć „prawdziwe” gadżety USB, odwiedź stronę Jana Axelsona . Pisze książki dla początkujących o USB. Opracowywanie gadżetów korzystających z USB na tym poziomie może nie być odpowiednie dla początkujących, więc korzystanie z Arduino na pewno pomoże ci na drodze.

bpijls
źródło
Dziękuję za link. Na pewno to sprawdzę, gdy „koła treningowe” odpadną :)
Tim Post
To nie do końca prawda ... Arduino Leonardo i wszystkie płyty oparte na Atmega32u4 mogą pozwolić ci zrobić HID i dowolne inne niestandardowe urządzenia
Dmitry Gusarov
8

Bardzo polecam samouczek prezentera pokazu slajdów Tuxgraphics AVR USB. Korzysta z mikrokontrolera AVR Atmel, który ma dużą społeczność hobbystów (avrfreaks itp.), Oraz stos usb1.1 oparty na oprogramowaniu open source z obdev.org. Nie można go skalować bardzo wysoko (na przykład pamięć masowa), ale końcowym produktem jest mała klawiatura USB HID z dwoma programowalnymi przyciskami. Byłoby trywialne używać go jako rejestratora danych, a kilka przykładów na obdev.org jest właśnie takich (www.obdev.at/products/vusb/projects.html). Jest napisany czystym c, a lista części to najwyżej kilka dolarów.

Jednocześnie polecam zbudować lub kupić programator tuxgraphics avrusb500. Z radością korzystam z tego i jednego z najbardziej niezawodnych urządzeń, jakie posiadam. (Nie jestem powiązany - po prostu bardzo zadowolony klient!)

qartis
źródło
8

Kolejnym urządzeniem, na które chciałem przyjrzeć się, jest AT90USBKey . Minęło trochę czasu, odkąd zaglądałem do niego i nie jestem pewien, czy możesz zaprogramować to bez systemu Windows, ale będzie działać jako urządzenie USB (jak klawiatura lub urządzenie pamięci masowej) lub jako host USB do którego podłączasz inne urządzenia. Dostępne są przykładowe programy, z którymi praca jest stosunkowo łatwa, pod warunkiem, że wiesz trochę o elektronice i umiesz pisać w C.

Wyszukiwarka Google dla AT90USBKey i Linux wygenerowała obiecujące wyniki.

Wiem, że możesz go pobrać z DigiKey.ca . Spojrzałem do góry digikey odpowiednik dla Azji ; możesz zdobyć tę część z Farnell .

Clinton Blackmore
źródło
Według połączonej strony wygląda na to, że tablicę można zaprogramować za pomocą Jtag.
SingleNegationElimination
6

Jeśli skończysz używać Arduino, przeportowałem bibliotekę V-USB (poprzednio AVR-USB), aby na niej uruchomić. Jest również zapakowany w klasę, aby ułatwić interakcję.

Za jego pomocą można tworzyć urządzenia USB HID, np. Klawiaturę, mysz lub joystick. Możesz również stworzyć ogólne urządzenie, które używa libusb na hoście do sterowania nim - z Pythona, C, przetwarzania itp.

Moja strona ma tarczę PCB, którą możesz zrobić, która korzysta z gniazda USB i kilku rezystorów itp .:

http://code.rancidbacon.com/ProjectLogArduinoUSB

Możesz pisać kod Arduino, aby wysyłać naciśnięcia klawiszy tak łatwo, jak:

UsbKeyboard.sendKeyStroke(KEY_ENTER);

lub za pomocą „sterownika” libusb możesz wysyłać dane takie jak:

UsbStream.write(0xff)

lub czytaj dane za pomocą:

UsbStream.read()

--Philip;

zwolennik
źródło
5

Obecnie dostępnych jest wiele płyt programistycznych opartych na AVR-USB.

Osobiście korzystałem ze wspomnianych wcześniej Teensy i Bumble-B i uważam, że oba są świetne.

Teensy jest fajny, ponieważ bardzo dobrze integruje się ze środowiskiem Arduino. Oznacza to, że możesz robić takie rzeczy jak „Mouse.init; Mouse.move (x, y)” zamiast samodzielnie zajmować się kodem USB niskiego poziomu. Oba uruchomią LUFA, jeśli chcesz.

Laen
źródło
4

Object Development stworzył bibliotekę dla mikrokontrolerów AVR, która umożliwia samodzielne tworzenie bardzo tanich urządzeń USB (od zaledwie 2-3 $). GCC dla AVR jest przyjazny dla systemu Linux. Istnieją już setki wyprodukowanych urządzeń. Spójrz tutaj: http://www.obdev.at/products/vusb/projects.html

avra
źródło
0

It depends on what kind of usb gadgets you want to make, and on how advanced level. You mention blinking leds. That kind of control can be easily archieved with any kind microcontroller with uart and a ftdi chip (arduino is pretty popular, and easy to begin one). The ftdi chip connects to the uC serially, and acts like a serial <-> USB converter. It also shows up as a virtual COM-port on your computer.

If you want to make use of more advanced usb protocols, drivers and features, you could get a uC with native usb capability. Microchip has many pics (their microcontrollers) that can do this, for example. Microchip also has many development boards dedicated to learning to use the usb. Atleast Microchips 32-bit uC support also host, and otg -modes, so you could build a datalogger that saves the data to a common usb memory stick, which you could plug to your computer to read the data. (I am sure many other manufacturers also have similar ICs and dev-kits, but Microchip is the only one I have used)

Microchip's homepage/USB

varesa
źródło