Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 1575

Python • Getting Issue in connecting WT905-485 to Pi5 with Python code

$
0
0
Hi there,

Here is my python code to read the sensor data but not getting any data.

Please help me out in getting the corrected code.

Code:

import serialimport serial.tools.list_portsimport structimport time# List of common baud rates for WitMotion sensorsBAUD_RATES = [9600, 19200, 38400, 57600, 115200]def checksum(data):    return sum(data[:10]) & 0xFFdef read_packet(ser):    try:        if ser.read(1) == b'\x55':            data_id = ser.read(1)            data = ser.read(8)            checksum_byte = ser.read(1)            packet = b'\x55' + data_id + data            if len(data) == 8 and checksum(packet) == checksum_byte[0]:                return data_id, data    except:        pass    return None, Nonedef parse_data(data_id, data):    if data_id == b'\x51':        ax, ay, az, temp = struct.unpack('<hhhh', data)        return 'ACC', [ax / 32768 * 16, ay / 32768 * 16, az / 32768 * 16]    elif data_id == b'\x52':        gx, gy, gz, temp = struct.unpack('<hhhh', data)        return 'GYRO', [gx / 32768 * 2000, gy / 32768 * 2000, gz / 32768 * 2000]    elif data_id == b'\x53':        roll, pitch, yaw, temp = struct.unpack('<hhhh', data)        return 'ANGLE', [roll / 32768 * 180, pitch / 32768 * 180, yaw / 32768 * 180]    elif data_id == b'\x54':        mx, my, mz, temp = struct.unpack('<hhhh', data)        return 'MAG', [mx, my, mz]    return None, Nonedef try_port(port, baud):    try:        print(f"🔍 Trying {port} @ {baud} baud for 7 seconds...")        ser = serial.Serial(port, baud, timeout=0.3)        time.sleep(1.0)        start_time = time.time()        sensor_data = {}        while time.time() - start_time < 7:            data_id, data = read_packet(ser)            if data_id:                label, parsed = parse_data(data_id, data)                if label:                    sensor_data[label] = parsed            if all(k in sensor_data for k in ['ACC', 'GYRO', 'ANGLE', 'MAG']):                print(f"\n✅ Sensor found on {port} @ {baud} baud!")                print("Acceleration (g):", sensor_data['ACC'])                print("Gyroscope (°/s):", sensor_data['GYRO'])                print("Angle (°):", sensor_data['ANGLE'])                print("Magnetism:", sensor_data['MAG'])                print("-" * 50)                ser.close()                return True        ser.close()        print("❌ No data detected on this setting.\n")    except Exception as e:        print(f"⚠️ Error on {port}@{baud}: {e}\n")    return Falsedef main():    ports = [p.device for p in serial.tools.list_ports.comports()]    print("🔌 Available ports:", ports)    for port in ports:        for baud in BAUD_RATES:            if try_port(port, baud):                return    print("❌ No HWT905 sensor detected on any port/baud.")if __name__ == "__main__":    main()

Statistics: Posted by maninder — Sun Apr 13, 2025 12:21 am



Viewing all articles
Browse latest Browse all 1575

Trending Articles