Go Down

Topic: Arduino Serial to Fon 2201 (Read 2 times) previous topic - next topic

JimThree

Hey Folks.
I have a Duemilanove running a sketch that outputs the content of millis() every 1/10 second over the serial port.  On the other end of the serial port is a Fon 2201 router flashed with DDWRT v24.  

When I remove the chip from the Arduino board, the I can use arduino's Serial Monitor to send messages to the fon (PC's virtual com port via the USB FTDI chip) which can be seen ay the fon by doing a cat > /dev/tts/0 in a ssh window.

When I remove the USB cable and put the chip back in, running the sketch spamming millis() to the serial port, I don't get anything at all in the fon's shell at all (still with cat still running)

I'm sure I have the Baud rates syncd, using stty -F /dev/tts/0 9600 on the fon side to make sure.  The sketch also indicates (using the LED on pin13) if it sees anything in the serial buffer, but sending anything with echo "hello" > /dev/tty/0 never seems to get through.

I suspect that it could be a voltage problem.  The fon runs at 3.3v on it's serial lines, but from what I've read the arduino (atMega328) is 5v UART.  I wouldn't have thought this was a problem, I expected that a 3.3v system would probably be tolerant of 5v signals, and it works fine when the board is de-chipped and FTDI is sending data (i guess that runs at 5v too).  I'm at a loss to think of what else could be the problem.

Can anyone help?

Jim



Here is my sketch in case it's a SW issue.
Code: [Select]

void setup()
{
 Serial.begin(9600);
}

void loop()
{
   if (Serial.available())
   {
     // if something arrives in the serial buffer, keep LED13 up for a while
     Serial.print(Serial.read());
     digitalWrite(13,HIGH);
     delay(750);      
     digitalWrite(13,LOW);
   }
   
   //send something, anything
   Serial.println(millis());
   
   //heartbeat - to show the Arduino is doing something
   //TX/RX leds are fixed to FTDI so they won't show up when using pins 0/1  
   digitalWrite(13,HIGH);
   delay(10);      
   digitalWrite(13,LOW);
   delay(100);      
}


Go Up