From 9082ffa56cdc2af28033a8ffd4783f44c52a4c65 Mon Sep 17 00:00:00 2001 From: Tim Staat Date: Thu, 4 Sep 2025 02:03:54 +0200 Subject: [PATCH] Bearing computation + fixes Compute the correct bearing and removes several debug print outputs. --- .../20250815_basic_finder.ino.ino | 64 +++++++------------ 20250815_basic_finder.ino/wifi_save.h | 2 +- 2 files changed, 25 insertions(+), 41 deletions(-) diff --git a/20250815_basic_finder.ino/20250815_basic_finder.ino.ino b/20250815_basic_finder.ino/20250815_basic_finder.ino.ino index 0c66df5..2c7360b 100644 --- a/20250815_basic_finder.ino/20250815_basic_finder.ino.ino +++ b/20250815_basic_finder.ino/20250815_basic_finder.ino.ino @@ -14,8 +14,13 @@ QMC5883LCompass compass; #define TXD2 17 // ID 1 = Julia; ID 2 = Tim -#define OWN_ID 1 -#define REQ_ID 2 +#define OWN_ID 2 +#define REQ_ID 1 + +#define BEARING_CORRECTION 3 + +#define LED_PIN 5 + #define GPS_BAUD 9600 @@ -61,6 +66,10 @@ void setup(void) { u8g2.begin(); // start a display. gpsSerial.begin(GPS_BAUD, SERIAL_8N1, RXD2, TXD2); Serial.println("Serial 2 started at 9600 baud rate"); + + pinMode(LED_PIN, OUTPUT); + + } void drawTriangles(byte i, char *time, char *distanceString) { @@ -109,12 +118,13 @@ bool doHttpRequest(char *payload, char *latitude, char *longitude, char *gpsTime } byte calculateBearing(float bearing) { + compass.read(); int relativeAngle = (int)(bearing - compass.getAzimuth()); relativeAngle += 360; relativeAngle %= 360; - return compass.getBearing(relativeAngle); + return (compass.getBearing(relativeAngle) + BEARING_CORRECTION + 16) % 16; } -void setDistanceBearingString(char *distance, byte *bearing, const char *payload) { +void setDistanceBearingString(char *time, char *distance, byte *bearing, const char *payload) { StaticJsonDocument<200> doc; DeserializationError error = deserializeJson(doc, payload); @@ -126,11 +136,10 @@ void setDistanceBearingString(char *distance, byte *bearing, const char *payload } const char* dist2 = doc["distance"]; - //Serial.println(dist2); - Serial.println("JSON stuff:"); - Serial.println(dist2); - + const char* time2 = doc["lastUpdateTZ"]; strcpy(distance, dist2); + strcpy(time, time2); + *bearing = calculateBearing(String(doc["bearing"]).toFloat()); } @@ -177,44 +186,19 @@ void loop(void) { char distanceString[16]; strcpy(distanceString, distanceArray); - + char remoteTimeString[16]; + strcpy(remoteTimeString, timeString); if (doHttpRequest(myPayloadResponse, latitude, longitude, dateTimeString)) - setDistanceBearingString(distanceString, &triangleIndex, myPayloadResponse); + setDistanceBearingString(remoteTimeString, distanceString, &triangleIndex, myPayloadResponse); - Serial.println(); - Serial.println("TimeString: "); - Serial.println(timeString); - Serial.println("DateString: "); - Serial.println(dateString); - Serial.println("Date: "); - Serial.println(dateString); - Serial.println("DateTime: "); - Serial.println(dateTimeString); - Serial.println("DistanceString: "); - Serial.println(distanceString); - - - drawTriangles(triangleIndex, timeString, distanceString); + drawTriangles(triangleIndex, remoteTimeString, distanceString); Serial.println("-------------------------------"); - int a; - compass.read(); - //Calculate heading - a = compass.getAzimuth(); - float heading = compass.getBearing(a); - char myArray[3]; - compass.getDirection(myArray, a); - - Serial.print("A: "); - Serial.print(a); - Serial.print("Heading: "); - Serial.print(heading); - Serial.print(" - "); - Serial.print(myArray); - Serial.println(); - Serial.println("-------------------------------"); + digitalWrite(LED_PIN, HIGH); delay(5000); + + digitalWrite(LED_PIN, LOW); } diff --git a/20250815_basic_finder.ino/wifi_save.h b/20250815_basic_finder.ino/wifi_save.h index 0793a55..71719a0 100644 --- a/20250815_basic_finder.ino/wifi_save.h +++ b/20250815_basic_finder.ino/wifi_save.h @@ -34,7 +34,7 @@ while 重启五秒内 && 重置按键被按下 : #define SSID_LENGTH 40 -#define WIFI_SET_PIN 27 +#define WIFI_SET_PIN 18 int record_rst_time(); void nvs_test();