Hallo liebe OBS-Community,
bei unserem letzten Workshop in Hamburg haben wir anscheinend mal wieder eine neue/ander Charge an GPS-Modulen erwischt und haben das gleiche Fehlerbild bei 8 Sensoren:
-
Optisch/äußerlich sind sie vollkommen identisch zu unseren letzten, funktionierenden Modulen (Beschriftung auf dem IC sagt
NEO-6M2
. Auf dem PCB stehtGY-GPS6MV2
wie immer). -
Wir haben alle Module vor dem Einbau mit u-center getestet und verifiziert dass die Antennen funktionieren/die Module erfolgreich einen Fix bekommen. Die Module scheinen also prinzipiell funktionsfähig zu sein. Ältere (funktionierende) Module identifizieren sich in der u-center Software als „u-blox 5“ (Angabe in der Fußleiste). Diese neuen, problematischen Module identifizieren sich dort als „u-blox M8/8“ („Richtige“ M8 sind es aber anscheinend auch nicht – die haben einige Leute wohl schon erfolgreich verbaut, und die Module würden anders aussehen).
-
Allerdings können die Module nicht mit dem ESP32 aus dem OBS kommunizieren. Auf dem Display bleibt immer „0 sats SN: 0“ stehen. Und über das serielle Terminal meldet der ESP32 Folgendes:
[ 37][I][OpenBikeSensorFirmware.cpp:199] setup(): openbikesensor.org - OBS/v0.18.849
[ 39][I][esp32-hal-i2c.c:75] i2cInit(): Initialising I2C Master: sda=21 scl=22 freq=100000
[ 44][W][Wire.cpp:301] begin(): Bus already started in Master Mode.
[ 90][I][VoltageMeter.cpp:40] VoltageMeter(): Initializing VoltageMeter.
[ 91][I][VoltageMeter.cpp:54] VoltageMeter(): Characterized using eFuse Vref
[ 93][I][VoltageMeter.cpp:62] VoltageMeter(): eFuse Two Point: NOT supported
[ 100][I][VoltageMeter.cpp:66] VoltageMeter(): eFuse Vref: Supported
[ 109][I][VoltageMeter.cpp:75] VoltageMeter(): VoltageMeter initialized got 0.21V.
[ 146][I][OpenBikeSensorFirmware.cpp:617] loadConfig(): Load cfg
[ 1049][W][gps.cpp:356] sendAndWaitForAck(): Retry to send 0x3406 after 200ms.
[ 1250][W][gps.cpp:356] sendAndWaitForAck(): Retry to send 0x3406 after 200ms.
[ 1250][E][gps.cpp:361] sendAndWaitForAck(): Failed to send cfg. 0x3406 NAK: 0 after 401ms
[ 1284][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 4d M
[ 1285][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 05
[ 1287][W][gps.cpp:663] encode(): Unexpected GPS char in state null: b1 �
[ 1293][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 41 A
[ 1300][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 2c ,
[ 1306][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 33 3
[ 1313][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 2c ,
[ 1319][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 32 2
[ 1326][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 31 1
[ 1333][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 2c ,
[ 1339][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 30 0
[ 1346][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 31 1
[ 1352][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 2c ,
[ 1359][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 30 0
[ 1366][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 38 8
[ 1372][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 2c ,
[ 1379][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 33 3
[ 1385][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 32 2
[ 1392][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 2c ,
[ 1399][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 31 1
[ 1405][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 30 0
[ 1412][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 2c ,
[ 1418][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 31 1
[ 1425][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 34 4
[ 1432][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 2c ,
[ 1438][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 32 2
[ 1445][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 37 7
[ 1451][W][gps.cpp:663] encode(): Unexpected GPS char in state null: 0c
[ 1683][W][gps.cpp:356] sendAndWaitForAck(): Retry to send 0x3406 after 200ms.
[ 1883][W][gps.cpp:356] sendAndWaitForAck(): Retry to send 0x3406 after 200ms.
[ 1883][E][gps.cpp:361] sendAndWaitForAck(): Failed to send cfg. 0x3406 NAK: 0 after 400ms
[ 2087][W][gps.cpp:356] sendAndWaitForAck(): Retry to send 0x3406 after 200ms.
[ 2117][W][gps.cpp:1156] parseNmeaMessage(): Unparsed NMEA GNRMC: $GNRMC,153547.00,A,5334.76976,N,01001.29712,E,0.037,,140523,,,A,V*17
[ 2127][W][gps.cpp:1156] parseNmeaMessage(): Unparsed NMEA GNGGA: $GNGGA,153547.00,5334.76976,N,01001.29712,E,1,08,1.01,10.3,M,46.3,M,,*7F
[ 2131][W][gps.cpp:1156] parseNmeaMessage(): Unparsed NMEA GNGSA: $GNGSA,A,3,21,01,08,32,10,14,27,,,,,,2.04,1.01,1.78,1*03
[ 2142][W][gps.cpp:1156] parseNmeaMessage(): Unparsed NMEA GNGSA: $GNGSA,A,3,14,,,,,,,,,,,,2.04,1.01,1.78,4*09
[ 2152][W][gps.cpp:1156] parseNmeaMessage(): Unparsed NMEA GPGSV: $GPGSV,3,1,12,01,52,283,36,02,34,102,16,03,17,227,21,08,49,178,32,0*64
[ 2164][W][gps.cpp:1156] parseNmeaMessage(): Unparsed NMEA GPGSV: $GPGSV,3,2,12,10,30,057,26,14,24,299,29,17,06,317,,21,82,287,39,0*62
[ 2176][W][gps.cpp:1156] parseNmeaMessage(): Unparsed NMEA GPGSV: $GPGSV,3,3,12,22,34,124,22,24,05,020,,27,20,157,22,32,42,094,27,0*6C
[ 2187][W][gps.cpp:1156] parseNmeaMessage(): Unparsed NMEA BDGSV: $BDGSV,1,1,02,12,,,13,14,45,184,42,0*48
[ 2196][W][gps.cpp:1156] parseNmeaMessage(): Unparsed NMEA GNTXT: $GNTXT,1,1,01,ANTENNA OK*2B
[ 2287][W][gps.cpp:356] sendAndWaitForAck(): Retry to send 0x3406 after 200ms.
[ 2287][E][gps.cpp:361] sendAndWaitForAck(): Failed to send cfg. 0x3406 NAK: 0 after 400ms
[ 2291][I][gps.cpp:180] softResetGps(): Soft-RESET GPS!
-
Irgendwie sprechen der ESP32 und das GPS-Module nicht die gleiche Sprache. Wenn man davon ausgeht, dass der Befehlssatz sich bei dem Modul nicht geändert hat, dann scheint das irgendwie an einer anderen Codierung oder Baudrate zu liegen?!
-
Laut Web-Interface identifiziert sich das problematische Modul im GPS-Abschnitt so:
Hat jemand Ideen, wie wir hier weiter debuggen können? Wir haben nen ganzen Sack von den Modulen und würden die ungern entsorgen müssen.