1

Context: I'm trying to read a simple sensor that uses RS232 protocol to send data.

The sensor is a maxbotix US distance sensor (https://www.maxbotix.com/documents/HRXL-MaxSonar-WR_Datasheet.pdf). Documentation says:

Pin 5-Serial Output: The MB736X/MB7375 sensors have an RS232 data format (with 0V to Vcc levels) and the MB738X/MB7395 sensors have a TTL outputs. The output is an ASCII capital “R”, followed by four ASCII character digits representing the range in millimeters, followed by a carriage return (ASCII 13). The maximum range reported is 4999 mm (5-meter models) or 9998 mm (10-meter models). A range value of 5000 or 9999 corresponds to no target being detected in the field of view. The serial data format is 9600 baud, 8 data bits, no parity, with one stop bit (9600-8-N-1). Because the data is presented in a binary data format, the serial output is most accurate.

To model I own has RS232 data format. I did all the previous configurations (disable BT, activate UART, etc), and I can read data, but I can't decode the values.

As docu says, I should receive something like R0300 (for 30 cm measure, the the lower limit). I'm using python to read data:

import serial

ser = serial.Serial('/dev/ttyAMA0', 9600, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE, timeout=1)

ser.flushInput() ser.flushOutput() ser.flush() message = [] for i in range(0,8): message.append(ord(ser.read(1))) print(message)

[43, 240, 134, 51, 62, 159, 229, 0]

ser.flushInput() ser.flushOutput() ser.flush() message = [] for i in range(0,8): message.append(ser.read(1)) print(message)

[b'+', b'\xf0', b'\x86', b'3', b'>', b'\x9f', b'\xe5', b'\x00']

I have used Arduino with this sensor and everything works allright. But now with RPI I can't read the data properly.

Raw byte data I receive (for 8 bytes): b'+\xf0\x863>\x9f\xe5\x00'

After the 8 bytes, the signal starts with b'+' again

Wiring:

Sensor          | RPI 3B+
  Pin 5 (RS232) |   Pin 10 (GPIO15)
  VCC           |   5V
  GND           |   GND

I checked Using Serial to Read Ultrasonic Sensor?, but that approach works with TTL, not with RS232.

I can't decode this data (I have tried multiple translators without success). Am I missing something?

aldo_tapia
  • 113
  • 5

1 Answers1

1

If the sensor ACTUALLY outputs RS232 (which is ±15V) AND connect to GPIO you have damaged the Pi. Even if it is fake RS232 (0-5V) it exceeds the limit.

In addition, even if the voltage was correct RS232 is inverted wrt normal serial so won't work. You need a RS232 adapter.

PS Fiddling with Bluetooth is unnecessary and it is unclear what interface you now have.
See How do I make serial work on the Raspberry Pi3 or later

Milliways
  • 62,573
  • 32
  • 113
  • 225