mirror of
https://github.com/BitMaker-hub/NerdMiner_v2.git
synced 2025-09-28 19:46:14 +02:00
@@ -11,7 +11,7 @@
|
|||||||
[platformio]
|
[platformio]
|
||||||
globallib_dir = lib
|
globallib_dir = lib
|
||||||
|
|
||||||
default_envs = NerdminerV2, NerdminerV2-T-HMI, wt32-sc01, wt32-sc01-plus, han_m5stack, M5Stick-C, M5Stick-C-Plus2, M5Stick-CPlus, esp32cam, ESP32-2432S028R, ESP32_2432S028_2USB, Lilygo-T-Embed, ESP32-devKitv1, NerdminerV2-S3-DONGLE, NerdminerV2-S3-GEEK, NerdminerV2-S3-AMOLED, NerdminerV2-S3-AMOLED-TOUCH, NerdminerV2-T-QT, NerdminerV2-T-Display_V1, TTGO-T-Display, M5-StampS3, ESP32-S3-devKitv1, ESP32-S3-mini-wemos, ESP32-S2-mini-wemos, ESP32-S3-mini-weact, ESP32-D0WD-V3-weact, ESP32-C3-super-mini, ESP32-C3-devKitmv1, ESP32-C3-042-OLED, ESP32-S3-042-OLED, ESP32-C3-spotpear, esp32-s3-devkitc1-n32r8
|
default_envs = NerdminerV2, NerdminerV2-T-HMI, wt32-sc01, wt32-sc01-plus, han_m5stack, M5Stick-C, M5Stick-C-Plus2, M5Stick-CPlus, esp32cam, ESP32-2432S028R, ESP32_2432S028_2USB, ESP32-2432S024, Lilygo-T-Embed, ESP32-devKitv1, NerdminerV2-S3-DONGLE, NerdminerV2-S3-GEEK, NerdminerV2-S3-AMOLED, NerdminerV2-S3-AMOLED-TOUCH, NerdminerV2-T-QT, NerdminerV2-T-Display_V1, TTGO-T-Display, M5-StampS3, ESP32-S3-devKitv1, ESP32-S3-mini-wemos, ESP32-S2-mini-wemos, ESP32-S3-mini-weact, ESP32-D0WD-V3-weact, ESP32-C3-super-mini, ESP32-C3-devKitmv1, ESP32-C3-042-OLED, ESP32-S3-042-OLED, ESP32-C3-spotpear, esp32-s3-devkitc1-n32r8
|
||||||
|
|
||||||
; Global configuration for all environments
|
; Global configuration for all environments
|
||||||
[env]
|
[env]
|
||||||
@@ -1014,6 +1014,62 @@ lib_ignore =
|
|||||||
|
|
||||||
;--------------------------------------------------------------------
|
;--------------------------------------------------------------------
|
||||||
|
|
||||||
|
[env:ESP32-2432S024]
|
||||||
|
platform = espressif32@6.6.0
|
||||||
|
board = esp32dev
|
||||||
|
framework = arduino
|
||||||
|
extra_scripts =
|
||||||
|
pre:auto_firmware_version.py
|
||||||
|
post:post_build_merge.py
|
||||||
|
monitor_speed = 115200
|
||||||
|
monitor_filters =
|
||||||
|
esp32_exception_decoder
|
||||||
|
time
|
||||||
|
colorize
|
||||||
|
;debug
|
||||||
|
upload_speed = 921600
|
||||||
|
;build_type = debug
|
||||||
|
board_build.partitions = huge_app.csv
|
||||||
|
build_flags =
|
||||||
|
;-DDEBUG_MEMORY=1
|
||||||
|
-D ESP32_2432S028R=1
|
||||||
|
-DUSER_SETUP_LOADED=1
|
||||||
|
-DILI9341_2_DRIVER=1
|
||||||
|
-DTFT_WIDTH=240
|
||||||
|
-DTFT_HEIGHT=320
|
||||||
|
-DTFT_BACKLIGHT_ON=HIGH
|
||||||
|
-DTFT_MOSI=13
|
||||||
|
-DTFT_SCLK=14
|
||||||
|
-DTFT_CS=15
|
||||||
|
-DTFT_DC=2
|
||||||
|
-DTFT_RST=12
|
||||||
|
-DTFT_BL=27
|
||||||
|
-DETOUCH_CS=33
|
||||||
|
-DTOUCH_CLK=25
|
||||||
|
-DTOUCH_MISO=39
|
||||||
|
-DTOUCH_MOSI=32
|
||||||
|
-DTOUCH_IRQ=36
|
||||||
|
-DLOAD_GLCD=1
|
||||||
|
-DLOAD_FONT2=1
|
||||||
|
-DLOAD_GFXFF=1
|
||||||
|
-DSMOOTH_FONT=1
|
||||||
|
-DSPI_FREQUENCY=55000000
|
||||||
|
-DSPI_READ_FREQUENCY=20000000
|
||||||
|
-DSPI_TOUCH_FREQUENCY=2500000
|
||||||
|
|
||||||
|
lib_deps =
|
||||||
|
https://github.com/takkaO/OpenFontRender#v1.2
|
||||||
|
bblanchon/ArduinoJson@^6.21.5
|
||||||
|
https://github.com/tzapu/WiFiManager.git#v2.0.17
|
||||||
|
mathertel/oneButton@^2.6.1
|
||||||
|
arduino-libraries/NTPClient@^3.2.1
|
||||||
|
bodmer/TFT_eSPI@^2.5.43
|
||||||
|
https://github.com/achillhasler/TFT_eTouch
|
||||||
|
lib_ignore =
|
||||||
|
HANSOLOminerv2
|
||||||
|
|
||||||
|
;--------------------------------------------------------------------
|
||||||
|
|
||||||
[env:NerdminerV2-T-HMI]
|
[env:NerdminerV2-T-HMI]
|
||||||
platform = espressif32@6.6.0
|
platform = espressif32@6.6.0
|
||||||
board = lilygo-t-hmi
|
board = lilygo-t-hmi
|
||||||
|
@@ -132,8 +132,8 @@ void setup()
|
|||||||
Serial.println("Initiating tasks...");
|
Serial.println("Initiating tasks...");
|
||||||
static const char monitor_name[] = "(Monitor)";
|
static const char monitor_name[] = "(Monitor)";
|
||||||
#if defined(CONFIG_IDF_TARGET_ESP32)
|
#if defined(CONFIG_IDF_TARGET_ESP32)
|
||||||
// Reduced stack for ESP32 classic to save memory
|
// Increased stack for ESP32 classic due to NVS operations
|
||||||
BaseType_t res1 = xTaskCreatePinnedToCore(runMonitor, "Monitor", 8000, (void*)monitor_name, 5, NULL,1);
|
BaseType_t res1 = xTaskCreatePinnedToCore(runMonitor, "Monitor", 9500, (void*)monitor_name, 5, NULL,1);
|
||||||
#else
|
#else
|
||||||
BaseType_t res1 = xTaskCreatePinnedToCore(runMonitor, "Monitor", 10000, (void*)monitor_name, 5, NULL,1);
|
BaseType_t res1 = xTaskCreatePinnedToCore(runMonitor, "Monitor", 10000, (void*)monitor_name, 5, NULL,1);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#ifndef VERSION_H
|
#ifndef VERSION_H
|
||||||
#define VERSION_H
|
#define VERSION_H
|
||||||
|
|
||||||
#define CURRENT_VERSION "V1.8.2"
|
#define CURRENT_VERSION "V1.8.3"
|
||||||
|
|
||||||
#endif // VERSION_H
|
#endif // VERSION_H
|
||||||
|
@@ -16,6 +16,9 @@
|
|||||||
#include "mining.h"
|
#include "mining.h"
|
||||||
#include "timeconst.h"
|
#include "timeconst.h"
|
||||||
|
|
||||||
|
#include <ArduinoJson.h>
|
||||||
|
#include <esp_flash.h>
|
||||||
|
|
||||||
|
|
||||||
// Flag for saving data
|
// Flag for saving data
|
||||||
bool shouldSaveConfig = false;
|
bool shouldSaveConfig = false;
|
||||||
@@ -31,6 +34,63 @@ nvMemory nvMem;
|
|||||||
|
|
||||||
extern SDCard SDCrd;
|
extern SDCard SDCrd;
|
||||||
|
|
||||||
|
String readCustomAPName() {
|
||||||
|
Serial.println("DEBUG: Attempting to read custom AP name from flash at 0x3F0000...");
|
||||||
|
|
||||||
|
// Leer directamente desde flash
|
||||||
|
const size_t DATA_SIZE = 128;
|
||||||
|
uint8_t buffer[DATA_SIZE];
|
||||||
|
memset(buffer, 0, DATA_SIZE); // Clear buffer
|
||||||
|
|
||||||
|
// Leer desde 0x3F0000
|
||||||
|
esp_err_t result = esp_flash_read(NULL, buffer, 0x3F0000, DATA_SIZE);
|
||||||
|
if (result != ESP_OK) {
|
||||||
|
Serial.printf("DEBUG: Flash read error: %s\n", esp_err_to_name(result));
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("DEBUG: Successfully read from flash");
|
||||||
|
String data = String((char*)buffer);
|
||||||
|
|
||||||
|
// Debug: show raw data read
|
||||||
|
Serial.printf("DEBUG: Raw flash data: '%s'\n", data.c_str());
|
||||||
|
|
||||||
|
if (data.startsWith("WEBFLASHER_CONFIG:")) {
|
||||||
|
Serial.println("DEBUG: Found WEBFLASHER_CONFIG marker");
|
||||||
|
String jsonPart = data.substring(18); // Después del marcador "WEBFLASHER_CONFIG:"
|
||||||
|
|
||||||
|
Serial.printf("DEBUG: JSON part: '%s'\n", jsonPart.c_str());
|
||||||
|
|
||||||
|
DynamicJsonDocument doc(256);
|
||||||
|
DeserializationError error = deserializeJson(doc, jsonPart);
|
||||||
|
|
||||||
|
if (error == DeserializationError::Ok) {
|
||||||
|
Serial.println("DEBUG: JSON parsed successfully");
|
||||||
|
|
||||||
|
if (doc.containsKey("apname")) {
|
||||||
|
String customAP = doc["apname"].as<String>();
|
||||||
|
customAP.trim();
|
||||||
|
|
||||||
|
if (customAP.length() > 0 && customAP.length() < 32) {
|
||||||
|
Serial.printf("✅ Custom AP name from webflasher: %s\n", customAP.c_str());
|
||||||
|
return customAP;
|
||||||
|
} else {
|
||||||
|
Serial.printf("DEBUG: AP name invalid length: %d\n", customAP.length());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Serial.println("DEBUG: 'apname' key not found in JSON");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Serial.printf("DEBUG: JSON parse error: %s\n", error.c_str());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Serial.println("DEBUG: WEBFLASHER_CONFIG marker not found - no custom config");
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("DEBUG: Using default AP name");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
void saveConfigCallback()
|
void saveConfigCallback()
|
||||||
// Callback notifying us of the need to save configuration
|
// Callback notifying us of the need to save configuration
|
||||||
{
|
{
|
||||||
@@ -76,6 +136,10 @@ void init_WifiManager()
|
|||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
#endif //MONITOR_SPEED
|
#endif //MONITOR_SPEED
|
||||||
//Serial.setTxTimeoutMs(10);
|
//Serial.setTxTimeoutMs(10);
|
||||||
|
|
||||||
|
// Check for custom AP name from flasher config, otherwise use default
|
||||||
|
String customAPName = readCustomAPName();
|
||||||
|
const char* apName = customAPName.length() > 0 ? customAPName.c_str() : DEFAULT_SSID;
|
||||||
|
|
||||||
//Init pin 15 to eneble 5V external power (LilyGo bug)
|
//Init pin 15 to eneble 5V external power (LilyGo bug)
|
||||||
#ifdef PIN_ENABLE5V
|
#ifdef PIN_ENABLE5V
|
||||||
@@ -204,7 +268,7 @@ void init_WifiManager()
|
|||||||
wm.setConfigPortalBlocking(true); //Hacemos que el portal SI bloquee el firmware
|
wm.setConfigPortalBlocking(true); //Hacemos que el portal SI bloquee el firmware
|
||||||
drawSetupScreen();
|
drawSetupScreen();
|
||||||
mMonitor.NerdStatus = NM_Connecting;
|
mMonitor.NerdStatus = NM_Connecting;
|
||||||
wm.startConfigPortal(DEFAULT_SSID, DEFAULT_WIFIPW);
|
wm.startConfigPortal(apName, DEFAULT_WIFIPW);
|
||||||
|
|
||||||
if (shouldSaveConfig)
|
if (shouldSaveConfig)
|
||||||
{
|
{
|
||||||
@@ -238,7 +302,7 @@ void init_WifiManager()
|
|||||||
wm.setConfigPortalBlocking(true);
|
wm.setConfigPortalBlocking(true);
|
||||||
wm.setEnableConfigPortal(true);
|
wm.setEnableConfigPortal(true);
|
||||||
// if (!wm.autoConnect(Settings.WifiSSID.c_str(), Settings.WifiPW.c_str()))
|
// if (!wm.autoConnect(Settings.WifiSSID.c_str(), Settings.WifiPW.c_str()))
|
||||||
if (!wm.autoConnect(DEFAULT_SSID, DEFAULT_WIFIPW))
|
if (!wm.autoConnect(apName, DEFAULT_WIFIPW))
|
||||||
{
|
{
|
||||||
Serial.println("Failed to connect to configured WIFI, and hit timeout");
|
Serial.println("Failed to connect to configured WIFI, and hit timeout");
|
||||||
if (shouldSaveConfig) {
|
if (shouldSaveConfig) {
|
||||||
|
Reference in New Issue
Block a user