0

我正在开发一个使用 MPU 6050 和 GPS 一起嵌入在树莓派设备中的项目。但是,如果我尝试单独运行 gps 代码或单独运行 MPU 6050(加速度计/陀螺仪)的代码,它就可以工作。

但问题是当我尝试在一个程序中同时运行 GPS 和 MPU 6050 的代码时。它只运行 mpu 6050 的代码并忽略 gps 的许多代码和输出。

我认为问题与 gps 和 mpu 6050 的接口有关。

所以,我希望我能得到任何帮助......提前谢谢..

import gyro_acc 
#import speed
import sys, time, requests, jsonify 
import serial
import pynmea2


# defining the api-endpoint 
# API_ENDPOINT = "https://gp-anamoly-api.herokuapp.com/create/anomaly"

# initialize MPU
gyro_acc.MPU_Init()

print(" ::: Start Reading ::: ")

# tracker for the number of potholes/cracks
i = 0
port="/dev/ttyS0"
ser = serial.Serial(port, baudrate=9600, timeout=0.2)
dataout = pynmea2.NMEAStreamReader()
while True:

    # read data
    Gx, Gy, Gz, Ax, Ay, Az = gyro_acc.mpu_read()

    # print("Gx={:.2f} deg/s | Gy={:.2f} deg/s | Gz={:.2f} deg/s".format(Gx, Gy, Gz)) + "|| Ax={:.2f} m/s^2 | Ay={:.2f} m/s^2 | Az={:.2f} m/s^2".format(Ax, Ay, Az))
    print("Gx={:.2f} deg/s | Gy={:.2f} deg/s | Gz={:.2f} deg/s".format(Gx, Gy, Gz))
    print("Ax={:.2f} m/s^2 | Ay={:.2f} m/s^2 | Az={:.2f} m/s^2".format(Ax, Ay, Az))

    # get the location and speed from gps data
    
    
    newdata=ser.readline()

    if newdata[0:6] == "$GPRMC":
        newmsg=pynmea2.parse(newdata)
        lat=newmsg.latitude
        lng=newmsg.longitude
        gps = "Latitude=" + str(lat) + " and Longitude=" + str(lng)
        print(gps)

    if newdata[0:6] == "$GPVTG":
        newmsg=pynmea2.parse(newdata)
        speed = newmsg.spd_over_grnd_kmph
        speed_output = "Speed= {}KM/H".format(speed)
        print(speed_output)

    # separator
    print("===========================")

    
    # print data dynamically
    # sys.stdout.write("\rGx={:.2f} deg/s | Gy={:.2f} deg/s | Gz={:.2f} deg/s".format(Gx, Gy, Gz) \
    #     + " || Ax={:.2f} m/s^2 | Ay={:.2f} m/s^2 | Az={:.2f} m/s^2".format(Ax, Ay, Az) + "\n"
    #     + "Speed: {:.1f} KM/H".format(vehicle_speed))
    # sys.stdout.flush()

    # print speed dynamically
    # sys.stdout.write("\rSpeed: {:.1f} KM/H".format(vehicle_speed))
    # sys.stdout.flush()


    # check if it detect pothole/crack and save to database
    if Az > 13.25:
        # print pothole detected
        # sys.stdout.write("\n")
        print("---------------------------")
        print("Pothole/Crack Detected (No.{})".format(i))
        print("---------------------------")
        i += 1


    # sleep for one second
    time.sleep(1)

gyro_acc 库是我在项目中的另一个库。

4

0 回答 0