And what confusion there is on blogs about the operation and use!
So I decided to look into the chip used and the signals to/from the module. And here are my findings:
As you can see the module has a mini-USB plug and six pin connections. These are
Arduino FTDI Reset? DTR output, LOW when FT232 ready (Data Terminal Ready) TX RXI Arduino data out RX TXO Arduino data in GND CTS input, LOW when FT232 can send data (TXO) GND GND
The power to the module is provided BY THE USB INPUT (not the 3V3 pin!). The 3V3 pin is an OUTPUT from the FTDI chip able to provide 50mA at 3V3 from the USB 5V supply.
The DTR signal is "Data Terminal Ready" and is an output LOW active signal showing when the device is ready to accept signals. It has been suggested that this could be connected to the Arduino RESET line - certainly it must not be connected directly or the Arduino will be held in reset permanently - but it could be pulled positive by a 10K resistor and connected via a 10nF . This would have the effect of sending a reset pulse to the Arduino when DTR goes LOW. I can't see the value in this but... probably best to leave DTR unconnected.
The CTS signal is an active LOW input. it tells the FTDI interface when the Arduino is ready to accept data from the TXO pin. For all intents and purposes this can be connected to GND as you can assume the Arduino is always ready to accept data. At least as much as will fill its incoming buffer... but you could connect this an Arduino pin and pull it LOW when you are ready to accept data.
The RXI signal goes to the Arduino TX pin (see below for pins and software code), and the TXO goes to the Arduino RX pin.
Each FTDi module has a unique serial number. Mine is reported by my Mac computer as:
FT232R USB UART Product ID 0x6001 Vendor ID 0x0403 (FTDI Ltd) Serial # A702LESX
The Mac will create a device for I/O called
/dev/tty.usbserial-A702LESXwhen the USB is connected. This is the port to use for data I/O, for example using a terminal program such as CoolTerm.
There is a documentation error on the schematic from the supplier, the default operation is 5V and there is a tiny connection between the supply pad and the 5V pad on the back of the module. However the schematic says 3V3 operation... which is incorrect.
Code
TX and RX should NOT be pins 0 & 1 of the Arduino as these are tied to the onboard USB interface. Use the library
#include "SoftwareSerial"and create a serial object to talk to the FTDI module. For example:
#define RX 10 #define TX 11 SoftwareSerial usb(RX, TX); void setup() { usb.begin(9600); // sets FTDI interface to 9600 baud }
OK that's it, now it should work just fine. Try it.
No comments:
Post a Comment