Serial data from dTPMS sensor to CAN

Hello,

I’m making a prototype of dTPMS(direct tire pressure monitoring system), which will be capable of receiving the data from four pressure sensors and send the data to a private CAN bus. Following devices are available:

  • Four pressure sensors, which can be strewed on car’s wheel
  • Receiver, which has been correctly mapped with these four sensors, and has 3.3V TTL interface
  • Arduino Uno(Sorry I’m not using the official board)
  • CAN shield

For test purpose, I have connected the TX of the receiver directly with RX(port 0) of Uno as the first step, in order to see if the communication works, but it turned out that I cannot see any data on the serial monitor based on the following code:

#include <SoftwareSerial.h>

SoftwareSerial gtSerial(0, 1); // Arduino RX, Arduino TX
const int analogInPin = A0;
int sensorValue = 0;
float outputValue = 0;
void setup() {
Serial.begin(9600); // serial / USB port
gtSerial.begin(9600); // software serial port

}

byte tpms_tx_byte = 0; // stores received byte
byte byte_from_tpms = 0; // stores showing byte

void loop() {
// check if byte available on the software serial port
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 0, 1023, 0, 5);
Serial.print("sensor = " );
Serial.print(outputValue);
Serial.println(“V” );

if (gtSerial.available()) {
// get the byte from tpms
tpms_tx_byte = gtSerial.read();
Serial.write(“Got serial signal value”);
Serial.write(tpms_tx_byte);

// check if byte available from USB port
if (Serial.available()) {
byte_from_tpms = Serial.read();
// print tpms data
Serial.println(byte_from_tpms);
}
delay(500);
}
}

My questions are:

  • Whether or not the Uno board is capable of received 3.3V TTL data from my receiver. I have checked some documentation regarding the logic level, it should work.
  • If it is supposed to work, how can I tell if the receiver is sending the data?

Thanks in advance.

The arduino hardware serial port uses pins 0 and 1 so you can not also use them for SoftwareSerial(). You should re-wire your board so your pressure sensors and SoftwareSerial use pins 3 and 4.

That way, when you use Serial.print(), it will come out on the serial monitor on your PC and you can read from the sensors

Thanks, but still it doesn't work. Maybe Uno does not support 3.3V TTL?

Yuchen0823:
Thanks, but still it doesn't work. Maybe Uno does not support 3.3V TTL?

That, I don't know.