rpi Pico MycoPhyton GPS Modul L76K für Pico, Ground Speed auslesen

  • Hallo

    Ich versuche ein GPS Modul L76K von Waveshare den Speed Grund auszulesen.

    waveshare

    Da es bei Waveshare kein Programm gibt das nur Speed Grund ausließt habe ich im Netz dazu was gefunden.

    Die Belegung des UART ist richtig. Die Ausgabe von print uart:

    Code
    art=  UART(0, baudrate=9600, bits=8, parity=None, stop=1, tx=0, rx=1, txbuf=256, rxbuf=256, timeout=0, timeout_char=2, invert=None, irq=0)


    Ich bekomme immer eine Fehlermeldung in der 3, letzen Zeile =

    Code
    Traceback (most recent call last):
      File "<stdin>", line 18, in <module>
    UnicodeError: 

    Phyton 3.10.11 Tk 8.6.13

    Ich habe schon in mehre Versuchen die Zeile mit dem Fehler zu ändern, hat aber nichts gebracht.

    Vielleicht kann Jemand mir weiter helfen?

    Gruß NetFritz

  • rpi Pico MycoPhyton GPS Modul L76K für Pico, Ground Speed auslesen? Schau mal ob du hier fündig wirst!

  • NetFritz Das ist wirklich alles was da Meldung kommt? Normalerweise steht nach den UnicodeError: ja noch etwas‽

    Es kann also nicht als Unicode dekodiert werden. Also wäre interessant was denn da kommt was nicht dekodiert werden kann. Gibt das doch mal aus, damit man sich das anschauen kann.

    Ich würde an der Stelle auch gar nicht dekodieren. Den Test und das Zerlegen kann man auch mit bytes Objekten machen, und das dekodieren dann auf die einzelnen Teile beschränken, die man dann in die Zeichenkette einbaut.

    Der Test in Zeile 8 ist falsch. Man will hier nicht wissen ob das irgendwo in der Zeile vorkommt, sondern ob es am Anfang steht. Der Test ist im Moment auch erfolgreich wenn es nicht am Anfang steht, dann sind aber die Indexwerte 5 und 7 im folgenden nicht korrekt, falls das überhaupt Daten sind, die einen hier interessieren. Zeichenketten haben eine startswith()-Methode.

    Python
    print("P3 90 60 1")
    for b in range(5400):print(1,a:=+((b/90-30)**2+(b%90-45)**2>324),a)
  • Hallo

    Code
    UnicodeError:

    Hinter UnicodeError steht wirklich nichts.

    Habe in Zeile 18 und 19 bearbeitet

    Code
    sentence = uart.readline()
            print('sentence= ', sentence)

    Habe dann festgestellt das GPVTG in der Ausgabe nicht vor kam.

    Code
        if "$GPVTG" in sentence:
        if "$GNRMC" in sentence:      geändert

    Nach dem Aufruf kommt als Ausgabe bis zum Abbruch

    In der letzten Zeile

    Code
    sentence=  b'$GNRMC,163337.000,A,5233.34300,N,00907.38385,E,0.00,195.36,030226,,,A,V*0C\r\n'

    An 7 Stelle steht 0.00 das müste die Ground Speed sein.

    Dann bricht das Programm mit Fehlermeldung ab

    Gruß NetFritz

  • Ich würde im decode() folgendes setzen:

    Python
    while True:
        if uart.any():
            sentence = uart.readline().decode('utf-8', errors='replace')
            parse_nmea_sentence(sentence)
        time.sleep(0.1)

    Dann laufen die anfänglichen Müll-Datensätze nicht auf Fehler, stören aber auch nicht...

  • `parse_nmea_sentence` muss nur aufgerufen werden, wenn `b"$GNRMC"` zu Beginn, wie schon erwähnt, der line steht. Daher würde ich das vor dem Dekodieren prüfen und auch nur dann die Funktion aufrufen. Eine allgemeingültige `parse`-Funktion ist das nämlich so eh nicht.

    Ich würde allerdings in der Funktion dann als erstes dekodieren und dann den String aufteilen. Das liegt daran, das ich nur die Methode mit `bytearry()`-Objekten kenne um Bytes zu spliten.

    Es macht Sinn, gleich zu Beginn Konstanten zu verwenden. Das macht es leichter, wenn das Projekt noch am wachsen ist.

    Edit:

    Die Geschwindigkeitswerte sollten vielleicht noch in Zahlen gewandelt werden. `00903 kn` sehen komisch aus.

    Ich habe keine Lösung gefunden, die mir gefällt und die Bytes erst beim Bau des Strings dekodiert, wie von __blackjack__ vorgeschlagen. Wie hast du das gemeint?
    Meine Idee die halbwegs zufriedenstellend ist, mit gewisser Spielerei:

    🎧 Hate the jocks, the preps, the hippie fuckin' scumbags.
    Heavy-metalers with their awful, pussy hairbands.
    Counting seconds until we can get away.
    Ditching school almost every single day, oh, yeah 🎧

    Edited 2 times, last by Dennis89 (February 3, 2026 at 7:19 PM).

  • Was hab ich denn vorhin gemacht? 😂 Upsi 🤭

    Die Methoden wurden sicherelich gerade eben erst eingebaut 🧐

    🎧 Hate the jocks, the preps, the hippie fuckin' scumbags.
    Heavy-metalers with their awful, pussy hairbands.
    Counting seconds until we can get away.
    Ditching school almost every single day, oh, yeah 🎧

  • Hallo

    Code
    Habe inzwischen auch eine Lösung gefunden.

    Vielen Dank für die Großartige Mithilfe.

    Gruß NetFritz

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!