USB to Femtoduino

RECOMMENDED METHOD – (Updated 2013-02-16)

IF you are looking for the FemtoduinoUSB, seeĀ https://www.tindie.com/products/femtoduino/femtoduino-with-usb/

We can actually use the VCC, GND, RX, TX, and DTR pins of the femtoduino to upload our sketches blazingly fast over an FTDI 5V break out board on a USB 2.0 connection (For USB 3.0, use a USB 2.0 hub to “downgrade” the connection).
The MicroFTX USB-Serial Breakout board is recommended for this. You can purchase one separately off of tindie.com

Simply hook up your MicroFTX breakout board to your femtoduino as follows:

MicroFTX femtoduino
GND GND
TX RX
RX TX
V VCC
RTS DTR

…Select the “Arduino Uno” as the board type in your Arduino IDE, and hit the Upload button. Done!

If you get any errors regarding “programmer not responding”, first try switching the “Board” type to something else, and then back to “Arduino UNO”, and try again. If that fails, try using an Arduino in ISP mode to burn the “Arduino Uno” bootloader on to your femtoduino, then try hooking your MicroFTX back up. This is because some Femtoduinos were sent out with the “Arduino Nano w/ ATMega328″ bootloader instead.

OLD METHOD – Use this if the newest method does not work for you:
(This example worked using Ubuntu Linux 12.04, an FTDI “DFRobot with FT232RL” breakout board at 5V, and a USB cable)

Hook up your Femtoduino to your FTDI break-out board as follows:

  1. Femtoduino Pin 13 (SCK pin) – to TXD on FTDI
  2. Femtoduino Pin 12 (MOSI pin) – To CTS on FTDI
  3. Femtoduino Pin 11 (MISO pin) To RTS on FTDI
  4. Femtoduino RTS (Reset) – To DTR on FTDI
  5. Femtoduino VCC – To 5V on FTDI
  6. Femtoduino VIN – To VCCIO on FTDI
  7. Femtoduino GND – To Ground on FTDI

Open up the Arduino 1.0 “programmers.txt” file, add the following at the end of the file:

ftdifriend.name=FTDI Friend bitbang
ftdifriend.communication=serial
ftdifriend.protocol=ftdifriend

…Save your changes.

Open up the Arduino 1.0 “boards.txt” file, add the following at the end of the file:

##############################################################

femtoduino.name=Femtoduino
femtoduino.upload.protocol=ftdifriend
femtoduino.upload.maximum_size=32256
femtoduino.upload.speed=115200
femtoduino.bootloader.low_fuses=0xff
femtoduino.bootloader.high_fuses=0xde
femtoduino.bootloader.extended_fuses=0x05
femtoduino.bootloader.path=optiboot
femtoduino.bootloader.file=optiboot_atmega328.hex
femtoduino.bootloader.unlock_bits=0x3F
femtoduino.bootloader.lock_bits=0x0F
femtoduino.build.mcu=atmega328p
femtoduino.build.f_cpu=16000000L
femtoduino.build.core=arduino
femtoduino.build.variant=standard

…Save your changes.

Open up the Arduino 1.0 “avrdude.conf” file, add the following programmer right before the “ponyser” programmer:

programmer
id = "ftdifriend";
desc = "design ftdi adapter, reset=dtr sck=tx mosi=rts miso=cts";
type = serbb;
reset = ~4;
sck = ~3;
mosi = ~7;
miso = ~8;
;

…Save those changes, too.

Restart your Arduino 1.0 application. You should now have the ability to select “Femtoduino” as a board, and burn/upload sketches directly using an FTDI USB to Serial (5V) breakout board of your choice.

Please note: Using the Arduino ISP method is much faster at burning a bootloader and loading sketches to your femtoduino. Burning a bootloader and uploading sketches using the FTDI method is very slow, but works too. However, you will likely need to burn the bootloader to your femtoduino again before uploading another sketch.