Arduino clone circuit... FTDI troubleshoot help.

hey guys..

Im wondering anyone out there can help me trouble shoot a problem I having with my DIY Arduino clone circuit..

I have been working off a breadboard version of the Arduino I made:

layout:

my next project was to take that from breadboard to a simple/small PCB that can be shoved into projects.. and not have to stuck with that huge breadboard.

So I opened photoshop..(dont know Eagle or any other real software for this) designed my schematic/traces....

(based off tuts and instructables I have read over the months)

did the same for the underside of my board..

printed on photo paper..

transfer to copper board with iron (both sides...was a PITA)..

etched... cleaned.. drilled my holes..etc

and done.

he only difference I added was a small 4 pin header to the board to be used for FTDI programming for sketches..
GND, V++, RX, TX pinouts..

I soldered everything to the board... put in a chip that I knew already had programming (sketch) on it.. powered it up... held an led to the pin/gnd.. and watched it blink!

SUCCESS!..

(almost)..

I figured.. I better test the FTDI pins..and see if I can upload a sketch..

NO DICE!..

I am using a hacked cell phone data cable as my generic FTDI cable.. and has worked great in the past.. for breadboard.. and other Arduino pbc's/circuits I have.
there is NO RESET pin/wire on these FTDI cables.. so I have to manually hit the button to reset it and put in bootloader mode to accept an uploading sketch.

I see my switch IS working fine..as when it runs a normal program..I can restart it when the button/switch.

I test the v++ and GND with a meter and led to see if Im getting juice form the FTDI cable.. all is OK..

so its something with the RX/TX perhaps?

How does one begin to trouble shoot something like this?

I am very new.. dont know jack about electronics really..and am just learning, reading as I go along.. (tinker)

Here is my schematic I made (no jokes) =)

maybe its something else I did wrong?

(with backside waiting to get transferred)

//etched... (came out ok!)

yikes.. backside wasnt as good as top side.. paper moved a bit..and the edges came up a bit on some of the I/O pads.. (but its workable) =)

finished PCB/board:

other side:

like I said.. it IS running a sketch that is pre-programmed on the chip.. (so I guess its not a total failure?).. but being able to upload sketches 'is' needed..

any ideas on how to go about fixing this? or am I dead in the water here?

thanks.

**side question:

Is there a way for me to test my RX/TX pins for connection? on the FTDI cable and my Arduino?

using serial monitor or something to check for data being sent (through cable)..

You can try and test the FTDI cable by itself to try and isolate it to a FTDI problem or a AVR problem. Remove the 328 chip from it's socket and jumper the rx and tx pins at the socket. This will wire a 'loopback' path such that anything sent to the FTDI from the PC will be sent back to the PC. Plug in the FTDI cable and see if the PC 'sees' the new USB connection being recognized. Now open up the arduino IDE, select the proper comm port for the FTDI cable and then open the serial monitor. Whatever you type into the monitors send window should echo back to the monitors receive window. A good loopback means the total FTDI function is good. No loopback means something is wrong with the FTDI cable, the PC usb driver software, or some wiring problem.

Lefty

It all boils down to the bootloader. First of all you have to make sure that the chip you are using actually contains bootloader code and that the appropriate fuses are set up properly. If you are using a chip that you took out of a real Arduino or derivative you should be OK. You also have to determine how to get the Arduino IDE to communicate with your specific bootloader. This will involve pushing the reset button at the right time since you don't seem to have the components/connections on your board for the 'automatic' resetting used by the newer Arduinos.

Don

I see your VCC trace running down the center of the IC but I don't see where it connects to pin 7.

Don

thanks for the reply guys,..

@ floresta-

1.)re: V++ to pin #7.. hm.. I didnt catch that.. but it DOES in fact power on..and play the sketch already on the chip..

maybe cause I have trace to other VCC on right side of chip?

thanks for pointing that out.. I guess I missed that.. but does this anything to do with the FTDI though? as it DOES

power on..and does play the pre-programmed switch

2.) yes there is a bootloader.. (should be default Arduino BL).. so I believe the fuses are set properly.. (when I take

out same chip put in any other circuit..I can program fine.

and for now I 'do' do the timing trick with the button to re-boot the bootloader to accept the sketch.. (works fine,

everytime on other circuits).

@retrolefty-

thanks!

I had tried to take out the board completely.. and put the two TX/RX pins on the cable together.. went to serial

monitor..type on something..hit send.. (nothing happened)..

I will remove chip..use the pin 2 & 3 in the socket..

do I need to have GND & VCC applied too?

ok

so I removed chip.

put in RX/TX to the RX/TX pins (reversed)

opened up IDE..

serial monitor..

typed in some characters.. hit send.. NOTHING..

I tried with RX/TX flipped (just in case I had t wrong)

I also tried with and without power..

again..nothing either way..

cant I just touch the two rx/tx pins together.. without the Arduino cicruit at all? (to eliminate the Arduino/pcb being a problem?

(although I do believe it to be the problem..as I can use to upload sketches to other circuits.
when I tried to send RX/TX data...

IDE froze.. serial monitor screen froze..etc..

I had to unplug the USD/FTDI cable..

only then did the screens become responsive again..

and I saw a ton of text/errors at bottom after removing the USB form computer.

java.io.IOException: Input/output error in writeArray
at gnu.io.RXTXPort.writeArray(Native Method)
at gnu.io.RXTXPort$SerialOutputStream.write(RXTXPort.java:1124)
at processing.app.Serial.write(Serial.java:469)
at processing.app.Serial.write(Serial.java:492)
at processing.app.SerialMonitor.send(SerialMonitor.java:197)
at processing.app.SerialMonitor.access$100(SerialMonitor.java:31)
at processing.app.SerialMonitor$4.actionPerformed(SerialMonitor.java:93)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Error inside Serial.serialEvent()
java.io.IOException: Bad file descriptor in nativeavailable
at gnu.io.RXTXPort.nativeavailable(Native Method)
at gnu.io.RXTXPort$SerialInputStream.available(RXTXPort.java:1532)
at processing.app.Serial.serialEvent(Serial.java:215)
at gnu.io.RXTXPort.sendEvent(RXTXPort.java:732)
at gnu.io.RXTXPort.eventLoop(Native Method)
at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575)
Error inside Serial.serialEvent()
java.io.IOException: Bad file descriptor in nativeavailable
at gnu.io.RXTXPort.nativeavailable(Native Method)
at gnu.io.RXTXPort$SerialInputStream.available(RXTXPort.java:1532)
at processing.app.Serial.serialEvent(Serial.java:215)
at gnu.io.RXTXPort.sendEvent(RXTXPort.java:732)
at gnu.io.RXTXPort.eventLoop(Native Method)
at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575)
Error inside Serial.serialEvent()
java.io.IOException: Bad file descriptor in nativeavailable
at gnu.io.RXTXPort.nativeavailable(Native Method)
at gnu.io.RXTXPort$SerialInputStream.available(RXTXPort.java:1532)
at processing.app.Serial.serialEvent(Serial.java:215)
at gnu.io.RXTXPort.sendEvent(RXTXPort.java:732)
at gnu.io.RXTXPort.eventLoop(Native Method)
at gnu.io.RXTXPort$MonitorThread.run(RXTXPort.java:1575)
Error inside Serial.serialEvent()

and its keeps going (too much to post..exceeds character limit)

(deleted)

will do..

thanks.

side question:

re: serial monitor..

I took another purchased/working Arduino circuit..

hooked up my FTDI cable..

uploaded a sketch (no problems)..

I then went to Serial Monitor (thinking I can try this wil a known working circuit..etc)

and I got the same results?!

froen IDE/monitor.. once I unplug the USB..error messages at bottom of IDE display..

Is ther a certain setting or way to get serial monitor working through FTDI?

baud rate setting anything?

now Im a bit worried/concerned why a know good/real circuit wont do serial monitor testing?

thanks

(going to add in fix wire now)..

1.)re: V++ to pin #7 ... maybe cause I have trace to other VCC on right side of chip?

Which pin would that be? I see a second GND on the other side of the chip but no VCC.

Don

I thought pin 20?

alternate VCC pin out?

(Im not arguing by any means) =).. Im just un-educated in all this still..

so I could be totally wrong..lol..

I am adding in the' fix' wire..and see how it goes.

Thanks

another update:

1.) I placed a wire from pin 7 (VCC) to the 5v++ of the FTDI header (which is also conntected to the rest of the VCC traces) on the underside of the board..

I then discovered that the header was NOT making contact all the way through to the bottom of the board..

I re-seated the headers to be a bit deeper.. and checked for continuity.. (all good)

I try to upload sketch.. (errors out again)..

I go to serial monitor.. (everything is still plugged in)..

I type in some characters.. hit send..

(nothing)..

it seems to be responsive.. as in the text disappears when I hit send (before it just froze)..

and now I can actually close the monitor window..etc.. (where as before I had to disconnect the USB/FTDI cable.. to get things to close..

suggestions on where to go from here for trouble shooting? (with-in my abilities!) LOL..

I remove Arduino circuit from equation..try serial monitor.. I 'now' see the words I typed in the screen being printed back to me..

checked all pins for continuity.. seems good..

however..

when checking continutiy from pin 7 (VCC) to top side.. it seems to be fine on the meter..

checking pin7 (VCC) to the bottom of board..where I have the fix wire soldered to..going to the v5+ on the FTDI header pin..

the meter (on continuity setting) fluxuactes..and stops @ 823... where as if I meter the pin 7 to the top side/via/pad it stops @ 001 like everything else I meter

????

Im completely lost here..

thanks

I thought pin 20?

alternate VCC pin out?

Not quite. From the 328P datasheet section 1.1.7:

** **AVCC is the supply voltage pin for the A/D Converter, PC3:0, and ADC7:6. It should be externally connected to V[sub]CC[/sub], even if the ADC is not used. If the ADC is used, it should be connected to V[sub]CC[/sub] through a low-pass filter. Note that PC6...4 use digital supply voltage, V[sub]CC[/sub].** **

By the way the Modern Device Bare Bones Board and at least one other board that I have looked at recently include this low-pass filter. The Arduino (as far as I can determine from the awful 'schematic') does not.

Don

Thanks..

but most of that was over my head (sorry)

externally connected to VCC?

I had some caps to go between pins 7 & 8

and some for 21 & 22 and 20 & 21 (just not soldered in yet..because I wanted to test these basic functions)

I updated my thread above.. before you posted.. (or as you were posting?)

Im still stuck.. I soldered in the fix wire.. getting an odd reading from continuity check on that pin (form bottom where fix wire was placed)

still no serial comm. and no sketch uploading.. =(

thanks guys.

but most of that was over my head (sorry)

Basically it says that both have to be connected to +5V.

I had some caps to go between pins 7 & 8...

This is the most important one. Typically it is 0.1uF (may be marked '104').

Don

I believe both 'are' connected now (since adding in the fix wire for the pin 7)

still am in same situation though..

no uploads.. no serial communication.

Im a bit baffled by the continuity reading I get from pin7 to the top of the board/pad..

vs

the reading I get from pin7 to the bottom of the board..where the fix wire is.??

usually it ends up at 001 on every other check..

this one...does not which ends at like 82x something.. (823-827)

update:

ok I 'believe' I fixed the jumper wire continuity wire.. reads 001 like the rest of the tests..

still no uploads.. and no serial communication!..

WTF!>? (this thing is about 5 minutes from being scrapped!)

anyways.. thanks for the replies.. any suggestions or advice is appreciated at this point.

thanks

I hope you didn't forget to solder the pins to the top side of the board where necessary.

Are you sure that you have the Rx and Tx connected properly. Remember that what is transmitted by one device has to be received by the other. Sometimes both of the devices are labeled correctly so you have to cross the connections. Sometimes one of the devices is labeled backwards so then you connect Tx to Tx and Rx to Rx. Perhaps both are labeled backwards so you again have to cross Tx to Rx. You just never know so you have to experiment.

Don

"I hope you didn't forget to solder the pins to the top side of the board where necessary. "

what pins are you referring to?

I believe I have ALL pins top soldered correctly..
and since the RX/TX are laid out by mean.. I believe I have them correct.. (I have even tried to swap them as you suggested)

I have the TX from my FTDI cable going to RX (pin2) on the chip..

and RX from FTDI cable going to the TX (pin3) on chip..

(this is driving me insane!) =)

thanks..