Arduino compatible board - USB bootloader!

Have you guys seen this?

http://metalab.at/wiki/Metaboard

It's pretty damn awesome!

  • (Mostly) Arduino code compatible - use Arduino IDE to write and program. Not exactly clear what isn't compatible - I'm guessing the USB port uses the interrupt lines, so may use one of the hardware interrupt lines.
  • No USB-> TTL converter! Bootloader has USB firmware - AtMega168 connects directly to USB port.

It's very close to arduino form factor, but I think the pin headers have been moved to the 0.1 in grid. No ISP headers.

They give a step-by-step procedure for the entries required to the arduino preference and board files to allow you to upload from within the IDE directly over USB. The USB bootloader is linked to at the obdev website for free.

Seems like it could be a great trade off of functionality/pins for the gain of native USB support.

They even provide a full single sided schematic and board file to make your own. I'm going to try making one this week.

hi trialex,

though i'm reading in safe mode only today, i followed your links. man, hope the pages are still up tomorrow :slight_smile:
it definetely helped me waking up this morning. so thanks, for sharing.

best, kuk

I'm working on this, those days.
Amazing work.

Since Arduino insists on having a serial line to upload the firmware (although none is needed for usbasp), you may have to edit Arduino's preferences.txt file manually and set the variable serial.port to an existing device. Preferences.txt is in ~/Library/Arduino on the Mac.

With Arduino 11 the serial pb will disappear (not tested yet but something like metaboard.upload.disable_flushing=true will solve the pb)

If you are running Linux like me you will have to set udev rule in order to allow the avrdude process to upload sketch (see http://forums.obdev.at/viewtopic.php?p=4436)
I think a timeout bootloader will be better than the jumper selectable boot mode.
Perhaps it will be better to rewrite completly the bootloader in order to have a CDC metaboard (but perhaps it will load to much the CPU).
This way you will be able to use serial.prints/reads to talk to the host
I'm sure il will be possible to make a simple arduino (able to program other avr, do a serial to usb converter, etc) at a very very low cost (10$ removing the external power regulator)

Nicolas

With Arduino 11 the serial pb will disappear (not tested yet but something like metaboard.upload.disable_flushing=true will solve the pb)

Tested. Yes this work.
I do not speak the metalab.at language, I don't know how to tell us to update instructions.

Nicolas

This looks awesome, and seems like a great way to make an inexpensive board.

Is it possible to communicate with the computer from within an Arduino sketch? Would the board still appear as a virtual serial port? Would there be a way to create a version of the Arduino Serial functions that would work? How many limitations would that impose on the other processing done by the sketch?

I believe that serial communiction is not useable over the USB port. That is the major limitation. I does leave the UART pins free though, not that it is an elegant solution to have then connected to the computer as well.

The project uses the simplest AVR-USB protocol/bootloader. There is a more complicted one on the AVR-USB website that demonstrates serial communication over USB, I'm sure with enough interest someone could develop it for use on the metboard.

Is it possible to communicate with the computer from within an Arduino sketch? Would the board still appear as a virtual serial port? Would there be a way to create a version of the Arduino Serial functions that would work? How many limitations would that impose on the other processing done by the sketch?

This is the main issue to solve. 2 solutions

  • Firmware side : AVR-USB CDC bootloader (see avrdoper for example).
  • Host side : a custom virtual com port

Nicolas

Hey I am trying to make this on a bradboard, I flashed the bootloader and did the jumpering, when I connect to PC on WINXP, Unknown device is the message I get.

I tried to install the driver but as per documentation of USBasp loader, after just connecting usb I should get device name as "USBASP" and device driver installation fails....

My configuration is

ATMega8 - 16MHz and connections are as per metaboard schematics....

Can any one help me plzzzzz :-?

Did you flash the correct bootloader? I used a Mega168 as opposed to your Mega8. When I first plug it in, I get the "Unknown Device" message, but when I set the bootloader jumper, and press the reset button, I get a "USBasp Device Connected" message, as it asked for the driver.

now this has to be tried :slight_smile:
wen i get the needed parts :frowning:

Fimware folder had different .hex files, I choosed the right one for me mega8_16hz as I was using ATMega8 at 16MHz. I loaded this file both from avrdude & CVAVR tools. I did do reset with bootloader jumpered, every time I do reset with jumper I get "Unknown Device" error. If I do reset without jumper winXP is not at all detecting..which I thik is OK because without jumper bootloader doesn't come into picture....

Let me know ur comments.....

I employ a simple programmer by attiny2313.
Simple AVR Programmers
http://elm-chan.org/works/avrx/usbspi.zip

I made an META board with mega168.
I recognize win2k to operate HWB-SW.
Following .bat displays device driver easily (and with non-indication as indication).
at Usbasp

"pause
set devmgr_show_nonpresent_devices=1
cd %SystemRoot%\system32
start devmgmt.msc
"
However, I do not know a method to let arduino read firm ware.
How can you read it if you do it?
Please show somebody including order concretely.