From b4774d4b77df3504f8324342a0edee5abe161e05 Mon Sep 17 00:00:00 2001 From: FCS Date: Tue, 2 Dec 2025 19:59:39 +0100 Subject: [PATCH] communicate via json, display rssi and from, dynamic min and max speed via json --- src/main.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 60 insertions(+), 8 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e5b19cb..e999933 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,13 +2,14 @@ #include #include #include - +#include #ifdef DEVICE_WINDE #include #endif #ifdef DEVICE_SAILPLANE #include +JsonDocument sailplane_data; #endif SX1262 radio = new Module(LORA_NSS, LORA_DIO1, LORA_NRST, LORA_BUSY); @@ -89,6 +90,37 @@ void setup() u8g2.sendBuffer(); } +void draw_rssi(int Rssi){ + u8g2.drawFrame(102,8,4,3); + u8g2.drawFrame(107,6,4,5); + u8g2.drawFrame(112,4,4,7); + u8g2.drawFrame(117,2,4,9); + u8g2.drawFrame(122,0,4,11); + + if ((Rssi > -120) && Rssi < 0 ) + { + u8g2.drawBox(102,8,4,3); + } + + if ((Rssi > -100) && Rssi < 0 ) + { + u8g2.drawBox(107,6,4,5); + } + if ((Rssi > -85) && Rssi < 0 ) + { + u8g2.drawBox(112,4,4,7); + } + if ((Rssi > -70) && Rssi < 0 ) + { + u8g2.drawBox(117,2,4,9); + } + if ((Rssi > -55) && Rssi < 0 ) + { + u8g2.drawBox(122,0,4,11); + } + + +} void loop() { #ifdef DEVICE_SAILPLANE @@ -102,8 +134,14 @@ void loop() u8g2.print(vel_kmh); u8g2.sendBuffer(); if (vel_kmh > 30) - { - String data = String(vel_kmh); + { + sailplane_data["from"]= "D-1234"; + sailplane_data["telemetry"]["speed"]=vel_kmh; + sailplane_data["telemetry"]["min"]=70; + sailplane_data["telemetry"]["max"]=150; + String data; + serializeJson(sailplane_data,data); + //String data = String(vel_kmh); int state = radio.transmit(data); if (state == RADIOLIB_ERR_NONE) { @@ -157,6 +195,8 @@ void loop() // you can read received data as an Arduino String String str; int state = radio.readData(str); + JsonDocument received; + deserializeJson(received,str); // you can also read received data as byte array /* @@ -166,16 +206,28 @@ void loop() */ if (state == RADIOLIB_ERR_NONE) - { + { + String data_from=received["from"]; + int data_speed=received["telemetry"]["speed"]; + int data_min=received["telemetry"]["min"]; + int data_max=received["telemetry"]["max"]; // packet was successfully received u8g2.clearBuffer(); - u8g2.setFont(u8g2_font_logisoso42_tr); - u8g2.setCursor(0, 60); - u8g2.print(str); + u8g2.setFont(u8g2_font_ncenB10_tr); + u8g2.setCursor(0, 10); + u8g2.print(data_from); + u8g2.setCursor(0, 64); + u8g2.print(data_min); + u8g2.setCursor(64, 64); + u8g2.print(data_max); + u8g2.setFont(u8g2_font_logisoso32_tr); + u8g2.setCursor(0, 50); + u8g2.print(data_speed); + draw_rssi(radio.getRSSI()); u8g2.sendBuffer(); Serial.println(str); int speed = str.toInt(); - set_tacho(speed, 70, 150); + set_tacho(data_speed, data_min, data_max); } } #endif