Day: January 20, 2011

MaxSonar sensor and pySerial

LV-MaxSonar-EZ0 sensor by MaxBotix.

Interfacing with computer serial port and Python via pySerial module.

Download Python and pySerial.

The wiring is so trivial. Start from data sheet we need 4 pins: GND, VCC, TX, RX.
Sensor operating voltage is from 2.5V to 5.5V and the current is about 2mA, then we can get power from serial port DTR or RTS pins. Look at this explanation. ATTENTION! RS-232 specification says that tension can be 25V. You can simply BURN the sonar, computer, house and more… Don’t do anything if you don’t know what are you doing.

In my case I am using USB to RS-232 converter. Output voltage is 5V so I don’t need additional circuitry, just simple pin to pin wiring.

And now little coding…


# Import pySerial module
from serial import *

# Open serial port and setup
ser = Serial("COM10", baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1)

# Power up MaxSonar via DTR pin
ser.setDTR(True)

# Infinite loop
while (True):

    # Read serial data
    data = ser.read(5)

    # Check data length 
    if len(data) == 5:

        # Check data packet
        if data[0] == "R" and data[1:4].isdigit():

            # Convert to cm and print 
            print int(data[1:4]) * 2.54, "cm"

    # Request next measurement        
    ser.write(0)

# Close 
ser.close()

Many thanks to Antonio Bugnone for soldering.