Support ESP32devkit nerdMiner

This commit is contained in:
BitMaker 2023-08-11 13:37:25 +02:00
parent 3bbeb227a6
commit f1394cd2c2
9 changed files with 58 additions and 27 deletions

View File

@ -75,7 +75,7 @@ Recommended low difficulty share pools:
| Pool URL | Port | Web URL | Status | | Pool URL | Port | Web URL | Status |
|--- |--- |--- |--- | |--- |--- |--- |--- |
| public-pool.airdns.org | 21496 | https://public-pool.airdns.org:37273/ | Open Source Solo Bitcoin Mining Pool supporting open source miners | | web.public-pool.io | 21496 | https://web.public-pool.io | Open Source Solo Bitcoin Mining Pool supporting open source miners |
| nerdminers.org | | https://nerdminers.org | Team domain for future pool - Currently pointing to public-pool.airdns.org | | nerdminers.org | | https://nerdminers.org | Team domain for future pool - Currently pointing to public-pool.airdns.org |
| pool.nerdminer.io | 3333 | https://nerdminer.io | Mantained by CHMEX | | pool.nerdminer.io | 3333 | https://nerdminer.io | Mantained by CHMEX |
| pool.vkbit.com | 3333 | https://vkbit.com/ | Mantained by djerfy | | pool.vkbit.com | 3333 | https://vkbit.com/ | Mantained by djerfy |

View File

@ -81,9 +81,9 @@
//#include <User_Setups/Setup44_TTGO_CameraPlus.h> // Setup file for ESP32 and TTGO T-CameraPlus ST7789 SPI bus TFT 240x240 //#include <User_Setups/Setup44_TTGO_CameraPlus.h> // Setup file for ESP32 and TTGO T-CameraPlus ST7789 SPI bus TFT 240x240
//#include <User_Setups/Setup45_TTGO_T_Watch.h> // Setup file for ESP32 and TTGO T-Watch ST7789 SPI bus TFT 240x240 //#include <User_Setups/Setup45_TTGO_T_Watch.h> // Setup file for ESP32 and TTGO T-Watch ST7789 SPI bus TFT 240x240
//#include <User_Setups/Setup46_GC9A01_ESP32.h> // Setup file for ESP32 and GC9A01 SPI bus TFT 240x240 //#include <User_Setups/Setup46_GC9A01_ESP32.h> // Setup file for ESP32 and GC9A01 SPI bus TFT 240x240
#ifdef DEVKITV1
//#include <User_Setups/Setup47_ST7735.h> // Setup file for ESP32 configured for ST7735 128 x 128 animated eyes #include <User_Setups/Setup47_ST7735.h> // Setup file for ESP32 configured for ST7735 128 x 128 animated eyes
#endif
//#include <User_Setups/Setup50_SSD1963_Parallel.h> // Setup file for ESP32 and SSD1963 TFT display //#include <User_Setups/Setup50_SSD1963_Parallel.h> // Setup file for ESP32 and SSD1963 TFT display
//#include <User_Setups/Setup51_LilyPi_ILI9481.h> // Setup file for LilyGo LilyPi with ILI9481 display //#include <User_Setups/Setup51_LilyPi_ILI9481.h> // Setup file for LilyGo LilyPi with ILI9481 display
@ -127,9 +127,9 @@
//#include <User_Setups/Setup204_ESP32_TouchDown.h> // Setup file for the ESP32 TouchDown based on ILI9488 480 x 320 TFT //#include <User_Setups/Setup204_ESP32_TouchDown.h> // Setup file for the ESP32 TouchDown based on ILI9488 480 x 320 TFT
//#include <User_Setups/Setup205_ESP32_TouchDown_S3.h> // Setup file for the ESP32 TouchDown S3 based on ILI9488 480 x 320 TFT //#include <User_Setups/Setup205_ESP32_TouchDown_S3.h> // Setup file for the ESP32 TouchDown S3 based on ILI9488 480 x 320 TFT
#ifdef NERDMINERV2
#include <User_Setups/Setup206_LilyGo_T_Display_S3.h> #include <User_Setups/Setup206_LilyGo_T_Display_S3.h>
#endif
//#include <User_Setups/Setup301_BW16_ST7735.h> // Setup file for Bw16-based boards with ST7735 160 x 80 TFT //#include <User_Setups/Setup301_BW16_ST7735.h> // Setup file for Bw16-based boards with ST7735 160 x 80 TFT
//#include <User_Setups/SetupX_Template.h> // Template file for a setup //#include <User_Setups/SetupX_Template.h> // Template file for a setup

View File

@ -35,6 +35,7 @@ build_flags =
-D BOARD_HAS_PSRAM -D BOARD_HAS_PSRAM
-D ARDUINO_USB_MODE=1 -D ARDUINO_USB_MODE=1
-D ARDUINO_USB_CDC_ON_BOOT=1 -D ARDUINO_USB_CDC_ON_BOOT=1
-D NERDMINERV2=1
;-D DEBUG_MINING=1 ;-D DEBUG_MINING=1
lib_deps = lib_deps =
https://github.com/takkaO/OpenFontRender https://github.com/takkaO/OpenFontRender
@ -64,6 +65,7 @@ board_build.partitions = huge_app.csv
;board_build.partitions = default.csv ;board_build.partitions = default.csv
build_flags = build_flags =
-D DEVKITV1=1
;-D DEBUG_MINING=1 ;-D DEBUG_MINING=1
lib_deps = lib_deps =
https://github.com/takkaO/OpenFontRender https://github.com/takkaO/OpenFontRender
@ -89,8 +91,9 @@ upload_speed = 115200
# 2 x 4.5MB app, 6.875MB SPIFFS # 2 x 4.5MB app, 6.875MB SPIFFS
board_build.partitions = huge_app.csv board_build.partitions = huge_app.csv
;build_flags = build_flags =
;-D DEBUG_MINING=1 ;-D DEBUG_MINING=1
-D TDISPLAY=1
lib_deps = lib_deps =
https://github.com/takkaO/OpenFontRender https://github.com/takkaO/OpenFontRender
bblanchon/ArduinoJson@^6.21.2 bblanchon/ArduinoJson@^6.21.2

View File

@ -38,10 +38,12 @@ const char* ntpServer = "pool.ntp.org";
//void runMonitor(void *name); //void runMonitor(void *name);
void alternate_screen_state() { void alternate_screen_state() {
#ifdef NERDMINERV2
int screen_state= digitalRead(TFT_BL); int screen_state= digitalRead(TFT_BL);
//Serial.printf("Screen state is '%s', switching to '%s'", screen_state, !screen_state); //Serial.printf("Screen state is '%s', switching to '%s'", screen_state, !screen_state);
Serial.println("Switching display state"); Serial.println("Switching display state");
digitalWrite(TFT_BL, !screen_state); digitalWrite(TFT_BL, !screen_state);
#endif
} }
void alternate_screen_rotation() { void alternate_screen_rotation() {
@ -64,21 +66,22 @@ void setup()
//disableCore1WDT(); //disableCore1WDT();
// Setup the buttons // Setup the buttons
#ifdef NERDMINERV2
// Button 1 (Boot) // Button 1 (Boot)
button1.setPressTicks(5000); button1.setPressTicks(5000);
button1.attachClick(alternate_screen_state); button1.attachClick(alternate_screen_state);
button1.attachDoubleClick(alternate_screen_rotation); button1.attachDoubleClick(alternate_screen_rotation);
// button1.attachLongPressStart([]{Serial.println("Button 1 started a long press");});
// button1.attachLongPressStop([]{Serial.println("Button 1 stopped a long press");});
// button1.attachDuringLongPress([]{Serial.println("Button 1 is being held down");});
// Button 2 (GPIO14) // Button 2 (GPIO14)
button2.setPressTicks(5000); button2.setPressTicks(5000);
button2.attachClick(changeScreen); button2.attachClick(changeScreen);
// button2.attachDoubleClick([]{Serial.println("Button 2 was double clicked");});
button2.attachLongPressStart(reset_configurations); button2.attachLongPressStart(reset_configurations);
// button2.attachLongPressStop(reset_configurations); #elif defined(DEVKITV1)
// button2.attachDuringLongPress([]{Serial.println("Button 2 is being held down");}); //Standard ESP32-devKit
button1.setPressTicks(5000);
button1.attachLongPressStart(reset_configurations);
#endif
/******** INIT NERDMINER ************/ /******** INIT NERDMINER ************/
@ -122,7 +125,7 @@ void setup()
/******** CREATE STRATUM TASK *****/ /******** CREATE STRATUM TASK *****/
sprintf(name, "(%s)", "Stratum"); sprintf(name, "(%s)", "Stratum");
BaseType_t res2 = xTaskCreatePinnedToCore(runStratumWorker, "Stratum", 20000, (void*)name, 3, NULL,1); BaseType_t res2 = xTaskCreatePinnedToCore(runStratumWorker, "Stratum", 15000, (void*)name, 3, NULL,1);
/******** CREATE MINER TASKS *****/ /******** CREATE MINER TASKS *****/
@ -130,19 +133,12 @@ void setup()
// char *name = (char*) malloc(32); // char *name = (char*) malloc(32);
// sprintf(name, "(%d)", i); // sprintf(name, "(%d)", i);
// Start stratum tasks
sprintf(name, "(%s)", "Miner0");
//BaseType_t res = xTaskCreatePinnedToCore(runMiner, "0", 10000, (void*)name, 1, NULL, 0);
//BaseType_t res3 = xTaskCreatePinnedToCore(runMiner, "0", 10000, (void*)name, 1,NULL, 0);
//sprintf(name, "(%s)", "Miner1");
//BaseType_t res4 = xTaskCreatePinnedToCore(runMiner, "1", 10000, (void*)name, 1,NULL, 0);
//Serial.printf("Starting %s %s!\n", "1", res3 == pdPASS? "successful":"failed");
// Start mining tasks // Start mining tasks
//BaseType_t res = xTaskCreate(runWorker, name, 35000, (void*)name, 1, NULL); //BaseType_t res = xTaskCreate(runWorker, name, 35000, (void*)name, 1, NULL);
TaskHandle_t minerTask1, minerTask2 = NULL; TaskHandle_t minerTask1, minerTask2 = NULL;
xTaskCreate(runMiner, "Miner0", 15000, (void*)0, 1, &minerTask1); xTaskCreate(runMiner, "Miner0", 6000, (void*)0, 1, &minerTask1);
xTaskCreate(runMiner, "Miner1", 15000, (void*)1, 1, &minerTask2); xTaskCreate(runMiner, "Miner1", 6000, (void*)1, 1, &minerTask2);
esp_task_wdt_add(minerTask1); esp_task_wdt_add(minerTask1);
esp_task_wdt_add(minerTask2); esp_task_wdt_add(minerTask2);

View File

@ -233,6 +233,8 @@ void runMiner(void * task_id) {
unsigned int miner_id = (uint32_t)task_id; unsigned int miner_id = (uint32_t)task_id;
Serial.printf("[MINER] %d Started runMiner Task!\n", miner_id);
while(1){ while(1){
//Wait new job //Wait new job
@ -393,6 +395,10 @@ void runMonitor(void *name){
unsigned long mLastCheck = 0; unsigned long mLastCheck = 0;
mMonitor.screen = SCREEN_MINING; mMonitor.screen = SCREEN_MINING;
#ifdef DEVKITV1
mMonitor.screen = NO_SCREEN;
#endif
while(1){ while(1){
@ -406,6 +412,7 @@ void runMonitor(void *name){
case SCREEN_MINING: show_MinerScreen(mElapsed); break; case SCREEN_MINING: show_MinerScreen(mElapsed); break;
case SCREEN_CLOCK: show_ClockScreen(mElapsed); break; case SCREEN_CLOCK: show_ClockScreen(mElapsed); break;
case SCREEN_GLOBAL: show_GlobalHashScreen(mElapsed); break; case SCREEN_GLOBAL: show_GlobalHashScreen(mElapsed); break;
case NO_SCREEN: show_NoScreen(mElapsed); break;
} }
//Monitor state when hashrate is 0.0 //Monitor state when hashrate is 0.0

View File

@ -219,6 +219,16 @@ void changeScreen(void){
mMonitor.screen++; mMonitor.screen++;
if(mMonitor.screen> SCREEN_GLOBAL) mMonitor.screen = SCREEN_MINING; if(mMonitor.screen> SCREEN_GLOBAL) mMonitor.screen = SCREEN_MINING;
} }
void show_NoScreen(unsigned long mElapsed){
char CurrentHashrate[10] = {0};
sprintf(CurrentHashrate, "%.2f", (1.0*(elapsedKHs*1000))/mElapsed);
//Print hashrate to serial
Serial.printf(">>> Completed %d share(s), %d Khashes, avg. hashrate %s KH/s\n",
shares, totalKHashes, CurrentHashrate);
}
void show_MinerScreen(unsigned long mElapsed){ void show_MinerScreen(unsigned long mElapsed){
//Print background screen //Print background screen

View File

@ -7,6 +7,7 @@
#define SCREEN_MINING 0 #define SCREEN_MINING 0
#define SCREEN_CLOCK 1 #define SCREEN_CLOCK 1
#define SCREEN_GLOBAL 2 #define SCREEN_GLOBAL 2
#define NO_SCREEN 3 //Used when board has no TFT
//Time update period //Time update period
#define UPDATE_PERIOD_h 5 #define UPDATE_PERIOD_h 5
@ -47,6 +48,7 @@ void setup_monitor(void);
void show_MinerScreen(unsigned long mElapsed); void show_MinerScreen(unsigned long mElapsed);
void show_ClockScreen(unsigned long mElapsed); void show_ClockScreen(unsigned long mElapsed);
void show_GlobalHashScreen(unsigned long mElapsed); void show_GlobalHashScreen(unsigned long mElapsed);
void show_NoScreen(unsigned long mElapsed);
void changeScreen(void); void changeScreen(void);
#endif //MONITOR_API_H #endif //MONITOR_API_H

View File

@ -146,11 +146,16 @@ void init_WifiManager()
// Change to true when testing to force configuration every time we run // Change to true when testing to force configuration every time we run
bool forceConfig = false; bool forceConfig = false;
#if !defined(DEVKITV1)
// Check if button2 is pressed to enter configMode with actual configuration // Check if button2 is pressed to enter configMode with actual configuration
if(!digitalRead(PIN_BUTTON_2)){ if(!digitalRead(PIN_BUTTON_2)){
Serial.println(F("Button pressed to force start config mode"));
forceConfig = true; forceConfig = true;
wm.setBreakAfterConfig(true); //Set to detect config edition and save wm.setBreakAfterConfig(true); //Set to detect config edition and save
} }
#endif
bool spiffsSetup = loadConfigFile(); bool spiffsSetup = loadConfigFile();
if (!spiffsSetup) if (!spiffsSetup)
{ {

View File

@ -1,7 +1,15 @@
//Botón configuración
#ifdef NERDMINERV2
//Define config buttons for TTGO-TDisplay-s3
#define PIN_BUTTON_1 0 #define PIN_BUTTON_1 0
#define PIN_BUTTON_2 14 #define PIN_BUTTON_2 14
#define PIN_ENABLE5V 15 #define PIN_ENABLE5V 15
#elif defined(DEVKITV1)
//Standard ESP32-devKit
#define PIN_BUTTON_1 0
#define PIN_BUTTON_2 19 //Not used
#define PIN_ENABLE5V 21 //Not used
#endif
void init_WifiManager(); void init_WifiManager();
void wifiManagerProcess(); void wifiManagerProcess();