diff --git a/Firmware/merge_firmware.py b/Firmware/merge_firmware.py index a2f9ee0..5b20ce6 100644 --- a/Firmware/merge_firmware.py +++ b/Firmware/merge_firmware.py @@ -36,10 +36,10 @@ def esp32_create_combined_bin(source, target, env): cmd = [ "--chip", chip, - "merge_bin", + "merge-bin", "-o", new_file_name, - "--flash_size", + "--flash-size", flash_size, ] diff --git a/Firmware/src/config_winfidel.h b/Firmware/src/config_winfidel.h index ed87426..63cd5c3 100644 --- a/Firmware/src/config_winfidel.h +++ b/Firmware/src/config_winfidel.h @@ -4,6 +4,17 @@ #define MDNS_NAME "winfidel" #define WIFI_HOSTNAME "WInFiDEL by SK" +#ifndef CONFIG_PRINT_MEASUREMENTS_USB_CDC +#define CONFIG_PRINT_MEASUREMENTS_USB_CDC 1 // Set to `1` if we want serial (USB-to-Serial) printout for every measurement. +#endif // CONFIG_PRINT_MEASUREMENTS_USB_CDC + +#ifndef CONFIG_PRINT_MEASUREMENTS_UART_GPIO +#define CONFIG_PRINT_MEASUREMENTS_UART_GPIO 1 // Set to `1` if we want serial (TX GPIO) printout for every measurement. +#endif // CONFIG_PRINT_MEASUREMENTS_UART_GPIO + +#ifndef CONFIG_ENABLE_WIFI +#define CONFIG_ENABLE_WIFI 1 // Set to `1` if we want to use WiFi (ie not requred for Serial only application) +#endif #define CALIBRATION_POINT_SAMPLE_COUNT 32 // Number of ADC samples to take for new calibration point #define CALIBRATION_POINT_ACCURACY_POINT 50 // We expect all CALIBRATION_POINT_SAMPLE_COUNT samples to be @@ -21,7 +32,6 @@ #define CAL_POINT_FIRST { .adc = ADC_MIN, .mm = ADC_MIN_EQUALS_MM } #define CAL_POINT_LAST { .adc = ADC_MAX, .mm = ADC_MAX_EQUALS_MM } -#define PRINT_MEASUREMENT_OVER_SERIAL // Define if we want serial printout for every measurement #define ADC_MAX_SAMPLES 64 // Maximum number of ADC samples we can take in one measurement cycle #define ADC_SAMPLES_PER_MEASUREMENT_CYCLE 16 // How many samples to take for each measurement cycle @@ -87,4 +97,18 @@ typedef struct calibration } calibration_t; +// Note during build that certain features have been disabled +#if !CONFIG_ENABLE_WIFI + #pragma message "-- Note: WiFi is DISBLED in this build!" +#endif + +#if !CONFIG_PRINT_MEASUREMENTS_USB_CDC + #pragma message "-- Note: Printing measurements over USB-CDC is DISABLED!" +#endif + +#if !CONFIG_PRINT_MEASUREMENTS_UART_GPIO + #pragma message "-- Note: Printing measurements over SERIAL is DISABLED!" +#endif + + #endif diff --git a/Firmware/src/main.ino b/Firmware/src/main.ino index 50b0568..6765a4c 100644 --- a/Firmware/src/main.ino +++ b/Firmware/src/main.ino @@ -7,17 +7,21 @@ #include "include/PersistSettings.h" #include "config_winfidel.h" +bool bStatusLED = false; + +#if CONFIG_ENABLE_WIFI WiFiManager wifiManager; AsyncWebServer server(80); volatile int WiFi_status = WL_IDLE_STATUS; const char mdnsName[] = MDNS_NAME; const char wifiName[] = WIFI_HOSTNAME; uint8_t dbgOTApercent = 100; -bool bStatusLED = false; -#ifdef PRINT_MEASUREMENT_OVER_SERIAL +#endif //CONFIG_ENABLE_WIFI + +#if CONFIG_PRINT_MEASUREMENTS_USB_CDC int SerialInByte = 0; bool bSerialPrintoutRequested = false; -#endif +#endif // CONFIG_PRINT_MEASUREMENTS_USB_CDC void setup() { @@ -31,16 +35,21 @@ void setup() LED_RED_ON(); // Configure Serial communication - Serial.begin(115200); - Serial.println("Wireless Inline Filament Estimator, Low-Cost - WInFiDEL"); - WiFi.setHostname(wifiName); + Serial.begin(115200); // USB-to-UART + Serial0.begin(115200); // TX/RX GPIOS - // wifiManager.resetSettings(); // Wipe WiFi settings. Uncomment for WiFi manager testing + Serial.println("Wireless Inline Filament Estimator, Low-Cost - WInFiDEL"); + Serial0.println("Wireless Inline Filament Estimator, Low-Cost - WInFiDEL"); + +#if CONFIG_ENABLE_WIFI + WiFi.setHostname(wifiName); +#endif // CONFIG_ENABLE_WIFI delay(500); LED_GREEN_ON(); +#if CONFIG_ENABLE_WIFI bool res; res = wifiManager.autoConnect("SK-WInFiDEL-Setup"); @@ -67,12 +76,14 @@ void setup() // Add service to MDNS-SD MDNS.addService("http", "tcp", 80); +#endif // CONFIG_ENABLE_WIFI EEPROM.begin(sizeof(calibration_t)); calibration_init(); adc_init(); +#if CONFIG_ENABLE_WIFI Serial.print("Starting WebServer..."); setupWebServer(); server.begin(); @@ -120,6 +131,7 @@ void setup() }); ArduinoOTA.begin(); Serial.println("Arduino OTA is on"); +#endif // CONFIG_ENABLE_WIFI // Debug message to signal we are initialized and entering loop Serial.println("Ready to go."); @@ -137,9 +149,12 @@ void setup() void loop() { Measurements_Tick(); - ArduinoOTA.handle(); -#ifdef PRINT_MEASUREMENT_OVER_SERIAL +#if CONFIG_ENABLE_WIFI + ArduinoOTA.handle(); +#endif // CONFIG_ENABLE_WIFI + +#ifdef CONFIG_PRINT_MEASUREMENTS_USB_CDC int available = Serial.available(); if(available > 0) { @@ -154,5 +169,5 @@ void loop() LED_SERIAL_OFF(); } } -#endif +#endif // CONFIG_PRINT_MEASUREMENTS_USB_CDC } diff --git a/Firmware/src/measurements.ino b/Firmware/src/measurements.ino index 1b665fa..beb6489 100644 --- a/Firmware/src/measurements.ino +++ b/Firmware/src/measurements.ino @@ -116,7 +116,8 @@ void Measurements_Tick(void) LED_MEASUREMENT_ON(); } - #ifdef PRINT_MEASUREMENT_OVER_SERIAL + // Measurement printing over USB-CDC + #ifdef CONFIG_PRINT_MEASUREMENTS_USB_CDC if (bSerialPrintoutRequested && (Serial.availableForWrite()>9)) { Serial.print(">"); @@ -132,7 +133,15 @@ void Measurements_Tick(void) LED_SERIAL_OFF(); } } - #endif + #endif // CONFIG_PRINT_MEASUREMENTS_USB_CDC + + // Measurement printing over Serial + #ifdef CONFIG_PRINT_MEASUREMENTS_UART_GPIO + Serial0.print(">"); + Serial0.print(gReadingLast); + Serial0.print("mm\r\n"); + #endif //CONFIG_PRINT_MEASUREMENTS_UART_GPIO + // Set next update timestamp nNextMeasurementTick = millis() + 200; diff --git a/Firmware/src/version.h b/Firmware/src/version.h index badf233..4d7f939 100644 --- a/Firmware/src/version.h +++ b/Firmware/src/version.h @@ -2,7 +2,7 @@ #define __WINFIDEL_FW_VERSION_H__ #define VERSION_MAJOR 2025 -#define VERSION_MINOR 2 -#define VERSION_PATCH 22 +#define VERSION_MINOR 10 +#define VERSION_PATCH 17 #endif