ATmega16U4 based arduino

Hello everybody, I was reading the product page on the atmel website and saw that they make the ATmega16U4 and the ATmega32U4 that both include an onboard usb controller. Would it be very difficult to adopt these chips for the arduino platform and do away with the ftdi chip, making the design simpler and possibly cheaper?
I realise it means to write a new bootloader (among other things) but it is feasible nevertheless.
Just my two cents.
Thank you all.

A pair of products called the Teensy and Teensy++ uses the AT90USB162 and AT90USB646 processors respectively.

They're not Arduino clones, but they come very close, and they prove that it can be done.

The greatest difference from Using a Teensy, apart from Pinouts (more pins, and some need to be mapped along) is that its serial is a true usb-serial. This means 115K, not the ones supplied by the FTDI chip.

Also, its software is less arduino-minded (although they do have the TeensyDuino, which is an addon for the Arduino IDE) and more C/C++. Its actually a great way to create devices meant for USB interaction, as its samples lets you publish devices for HID interaction (keyboard, mouse).

Very compatible, and lets you go forward. The price is honest (so honest I've bought myself three of them) and has lower dependencies. Its a must-buy, I should say.

This means 115K

It's faster than that. The communications link runs at USB speed (12M). The baud rate is actually ignored.

  • Brian

The teensy is interesting, but it is a commercial non open source project...
I was looking for something like the arduino which I could build myself.

Karonth - your questions are a little ambiguous.

When you say build yourself, do you mean to solder up a kit? That needs some experience with SMD as all of the USB AVRs only come in TQFP and MLF packages. Plus no such kit is available yet as far as I know.

If you mean design yourself, then there are many PCB design options which will mostly depend on how you decide to map out the I/O pins of the U4 devices. There are more analog pins for example and PWM is in different places. However the hardest part of the work would be the USB bootloader and host software.

On pure hardware alone, a device without the FTDI chip is cheaper and can be faster. However where the FTDI chip excels is making it easy to use USB to replace existing UART serial comms. I would say that the FTDI solution is actually simpler.

Sorry, what I meant is of course design one myself.
The idea came to me because i read about it and thought it was nice to have both usb and an atmega168 in a single package so to reduce the number of components and traces on the board.
I think surface mount is not really that hard once you get the hold of it (i've replaced some bios chips with flux and solder wick).
Probably the bootloader part is the most difficult thing to do, that's why nobody has done it yet.

Well thank you for the explanation, sorry if I made a stupid question to begin with, but it's better than remaining an ignorant :slight_smile:


I second the idea. It would be really nice to work on developing a version of the Arduino that works like this. At any rate it would be nice to be able to send data to/from a laptop at full USB speeds.

Googling around I found the AVRopendous project Google Code Archive - Long-term storage for Google Code Project Hosting. which could be a good starting point. They have an open design, and use the LUFA open source firmware.

Could this hardware be used with the arduino environment? What can be done to make it compatible?

Yes it can.

I have recently integrated Arduino with LUFA to create LUFAduino. It adds Arduino support to LUFA instead of the other way around. It also integrates FreeRTOS so that you can use delays and even multiple loop() statements without interfering with USB functionality.

If interested, please have a look at the code and help me debug it. It will work with any USB AVR that has > 2kbytes of SRAM.

Where do you buy the hardware for this ?