diff --git a/Boards.h b/Boards.h index 47e79c8..694dc7e 100644 --- a/Boards.h +++ b/Boards.h @@ -96,7 +96,7 @@ #define MODEL_CA 0xCA // Heltec Lora32 v3, 868 MHz #define PRODUCT_H32_V4 0xC3 - #define BOARD_HELTEC32_V4 0x3B + #define BOARD_HELTEC32_V4 0x3F #define MODEL_C8 0xC8 // Heltec Lora32 v3, 850-950 MHz, 28dBm #define PRODUCT_HELTEC_T114 0xC2 // Heltec Mesh Node T114 @@ -158,6 +158,8 @@ #define HAS_EEPROM false #define HAS_INPUT false #define HAS_SLEEP false + #define HAS_LORA_PA false + #define HAS_LORA_LNA false #define PIN_DISP_SLEEP -1 #define VALIDATE_FIRMWARE true @@ -389,9 +391,12 @@ #define HAS_EEPROM true #define HAS_INPUT true #define HAS_SLEEP true + #define HAS_LORA_PA true + #define HAS_LORA_LNA true #define PIN_WAKEUP GPIO_NUM_0 #define WAKEUP_LEVEL 0 #define OCP_TUNED 0x18 + #define Vext GPIO_NUM_36 const int pin_btn_usr1 = 0; @@ -409,6 +414,16 @@ #define HAS_BUSY true #define DIO2_AS_RF_SWITCH true + #define LORA_LNA_GAIN 17 + #define LORA_PA_GC1109 true + #define LORA_PA_PWR_EN 7 + #define LORA_PA_CSD 2 + #define LORA_PA_CPS 46 + + #define PA_MAX_OUTPUT 28 + #define PA_GAIN_POINTS 22 + #define PA_GAIN_VALUES 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 9, 9, 8, 7 + const int pin_cs = 8; const int pin_busy = 13; const int pin_dio = 14; diff --git a/Config.h b/Config.h index ee2dee2..ca102d0 100644 --- a/Config.h +++ b/Config.h @@ -20,7 +20,7 @@ #define CONFIG_H #define MAJ_VERS 0x01 - #define MIN_VERS 0x53 + #define MIN_VERS 0x54 #define MODE_HOST 0x11 #define MODE_TNC 0x12 diff --git a/Makefile b/Makefile index b6f5a7b..637475c 100644 --- a/Makefile +++ b/Makefile @@ -125,6 +125,9 @@ firmware-heltec32_v2_extled: check_bt_buffers firmware-heltec32_v3: arduino-cli compile --log --fqbn esp32:esp32:heltec_wifi_lora_32_V3 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3A\"" +firmware-heltec32_v4: + arduino-cli compile --log --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3F\"" + firmware-rnode_ng_20: check_bt_buffers arduino-cli compile --log --fqbn esp32:esp32:ttgo-lora32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x40\"" @@ -204,6 +207,13 @@ upload-heltec32_v3: @sleep 3 python ./Release/esptool/esptool.py --chip esp32-s3 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin +upload-heltec32_v4: + arduino-cli upload -p /dev/ttyACM1 --fqbn esp32:esp32:esp32s3 + @sleep 1 + rnodeconf /dev/ttyACM1 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.esp32s3/RNode_Firmware.ino.bin) + #@sleep 3 + #python ./Release/esptool/esptool.py --chip esp32-s3 --port /dev/ttyACM0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin + upload-tdeck: arduino-cli upload -p /dev/ttyACM0 --fqbn esp32:esp32:esp32s3 @sleep 1 @@ -270,7 +280,7 @@ upload-xiao_s3: release: release-all -release-all: release-tbeam release-tbeam_sx1262 release-lora32_v10 release-lora32_v20 release-lora32_v21 release-lora32_v10_extled release-lora32_v20_extled release-lora32_v21_extled release-lora32_v21_tcxo release-featheresp32 release-genericesp32 release-heltec32_v2 release-heltec32_v3 release-heltec32_v2_extled release-heltec_t114 release-techo release-rnode_ng_20 release-rnode_ng_21 release-t3s3 release-t3s3_sx127x release-t3s3_sx1280_pa release-tdeck release-tbeam_supreme release-rak4631 release-xiao_s3 release-hashes +release-all: release-tbeam release-tbeam_sx1262 release-lora32_v10 release-lora32_v20 release-lora32_v21 release-lora32_v10_extled release-lora32_v20_extled release-lora32_v21_extled release-lora32_v21_tcxo release-featheresp32 release-genericesp32 release-heltec32_v2 release-heltec32_v3 release-heltec32_v4 release-heltec32_v2_extled release-heltec_t114 release-techo release-rnode_ng_20 release-rnode_ng_21 release-t3s3 release-t3s3_sx127x release-t3s3_sx1280_pa release-tdeck release-tbeam_supreme release-rak4631 release-xiao_s3 release-hashes release-hashes: python ./release_hashes.py > ./Release/release.json @@ -379,6 +389,15 @@ release-heltec32_v3: check_bt_buffers zip --junk-paths ./Release/rnode_firmware_heltec32v3.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_heltec32v3.boot_app0 build/rnode_firmware_heltec32v3.bin build/rnode_firmware_heltec32v3.bootloader build/rnode_firmware_heltec32v3.partitions rm -r build +release-heltec32_v4: check_bt_buffers + arduino-cli compile --fqbn esp32:esp32:heltec_wifi_lora_32_V3 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3F\"" + cp ~/.arduino15/packages/esp32/hardware/esp32/$(ARDUINO_ESP_CORE_VER)/tools/partitions/boot_app0.bin build/rnode_firmware_heltec32v4pa.boot_app0 + cp build/esp32.esp32.heltec_wifi_lora_32_V3/RNode_Firmware.ino.bin build/rnode_firmware_heltec32v4pa.bin + cp build/esp32.esp32.heltec_wifi_lora_32_V3/RNode_Firmware.ino.bootloader.bin build/rnode_firmware_heltec32v4pa.bootloader + cp build/esp32.esp32.heltec_wifi_lora_32_V3/RNode_Firmware.ino.partitions.bin build/rnode_firmware_heltec32v4pa.partitions + zip --junk-paths ./Release/rnode_firmware_heltec32v4pa.zip ./Release/esptool/esptool.py ./Release/console_image.bin build/rnode_firmware_heltec32v4pa.boot_app0 build/rnode_firmware_heltec32v4pa.bin build/rnode_firmware_heltec32v4pa.bootloader build/rnode_firmware_heltec32v4pa.partitions + rm -r build + release-heltec32_v2_extled: check_bt_buffers arduino-cli compile --fqbn esp32:esp32:heltec_wifi_lora_32_V2 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x38\" \"-DEXTERNAL_LEDS=true\"" cp ~/.arduino15/packages/esp32/hardware/esp32/$(ARDUINO_ESP_CORE_VER)/tools/partitions/boot_app0.bin build/rnode_firmware_heltec32v2.boot_app0 diff --git a/RNode_Firmware.ino b/RNode_Firmware.ino index d2437f1..42177ba 100644 --- a/RNode_Firmware.ino +++ b/RNode_Firmware.ino @@ -129,7 +129,7 @@ void setup() { boot_seq(); #endif - #if BOARD_MODEL != BOARD_RAK4631 && BOARD_MODEL != BOARD_HELTEC_T114 && BOARD_MODEL != BOARD_TECHO && BOARD_MODEL != BOARD_T3S3 && BOARD_MODEL != BOARD_TBEAM_S_V1 + #if BOARD_MODEL != BOARD_RAK4631 && BOARD_MODEL != BOARD_HELTEC_T114 && BOARD_MODEL != BOARD_TECHO && BOARD_MODEL != BOARD_T3S3 && BOARD_MODEL != BOARD_TBEAM_S_V1 && BOARD_MODEL != BOARD_HELTEC32_V4 // Some boards need to wait until the hardware UART is set up before booting // the full firmware. In the case of the RAK4631 and Heltec T114, the line below will wait // until a serial connection is actually established with a master. Thus, it @@ -856,7 +856,11 @@ void serial_callback(uint8_t sbyte) { } else { int txp = sbyte; #if MODEM == SX1262 - if (txp > 22) txp = 22; + #if HAS_LORA_PA + if (txp > PA_MAX_OUTPUT) txp = PA_MAX_OUTPUT; + #else + if (txp > 22) txp = 22; + #endif #elif MODEM == SX1280 #if HAS_PA if (txp > 20) txp = 20; @@ -1644,6 +1648,12 @@ void sleep_now() { update_display(true); #endif #endif + #if BOARD_MODEL == BOARD_HELTEC32_V4 + digitalWrite(LORA_PA_CPS, LOW); + digitalWrite(LORA_PA_CSD, LOW); + digitalWrite(LORA_PA_PWR_EN, LOW); + digitalWrite(Vext, HIGH); + #endif #if PIN_DISP_SLEEP >= 0 pinMode(PIN_DISP_SLEEP, OUTPUT); digitalWrite(PIN_DISP_SLEEP, DISP_SLEEP_LEVEL);