USB Host controller

seeeduinos 5V/3.3V selectable by a switch

Could you use a 5V to 3.3V level shifter chip such as the MAX3370?

There is quite a bit of signals to level shift, about 10. It's not a big deal by itself since there will be plenty of space left on the shield board anyway. However, I'd like to avoid extra soldering during prototyping and use 3.3V, at least for now.

I'd guess (since I couldn't find the datasheet) only 5 are required (4 for SPI plus the interrupt).

One of the 3.3V arduinos should do nicely.

Looks like a nice way to add a USB keyboard to an arduino. Be sure to let us know when you succeed!

-j

Be sure to let us know when you succeed!

I'm soldering a shield already. It pays to live close to Sparkfun :-).

It pays to live close to Sparkfun .

No, it would cost me a fortune if I lived close to Sparkgap :wink:

Lefty

Made MAX3421E talk. Wondering if pins that I use are right?

http://www.circuitsathome.com/mcu/programming/arduino-usb-host

Got low-level functions working. The code is here -> GitHub - felis/ArduinoUSBhost: Arduino firmware to provide USB host functionality using MAX3421E USB host controller, the quick demo here ->http://www.circuitsathome.com/mcu/programming/arduino-usb-host-part-2-classes.

I may have to stand on your shoulders pretty soon, have been kicking around an idea for a while. Lots of cameras can be controlled over USB using PTP, including most Nikon DSLRs, many Canons, etc. The USB interface allows you to control pretty much every aspect of the shot. End goal is very portable device (instead of a laptop) that allows you to make fine-tuned bracketed exposures with no limits on number of shots or adjustment, interval shots, etc. The libgphoto2 project has done most of the work figuring out what cameras support which functions.

What is "standing on my shoulders"? I am from Russia originally and have difficulties understanding idioms:-). Is it good or bad?

It means that I would use your work (which you have been so kind as to document thoroughly) as a foundation to build up a higher level application.

You are standing on the shoulders of the Arduino development team, who are standing on the shoulders of the Wiring team, who are standing on the shoulders of AVR-GCC team, and so on. :wink:

What is "standing on my shoulders"?

It's a compliment and an acknowledgement.

These may shed some light...

http://www.aerospaceweb.org/question/history/q0162b.shtml

  • Brian

It means that I would use your work

Please do. I'll be glad to help; hoping to have some time on a weekend to continue porting the code. My biggest problem is lack of C++ knowledge, but I'm working on it.

I finished porting USB transfers. There is a new code in the repository and an article http://www.circuitsathome.com/mcu/programming/arduino-usb-host-part-3-descriptors

It took a while but I'm getting there:-). Next one will be describing talking to USB keyboard. Also, I started studying Nikon SDK to see how they implement camera control - doesn't seem too difficult.

Not quite software related, but still - I recently routed a shield for MAX3421E and just received first prototype of a PCB from a boardhouse. Take a look -> http://www.circuitsathome.com/mcu/usb-host-shield-for-arduino-first-prototype

Limping along, slowly but surely :-). I posted an example, demonstrating how to poll USB keyboard, take a look -> http://www.circuitsathome.com/mcu/programming/arduino-usb-host-part-4-peripherals I'm now cobbling together a "LCD via GPIO" code so that I can actually see what I'm typing.

Cool... I have been using the PS2 library currently but I have a mini USB keboard that I would like to use...

What capabilities does the shield have? Can it in theory read text from USB flash drives like the microSD card shield can do?

Mowcius

This is standard USB host. It supports all USB 2.0 transfers, even isochronous (if device is slow enough). So in theory, working with anything that talks USB is possible - flash drives, webcams, audio, printers, etc.; limiting factor would be Arduino's program memory size.

The shield also have 16 general purpose lines - 8 inputs and 8 outputs, where inputs can also be programmed as interrupt lines. Can be used to control LCD, buttons, and such.

This is standard USB host. It supports all USB 2.0 transfers, even isochronous (if device is slow enough). So in theory, working with anything that talks USB is possible - flash drives, webcams, audio, printers, etc.; limiting factor would be Arduino's program memory size.

Ok, even cooler... I presume that from your experience, it is easier to use old devices that don't require so much coding, such as old printers etc. I think that the limiting factor with this would be my coding experience before a lack of program memory. :smiley:

I shouldn't have thought I would run out of space as I am just thinking of coding for a mini USB keyboard and a 'simple' USB mini printer...

From reading the pages you have written about it and the examples you have done, I presume that the arduino could be programmed to run different code depending on what device is plugged in...

The shield also have 16 general purpose lines - 8 inputs and 8 outputs, where inputs can also be programmed as interrupt lines. Can be used to control LCD, buttons, and such.


On this image, are the 16 lines the ones on the left?
Also, from the looks of it, the shield is not stackable/it has to be on the top, correct?

What configuration options are there regarding pin use?
If I have missed a page that tells me that then please just point me to it...

Mowcius