How to program Arduino Nano / Pro-Mini / Pro-Micro clone that has no usb port?
I was looking for a cheapest possible option to get arduino and wireless comms for a dimmable light and come across this ebay item when searching for Arduino Nano clone. It has no usb port so how can it be programmed?
I have discovered that there is a new device called "Arduino Pro Micro" which is similar to Pro Mini and Nano but have usb port in-built. The best thing is you can buy Pro Micro for under 4 euros! Excellent for a dimmable LED light...
You did say "wireless comms" - using an XBee (pair) will allow you to program the pro mini over-the-air. Some hacking/circuitry is needed to effect a reset when the TX/RX is used this way. I'll post it as a full answer if you think its relevant.
It certainly would be nice to be able reprogram over the air, not sure if xbee is a good option as I remember it's not that cheap. But if there are cheap xbee clones that would be great!
What is the difference between NRF24L01 (2.4GHz RF) chip and XBee? NRF24L01 chips seem to be dirt cheap at 1 euro, XBee is at least 6 times more expensive...
1+ year on - for completeness. Your accepted answer is a good one but is not the correct one for what you asked. The cheapest way of USB programming is to use a bootloader that interfaces with a standard USB connection using std I/O pins. Some such allow the USB port to perform ICSP programming so no special hardware is needed even to load the bootloader. Details not at tip of brain at present but Gargoyle knows. I believe the "Arduino" "Trinket" uses this system and variants of its boot loader are available to extend this system to other AVR processors.
FTDI programmer is only a few euros so it work for me. You could use arduino as a programmer but that is a little messy to connect it an program it every time and keeping it setup for programming all the time is more expensive and not as convenient. FTDI programmer is a tool so it can be re-used again and again, I am not considering it as a cost as such.
It's similar to an arduino but with the USB to UART converter chip removed to be cheaper. In order to program it you have to use an external converter and connect it to the Rx/Tx pins.
Please note that these boards don't use a crystal as a clock source but a 16MHz resonator which has higher tolerance (0.5%)
You'll need to get an external USB to serial board (or cable), like
Note that there are two "versions" of USB to serial boards. One version outputs Tx pin to Tx header and Rx pin to Rx header and the other version outputs Tx pin to Rx header and Rx pin to Tx header.
If your board outputs Tx pin to Rx header and Rx pin to Tx header (the signals are already crossed) then you should connect Rx of the USB board to Rx of Arduino, and Tx of the USB board to Tx of Arduino (like shown below)
If your board outputs Tx pin to Tx header and Rx pin to Rx header then you should connect Rx of the USB board to Tx of Arduino, and Tx of the USB board to Tx of Arduino (cross connect like shown below)
Exactly what I wanted to know! Thanks. Also edited the question as judging from the down votes maybe it sounded like a shopping question.
I notice from the image it says mini Arduino Pro, it's a bit confusing. Is it the same as Nano?
Arduino's web site provides Programming Tutortial [ Guide to the Arduino Mini](http://arduino.cc/en/Guide/ArduinoMini) it expands on alexan_e, detailed answer. Notice the CAP in-line between the DTR and RESET. Otherwise you will need to time pressing the Mini's reset button
You have the wrong setup. It doesn't go RX -> RX, TX -> TX. The USB TX goes to arduino RX. The USB RX goes to arduino TX.
@Matt You are correct, I download the images from the Internet and didn't notice the mistake. I'll fix it asap.
The cheapest way of USB programming $ wise is to use a bootloader that interfaces with a standard USB connection using std I/O pins. Some such allow the USB port to perform ICSP programming so no special hardware is needed even to load the bootloader. Details not at tip of brain at present but Gargoyle knows. I believe the "Arduino" "Trinket" uses this system and variants of its boot loader are available to extend this system to other AVR processors.
Nano vs Pro-Mini
What you have looks more like a Pro-mini than a Nano
Note the MOSI, MISO and SCK annotations in pale blue on pins 11,12,13.
As well as using the serial-port (via an off-board USB to serial adapter) to program the Arduino-Nano, you can also program the on-board Atmega168/ATmega328 using ICSP. You need a programmer but you can use another Arduino for this (using the Arduino as ISP sketch), a bus-pirate or other devices.
Arduino pins 11,12 & 13 are MOSI, MISO and SCK. You also connect reset ("RST"), VCC and GND.
Typical AVR ICSP connector
The Arduino IDE can be, relatively easily, made to recognise "Arduino as ISP" and "buspirate" as options for the "programmer" menu. The IDE uses avrdude to upload sketches, current versions of avrdude (as included in the current IDE) know all about the bus-pirate and several other devices that can be used as programmers.
DANGER- the Pro Mini in the image with this answer is something other than the Pro Mini sold by Sparkfun 2/15... https://www.sparkfun.com/products/11113 AND THEY SEEM TO HAVE "flipped" THE CONNECTOR BETWEEN THE TWO VERSIONS! (What were they thinking?) Look closely at the labels on the pin positions in the images at the Sparkfun page and here.
The Pro Mini comes in two flavors: 3.3V (running at 8MHz) and 5V (running at 16MHz) As far as I know there are no obvious markings to distinguish the two.
alexan_e 's answer above works for the 5V model. If you buy the 3.3V model (which is nice for interfacing other low voltage chips) then the wiring needs some adjustments. The USB interface boards provide a 5V out pin, and the Pro Mini has a RAW input pin. Those two need to be connected and you then get regulated 3.3V out on the Pro Mini's VCC pin.