diff --git a/.gitignore b/.gitignore index a4938ce5..a99c3f05 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ data/* src/user_config_override.h platformio_override.ini +user_setups/active/* ## Visual Studio Code specific ###### .vscode diff --git a/platformio.ini b/platformio.ini index 84f3a1a8..cf390351 100644 --- a/platformio.ini +++ b/platformio.ini @@ -18,6 +18,8 @@ extra_configs = pin_config.ini ; -- Add customizations to this file only: platformio_override.ini + ; -- Put active [env] files in this dir to be included in the build menu + user_setups/active/*.ini default_envs = ; Uncomment the needed environments in platformio_override.ini @@ -125,262 +127,6 @@ hspi32 = ; 7 - mirror content, and rotate 90 deg anti-clockwise - -;*************************************************** -; STM32F4 build -;*************************************************** -[env:black_f407vg] -platform = ststm32 -board = diymore_f407vgt -board_build.mcu = stm32f407vgt6 -upload_protocol = dfu -monitor_port = COM7 ; To change the port, use platform_override.ini -build_flags = - ${env.build_flags} - ${flags.stm32_flags} - -I include/stm32f4 -; -- TFT_eSPI build options ------------------------ - ${lcd.lolin24} - ;-D TFT_MISO=PB4 ;Default - ;-D TFT_MOSI=PB5 ;Default - ;-D TFT_SCLK=PB3 ;Default - -D TFT_CS=PB11 ;D8 - -D TFT_DC=PC5 ;D3 - -D TFT_BCKL=-1 ;None, configurable via web UI (e.g. 2 for D4) - -D TOUCH_CS=PC4 ;NC - -D TFT_RST=-1 ;D4 - -D HASP_OUTPUT_PIN=PE0 ; User LED D2 on DevEBox board - -D HASP_INPUT_PIN=PD15 ; User Button K1 on DevEBox board - -D STM32_SERIAL1 ; Set this option to use Serial1 as default sersial port, leave out if using Serial2 - -D HAL_ETH_MODULE_ENABLED=1 ; enable ethernet support - -D LAN8742A_PHY_ADDRESS=0x01U ; set LAN8720 PHY address - -lib_deps = - ${env.lib_deps} - Ticker@^3.1.5 - ; STM32duino LwIP@^2.1.2 - ; STM32duino STM32Ethernet@^1.0.5 - https://github.com/stm32duino/LwIP.git - https://github.com/stm32duino/STM32Ethernet.git - -src_filter = +<*> -<.git/> -<.svn/> - - - - - + - -;*************************************************** - -[env:DevEBox_STM32F4xx] -platform = ststm32 -board = black_f407zg -board_build.mcu = stm32f407vgt6 -; upload_protocol = dfu -upload_protocol = stlink -debug_tool = stlink -monitor_port = COM19 ; To change the port, use platform_override.ini -build_flags = - ${env.build_flags} - ${flags.stm32_flags} - -I include/stm32f4 -; -- TFT_eSPI build options ------------------------ - ${lcd.lolin24} - ;-D TFT_MISO=PB4 ;Default - ;-D TFT_MOSI=PB5 ;Default - ;-D TFT_SCLK=PB3 ;Default - -D TFT_CS=PE13 ;D8 - -D TFT_DC=PE14 ;D3 - -D TFT_BCKL=-1 ;None, configurable via web UI (e.g. 2 for D4) - -D TOUCH_CS=PA6 ;NC - -D TFT_RST=-1 ;D4 - -D STM32 - -D TFT_SPI3 - -D USE_DMA_TO_TFT - -D HASP_USE_TASMOTA_SLAVE=1 - -D HASP_OUTPUT_PIN=PA1 ; User LED D2 on DevEBox board - -D HASP_INPUT_PIN=PA0 ; User Button K1 on DevEBox board - -D STM32_SERIAL1 ; Set this option to use Serial1 as default sersial port, leave out if using Serial2 - -D HASP_USE_ETHERNET=1 - -D HAL_ETH_MODULE_ENABLED=1 - -D LAN8742A_PHY_ADDRESS=0x01U - ; -D DP83848_PHY_ADDRESS=0x01U - -lib_deps = - ${env.lib_deps} - Ticker@^3.1.5 - ; STM32duino LwIP@^2.1.2 - ; STM32duino STM32Ethernet@^1.0.5 - https://github.com/stm32duino/LwIP.git - https://github.com/stm32duino/STM32Ethernet.git - -src_filter = +<*> -<.git/> -<.svn/> - - - - - + - - -;*************************************************** -; Generic ESP32 build -;*************************************************** -[env:esp32dev-mrb3511] -platform = espressif32 -board = esp32dev -upload_port = COM1 ; To change the port, use platform_override.ini -monitor_port = COM1 ; To change the port, use platform_override.ini -debug_tool = esp-prog -debug_init_break = tbreak setup - -build_flags = - ${flags.esp32_flags} -; -- TFT_eSPI build options ------------------------ - ${lcd.mrb3511} - -D TFT_BCKL=5 ;None, configurable via web UI (e.g. 2 for D4) - -D TFT_CS=33 ; Chip select control pin - -D TFT_DC=15 ; =RS; Data Command control pin - must use a pin in the range 0-31 - -D TFT_RST=32 ; Reset pin - -D TFT_WR=4 ; Write strobe control pin - must use a pin in the range 0-31 - -D TFT_RD=2 - -D TFT_D0=12 ; Must use pins in the range 0-31 for the data bus - -D TFT_D1=13 ; so a single register write sets/clears all bits - -D TFT_D2=26 - -D TFT_D3=25 - -D TFT_D4=17 - -D TFT_D5=16 - -D TFT_D6=27 - -D TFT_D7=14 - -D TOUCH_SDA=21 - -D TOUCH_SCL=22 - -D TOUCH_IRQ=34 ; use 34-39 as these are input only pins - -D TOUCH_RST=-1 ; not used, connected to 3.3V -; -- Debugging options ----------------------------- -; -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG - -; -- Library options ------------------------------- -lib_deps = - ${env.lib_deps} - https://github.com/netwizeBE/arduino-goodix.git ; GT911 touch screen driver - -src_filter = +<*> +<../drivers/stm32f429_disco> - - -;*************************************************** -; Generic ESP32 build with ILI9488 SPI 4-WIRE -;*************************************************** -[env:esp32dev-ili9488] -platform = espressif32 -board = esp32dev -upload_port = COM2 ; To change the port, use platform_override.ini -monitor_port = COM2 ; To change the port, use platform_override.ini -; upload_protocol = espota ; Use ArduinoOTA after flashing over serial -; upload_port = 10.4.0.171 ; IP of the ESP -; upload_flags = -; --port=3232 -debug_tool = esp-prog -debug_init_break = tbreak setup - -build_flags = - ${flags.esp32_flags} -; -- TFT_eSPI build options ------------------------ - -D USER_SETUP_LOADED=1 - -D ILI9488_DRIVER=1 - -D TFT_ROTATION=0 ; 0=0, 1=90, 2=180 or 3=270 degree - -D TFT_WIDTH=320 - -D TFT_HEIGHT=480 - -D TFT_MISO=19 ;// (leave TFT SDO disconnected if other SPI devices share MISO) - -D TFT_MOSI=23 - -D TFT_SCLK=18 - -D TFT_CS=15 ;// Chip select control pin - -D TFT_DC=2 ;// Data Command control pin - -D TFT_RST=4 ;// Reset pin (could connect to RST pin) - -D TFT_BCKL=5 ;None, configurable via web UI (e.g. 2 for D4) - -D SUPPORT_TRANSACTIONS - -D TOUCH_CS=22 - -D TOUCH_DRIVER=0 ; XPT2606 Resistive touch panel driver - -D SPI_FREQUENCY=27000000 - -D SPI_TOUCH_FREQUENCY=2500000 - -D SPI_READ_FREQUENCY=16000000 - -; -- Debugging options ----------------------------- -; -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG - -; -- Library options ------------------------------- -lib_deps = - ${env.lib_deps} - -src_filter = +<*> +<../drivers/stm32f429_disco> - - -;*************************************************** -; NodeMCU32S with MHS-4" RPI Display-B -;*************************************************** -[env:nodemcu32s-raspi] -platform = espressif32 -board = nodemcu-32s -upload_port = COM3 ; To change the port, use platform_override.ini -monitor_port = COM3 ; To change the port, use platform_override.ini -debug_tool = esp-prog -debug_init_break = tbreak setup - -build_flags = - ${flags.esp32_flags} -; -- TFT_eSPI build options ------------------------ - ${lcd.raspberrypi} - ${pins.vspi32} - -D TFT_CS=15 - -D TFT_DC=4 - -D TFT_RST=32 - -D TOUCH_CS=22 - -; -- Debugging options ----------------------------- -; -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG - -; -- Library options ------------------------------- -lib_deps = - ${env.lib_deps} - - -;*************************************************** -; ESP32 build -;*************************************************** -[env:d132-unoshield] -platform = espressif32 -board = esp32dev -upload_port = COM4 ; To change the port, use platform_override.ini -monitor_port = COM4 ; To change the port, use platform_override.ini - -build_flags = - ${flags.esp32_flags} -; -- TFT_eSPI build options ------------------------ - -D USER_SETUP_LOADED=1 - ;-D ST7796_DRIVER=1 ;3.95inch Arduino Display-UNO - -D ILI9486_DRIVER=1 ;3.5inch Arduino Display-UNO - -D ESP32_PARALLEL=1 - -D TFT_ROTATION=${lcd.TFT_ROTATION} - -D TFT_WIDTH=320 - -D TFT_HEIGHT=480 - ${pins.vspi32} - -D TFT_BCKL=-1 ;None, configurable via web UI (e.g. 2 for D4) - -D TFT_CS=33 ; Chip select control pin - -D TFT_DC=15 ; Data Command control pin - must use a pin in the range 0-31 - -D TFT_RST=32 ; Reset pin - -D TFT_WR=4 ; Write strobe control pin - must use a pin in the range 0-31 - -D TFT_RD=2 - -D TFT_D0=12 ; Must use pins in the range 0-31 for the data bus - -D TFT_D1=13 ; so a single register write sets/clears all bits - -D TFT_D2=26 - -D TFT_D3=25 - -D TFT_D4=17 - -D TFT_D5=16 - -D TFT_D6=27 - -D TFT_D7=14 - -D SD_CS=5 - -D SPI_FREQUENCY=40000000 - ;-D SPI_TOUCH_FREQUENCY=2500000 ; Uses ADC instead - -D SPI_READ_FREQUENCY=20000000 -; -- Debugging options ----------------------------- -; -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG - -; -- Library options ------------------------------- -lib_deps = - ${env.lib_deps} - -src_filter = +<*> +<../drivers/stm32f429_disco> - - - ;*************************************************** ; D1 Mini ESP32 with Lolin TFT 2.4" ;*************************************************** @@ -450,42 +196,6 @@ build_flags = -D TFT_RST=-1 ;RST -;*************************************************** -; ESP-12 build -;*************************************************** -[env:esp12e-st7735] -platform = espressif8266@^2.4.0 ;@2.3.2 -board = esp12e -upload_port = COM8 ; To change the port, use platform_override.ini -monitor_port = COM8 ; To change the port, use platform_override.ini -board_build.f_flash = 40000000L -board_build.flash_mode = dout -board_build.ldscript = eagle.flash.4m2m.ld ; 2Mb Spiffs -board_build.f_cpu = 160000000L ; set frequency to 160MHz -build_flags = - ${flags.esp8266_flags} -; -- TFT_eSPI build options ------------------------ - -D USER_SETUP_LOADED=1 - -D ST7735_DRIVER=1 - -D ST7735_BLACKTAB=1 - -D TFT_ROTATION=${lcd.TFT_ROTATION} - -D TFT_WIDTH=128 - -D TFT_HEIGHT=160 - -D TFT_MISO=-1 ;NC - -D TFT_MOSI=13 ;D7 - -D TFT_SCLK=14 ;D5 - -D TFT_CS=15 ;D8 - -D TFT_DC=0 ;D3 - -D TFT_BCKL=-1 ;None, configurable via web UI (e.g. 2 for D4) - -D TOUCH_CS=-1 ;NC - -D TFT_RST=2 ;D4 - -D SPI_FREQUENCY=27000000 - -; -- Library options ------------------------------- -lib_deps = - ${env.lib_deps} - ;Ethernet@<2.0.0 - ;*************************************************** ; Native build ;*************************************************** diff --git a/src/hasp_ethernet.cpp b/src/hasp_ethernet.cpp index 8c30ab9b..ad2cfe76 100644 --- a/src/hasp_ethernet.cpp +++ b/src/hasp_ethernet.cpp @@ -5,28 +5,83 @@ #if HASP_USE_ETHERNET>0 +#if defined(W5500_MOSI) && defined(W5500_MISO) && defined(W5500_SCLK) +#define W5500_LAN +#include +#include +#else #include #include #include +#endif EthernetClient EthClient; +IPAddress ip; void ethernetSetup() { - // start Ethernet and UDP - Log.notice(F("ETH: Begin Ethernet")); +#ifdef W5500_LAN + byte mac[6]; + uint32_t baseUID = (uint32_t )UID_BASE; + mac[0] = 0x00; + mac[1] = 0x80; + mac[2] = 0xE1; + mac[3] = (baseUID & 0x00FF0000) >> 16; + mac[4] = (baseUID & 0x0000FF00) >> 8; + mac[5] = (baseUID & 0x000000FF); + Ethernet.setCsPin(W5500_CS); + Ethernet.setRstPin(W5500_RST); + Ethernet.setHostname("HASP"); + Log.notice(F("ETH: Begin Ethernet W5500")); + if (Ethernet.begin(mac) == 0) { + Log.notice(F("ETH: Failed to configure Ethernet using DHCP")); + } else { + ip = Ethernet.localIP(); + Log.notice(F("ETH: DHCP Success got IP=%d.%d.%d.%d"),ip[0], ip[1], ip[2], ip[3]); + } + +#else + // start Ethernet and UDP + Log.notice(F("ETH: Begin Ethernet LAN8720")); if (Ethernet.begin() == 0) { Log.notice(F("ETH: Failed to configure Ethernet using DHCP")); } else { - IPAddress ip = Ethernet.localIP(); + ip = Ethernet.localIP(); Log.notice(F("ETH: DHCP Success got IP=%d.%d.%d.%d"),ip[0], ip[1], ip[2], ip[3]); } +#endif } void ethernetLoop(void) { - Ethernet.maintain(); + switch (Ethernet.maintain()) { + case 1: + //renewed fail + Log.notice(F("ETH: Error: renewed fail")); + break; + + case 2: + //renewed success + ip = Ethernet.localIP(); + Log.notice(F("ETH: DHCP Renew Success got IP=%d.%d.%d.%d"),ip[0], ip[1], ip[2], ip[3]); + break; + + case 3: + //rebind fail + Log.notice(F("Error: rebind fail")); + break; + + case 4: + //rebind success + ip = Ethernet.localIP(); + Log.notice(F("ETH: DHCP Rebind Success got IP=%d.%d.%d.%d"),ip[0], ip[1], ip[2], ip[3]); + break; + + default: + //nothing happened + break; + } }