Is usb hosting necessary for my peripheral?

Hello,

I am working on a project that would be controlled by an android phone. What I figured I would have to do is I would need the android phone communicate to the microcontroller using a MAX3421 USB host controller to act as a middleman. I only plan on having the phone send basic integer values and a basic string value, do I need the peripheral to be a host?
Could the android phone just send out basic information like that to the microcontroller and have it all work? I plan on using the ATmega32U4 as the microcontroller.

Note: i want this to be compatible with phones that aren't android 3.0 or higher. I know a lot of android users still use android Froyo (android 2.2) which doesn't have the USB host API that android 3.0 has.

One every USB bus one device must be the host, the others are slaves. Because the usual Android phone has no USB host hardware the other side (the microcontroller in your case) must be the host and must have a hardware capable of being the host. Although the ATmega32U4 has USB slave capabilities built in, it doesn't have host capabilities.

The easiest way to connect an Android phone to your Arduino is a bluetooth connection.

Okay, thank you!

I actually need to have a physical connection b/c the project is actually powered by your phone. It would be nice to have bluetooth, but then it wouldn't work.

funkyguy4000:
Okay, thank you!

I actually need to have a physical connection b/c the project is actually powered by your phone. It would be nice to have bluetooth, but then it wouldn't work.

There are USB host shields available, or you could just use the USB for power and Bluetooth for the data connection.

true, although there is the size of the actual bluetooth chip. Its much larger than the tqfp-32 with a .5mm pitch