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.
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.
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 ?
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: Pololu 23201a Serial Adapter Partial Kit
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.