Go Down

Topic: Unable to get Data from Serial Device using Arduino Mega (Read 489 times) previous topic - next topic

baluvignesh

I am trying to read the data from a Ultra Sonic Fuel Sensor(the link).The Baud rate of this device is 9600.The device basically sends data at regular time intervals.I am able to read the output in the PC using Terminal software.Given below is a sample.

Eg:*XD,205B,00,0000,0031,0000,0000,null#

I am trying to connect this device to Arduino through serial port provided in the device and when I see the Serial Monitor,the output is not correct.Given below is the sample.

5320215115451166102572432302302432302302302302432303816623024323023023023024323023023023051822281141463

Quote
String incoming_char;      // Will hold the incoming character from the Serial Port.

void setup()
{
  //Initialize serial ports for communication.
  Serial.begin(9600);
  Serial1.begin(9600);
  Serial.println("Starting Communication with Fuel Sensor");
}
void loop()
{

//If a character comes in from the cellular module...

  if(Serial1.available() >0)
  {
    incoming_char=String(Serial1.read());    // Get the character from the cellular serial port.
    Serial.print(incoming_char);  // Print the incoming character to the terminal.
  }
}

The Arduino is powered from USB and the Device from a 12V supply. The voltage levels from the device Tx-GND=-5.44V,Rx-GND=-8.22V.

I initially thought the the issue might be because of the voltage range and made a voltage divider circuit and fed Arduino the proportionate voltage.Even that is not working. So,what is the thing which is going wrong ?Please guide me.

LuisCRSousa

There is a problem with your arduino Mega. That voltage values are not right for sure.

Hackscribble

Hi baluvignesh

Code: [Select]
Serial.print(incoming_char);  // Print the incoming character to the terminal.

The comment here is wrong.  The print method treats each character in the String as a number and prints it in decimal format.

Try changing it to this:

Code: [Select]
if(Serial1.available() >0)
  {
    Serial.write(Serial1.read());
  }


This should print each character as a character.

Regards

Ray
Hackscribble.  Writing about making things.
arduino@hackscribble.com | www.hackscribble.com

baluvignesh

#3
Jul 01, 2014, 06:24 am Last Edit: Jul 01, 2014, 07:01 am by baluvignesh Reason: 1
Hi Hackscribble,

I tried your suggestion.

Now I am getting this .

5Ê--š3¦f9óææóææææóæ&¦æóææææóææææ3Rär'

I guess that this piece of string is getting converted to corresponding numbers in decimal format.  So,I will have to check now why I am getting this junk characters from the Serial.Any pointers ?

baluvignesh

Hi Luis,

Can you please elobrate ? .I read in some site that it is ok to have negative voltages.

michinyon

Don't use a string with serial.read( ).

Serial.read( ) reads a single character.

Try reading the character and then sending to the serial monitor.

If that works,  then stick it into a char array.

jremington

The output is probably RS232, which uses inverted logic and voltage levels that are totally incompatible with the Arduino. If so, you need an RS232-TTL converter, like this one: http://www.pololu.com/product/127

baluvignesh

Hi jremington,
Thanks for your suggestion.That was the issue.Got a RS232-TTL converter and it worked.

MistAfRee

Have you set your serial monitor to the correct baud? This happens to me when I open the serial port at 9800 and set the serial monitor to 115800 or something other than the port I have already opened to.

LuisCRSousa

You were using RS232 on TTL device? Glad your arduino is ok :)

Go Up