From 27e9658b67510d5c57c68debc149e501d6600cc6 Mon Sep 17 00:00:00 2001 From: Sylensky Date: Wed, 25 Dec 2024 16:31:16 +0100 Subject: [PATCH 1/6] firmware: config: declare wifi settings in platformio.ini Move settings to config.h to have one single file for static configuration values. --- esp32_wireless_control/firmware/config.h | 18 ++++++++++++++++++ esp32_wireless_control/firmware/firmware.ino | 14 ++++---------- esp32_wireless_control/firmware/platformio.ini | 5 +++++ 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/esp32_wireless_control/firmware/config.h b/esp32_wireless_control/firmware/config.h index 0bb6871..04d5f3a 100644 --- a/esp32_wireless_control/firmware/config.h +++ b/esp32_wireless_control/firmware/config.h @@ -15,6 +15,24 @@ #define STEPPER_0_9 // uncomment this line if you have a 0.9 degree NEMA17 // #define STEPPER_1_8 //uncomment this line if you have a 1.8 degree NEMA17, and comment the // above line + +// Configure the wifi settings if you are not using platformio +#ifndef WIFI_SSID +#define WIFI_SSID "OG Star Tracker" // change to your SSID +#endif +#ifndef WIFI_PASS +#define WIFI_PASS "password123" // change to your password, must be 8+ characters +#endif +// If you are using AP mode, you can access the website using the below URL +#ifndef WEBSITE_NAME +#define WEBSITE_NAME "www.tracker.com" +#endif +#ifndef DNS_PORT +#define DNS_PORT 53 +#endif +#ifndef WEBSERVER_PORT +#define WEBSERVER_PORT 80 +#endif /**********************/ /*****DO NOT MODIFY BELOW*****/ diff --git a/esp32_wireless_control/firmware/firmware.ino b/esp32_wireless_control/firmware/firmware.ino index e75760c..952f3ec 100644 --- a/esp32_wireless_control/firmware/firmware.ino +++ b/esp32_wireless_control/firmware/firmware.ino @@ -16,17 +16,11 @@ // try to update every time there is breaking change const int firmware_version = 7; -// Set your Wi-Fi credentials -const byte DNS_PORT = 53; -const char* ssid = "OG Star Tracker"; // change to your SSID -const char* password = "password123"; // change to your password, must be 8+ characters -// If you are using AP mode, you can access the website using the below URL -const String website_name = "www.tracker.com"; #define MIN_CUSTOM_SLEW_RATE 2 unsigned long blink_millis = 0; -WebServer server(80); +WebServer server(WEBSERVER_PORT); DNSServer dnsServer; Languages language = EN; @@ -283,7 +277,7 @@ void setup() intervalometer.readPresetsFromEEPROM(); #ifdef AP WiFi.mode(WIFI_MODE_AP); - WiFi.softAP(ssid, password); + WiFi.softAP(WIFI_SSID, WIFI_PASSWORD); delay(500); Serial.println("Creating Wifi Network"); @@ -304,7 +298,7 @@ void setup() // ANDROID 10 WORKAROUND================================================== #else WiFi.mode(WIFI_MODE_STA); // Set ESP32 in station mode - WiFi.begin(ssid, password); + WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.println("Connecting to Network in STA mode"); while (WiFi.status() != WL_CONNECTED) { @@ -314,7 +308,7 @@ void setup() #endif dnsServer.setTTL(300); dnsServer.setErrorReplyCode(DNSReplyCode::ServerFailure); - dnsServer.start(DNS_PORT, website_name, WiFi.softAPIP()); + dnsServer.start(DNS_PORT, WEBSITE_NAME, WiFi.softAPIP()); server.on("/", HTTP_GET, handleRoot); server.on("/on", HTTP_GET, handleOn); diff --git a/esp32_wireless_control/firmware/platformio.ini b/esp32_wireless_control/firmware/platformio.ini index 6128f91..896fd32 100644 --- a/esp32_wireless_control/firmware/platformio.ini +++ b/esp32_wireless_control/firmware/platformio.ini @@ -35,4 +35,9 @@ build_flags = -D VERSION=${ogstartracker.custom_version} -D DEBUG=0 -D BUILD_VERSION=\"${ogstartracker.custom_version}\" + -D WIFI_SSID='"OG Star Tracker"' + -D WIFI_PASSWORD='"password123"' + -D WEBSITE_NAME='"www.tracker.com"' + -D DNS_PORT=53 + -D WEBSERVER_PORT=80 -Wall -Wextra -Os From 7a91d4324e3067703d151114172555a5c7e34a70 Mon Sep 17 00:00:00 2001 From: Sylensky Date: Wed, 25 Dec 2024 16:39:06 +0100 Subject: [PATCH 2/6] firmware: generate compile_commands.json Generate the compile_commands.json for the clangd language server. This bears the feature to highlight variable types and allows stepping into library code. --- esp32_wireless_control/firmware/.gitignore | 1 + esp32_wireless_control/firmware/platformio.ini | 4 +++- .../firmware/shared/generate_compiledb.py | 6 ++++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 esp32_wireless_control/firmware/shared/generate_compiledb.py diff --git a/esp32_wireless_control/firmware/.gitignore b/esp32_wireless_control/firmware/.gitignore index 71b08af..69add44 100644 --- a/esp32_wireless_control/firmware/.gitignore +++ b/esp32_wireless_control/firmware/.gitignore @@ -4,3 +4,4 @@ .vscode/c_cpp_properties.json .vscode/launch.json .vscode/ipch +compile_commands.json diff --git a/esp32_wireless_control/firmware/platformio.ini b/esp32_wireless_control/firmware/platformio.ini index 896fd32..1dbf572 100644 --- a/esp32_wireless_control/firmware/platformio.ini +++ b/esp32_wireless_control/firmware/platformio.ini @@ -28,7 +28,9 @@ custom_debug_port = \\.\COM5 [env:ogstartracker_release] build_type = release -extra_scripts = pre:shared/versioning.py +extra_scripts = + pre:shared/versioning.py + post:shared/generate_compiledb.py monitor_speed = 115200 build_flags = -D BINARY_NAME=${ogstartracker.custom_binary_name} diff --git a/esp32_wireless_control/firmware/shared/generate_compiledb.py b/esp32_wireless_control/firmware/shared/generate_compiledb.py new file mode 100644 index 0000000..b922321 --- /dev/null +++ b/esp32_wireless_control/firmware/shared/generate_compiledb.py @@ -0,0 +1,6 @@ +Import("env") + +def generate_compiledb(env, *args, **kwargs): + env.Execute(f"pio run -e {env['PIOENV']} -t compiledb") + +env.AddPreAction("buildprog", generate_compiledb) From 5a699ec46cd8090042b2d03efa28a4b151889451 Mon Sep 17 00:00:00 2001 From: Sylensky Date: Sun, 12 Jan 2025 15:29:23 +0100 Subject: [PATCH 3/6] firmware: config: pass internal version as environment variable --- esp32_wireless_control/firmware/config.h | 5 +++++ esp32_wireless_control/firmware/firmware.ino | 5 +---- esp32_wireless_control/firmware/platformio.ini | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/esp32_wireless_control/firmware/config.h b/esp32_wireless_control/firmware/config.h index 04d5f3a..a0fc75a 100644 --- a/esp32_wireless_control/firmware/config.h +++ b/esp32_wireless_control/firmware/config.h @@ -33,6 +33,11 @@ #ifndef WEBSERVER_PORT #define WEBSERVER_PORT 80 #endif + +// try to update every time there is breaking change +#ifndef INTERNAL_VERSION +#define INTERNAL_VERSION 7 +#endif /**********************/ /*****DO NOT MODIFY BELOW*****/ diff --git a/esp32_wireless_control/firmware/firmware.ino b/esp32_wireless_control/firmware/firmware.ino index 952f3ec..db5e1ea 100644 --- a/esp32_wireless_control/firmware/firmware.ino +++ b/esp32_wireless_control/firmware/firmware.ino @@ -13,9 +13,6 @@ #include "web_languages.h" #include "website_strings.h" -// try to update every time there is breaking change -const int firmware_version = 7; - #define MIN_CUSTOM_SLEW_RATE 2 unsigned long blink_millis = 0; @@ -257,7 +254,7 @@ void handleStatusRequest() void handleVersion() { - server.send(200, MIME_TYPE_TEXT, (String) firmware_version); + server.send(200, MIME_TYPE_TEXT, (String) INTERNAL_VERSION); } void setup() diff --git a/esp32_wireless_control/firmware/platformio.ini b/esp32_wireless_control/firmware/platformio.ini index 1dbf572..7144387 100644 --- a/esp32_wireless_control/firmware/platformio.ini +++ b/esp32_wireless_control/firmware/platformio.ini @@ -37,6 +37,7 @@ build_flags = -D VERSION=${ogstartracker.custom_version} -D DEBUG=0 -D BUILD_VERSION=\"${ogstartracker.custom_version}\" + -D INTERNAL_VERSION=7 -D WIFI_SSID='"OG Star Tracker"' -D WIFI_PASSWORD='"password123"' -D WEBSITE_NAME='"www.tracker.com"' From 2044db926bae1efea5562a2e844eade7c1183937 Mon Sep 17 00:00:00 2001 From: Sylensky Date: Sun, 12 Jan 2025 15:40:23 +0100 Subject: [PATCH 4/6] firmware: config: moved MIN_CUSTOM_SLEW_RATE to config.h --- esp32_wireless_control/firmware/config.h | 1 + esp32_wireless_control/firmware/firmware.ino | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/esp32_wireless_control/firmware/config.h b/esp32_wireless_control/firmware/config.h index a0fc75a..3620232 100644 --- a/esp32_wireless_control/firmware/config.h +++ b/esp32_wireless_control/firmware/config.h @@ -12,6 +12,7 @@ #define DEFAULT_ENABLE_TRACKING 0 // set to 1 to enable tracking at startup #define DITHER_DISTANCE_X10_PIXELS 5 // set max distance to dither in multiple of 10 pixels #define MAX_CUSTOM_SLEW_RATE 400 // Set max custom slew rate to X tracking rate +#define MIN_CUSTOM_SLEW_RATE 2 // Set min custom slew rate to X tracking rate #define STEPPER_0_9 // uncomment this line if you have a 0.9 degree NEMA17 // #define STEPPER_1_8 //uncomment this line if you have a 1.8 degree NEMA17, and comment the // above line diff --git a/esp32_wireless_control/firmware/firmware.ino b/esp32_wireless_control/firmware/firmware.ino index db5e1ea..b938283 100644 --- a/esp32_wireless_control/firmware/firmware.ino +++ b/esp32_wireless_control/firmware/firmware.ino @@ -13,8 +13,6 @@ #include "web_languages.h" #include "website_strings.h" -#define MIN_CUSTOM_SLEW_RATE 2 - unsigned long blink_millis = 0; WebServer server(WEBSERVER_PORT); From 34179dec7102ae366a3fd128b95a415097cceb7e Mon Sep 17 00:00:00 2001 From: Sylensky Date: Sun, 12 Jan 2025 19:11:19 +0100 Subject: [PATCH 5/6] firmware: config: make the tracking rate configurable Instead of statically assigning the sidereal tracking rate leave it to the project configuration and the user to pick the tracking rate. --- esp32_wireless_control/firmware/axis.cpp | 4 ++-- esp32_wireless_control/firmware/config.h | 8 ++++++++ esp32_wireless_control/firmware/platformio.ini | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/esp32_wireless_control/firmware/axis.cpp b/esp32_wireless_control/firmware/axis.cpp index 70e5bac..ea74ea9 100644 --- a/esp32_wireless_control/firmware/axis.cpp +++ b/esp32_wireless_control/firmware/axis.cpp @@ -50,7 +50,7 @@ Axis::Axis(uint8_t axis, uint8_t dirPinforAxis, bool invertDirPin) : stepTimer(4 trackingDirection = c_DIRECTION; dirPin = dirPinforAxis; invertDirectionPin = invertDirPin; - trackingRate = TRACKING_SIDEREAL; + trackingRate = TRACKING_RATE; switch (axisNumber) { case 1: @@ -63,7 +63,7 @@ Axis::Axis(uint8_t axis, uint8_t dirPinforAxis, bool invertDirPin) : stepTimer(4 if (DEFAULT_ENABLE_TRACKING == 1 && axisNumber == 1) { - startTracking(TRACKING_SIDEREAL, trackingDirection); + startTracking(trackingRate, trackingDirection); } } diff --git a/esp32_wireless_control/firmware/config.h b/esp32_wireless_control/firmware/config.h index 3620232..47920c3 100644 --- a/esp32_wireless_control/firmware/config.h +++ b/esp32_wireless_control/firmware/config.h @@ -17,6 +17,14 @@ // #define STEPPER_1_8 //uncomment this line if you have a 1.8 degree NEMA17, and comment the // above line +#ifndef TRACKING_RATE +// Available tracking rates: +// TRACKING_SIDEREAL +// TRACKING_SOLAR +// TRACKING_LUNAR +#define TRACKING_RATE TRACKING_SIDEREAL // default tracking rate +#endif + // Configure the wifi settings if you are not using platformio #ifndef WIFI_SSID #define WIFI_SSID "OG Star Tracker" // change to your SSID diff --git a/esp32_wireless_control/firmware/platformio.ini b/esp32_wireless_control/firmware/platformio.ini index 7144387..92286cd 100644 --- a/esp32_wireless_control/firmware/platformio.ini +++ b/esp32_wireless_control/firmware/platformio.ini @@ -43,4 +43,6 @@ build_flags = -D WEBSITE_NAME='"www.tracker.com"' -D DNS_PORT=53 -D WEBSERVER_PORT=80 + -D AP_MODE=1 + -D TRACKING_RATE=TRACKING_SIDEREAL -Wall -Wextra -Os From e04828f3485e14c54827f80dd4bb60506dc1c2fb Mon Sep 17 00:00:00 2001 From: Sylensky Date: Wed, 29 Jan 2025 20:00:51 +0100 Subject: [PATCH 6/6] config: removed double space --- esp32_wireless_control/firmware/config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/esp32_wireless_control/firmware/config.h b/esp32_wireless_control/firmware/config.h index 47920c3..2ed420b 100644 --- a/esp32_wireless_control/firmware/config.h +++ b/esp32_wireless_control/firmware/config.h @@ -11,8 +11,8 @@ #define DEC_INVERT_DIR_PIN 0 // if need to invert direction pin set to 1 #define DEFAULT_ENABLE_TRACKING 0 // set to 1 to enable tracking at startup #define DITHER_DISTANCE_X10_PIXELS 5 // set max distance to dither in multiple of 10 pixels -#define MAX_CUSTOM_SLEW_RATE 400 // Set max custom slew rate to X tracking rate -#define MIN_CUSTOM_SLEW_RATE 2 // Set min custom slew rate to X tracking rate +#define MAX_CUSTOM_SLEW_RATE 400 // Set max custom slew rate to X tracking rate +#define MIN_CUSTOM_SLEW_RATE 2 // Set min custom slew rate to X tracking rate #define STEPPER_0_9 // uncomment this line if you have a 0.9 degree NEMA17 // #define STEPPER_1_8 //uncomment this line if you have a 1.8 degree NEMA17, and comment the // above line