From 6092f5737ce69b86c440e0c52e6237e61c9660da Mon Sep 17 00:00:00 2001 From: cod3doomy Date: Tue, 8 Apr 2025 09:12:43 -0700 Subject: [PATCH 1/5] Initial commit with t-beam supreme sx1262 additions --- boards/t_beams3_supreme.json | 51 + platformio.ini | 1402 ++++++++++++++++- src/helpers/TBeamS3SupremeBoard.h | 99 ++ .../platformio.ini | 34 + .../lilygo_tbeam_supreme_SX1262/target.cpp | 65 + variants/lilygo_tbeam_supreme_SX1262/target.h | 17 + 6 files changed, 1642 insertions(+), 26 deletions(-) create mode 100644 boards/t_beams3_supreme.json create mode 100644 src/helpers/TBeamS3SupremeBoard.h create mode 100644 variants/lilygo_tbeam_supreme_SX1262/platformio.ini create mode 100644 variants/lilygo_tbeam_supreme_SX1262/target.cpp create mode 100644 variants/lilygo_tbeam_supreme_SX1262/target.h diff --git a/boards/t_beams3_supreme.json b/boards/t_beams3_supreme.json new file mode 100644 index 00000000..6a725247 --- /dev/null +++ b/boards/t_beams3_supreme.json @@ -0,0 +1,51 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32s3_out.ld", + "partitions": "default.csv", + "memory_type": "qio_qspi" + }, + "core": "esp32", + "extra_flags": [ + "-DARDUINO_USB_MODE=1", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [ + [ + "0x303A", + "0x1001" + ] + ], + "mcu": "esp32s3", + "variant": "esp32s3" + }, + "connectivity": [ + "wifi" + ], + "debug": { + "default_tool": "esp-builtin", + "onboard_tools": [ + "esp-builtin" + ], + "openocd_target": "esp32s3.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "LilyGo T-Beam supreme (8MB Flash 8MB PSRAM)", + "upload": { + "flash_size": "8MB", + "maximum_ram_size": 327680, + "maximum_size": 8388608, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://www.lilygo.cc/products/t-beamsupreme-m", + "vendor": "LilyGo" + } \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index 53ef30c4..df5a5513 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,28 +9,26 @@ ; https://docs.platformio.org/page/projectconf.html [platformio] -extra_configs = +extra_configs = variants/*/platformio.ini [arduino_base] framework = arduino monitor_speed = 115200 -lib_deps = - SPI - Wire - jgromes/RadioLib @ ^7.1.2 - rweather/Crypto @ ^0.4.0 - adafruit/RTClib @ ^2.1.3 - melopero/Melopero RV3028 @ ^1.1.0 +lib_deps = + SPI + Wire + jgromes/RadioLib @ ^7.1.2 + rweather/Crypto @ ^0.4.0 + adafruit/RTClib @ ^2.1.3 + melopero/Melopero RV3028 @ ^1.1.0 build_flags = -w -DNDEBUG -DRADIOLIB_STATIC_ONLY=1 -DRADIOLIB_GODMODE=1 - -D LORA_FREQ=869.525 - -D LORA_BW=250 - -D LORA_SF=10 -build_src_filter = - +<*.cpp> - + - -; ----------------- ESP32 --------------------- + -D LORA_FREQ=869.525 + -D LORA_BW=250 + -D LORA_SF=10 +build_src_filter = + +<*.cpp> + + [esp32_base] extends = arduino_base @@ -38,25 +36,1377 @@ platform = espressif32 monitor_filters = esp32_exception_decoder extra_scripts = merge-bin.py build_flags = ${arduino_base.build_flags} -; -D ESP32_CPU_FREQ=80 ; change it to your need build_src_filter = ${arduino_base.build_src_filter} [esp32_ota] -lib_deps = - me-no-dev/ESPAsyncWebServer @ ^3.6.0 - file://arch/esp32/AsyncElegantOTA +lib_deps = + me-no-dev/ESPAsyncWebServer @ ^3.6.0 + file://arch/esp32/AsyncElegantOTA -; ----------------- NRF52 --------------------- [nrf52_base] extends = arduino_base platform = nordicnrf52 build_flags = ${arduino_base.build_flags} - -D NRF52_PLATFORM + -D NRF52_PLATFORM [nrf52840_base] extends = nrf52_base build_flags = ${nrf52_base.build_flags} -lib_deps = - ${nrf52_base.lib_deps} - rweather/Crypto @ ^0.4.0 - https://github.com/adafruit/Adafruit_nRF52_Arduino +lib_deps = + ${nrf52_base.lib_deps} + rweather/Crypto @ ^0.4.0 + https://github.com/adafruit/Adafruit_nRF52_Arduino + +[Generic_ESPNOW] +extends = esp32_base +board = esp32-c3-devkitm-1 +build_flags = + ${esp32_base.build_flags} + -I variants/generic_espnow + -D PIN_BOARD_SDA=-1 + -D PIN_BOARD_SCL=-1 + -D PIN_USER_BTN=0 +build_src_filter = ${esp32_base.build_src_filter} + + + +<../variants/generic_espnow> + +[env:Generic_ESPNOW_terminal_chat] +extends = Generic_ESPNOW +build_flags = + ${Generic_ESPNOW.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${Generic_ESPNOW.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${Generic_ESPNOW.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Generic_ESPNOW_repeatr] +extends = Generic_ESPNOW +build_flags = + ${Generic_ESPNOW.build_flags} + -D ADVERT_NAME='"ESPNOW Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +build_src_filter = ${Generic_ESPNOW.build_src_filter} + +<../examples/simple_repeater/main.cpp> +lib_deps = + ${Generic_ESPNOW.lib_deps} + ${esp32_ota.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Generic_ESPNOW_comp_radio_usb] +extends = Generic_ESPNOW +build_flags = + ${Generic_ESPNOW.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${Generic_ESPNOW.build_src_filter} + +<../examples/companion_radio/main.cpp> +lib_deps = + ${Generic_ESPNOW.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Generic_ESPNOW_room_svr] +extends = Generic_ESPNOW +build_flags = + ${Generic_ESPNOW.build_flags} + -D ADVERT_NAME='"Heltec Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${Generic_ESPNOW.build_src_filter} + +<../examples/simple_room_server/main.cpp> +lib_deps = + ${Generic_ESPNOW.lib_deps} + ${esp32_ota.lib_deps} + +[Heltec_lora32_v2] +extends = esp32_base +board = heltec_wifi_lora_32_V2 +build_flags = + ${esp32_base.build_flags} + -I variants/heltec_v2 + -D HELTEC_LORA_V2 + -D PIN_BOARD_SDA=4 + -D PIN_BOARD_SCL=15 + -D PIN_USER_BTN=0 + -D PIN_OLED_RESET=16 + -D RADIO_CLASS=CustomSX1276 + -D WRAPPER_CLASS=CustomSX1276Wrapper + -D LORA_TX_POWER=20 + -D P_LORA_TX_LED=25 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/heltec_v2> +lib_deps = + ${esp32_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 + +[env:Heltec_v2_repeater] +extends = Heltec_lora32_v2 +build_flags = + ${Heltec_lora32_v2.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Heltec Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +build_src_filter = ${Heltec_lora32_v2.build_src_filter} + +<../examples/simple_repeater> + + +lib_deps = + ${Heltec_lora32_v2.lib_deps} + ${esp32_ota.lib_deps} + +[env:Heltec_v2_room_server] +extends = Heltec_lora32_v2 +build_flags = + ${Heltec_lora32_v2.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Heltec Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${Heltec_lora32_v2.build_src_filter} + + + +<../examples/simple_room_server> +lib_deps = + ${Heltec_lora32_v2.lib_deps} + ${esp32_ota.lib_deps} + +[env:Heltec_v2_terminal_chat] +extends = Heltec_lora32_v2 +build_flags = + ${Heltec_lora32_v2.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${Heltec_lora32_v2.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${Heltec_lora32_v2.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Heltec_v2_companion_radio_usb] +extends = Heltec_lora32_v2 +build_flags = + ${Heltec_lora32_v2.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${Heltec_lora32_v2.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${Heltec_lora32_v2.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Heltec_v2_companion_radio_ble] +extends = Heltec_lora32_v2 +build_flags = + ${Heltec_lora32_v2.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=0 + -D BLE_DEBUG_LOGGING=1 +build_src_filter = ${Heltec_lora32_v2.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${Heltec_lora32_v2.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[Heltec_lora32_v3] +extends = esp32_base +board = esp32-s3-devkitc-1 +build_flags = + ${esp32_base.build_flags} + -I variants/heltec_v3 + -D HELTEC_LORA_V3 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=22 + -D P_LORA_TX_LED=35 + -D PIN_BOARD_SDA=17 + -D PIN_BOARD_SCL=18 + -D PIN_USER_BTN=0 + -D SX126X_DIO2_AS_RF_SWITCH=true + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=130.0f + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/heltec_v3> +lib_deps = + ${esp32_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 + +[env:Heltec_v3_repeater] +extends = Heltec_lora32_v3 +build_flags = + ${Heltec_lora32_v3.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Heltec Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MESH_PACKET_LOGGING=1 +build_src_filter = ${Heltec_lora32_v3.build_src_filter} + + + +<../examples/simple_repeater> +lib_deps = + ${Heltec_lora32_v3.lib_deps} + ${esp32_ota.lib_deps} + +[env:Heltec_v3_room_server] +extends = Heltec_lora32_v3 +build_flags = + ${Heltec_lora32_v3.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Heltec Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${Heltec_lora32_v3.build_src_filter} + + + +<../examples/simple_room_server> +lib_deps = + ${Heltec_lora32_v3.lib_deps} + ${esp32_ota.lib_deps} + +[env:Heltec_v3_terminal_chat] +extends = Heltec_lora32_v3 +build_flags = + ${Heltec_lora32_v3.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${Heltec_lora32_v3.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${Heltec_lora32_v3.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Heltec_v3_companion_radio_usb] +extends = Heltec_lora32_v3 +build_flags = + ${Heltec_lora32_v3.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D DISPLAY_CLASS=SSD1306Display +build_src_filter = ${Heltec_lora32_v3.build_src_filter} + + + +<../examples/companion_radio> +lib_deps = + ${Heltec_lora32_v3.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Heltec_v3_companion_radio_ble] +extends = Heltec_lora32_v3 +build_flags = + ${Heltec_lora32_v3.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D DISPLAY_CLASS=SSD1306Display + -D BLE_PIN_CODE=0 + -D BLE_DEBUG_LOGGING=1 +build_src_filter = ${Heltec_lora32_v3.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${Heltec_lora32_v3.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Heltec_v3_companion_radio_wifi] +extends = Heltec_lora32_v3 +build_flags = + ${Heltec_lora32_v3.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D DISPLAY_CLASS=SSD1306Display + -D WIFI_DEBUG_LOGGING=1 + -D WIFI_SSID='"myssid"' + -D WIFI_PWD='"mypwd"' +build_src_filter = ${Heltec_lora32_v3.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${Heltec_lora32_v3.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Heltec_WSL3_repeater] +extends = Heltec_lora32_v3 +build_flags = + ${Heltec_lora32_v3.build_flags} + -D ADVERT_NAME='"Heltec Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MESH_PACKET_LOGGING=1 +build_src_filter = ${Heltec_lora32_v3.build_src_filter} + +<../examples/simple_repeater> +lib_deps = + ${Heltec_lora32_v3.lib_deps} + ${esp32_ota.lib_deps} + +[env:Heltec_WSL3_room_server] +extends = Heltec_lora32_v3 +build_src_filter = ${Heltec_lora32_v3.build_src_filter} + +<../examples/simple_room_server> +build_flags = + ${Heltec_lora32_v3.build_flags} + -D ADVERT_NAME='"Heltec Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +lib_deps = + ${Heltec_lora32_v3.lib_deps} + ${esp32_ota.lib_deps} + +[env:Heltec_WSL3_companion_radio_ble] +extends = Heltec_lora32_v3 +build_flags = + ${Heltec_lora32_v3.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 +build_src_filter = ${Heltec_lora32_v3.build_src_filter} + + + +<../examples/companion_radio> +lib_deps = + ${Heltec_lora32_v3.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[LilyGo_T3S3_sx1262] +extends = esp32_base +board = t3_s3_v1_x +build_flags = + ${esp32_base.build_flags} + -I variants/lilygo_t3s3 + -D LILYGO_T3S3 + -D P_LORA_DIO_1=33 + -D P_LORA_NSS=7 + -D P_LORA_RESET=8 + -D P_LORA_BUSY=34 + -D P_LORA_SCLK=5 + -D P_LORA_MISO=3 + -D P_LORA_MOSI=6 + -D P_LORA_TX_LED=37 + -D PIN_VBAT_READ=1 + -D PIN_USER_BTN=0 + -D PIN_BOARD_SDA=18 + -D PIN_BOARD_SCL=17 + -D P_LORA_TX_LED=37 + -D PIN_OLED_RESET=21 + -D SX126X_DIO2_AS_RF_SWITCH=true + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=130 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=22 + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/lilygo_t3s3> +lib_deps = + ${esp32_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 + +[env:LilyGo_T3S3_sx1262_Repeater] +extends = LilyGo_T3S3_sx1262 +build_flags = + ${LilyGo_T3S3_sx1262.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"T3S3-1262 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} + + + +<../examples/simple_repeater> +lib_deps = + ${LilyGo_T3S3_sx1262.lib_deps} + ${esp32_ota.lib_deps} + +[env:LilyGo_T3S3_sx1262_terminal_chat] +extends = LilyGo_T3S3_sx1262 +build_flags = + ${LilyGo_T3S3_sx1262.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${LilyGo_T3S3_sx1262.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:LilyGo_T3S3_sx1262_room_server] +extends = LilyGo_T3S3_sx1262 +build_flags = + ${LilyGo_T3S3_sx1262.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"T3S3-1262 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} + + + +<../examples/simple_room_server> +lib_deps = + ${LilyGo_T3S3_sx1262.lib_deps} + ${esp32_ota.lib_deps} + +[env:LilyGo_T3S3_sx1262_companion_radio_usb] +extends = LilyGo_T3S3_sx1262 +build_flags = + ${LilyGo_T3S3_sx1262.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} + + + +<../examples/companion_radio> +lib_deps = + ${LilyGo_T3S3_sx1262.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:LilyGo_T3S3_sx1262_companion_radio_ble] +extends = LilyGo_T3S3_sx1262 +build_flags = + ${LilyGo_T3S3_sx1262.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 +build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${LilyGo_T3S3_sx1262.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[LilyGo_TBeam] +extends = esp32_base +board = ttgo-t-beam +build_flags = + ${esp32_base.build_flags} + -I variants/lilygo_tbeam + -D LILYGO_TBEAM + -D RADIO_CLASS=CustomSX1276 + -D WRAPPER_CLASS=CustomSX1276Wrapper + -D LORA_TX_POWER=20 + -D P_LORA_TX_LED=4 + -D PIN_BOARD_SDA=21 + -D PIN_BOARD_SCL=22 + -D PIN_USER_BTN=38 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/lilygo_tbeam> +board_build.partitions = min_spiffs.csv +lib_deps = + ${esp32_base.lib_deps} + lewisxhe/XPowersLib@^0.2.7 + adafruit/Adafruit SSD1306 @ ^2.5.13 + +[env:Tbeam_companion_radio_ble] +extends = LilyGo_TBeam +board_build.upload.maximum_ram_size = 2000000 +build_flags = + ${LilyGo_TBeam.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=1 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 + -D MESH_PACKET_LOGGING=1 + -D MESH_DEBUG=1 + -D RADIOLIB_DEBUG_BASIC=1 +build_src_filter = ${LilyGo_TBeam.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${LilyGo_TBeam.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Tbeam_repeater] +extends = LilyGo_TBeam +build_flags = + ${LilyGo_TBeam.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Tbeam Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MESH_PACKET_LOGGING=1 +build_src_filter = ${LilyGo_TBeam.build_src_filter} + + + +<../examples/simple_repeater> +lib_deps = + ${LilyGo_TBeam.lib_deps} + ${esp32_ota.lib_deps} + +[T_Beam_S3_Supreme_SX1262] +extends = esp32_base +board = t_beams3_supreme +build_flags = + ${esp32_base.build_flags} + -I variants/lilygo_tbeam_supreme_SX1262 + -D T_BEAM_S3_SUPREME_SX1262 + -D BOARD_HAS_PSRAM + -D LORA_TX_POWER=22 + -D SX126X_DIO2_AS_RF_SWITCH=true + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=130 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D DISPLAY_CLASS=SSD1306Display + -D SX126X_RX_BOOSTED_GAIN=1 +lib_deps = + ${esp32_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 + +[env:T_Beam_S3_Supreme_SX1262_Repeater] +extends = T_Beam_S3_Supreme_SX1262 +build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + + + +<../examples/simple_repeater> +build_flags = + ${T_Beam_S3_Supreme_SX1262.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"T-Beam S3 Supreme SX1262 Repeater"' + -D ADVERT_LAT=0 + -D ADVERT_LON=0 + -D ADMIN_PASSWORD='"password"' +lib_deps = + esphome/AsyncTCP-esphome@^2.1.4 + esphome/ESPAsyncWebServer-esphome@^3.3.0 + wolfssl/wolfssl@^5.7.2 + rweather/Crypto@^0.4.0 + jgromes/RadioLib@^7.1.2 + adafruit/RTClib@^2.1.4 + adafruit/Adafruit GFX Library@^1.12.0 + melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit SSD1306@^2.5.13 + +[LilyGo_TLora_V2_1_1_6] +extends = esp32_base +board = ttgo-lora32-v1 +build_unflags = -Os +build_type = release +board_build.partitions = min_spiffs.csv +build_flags = + ${esp32_base.build_flags} + -I variants/lilygo_tlora_v2_1 + -Os -ffunction-sections -fdata-sections + -D LILYGO_TLORA + -D P_LORA_DIO_0=26 + -D P_LORA_DIO_1=33 + -D P_LORA_NSS=18 + -D P_LORA_RESET=14 + -D P_LORA_SCLK=5 + -D P_LORA_MISO=19 + -D P_LORA_MOSI=27 + -D P_LORA_TX_LED=2 + -D PIN_VBAT_READ=35 + -D PIN_USER_BTN=0 + -D RADIO_CLASS=CustomSX1276 + -D ARDUINO_LOOP_STACK_SIZE=16384 + -D DISPLAY_CLASS=SSD1306Display + -D WRAPPER_CLASS=CustomSX1276Wrapper + -D LORA_TX_POWER=20 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/lilygo_tlora_v2_1> +lib_deps = + ${esp32_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 + +[env:LilyGo_TLora_V2_1_1_6_Repeater] +extends = LilyGo_TLora_V2_1_1_6 +build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} + + + +<../examples/simple_repeater> +build_flags = + ${LilyGo_TLora_V2_1_1_6.build_flags} + -D ADVERT_NAME='"TLora-V2.1-1.6 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +lib_deps = + ${LilyGo_TLora_V2_1_1_6.lib_deps} + ${esp32_ota.lib_deps} + +[env:LilyGo_TLora_V2_1_1_6_terminal_chat] +extends = LilyGo_TLora_V2_1_1_6 +build_flags = + ${LilyGo_TLora_V2_1_1_6.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} + + + +<../examples/simple_repeater> +lib_deps = + ${LilyGo_TLora_V2_1_1_6.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:LilyGo_TLora_V2_1_1_6_companion_radio_usb] +extends = LilyGo_TLora_V2_1_1_6 +build_flags = + ${LilyGo_TLora_V2_1_1_6.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} + + + +<../examples/companion_radio> +lib_deps = + ${LilyGo_TLora_V2_1_1_6.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:LilyGo_TLora_V2_1_1_6_companion_radio_ble] +extends = LilyGo_TLora_V2_1_1_6 +build_flags = + ${LilyGo_TLora_V2_1_1_6.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 +build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${LilyGo_TLora_V2_1_1_6.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:LilyGo_TLora_V2_1_1_6_room_server] +extends = LilyGo_TLora_V2_1_1_6 +build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} + + + +<../examples/simple_room_server> +build_flags = + ${LilyGo_TLora_V2_1_1_6.build_flags} + -D ADVERT_NAME='"TLora-V2.1-1.6 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +lib_deps = + ${LilyGo_TLora_V2_1_1_6.lib_deps} + ${esp32_ota.lib_deps} + +[Faketec] +extends = nrf52840_base +board = promicro_nrf52840 +build_flags = ${nrf52840_base.build_flags} + -I variants/promicro + -D FAKETEC + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=22 + -D SX126X_CURRENT_LIMIT=130 + -D SX126X_RX_BOOSTED_GAIN=1 + -D DISPLAY_CLASS=SSD1306Display + -D PIN_BOARD_SCL=7 + -D PIN_BOARD_SDA=8 + -D PIN_OLED_RESET=-1 + -D PIN_USER_BTN=6 +build_src_filter = ${nrf52840_base.build_src_filter} + + + +<../variants/promicro> +lib_deps = + ${nrf52840_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 + +[env:Faketec_Repeater] +extends = Faketec +build_src_filter = ${Faketec.build_src_filter} +<../examples/simple_repeater> + +build_flags = + ${Faketec.build_flags} + -D ADVERT_NAME="\"Faketec Repeater\"" + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD="\"password\"" +lib_deps = + ${Faketec.lib_deps} + adafruit/RTClib @ ^2.1.3 + +[env:Faketec_room_server] +extends = Faketec +build_src_filter = ${Faketec.build_src_filter} +<../examples/simple_room_server> + +build_flags = + ${Faketec.build_flags} + -D ADVERT_NAME="\"Test Room\"" + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD="\"password\"" + -D ROOM_PASSWORD="\"hello\"" +lib_deps = + ${Faketec.lib_deps} + adafruit/RTClib @ ^2.1.3 + +[env:Faketec_terminal_chat] +extends = Faketec +build_flags = + ${Faketec.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${Faketec.build_src_filter} +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${Faketec.lib_deps} + densaugeo/base64 @ ~1.4.0 + adafruit/RTClib @ ^2.1.3 + +[env:Faketec_companion_radio_usb] +extends = Faketec +build_flags = + ${Faketec.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${Faketec.build_src_filter} +<../examples/companion_radio> +<../examples/companion_radio> + +lib_deps = + ${Faketec.lib_deps} + adafruit/RTClib @ ^2.1.3 + densaugeo/base64 @ ~1.4.0 + +[env:Faketec_companion_radio_ble] +extends = Faketec +build_flags = + ${Faketec.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 + -D ENABLE_PRIVATE_KEY_EXPORT=1 + -D ENABLE_PRIVATE_KEY_IMPORT=1 +build_src_filter = ${Faketec.build_src_filter} + +<../examples/companion_radio> + +lib_deps = + ${Faketec.lib_deps} + adafruit/RTClib @ ^2.1.3 + densaugeo/base64 @ ~1.4.0 + +[ProMicroLLCC68] +extends = nrf52840_base +board = promicro_nrf52840 +build_flags = ${nrf52840_base.build_flags} + -I variants/promicro + -D PROMICROLLCC68 + -D RADIO_CLASS=CustomLLCC68 + -D WRAPPER_CLASS=CustomLLCC68Wrapper + -D LORA_TX_POWER=22 + -D SX126X_CURRENT_LIMIT=130 + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${nrf52840_base.build_src_filter} + + + +<../variants/promicro> + +[env:ProMicroLLCC68_Repeater] +extends = ProMicroLLCC68 +build_src_filter = ${ProMicroLLCC68.build_src_filter} +<../examples/simple_repeater/main.cpp> +build_flags = + ${ProMicroLLCC68.build_flags} + -D ADVERT_NAME="\"ProMicroLLCC68 Repeater\"" + -D ADMIN_PASSWORD="\"password\"" +lib_deps = + ${ProMicroLLCC68.lib_deps} + adafruit/RTClib @ ^2.1.3 + +[env:ProMicroLLCC68_room_server] +extends = ProMicroLLCC68 +build_src_filter = ${ProMicroLLCC68.build_src_filter} +<../examples/simple_room_server/main.cpp> +build_flags = + ${ProMicroLLCC68.build_flags} + -D ADVERT_NAME="\"ProMicroLLCC68 Room\"" + -D ADMIN_PASSWORD="\"password\"" + -D ROOM_PASSWORD="\"hello\"" +lib_deps = + ${ProMicroLLCC68.lib_deps} + adafruit/RTClib @ ^2.1.3 + +[env:ProMicroLLCC68_terminal_chat] +extends = ProMicroLLCC68 +build_flags = + ${ProMicroLLCC68.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=1 +build_src_filter = ${ProMicroLLCC68.build_src_filter} +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${ProMicroLLCC68.lib_deps} + densaugeo/base64 @ ~1.4.0 + adafruit/RTClib @ ^2.1.3 + +[env:ProMicroLLCC68_companion_radio_usb] +extends = ProMicroLLCC68 +build_flags = + ${ProMicroLLCC68.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${ProMicroLLCC68.build_src_filter} +<../examples/companion_radio/main.cpp> +lib_deps = + ${ProMicroLLCC68.lib_deps} + adafruit/RTClib @ ^2.1.3 + densaugeo/base64 @ ~1.4.0 + +[env:ProMicroLLCC68_companion_radio_ble] +extends = ProMicroLLCC68 +build_flags = + ${ProMicroLLCC68.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 + -D ENABLE_PRIVATE_KEY_EXPORT=1 + -D ENABLE_PRIVATE_KEY_IMPORT=1 +build_src_filter = ${ProMicroLLCC68.build_src_filter} + +<../examples/companion_radio/main.cpp> +lib_deps = + ${ProMicroLLCC68.lib_deps} + adafruit/RTClib @ ^2.1.3 + densaugeo/base64 @ ~1.4.0 + +[rak4631] +extends = nrf52840_base +platform = https://github.com/maxgerhardt/platform-nordicnrf52.git#rak +board = wiscore_rak4631 +board_check = true +build_flags = ${nrf52840_base.build_flags} + -I variants/rak4631 + -D RAK_4631 + -D PIN_USER_BTN=9 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=22 + -D SX126X_CURRENT_LIMIT=130 + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${nrf52840_base.build_src_filter} + + + +<../variants/rak4631> +lib_deps = + ${nrf52840_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 + +[env:RAK_4631_Repeater] +extends = rak4631 +build_flags = + ${rak4631.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"RAK4631 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +build_src_filter = ${rak4631.build_src_filter} + + + +<../examples/simple_repeater> +lib_deps = + esphome/AsyncTCP-esphome@^2.1.4 + esphome/ESPAsyncWebServer-esphome@^3.3.0 + wolfssl/wolfssl@^5.7.2 + rweather/Crypto@^0.4.0 + jgromes/RadioLib@^7.1.2 + adafruit/RTClib@^2.1.4 + adafruit/Adafruit GFX Library@^1.12.0 + melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit SSD1306@^2.5.13 + +[env:RAK_4631_room_server] +extends = rak4631 +build_flags = + ${rak4631.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"Test Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +build_src_filter = ${rak4631.build_src_filter} + + + +<../examples/simple_room_server> +lib_deps = + esphome/AsyncTCP-esphome@^2.1.4 + esphome/ESPAsyncWebServer-esphome@^3.3.0 + wolfssl/wolfssl@^5.7.2 + rweather/Crypto@^0.4.0 + jgromes/RadioLib@^7.1.2 + adafruit/RTClib@^2.1.4 + adafruit/Adafruit GFX Library@^1.12.0 + melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit SSD1306@^2.5.13 + +[env:RAK_4631_companion_radio_usb] +extends = rak4631 +build_flags = + ${rak4631.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${rak4631.build_src_filter} + + + +<../examples/companion_radio> +lib_deps = + ${rak4631.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:RAK_4631_companion_radio_ble] +extends = rak4631 +build_flags = + ${rak4631.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 +build_src_filter = ${rak4631.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${rak4631.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:RAK_4631_terminal_chat] +extends = rak4631 +build_flags = + ${rak4631.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=1 + -D MESH_PACKET_LOGGING=1 + -D MESH_DEBUG=1 +build_src_filter = ${rak4631.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${rak4631.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[Station_G2] +extends = esp32_base +board = station-g2 +build_flags = + ${esp32_base.build_flags} + -I variants/station_g2 + -D STATION_G2 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=7 + -D PIN_USER_BTN=0 + -D SX126X_DIO2_AS_RF_SWITCH=true + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=130.0f +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/station_g2> +lib_deps = + ${esp32_base.lib_deps} + +[env:Station_G2_repeater] +extends = Station_G2 +build_flags = + ${Station_G2.build_flags} + -D ADVERT_NAME='"Station G2 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D MESH_PACKET_LOGGING=1 +build_src_filter = ${Station_G2.build_src_filter} + +<../examples/simple_repeater> +lib_deps = + ${Station_G2.lib_deps} + ${esp32_ota.lib_deps} + +[env:Station_G2_room_server] +extends = Station_G2 +build_src_filter = ${Station_G2.build_src_filter} + +<../examples/simple_room_server> +build_flags = + ${Station_G2.build_flags} + -D ADVERT_NAME='"Station G2 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +lib_deps = + ${Station_G2.lib_deps} + ${esp32_ota.lib_deps} + +[nrf52840_t1000e] +extends = nrf52_base +platform_packages = framework-arduinoadafruitnrf52 +build_flags = ${nrf52_base.build_flags} + -I src/helpers/nrf52 + -I lib/nrf52/s140_nrf52_7.3.0_API/include + -I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52 +lib_ignore = + BluetoothOTA + lvgl + lib5b4 +lib_deps = + ${nrf52_base.lib_deps} + rweather/Crypto @ ^0.4.0 + +[t1000-e] +extends = nrf52840_t1000e +board = tracker-t1000-e +board_build.ldscript = boards/nrf52840_s140_v7.ld +build_flags = ${nrf52840_t1000e.build_flags} + -I variants/t1000-e + -D T1000_E + -D PIN_USER_BTN=6 + -D USER_BTN_PRESSED=HIGH + -D PIN_STATUS_LED=24 + -D RADIO_CLASS=CustomLR1110 + -D WRAPPER_CLASS=CustomLR1110Wrapper + -D LORA_TX_POWER=22 +build_src_filter = ${nrf52840_t1000e.build_src_filter} + + + + + +<../variants/t1000-e> +debug_tool = jlink +upload_protocol = nrfutil + +[env:t1000e_companion_radio_ble] +extends = t1000-e +build_flags = ${t1000-e.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 + -D MESH_PACKET_LOGGING=1 + -D MESH_DEBUG=1 + -D RX_BOOSTED_GAIN=true + -D RF_SWITCH_TABLE + -D HAS_UI +build_src_filter = ${t1000-e.build_src_filter} + + + +<../examples/companion_radio/*.cpp> +lib_deps = ${t1000-e.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[nrf52840_t114] +extends = nrf52_base +platform_packages = framework-arduinoadafruitnrf52 +build_flags = ${nrf52_base.build_flags} + -I src/helpers/nrf52 + -I lib/nrf52/s140_nrf52_6.1.1_API/include + -I lib/nrf52/s140_nrf52_6.1.1_API/include/nrf52 +lib_deps = + ${nrf52_base.lib_deps} + rweather/Crypto @ ^0.4.0 + +[Heltec_t114] +extends = nrf52840_t114 +board = heltec_t114 +board_build.ldscript = boards/nrf52840_s140_v6.ld +build_flags = ${nrf52840_t114.build_flags} + -I variants/t114 + -DHELTEC_T114 + -D P_LORA_TX_LED=35 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=22 + -D SX126X_CURRENT_LIMIT=130 + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${nrf52840_t114.build_src_filter} + + + + + +<../variants/t114> +debug_tool = jlink +upload_protocol = nrfutil + +[env:Heltec_t114_repeater] +extends = Heltec_t114 +build_src_filter = ${Heltec_t114.build_src_filter} + +<../examples/simple_repeater/main.cpp> +build_flags = + ${Heltec_t114.build_flags} + -D ADVERT_NAME='"Heltec_T114 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +lib_deps = + esphome/AsyncTCP-esphome@^2.1.4 + esphome/ESPAsyncWebServer-esphome@^3.3.0 + wolfssl/wolfssl@^5.7.2 + rweather/Crypto@^0.4.0 + jgromes/RadioLib@^7.1.2 + adafruit/RTClib@^2.1.4 + adafruit/Adafruit GFX Library@^1.12.0 + melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit SSD1306@^2.5.13 + +[env:Heltec_t114_room_server] +extends = Heltec_t114 +build_src_filter = ${Heltec_t114.build_src_filter} + +<../examples/simple_room_server> +build_flags = + ${Heltec_t114.build_flags} + -D ADVERT_NAME='"Heltec_T114 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +lib_deps = + esphome/AsyncTCP-esphome@^2.1.4 + esphome/ESPAsyncWebServer-esphome@^3.3.0 + wolfssl/wolfssl@^5.7.2 + rweather/Crypto@^0.4.0 + jgromes/RadioLib@^7.1.2 + adafruit/RTClib@^2.1.4 + adafruit/Adafruit GFX Library@^1.12.0 + melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit SSD1306@^2.5.13 + +[env:Heltec_t114_companion_radio_ble] +extends = Heltec_t114 +build_flags = + ${Heltec_t114.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 +build_src_filter = ${Heltec_t114.build_src_filter} + + + +<../examples/companion_radio/main.cpp> +lib_deps = + ${Heltec_t114.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[nrf52840_techo] +extends = nrf52_base +platform_packages = framework-arduinoadafruitnrf52 +build_flags = ${nrf52_base.build_flags} + -I src/helpers/nrf52 + -I lib/nrf52/s140_nrf52_6.1.1_API/include + -I lib/nrf52/s140_nrf52_6.1.1_API/include/nrf52 +lib_deps = + ${nrf52_base.lib_deps} + rweather/Crypto @ ^0.4.0 + +[LilyGo_Techo] +extends = nrf52840_techo +board = t-echo +board_build.ldscript = boards/nrf52840_s140_v6.ld +build_flags = ${nrf52840_techo.build_flags} + -I variants/techo + -DLILYGO_TECHO + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=22 + -D SX126X_CURRENT_LIMIT=130 + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${nrf52840_techo.build_src_filter} + + + + + +<../variants/techo> +debug_tool = jlink +upload_protocol = nrfutil + +[env:LilyGo_T-Echo_repeater] +extends = LilyGo_Techo +build_src_filter = ${LilyGo_Techo.build_src_filter} +<../examples/simple_repeater/main.cpp> +build_flags = + ${LilyGo_Techo.build_flags} + -D ADVERT_NAME='"T-Echo Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +lib_deps = + esphome/AsyncTCP-esphome@^2.1.4 + esphome/ESPAsyncWebServer-esphome@^3.3.0 + wolfssl/wolfssl@^5.7.2 + rweather/Crypto@^0.4.0 + jgromes/RadioLib@^7.1.2 + adafruit/RTClib@^2.1.4 + adafruit/Adafruit GFX Library@^1.12.0 + melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit SSD1306@^2.5.13 + +[env:LilyGo_T-Echo_room_server] +extends = LilyGo_Techo +build_src_filter = ${LilyGo_Techo.build_src_filter} +<../examples/simple_room_server/main.cpp> +build_flags = + ${LilyGo_Techo.build_flags} + -D ADVERT_NAME='"T-Echo Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +lib_deps = + esphome/AsyncTCP-esphome@^2.1.4 + esphome/ESPAsyncWebServer-esphome@^3.3.0 + wolfssl/wolfssl@^5.7.2 + rweather/Crypto@^0.4.0 + jgromes/RadioLib@^7.1.2 + adafruit/RTClib@^2.1.4 + adafruit/Adafruit GFX Library@^1.12.0 + melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit SSD1306@^2.5.13 + +[env:LilyGo_T-Echo_companion_radio_ble] +extends = LilyGo_Techo +build_flags = + ${LilyGo_Techo.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 +build_src_filter = ${LilyGo_Techo.build_src_filter} + + + +<../examples/companion_radio/main.cpp> +lib_deps = + ${LilyGo_Techo.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[Xiao_esp32_C3] +extends = esp32_base +board = seeed_xiao_esp32c3 +build_flags = + ${esp32_base.build_flags} + -I variants/xiao_c3 + -D LORA_TX_BOOST_PIN=D3 + -D P_LORA_TX_LED=D5 + -D PIN_VBAT_READ=D0 + -D P_LORA_DIO_1=D2 + -D P_LORA_NSS=D4 + -D P_LORA_RESET=RADIOLIB_NC + -D P_LORA_BUSY=D1 + -D PIN_BOARD_SDA=D6 + -D PIN_BOARD_SCL=D7 + -D SX126X_DIO2_AS_RF_SWITCH=true + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=130.0f +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/xiao_c3> + +[env:Xiao_C3_Repeater_sx1262] +extends = Xiao_esp32_C3 +build_src_filter = ${Xiao_esp32_C3.build_src_filter} + +<../examples/simple_repeater/main.cpp> +build_flags = + ${Xiao_esp32_C3.build_flags} + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D SX126X_RX_BOOSTED_GAIN=1 + -D LORA_TX_POWER=22 + -D ADVERT_NAME='"Xiao Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +lib_deps = + ${Xiao_esp32_C3.lib_deps} + ${esp32_ota.lib_deps} + +[env:Xiao_C3_Repeater_sx1268] +extends = Xiao_esp32_C3 +build_src_filter = ${Xiao_esp32_C3.build_src_filter} + +<../examples/simple_repeater/main.cpp> +build_flags = + ${Xiao_esp32_C3.build_flags} + -D RADIO_CLASS=CustomSX1268 + -D WRAPPER_CLASS=CustomSX1268Wrapper + -D LORA_TX_POWER=22 + -D ADVERT_NAME='"Xiao Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +lib_deps = + ${Xiao_esp32_C3.lib_deps} + ${esp32_ota.lib_deps} + +[Xiao_S3_WIO] +extends = esp32_base +board = seeed_xiao_esp32s3 +board_check = true +board_build.mcu = esp32s3 +build_flags = ${esp32_base.build_flags} + -I variants/xiao_s3_wio + -D SEEED_XIAO_S3 + -D P_LORA_DIO_1=39 + -D P_LORA_NSS=41 + -D P_LORA_RESET=42 + -D P_LORA_BUSY=40 + -D P_LORA_SCLK=7 + -D P_LORA_MISO=8 + -D P_LORA_MOSI=9 + -D SX126X_DIO2_AS_RF_SWITCH=true + -D SX126X_DIO3_TCXO_VOLTAGE=1.8 + -D SX126X_CURRENT_LIMIT=130 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D LORA_TX_POWER=22 + -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/xiao_s3_wio> + +[env:Xiao_S3_WIO_Repeater] +extends = Xiao_S3_WIO +build_src_filter = ${Xiao_S3_WIO.build_src_filter} + +<../examples/simple_repeater/main.cpp> +build_flags = + ${Xiao_S3_WIO.build_flags} + -D ADVERT_NAME='"XiaoS3 Repeater"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' +lib_deps = + ${Xiao_S3_WIO.lib_deps} + ${esp32_ota.lib_deps} + +[env:Xiao_S3_WIO_room_server] +extends = Xiao_S3_WIO +build_src_filter = ${Xiao_S3_WIO.build_src_filter} + +<../examples/simple_room_server> +build_flags = + ${Xiao_S3_WIO.build_flags} + -D ADVERT_NAME='"XiaoS3 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +lib_deps = + ${Xiao_S3_WIO.lib_deps} + ${esp32_ota.lib_deps} + +[env:Xiao_S3_WIO_terminal_chat] +extends = Xiao_S3_WIO +build_flags = + ${Xiao_S3_WIO.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 +build_src_filter = ${Xiao_S3_WIO.build_src_filter} + +<../examples/simple_secure_chat/main.cpp> +lib_deps = + ${Xiao_S3_WIO.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Xiao_S3_WIO_companion_radio_ble] +extends = Xiao_S3_WIO +build_flags = + ${Xiao_S3_WIO.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 +build_src_filter = ${Xiao_S3_WIO.build_src_filter} + + + +<../examples/companion_radio/main.cpp> +lib_deps = + ${Xiao_S3_WIO.lib_deps} + densaugeo/base64 @ ~1.4.0 + +[env:Xiao_S3_WIO_companion_radio_serial] +extends = Xiao_S3_WIO +build_flags = + ${Xiao_S3_WIO.build_flags} + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D SERIAL_TX=D6 + -D SERIAL_RX=D7 +build_src_filter = ${Xiao_S3_WIO.build_src_filter} + + + +<../examples/companion_radio/main.cpp> +lib_deps = + ${Xiao_S3_WIO.lib_deps} + densaugeo/base64 @ ~1.4.0 diff --git a/src/helpers/TBeamS3SupremeBoard.h b/src/helpers/TBeamS3SupremeBoard.h new file mode 100644 index 00000000..5596d7dd --- /dev/null +++ b/src/helpers/TBeamS3SupremeBoard.h @@ -0,0 +1,99 @@ +#pragma once + +#include "ESP32Board.h" +#include +#include +#include +//#include "XPowersLib.h" + +// Defined using AXP2102 +//#define XPOWERS_CHIP_AXP2101 + +// LoRa radio module pins for TBeam S3 Supreme +#define P_LORA_DIO_1 1 //SX1262 IRQ pin +#define P_LORA_NSS 10 //SX1262 SS pin +#define P_LORA_RESET 5 //SX1262 Rest pin +#define P_LORA_BUSY 4 //SX1262 Busy pin +#define P_LORA_SCLK 12 //SX1262 SCLK pin +#define P_LORA_MISO 13 //SX1262 MISO pin +#define P_LORA_MOSI 11 //SX1262 MOSI pin + +#define PIN_BOARD_SDA_1 42 //SDA for PMU and PFC8563 (RTC) +#define PIN_BOARD_SCL_1 41 //SCL for PMU and PFC8563 (RTC) + +#define PIN_USER_BTN 0 + +#define P_BOARD_SPI_MOSI 35 //SPI for SD Card and QMI8653 (IMU) +#define P_BOARD_SPI_MISO 37 //SPI for SD Card and QMI8653 (IMU) +#define P_BOARD_SPI_SCK 36 //SPI for SD Card and QMI8653 (IMU) +#define P_BPARD_SPI_CS 47 //SPI for SD Card and QMI8653 (IMU) +#define P_BOARD_IMU_CS 34 //Pin for QMI8653 (IMU) CS + +#define P_BOARD_IMU_INT 33 //IMU Int pin +#define P_BOARD_RTC_INT 14 //RTC Int pin + +#define P_GPS_RX 9 //GPS RX pin +#define P_GPS_TX 8 //GPS TX pin +#define P_GPS_WAKE 7 //GPS Wakeup pin +#define P_GPS_1PPS 6 //GPS 1PPS pin + + +class TBeamS3SupremeBoard : public ESP32Board { + //XPowersAXP2101 PMU; + +public: + void begin() { + ESP32Board::begin(); + + //Manually set voltage rails + //PMU.setProtectedChannel(XPOWERS_DCDC3); //Set protected DCDC for esp32 + //PMU.setALDO2Voltage(3300); //Set LDO for LoRa module + //PMU.setALDO3Voltage(3300); //Set LDO for GPS module + //PMU.setDC1Voltage(3300); //Set DCDC for OLED + //PMU.enableALDO2(); //Enable LDO2 for LoRa + //PMU.enableALDO3(); //Enable LDO3 for GPS + + + esp_reset_reason_t reason = esp_reset_reason(); + if (reason == ESP_RST_DEEPSLEEP) { + long wakeup_source = esp_sleep_get_ext1_wakeup_status(); + if (wakeup_source & (1 << P_LORA_DIO_1)) { // received a LoRa packet (while in deep sleep) + startup_reason = BD_STARTUP_RX_PACKET; + } + + rtc_gpio_hold_dis((gpio_num_t)P_LORA_NSS); + rtc_gpio_deinit((gpio_num_t)P_LORA_DIO_1); + } + } + + void enterDeepSleep(uint32_t secs, int pin_wake_btn = -1) { + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + + // Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep + rtc_gpio_set_direction((gpio_num_t)P_LORA_DIO_1, RTC_GPIO_MODE_INPUT_ONLY); + rtc_gpio_pulldown_en((gpio_num_t)P_LORA_DIO_1); + + rtc_gpio_hold_en((gpio_num_t)P_LORA_NSS); + + if (pin_wake_btn < 0) { + esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet + } else { + esp_sleep_enable_ext1_wakeup( (1L << P_LORA_DIO_1) | (1L << pin_wake_btn), ESP_EXT1_WAKEUP_ANY_HIGH); // wake up on: recv LoRa packet OR wake btn + } + + if (secs > 0) { + esp_sleep_enable_timer_wakeup(secs * 1000000); + } + + // Finally set ESP32 into sleep + esp_deep_sleep_start(); // CPU halts here and never returns! + } + + uint16_t getBattMilliVolts() override { + return 0; + } + + const char* getManufacturerName() const override { + return "LilyGo T-Beam S3 Supreme SX1262"; + } +}; diff --git a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini new file mode 100644 index 00000000..2e269f01 --- /dev/null +++ b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini @@ -0,0 +1,34 @@ +[T_Beam_S3_Supreme_SX1262] +extends = esp32_base +board = t_beams3_supreme ; LILYGO T-Beam Supreme ESP32S3 with SX1262 +build_flags = + ${esp32_base.build_flags} + -I variants/lilygo_tbeam_supreme_SX1262 + -D LORA_TX_POWER=22 + -D RADIO_CLASS=CustomSX1262 + -D WRAPPER_CLASS=CustomSX1262Wrapper + -D DISPLAY_CLASS=SSD1306Display + -D SX126X_RX_BOOSTED_GAIN=1 +lib_deps = + ${esp32_base.lib_deps} + adafruit/Adafruit SSD1306 @ ^2.5.13 + ;lewisxhe/XPowersLib @ ^0.2.7 + +; === LILYGO T-Beam S3 Supreme with SX1262 environments === +[env:T_Beam_S3_Supreme_SX1262_Repeater] +extends = T_Beam_S3_Supreme_SX1262 +build_flags = + ${T_Beam_S3_Supreme_SX1262.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D ADVERT_NAME='"T-Beam S3 Supreme SX1262 Repeater"' + -D ADVERT_LAT=0 + -D ADVERT_LON=0 + -D ADMIN_PASSWORD='"password"' +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + + + +<../examples/simple_repeater> + lib_deps = + ${T_Beam_S3_Supreme_SX1262.lib_deps} + ${esp32_ota.lib_deps} \ No newline at end of file diff --git a/variants/lilygo_tbeam_supreme_SX1262/target.cpp b/variants/lilygo_tbeam_supreme_SX1262/target.cpp new file mode 100644 index 00000000..5d965dfb --- /dev/null +++ b/variants/lilygo_tbeam_supreme_SX1262/target.cpp @@ -0,0 +1,65 @@ +#include +#include "target.h" + +TBeamS3SupremeBoard board; + +#if defined(P_LORA_SCLK) + static SPIClass spi; + RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi); +#else + RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY); +#endif + +WRAPPER_CLASS radio_driver(radio, board); + +ESP32RTCClock fallback_clock; +AutoDiscoverRTCClock rtc_clock(fallback_clock); + +#ifndef LORA_CR + #define LORA_CR 5 +#endif + +bool radio_init() { + fallback_clock.begin(); + rtc_clock.begin(Wire); + +#ifdef SX126X_DIO3_TCXO_VOLTAGE + float tcxo = SX126X_DIO3_TCXO_VOLTAGE; +#else + float tcxo = 1.6f; +#endif + +#if defined(P_LORA_SCLK) + spi.begin(P_LORA_SCLK, P_LORA_MISO, P_LORA_MOSI); +#endif + int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 8, tcxo); + if (status != RADIOLIB_ERR_NONE) { + Serial.print("ERROR: radio init failed: "); + Serial.println(status); + return false; // fail + } + + radio.setCRC(1); + + return true; // success +} + +uint32_t radio_get_rng_seed() { + return radio.random(0x7FFFFFFF); +} + +void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr) { + radio.setFrequency(freq); + radio.setSpreadingFactor(sf); + radio.setBandwidth(bw); + radio.setCodingRate(cr); +} + +void radio_set_tx_power(uint8_t dbm) { + radio.setOutputPower(dbm); +} + +mesh::LocalIdentity radio_new_identity() { + RadioNoiseListener rng(radio); + return mesh::LocalIdentity(&rng); // create new random identity +} diff --git a/variants/lilygo_tbeam_supreme_SX1262/target.h b/variants/lilygo_tbeam_supreme_SX1262/target.h new file mode 100644 index 00000000..2ee3cb01 --- /dev/null +++ b/variants/lilygo_tbeam_supreme_SX1262/target.h @@ -0,0 +1,17 @@ +#pragma once + +#include +#include +#include +#include +#include + +extern TBeamS3SupremeBoard board; +extern WRAPPER_CLASS radio_driver; +extern AutoDiscoverRTCClock rtc_clock; + +bool radio_init(); +uint32_t radio_get_rng_seed(); +void radio_set_params(float freq, float bw, uint8_t sf, uint8_t cr); +void radio_set_tx_power(uint8_t dbm); +mesh::LocalIdentity radio_new_identity(); \ No newline at end of file From 3eded4581afe3c342291ef7b237d5c0a51321b4c Mon Sep 17 00:00:00 2001 From: cod3doomy Date: Tue, 8 Apr 2025 17:08:28 -0700 Subject: [PATCH 2/5] Checkpoint: Repeater env built and works with HW. No screen or other periphs --- platformio.ini | 66 ++++++++----------- src/helpers/TBeamS3SupremeBoard.h | 52 ++++++++++++--- .../platformio.ini | 7 +- 3 files changed, 76 insertions(+), 49 deletions(-) diff --git a/platformio.ini b/platformio.ini index df5a5513..147ca453 100644 --- a/platformio.ini +++ b/platformio.ini @@ -25,7 +25,7 @@ lib_deps = build_flags = -w -DNDEBUG -DRADIOLIB_STATIC_ONLY=1 -DRADIOLIB_GODMODE=1 -D LORA_FREQ=869.525 -D LORA_BW=250 - -D LORA_SF=10 + -D LORA_SF=11 build_src_filter = +<*.cpp> + @@ -562,12 +562,7 @@ board = t_beams3_supreme build_flags = ${esp32_base.build_flags} -I variants/lilygo_tbeam_supreme_SX1262 - -D T_BEAM_S3_SUPREME_SX1262 - -D BOARD_HAS_PSRAM -D LORA_TX_POWER=22 - -D SX126X_DIO2_AS_RF_SWITCH=true - -D SX126X_DIO3_TCXO_VOLTAGE=1.8 - -D SX126X_CURRENT_LIMIT=130 -D RADIO_CLASS=CustomSX1262 -D WRAPPER_CLASS=CustomSX1262Wrapper -D DISPLAY_CLASS=SSD1306Display @@ -578,9 +573,6 @@ lib_deps = [env:T_Beam_S3_Supreme_SX1262_Repeater] extends = T_Beam_S3_Supreme_SX1262 -build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} - + - +<../examples/simple_repeater> build_flags = ${T_Beam_S3_Supreme_SX1262.build_flags} -D DISPLAY_CLASS=SSD1306Display @@ -588,15 +580,20 @@ build_flags = -D ADVERT_LAT=0 -D ADVERT_LON=0 -D ADMIN_PASSWORD='"password"' +build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + + + +<../examples/simple_repeater> + lib_deps = + ${T_Beam_S3_Supreme_SX1262.lib_deps} + ${esp32_ota.lib_deps} lib_deps = - esphome/AsyncTCP-esphome@^2.1.4 - esphome/ESPAsyncWebServer-esphome@^3.3.0 - wolfssl/wolfssl@^5.7.2 + me-no-dev/AsyncTCP@^3.3.2 + esp32async/ESPAsyncWebServer@^3.7.5 rweather/Crypto@^0.4.0 jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 - adafruit/Adafruit GFX Library@^1.12.0 melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 [LilyGo_TLora_V2_1_1_6] @@ -905,14 +902,13 @@ build_src_filter = ${rak4631.build_src_filter} + +<../examples/simple_repeater> lib_deps = - esphome/AsyncTCP-esphome@^2.1.4 - esphome/ESPAsyncWebServer-esphome@^3.3.0 - wolfssl/wolfssl@^5.7.2 + me-no-dev/AsyncTCP@^3.3.2 + esp32async/ESPAsyncWebServer@^3.7.5 rweather/Crypto@^0.4.0 jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 - adafruit/Adafruit GFX Library@^1.12.0 melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 [env:RAK_4631_room_server] @@ -929,14 +925,13 @@ build_src_filter = ${rak4631.build_src_filter} + +<../examples/simple_room_server> lib_deps = - esphome/AsyncTCP-esphome@^2.1.4 - esphome/ESPAsyncWebServer-esphome@^3.3.0 - wolfssl/wolfssl@^5.7.2 + me-no-dev/AsyncTCP@^3.3.2 + esp32async/ESPAsyncWebServer@^3.7.5 rweather/Crypto@^0.4.0 jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 - adafruit/Adafruit GFX Library@^1.12.0 melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 [env:RAK_4631_companion_radio_usb] @@ -1128,14 +1123,13 @@ build_flags = -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' lib_deps = - esphome/AsyncTCP-esphome@^2.1.4 - esphome/ESPAsyncWebServer-esphome@^3.3.0 - wolfssl/wolfssl@^5.7.2 + me-no-dev/AsyncTCP@^3.3.2 + esp32async/ESPAsyncWebServer@^3.7.5 rweather/Crypto@^0.4.0 jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 - adafruit/Adafruit GFX Library@^1.12.0 melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 [env:Heltec_t114_room_server] @@ -1150,14 +1144,13 @@ build_flags = -D ADMIN_PASSWORD='"password"' -D ROOM_PASSWORD='"hello"' lib_deps = - esphome/AsyncTCP-esphome@^2.1.4 - esphome/ESPAsyncWebServer-esphome@^3.3.0 - wolfssl/wolfssl@^5.7.2 + me-no-dev/AsyncTCP@^3.3.2 + esp32async/ESPAsyncWebServer@^3.7.5 rweather/Crypto@^0.4.0 jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 - adafruit/Adafruit GFX Library@^1.12.0 melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 [env:Heltec_t114_companion_radio_ble] @@ -1215,14 +1208,13 @@ build_flags = -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' lib_deps = - esphome/AsyncTCP-esphome@^2.1.4 - esphome/ESPAsyncWebServer-esphome@^3.3.0 - wolfssl/wolfssl@^5.7.2 + me-no-dev/AsyncTCP@^3.3.2 + esp32async/ESPAsyncWebServer@^3.7.5 rweather/Crypto@^0.4.0 jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 - adafruit/Adafruit GFX Library@^1.12.0 melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 [env:LilyGo_T-Echo_room_server] @@ -1235,14 +1227,13 @@ build_flags = -D ADVERT_LON=0.0 -D ADMIN_PASSWORD='"password"' lib_deps = - esphome/AsyncTCP-esphome@^2.1.4 - esphome/ESPAsyncWebServer-esphome@^3.3.0 - wolfssl/wolfssl@^5.7.2 + me-no-dev/AsyncTCP@^3.3.2 + esp32async/ESPAsyncWebServer@^3.7.5 rweather/Crypto@^0.4.0 jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 - adafruit/Adafruit GFX Library@^1.12.0 melopero/Melopero RV3028@^1.1.0 + adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 [env:LilyGo_T-Echo_companion_radio_ble] @@ -1410,3 +1401,4 @@ build_src_filter = ${Xiao_S3_WIO.build_src_filter} lib_deps = ${Xiao_S3_WIO.lib_deps} densaugeo/base64 @ ~1.4.0 + adafruit/Adafruit SSD1306@^2.5.13 diff --git a/src/helpers/TBeamS3SupremeBoard.h b/src/helpers/TBeamS3SupremeBoard.h index 5596d7dd..3f4b2792 100644 --- a/src/helpers/TBeamS3SupremeBoard.h +++ b/src/helpers/TBeamS3SupremeBoard.h @@ -4,10 +4,10 @@ #include #include #include -//#include "XPowersLib.h" +#include "XPowersLib.h" -// Defined using AXP2102 -//#define XPOWERS_CHIP_AXP2101 +// Define using AXP2102 +#define XPOWERS_CHIP_AXP2101 // LoRa radio module pins for TBeam S3 Supreme #define P_LORA_DIO_1 1 //SX1262 IRQ pin @@ -39,19 +39,51 @@ class TBeamS3SupremeBoard : public ESP32Board { - //XPowersAXP2101 PMU; + XPowersAXP2101 PMU; public: void begin() { ESP32Board::begin(); //Manually set voltage rails - //PMU.setProtectedChannel(XPOWERS_DCDC3); //Set protected DCDC for esp32 - //PMU.setALDO2Voltage(3300); //Set LDO for LoRa module - //PMU.setALDO3Voltage(3300); //Set LDO for GPS module - //PMU.setDC1Voltage(3300); //Set DCDC for OLED - //PMU.enableALDO2(); //Enable LDO2 for LoRa - //PMU.enableALDO3(); //Enable LDO3 for GPS + //GPS + PMU.setALDO4Voltage(3300); + PMU.disableALDO3(); //disable to save power + + //Lora + PMU.setALDO3Voltage(3300); + PMU.enableALDO3(); + + //BME280 and OLED + PMU.setALDO1Voltage(3300); + PMU.enableALDO1(); + + //QMC6310U + PMU.setALDO2Voltage(3300); + PMU.disableALDO2(); //disable to save power + + //SD card + PMU.setBLDO1Voltage(3300); + PMU.enableBLDO1(); + + //Out to header pins + PMU.setBLDO2Voltage(3300); + PMU.enableBLDO2(); + + PMU.setDC4Voltage(XPOWERS_AXP2101_DCDC4_VOL2_MAX); //1.8V + PMU.enableDC4(); + + PMU.setDC5Voltage(3300); + PMU.enableDC5(); + + //Other power rails + PMU.setDC3Voltage(3300); //doesn't go anywhere in the schematic?? + PMU.enableDC3(); + + //Unused power rails + PMU.disableDC2(); + PMU.disableDLDO1(); + PMU.disableDLDO2(); esp_reset_reason_t reason = esp_reset_reason(); diff --git a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini index 2e269f01..55fa1341 100644 --- a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini +++ b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini @@ -9,10 +9,13 @@ build_flags = -D WRAPPER_CLASS=CustomSX1262Wrapper -D DISPLAY_CLASS=SSD1306Display -D SX126X_RX_BOOSTED_GAIN=1 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/lilygo_tbeam_supreme_SX1262> +board_build.partitions = min_spiffs.csv ; get around 4mb flash limit lib_deps = ${esp32_base.lib_deps} adafruit/Adafruit SSD1306 @ ^2.5.13 - ;lewisxhe/XPowersLib @ ^0.2.7 + lewisxhe/XPowersLib @ ^0.2.7 ; === LILYGO T-Beam S3 Supreme with SX1262 environments === [env:T_Beam_S3_Supreme_SX1262_Repeater] @@ -29,6 +32,6 @@ build_flags = build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + +<../examples/simple_repeater> - lib_deps = +lib_deps = ${T_Beam_S3_Supreme_SX1262.lib_deps} ${esp32_ota.lib_deps} \ No newline at end of file From c4c175cab8177f71b03f242c75e59aa80e07be14 Mon Sep 17 00:00:00 2001 From: cod3doomy Date: Wed, 9 Apr 2025 18:28:46 -0700 Subject: [PATCH 3/5] T-Beam Supreme: added PMU config, enabled pwr button. Repeater env verified working. --- src/helpers/TBeamS3SupremeBoard.h | 55 ++-------- .../platformio.ini | 24 ++++- .../lilygo_tbeam_supreme_SX1262/target.cpp | 101 +++++++++++++++++- 3 files changed, 131 insertions(+), 49 deletions(-) diff --git a/src/helpers/TBeamS3SupremeBoard.h b/src/helpers/TBeamS3SupremeBoard.h index 3f4b2792..91c68266 100644 --- a/src/helpers/TBeamS3SupremeBoard.h +++ b/src/helpers/TBeamS3SupremeBoard.h @@ -6,9 +6,6 @@ #include #include "XPowersLib.h" -// Define using AXP2102 -#define XPOWERS_CHIP_AXP2101 - // LoRa radio module pins for TBeam S3 Supreme #define P_LORA_DIO_1 1 //SX1262 IRQ pin #define P_LORA_NSS 10 //SX1262 SS pin @@ -18,8 +15,12 @@ #define P_LORA_MISO 13 //SX1262 MISO pin #define P_LORA_MOSI 11 //SX1262 MOSI pin +#define PIN_BOARD_SDA 17 //SDA for OLED, BME280, and QMC6310U (0x1C) +#define PIN_BOARD_SCL 18 //SCL for OLED, BME280, and QMC6310U (0x1C) + #define PIN_BOARD_SDA_1 42 //SDA for PMU and PFC8563 (RTC) #define PIN_BOARD_SCL_1 41 //SCL for PMU and PFC8563 (RTC) +#define PIN_PMU_IRQ 40 //IRQ pin for PMU #define PIN_USER_BTN 0 @@ -39,52 +40,13 @@ class TBeamS3SupremeBoard : public ESP32Board { - XPowersAXP2101 PMU; public: void begin() { - ESP32Board::begin(); - //Manually set voltage rails - //GPS - PMU.setALDO4Voltage(3300); - PMU.disableALDO3(); //disable to save power - - //Lora - PMU.setALDO3Voltage(3300); - PMU.enableALDO3(); - - //BME280 and OLED - PMU.setALDO1Voltage(3300); - PMU.enableALDO1(); - - //QMC6310U - PMU.setALDO2Voltage(3300); - PMU.disableALDO2(); //disable to save power - - //SD card - PMU.setBLDO1Voltage(3300); - PMU.enableBLDO1(); - - //Out to header pins - PMU.setBLDO2Voltage(3300); - PMU.enableBLDO2(); - - PMU.setDC4Voltage(XPOWERS_AXP2101_DCDC4_VOL2_MAX); //1.8V - PMU.enableDC4(); - - PMU.setDC5Voltage(3300); - PMU.enableDC5(); - - //Other power rails - PMU.setDC3Voltage(3300); //doesn't go anywhere in the schematic?? - PMU.enableDC3(); - - //Unused power rails - PMU.disableDC2(); - PMU.disableDLDO1(); - PMU.disableDLDO2(); - + bool power_init(); + + ESP32Board::begin(); esp_reset_reason_t reason = esp_reset_reason(); if (reason == ESP_RST_DEEPSLEEP) { @@ -122,9 +84,12 @@ public: } uint16_t getBattMilliVolts() override { + return 0; } + uint16_t getBattPercent(); + const char* getManufacturerName() const override { return "LilyGo T-Beam S3 Supreme SX1262"; } diff --git a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini index 55fa1341..fc42ea38 100644 --- a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini +++ b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini @@ -34,4 +34,26 @@ build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} +<../examples/simple_repeater> lib_deps = ${T_Beam_S3_Supreme_SX1262.lib_deps} - ${esp32_ota.lib_deps} \ No newline at end of file + ${esp32_ota.lib_deps} + + +[env:T_Beam_S3_Supreme_SX1262_companion_radio_ble] +extends = T_Beam_S3_Supreme_SX1262 +build_flags = + ${T_Beam_S3_Supreme_SX1262.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 +; -D ENABLE_PRIVATE_KEY_IMPORT=1 +; -D ENABLE_PRIVATE_KEY_EXPORT=1 + -D MESH_PACKET_LOGGING=1 + -D MESH_DEBUG=1 +build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${T_Beam_S3_Supreme_SX1262.lib_deps} + densaugeo/base64 @ ~1.4.0 \ No newline at end of file diff --git a/variants/lilygo_tbeam_supreme_SX1262/target.cpp b/variants/lilygo_tbeam_supreme_SX1262/target.cpp index 5d965dfb..801de5d2 100644 --- a/variants/lilygo_tbeam_supreme_SX1262/target.cpp +++ b/variants/lilygo_tbeam_supreme_SX1262/target.cpp @@ -3,6 +3,15 @@ TBeamS3SupremeBoard board; +// Using PMU AXP2102 +XPowersAXP2101 PMU; + +bool pmuIntFlag; + +#ifndef LORA_CR + #define LORA_CR 5 +#endif + #if defined(P_LORA_SCLK) static SPIClass spi; RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, spi); @@ -15,9 +24,88 @@ WRAPPER_CLASS radio_driver(radio, board); ESP32RTCClock fallback_clock; AutoDiscoverRTCClock rtc_clock(fallback_clock); -#ifndef LORA_CR - #define LORA_CR 5 -#endif + +static void setPMUIntFlag(){ + pmuIntFlag = true; +} + +bool power_init() { + + //Set LED to indicate charge state + PMU.setChargingLedMode(XPOWERS_CHG_LED_CTRL_CHG); + + //Set up PMU interrupts + pinMode(PIN_PMU_IRQ,INPUT_PULLUP); + attachInterrupt(PIN_PMU_IRQ,setPMUIntFlag,FALLING); + + //GPS + PMU.setALDO4Voltage(3300); + PMU.enableALDO3(); //disable to save power + + //Lora + PMU.setALDO3Voltage(3300); + PMU.enableALDO3(); + + //To avoid SPI bus issues during power up, reset OLED, sensor, and SD card supplies + if(ESP_SLEEP_WAKEUP_UNDEFINED == esp_sleep_get_wakeup_cause()){ + PMU.enableALDO1(); + PMU.enableALDO2(); + PMU.enableBLDO1(); + delay(250); + } + + //BME280 and OLED + PMU.setALDO1Voltage(3300); + PMU.enableALDO1(); + + //QMC6310U + PMU.setALDO2Voltage(3300); + PMU.enableALDO2(); //disable to save power + + //SD card + PMU.setBLDO1Voltage(3300); + PMU.enableBLDO1(); + + //Out to header pins + PMU.setBLDO2Voltage(3300); + PMU.enableBLDO2(); + + PMU.setDC4Voltage(XPOWERS_AXP2101_DCDC4_VOL2_MAX); //1.8V + PMU.enableDC4(); + + PMU.setDC5Voltage(3300); + PMU.enableDC5(); + + //Other power rails + PMU.setDC3Voltage(3300); //doesn't go anywhere in the schematic?? + PMU.enableDC3(); + + //Unused power rails + PMU.disableDC2(); + PMU.disableDLDO1(); + PMU.disableDLDO2(); + + //Set charge current to 300mA + PMU.setChargerConstantCurr(XPOWERS_AXP2101_CHG_CUR_300MA); + PMU.setChargeTargetVoltage(XPOWERS_AXP2101_CHG_VOL_4V2); + + //enable battery voltage measurement + PMU.enableBattVoltageMeasure(); + + //Reset and re-enable PMU interrupts + PMU.disableIRQ(XPOWERS_AXP2101_ALL_IRQ); + PMU.clearIrqStatus(); + PMU.enableIRQ( + XPOWERS_AXP2101_BAT_INSERT_IRQ | XPOWERS_AXP2101_BAT_REMOVE_IRQ | //Battery interrupts + XPOWERS_AXP2101_VBUS_INSERT_IRQ | XPOWERS_AXP2101_VBUS_REMOVE_IRQ | //VBUS interrupts + XPOWERS_AXP2101_PKEY_SHORT_IRQ | XPOWERS_AXP2101_PKEY_LONG_IRQ | //Power Key interrupts + XPOWERS_AXP2101_BAT_CHG_DONE_IRQ | XPOWERS_AXP2101_BAT_CHG_START_IRQ //Charging interrupts + ); + + //Set the power key off press time + PMU.setPowerKeyPressOffTime(XPOWERS_POWEROFF_4S); + +} bool radio_init() { fallback_clock.begin(); @@ -44,6 +132,13 @@ bool radio_init() { return true; // success } +uint16_t getBattPercent() { + //Read the PMU fuel guage for battery % + uint16_t battPercent = PMU.getBatteryPercent(); + + return battPercent; +} + uint32_t radio_get_rng_seed() { return radio.random(0x7FFFFFFF); } From 67ca4a1c8e356014a2a9a78807947df69c22e804 Mon Sep 17 00:00:00 2001 From: cod3doomy Date: Fri, 11 Apr 2025 18:17:20 -0700 Subject: [PATCH 4/5] T-Beam Supreme: Repeater and BLE working. Added PCF8563 RTC --- platformio.ini | 43 +++++++++++++------ src/helpers/AutoDiscoverRTCClock.cpp | 16 ++++++- src/helpers/TBeamS3SupremeBoard.h | 16 +++++-- .../platformio.ini | 5 +-- .../lilygo_tbeam_supreme_SX1262/target.cpp | 6 ++- 5 files changed, 64 insertions(+), 22 deletions(-) diff --git a/platformio.ini b/platformio.ini index 147ca453..2b51b8a4 100644 --- a/platformio.ini +++ b/platformio.ini @@ -569,13 +569,16 @@ build_flags = -D SX126X_RX_BOOSTED_GAIN=1 lib_deps = ${esp32_base.lib_deps} - adafruit/Adafruit SSD1306 @ ^2.5.13 + lewisxhe/PCF8563_Library@^1.0.1 + lewisxhe/XPowersLib @ ^0.2.7 +build_src_filter = ${esp32_base.build_src_filter} + +<../variants/lilygo_tbeam_supreme_SX1262> +board_build.partitions = min_spiffs.csv [env:T_Beam_S3_Supreme_SX1262_Repeater] extends = T_Beam_S3_Supreme_SX1262 build_flags = ${T_Beam_S3_Supreme_SX1262.build_flags} - -D DISPLAY_CLASS=SSD1306Display -D ADVERT_NAME='"T-Beam S3 Supreme SX1262 Repeater"' -D ADVERT_LAT=0 -D ADVERT_LON=0 @@ -583,18 +586,9 @@ build_flags = build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + +<../examples/simple_repeater> - lib_deps = +lib_deps = ${T_Beam_S3_Supreme_SX1262.lib_deps} ${esp32_ota.lib_deps} -lib_deps = - me-no-dev/AsyncTCP@^3.3.2 - esp32async/ESPAsyncWebServer@^3.7.5 - rweather/Crypto@^0.4.0 - jgromes/RadioLib@^7.1.2 - adafruit/RTClib@^2.1.4 - melopero/Melopero RV3028@^1.1.0 - adafruit/Adafruit GFX Library@^1.12.0 - adafruit/Adafruit SSD1306@^2.5.13 [LilyGo_TLora_V2_1_1_6] extends = esp32_base @@ -908,6 +902,7 @@ lib_deps = jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 melopero/Melopero RV3028@^1.1.0 + lewisxhe/PCF8563_Library@^1.0.1 adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 @@ -931,6 +926,7 @@ lib_deps = jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 melopero/Melopero RV3028@^1.1.0 + lewisxhe/PCF8563_Library@^1.0.1 adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 @@ -1129,6 +1125,7 @@ lib_deps = jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 melopero/Melopero RV3028@^1.1.0 + lewisxhe/PCF8563_Library@^1.0.1 adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 @@ -1150,6 +1147,7 @@ lib_deps = jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 melopero/Melopero RV3028@^1.1.0 + lewisxhe/PCF8563_Library@^1.0.1 adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 @@ -1214,6 +1212,7 @@ lib_deps = jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 melopero/Melopero RV3028@^1.1.0 + lewisxhe/PCF8563_Library@^1.0.1 adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 @@ -1233,6 +1232,7 @@ lib_deps = jgromes/RadioLib@^7.1.2 adafruit/RTClib@^2.1.4 melopero/Melopero RV3028@^1.1.0 + lewisxhe/PCF8563_Library@^1.0.1 adafruit/Adafruit GFX Library@^1.12.0 adafruit/Adafruit SSD1306@^2.5.13 @@ -1401,4 +1401,23 @@ build_src_filter = ${Xiao_S3_WIO.build_src_filter} lib_deps = ${Xiao_S3_WIO.lib_deps} densaugeo/base64 @ ~1.4.0 + +[env:T_Beam_S3_Supreme_SX1262_companion_radio_ble] +extends = T_Beam_S3_Supreme_SX1262 +build_flags = + ${T_Beam_S3_Supreme_SX1262.build_flags} + -D DISPLAY_CLASS=SSD1306Display + -D MAX_CONTACTS=100 + -D MAX_GROUP_CHANNELS=8 + -D BLE_PIN_CODE=123456 + -D BLE_DEBUG_LOGGING=1 + -D MESH_PACKET_LOGGING=1 + -D MESH_DEBUG=1 +build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + + + + + +<../examples/companion_radio> +lib_deps = + ${T_Beam_S3_Supreme_SX1262.lib_deps} + densaugeo/base64 @ ~1.4.0 adafruit/Adafruit SSD1306@^2.5.13 diff --git a/src/helpers/AutoDiscoverRTCClock.cpp b/src/helpers/AutoDiscoverRTCClock.cpp index e087744a..4c069d37 100644 --- a/src/helpers/AutoDiscoverRTCClock.cpp +++ b/src/helpers/AutoDiscoverRTCClock.cpp @@ -1,6 +1,7 @@ #include "AutoDiscoverRTCClock.h" #include "RTClib.h" #include +#include "pcf8563.h" static RTC_DS3231 rtc_3231; static bool ds3231_success = false; @@ -8,8 +9,12 @@ static bool ds3231_success = false; static Melopero_RV3028 rtc_rv3028; static bool rv3028_success = false; +static RTC_PCF8563 rtc_8563; +static bool rtc_8563_success = false; + #define DS3231_ADDRESS 0x68 #define RV3028_ADDRESS 0x52 +#define PCF8563_ADDRESS 0x51 bool AutoDiscoverRTCClock::i2c_probe(TwoWire& wire, uint8_t addr) { wire.beginTransmission(addr); @@ -28,6 +33,9 @@ void AutoDiscoverRTCClock::begin(TwoWire& wire) { rtc_rv3028.set24HourMode(); // Set the device to use the 24hour format (default) instead of the 12 hour format rv3028_success = true; } + if(i2c_probe(wire,PCF8563_ADDRESS)){ + rtc_8563_success = rtc_8563.begin(&wire); + } } uint32_t AutoDiscoverRTCClock::getCurrentTime() { @@ -44,6 +52,9 @@ uint32_t AutoDiscoverRTCClock::getCurrentTime() { rtc_rv3028.getSecond() ).unixtime(); } + if(rtc_8563_success){ + return rtc_8563.now().unixtime(); + } return _fallback->getCurrentTime(); } @@ -52,9 +63,10 @@ void AutoDiscoverRTCClock::setCurrentTime(uint32_t time) { rtc_3231.adjust(DateTime(time)); } else if (rv3028_success) { auto dt = DateTime(time); - uint8_t weekday = (dt.day() + (uint16_t)((2.6 * dt.month()) - 0.2) - (2 * (dt.year() / 100)) + dt.year() + (uint16_t)(dt.year() / 4) + (uint16_t)(dt.year() / 400)) % 7; - + uint8_t weekday = (dt.day() + (uint16_t)((2.6 * dt.month()) - 0.2) - (2 * (dt.year() / 100)) + dt.year() + (uint16_t)(dt.year() / 4) + (uint16_t)(dt.year() / 400)) % 7; rtc_rv3028.setTime(dt.year(), dt.month(), weekday, dt.day(), dt.hour(), dt.minute(), dt.second()); + } else if (rtc_8563_success) { + rtc_8563.adjust(DateTime(time)); } else { _fallback->setCurrentTime(time); } diff --git a/src/helpers/TBeamS3SupremeBoard.h b/src/helpers/TBeamS3SupremeBoard.h index 91c68266..ef6d4ccf 100644 --- a/src/helpers/TBeamS3SupremeBoard.h +++ b/src/helpers/TBeamS3SupremeBoard.h @@ -18,9 +18,9 @@ #define PIN_BOARD_SDA 17 //SDA for OLED, BME280, and QMC6310U (0x1C) #define PIN_BOARD_SCL 18 //SCL for OLED, BME280, and QMC6310U (0x1C) -#define PIN_BOARD_SDA_1 42 //SDA for PMU and PFC8563 (RTC) -#define PIN_BOARD_SCL_1 41 //SCL for PMU and PFC8563 (RTC) -#define PIN_PMU_IRQ 40 //IRQ pin for PMU +#define PIN_BOARD_SDA1 42 //SDA for PMU and PFC8563 (RTC) +#define PIN_BOARD_SCL1 41 //SCL for PMU and PFC8563 (RTC) +#define PIN_PMU_IRQ 40 //IRQ pin for PMU #define PIN_USER_BTN 0 @@ -38,6 +38,16 @@ #define P_GPS_WAKE 7 //GPS Wakeup pin #define P_GPS_1PPS 6 //GPS 1PPS pin +//I2C Wire addresses +#define I2C_BME280_ADD 0x76 //BME280 sensor I2C address on Wire +#define I2C_OLED_ADD 0x3C //SSD1306/SH1106 OLED I2C address on Wire +#define I2C_QMC6310U_ADD 0x1C //QMC6310U mag sensor I2C address on Wire + +//I2C Wire1 addresses +#define I2C_RTC_ADD 0x51 //RTC I2C address on Wire1 +#define I2C_PMU_ADD 0x34 //AXP2101 I2C address on Wire1 + + class TBeamS3SupremeBoard : public ESP32Board { diff --git a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini index fc42ea38..b2f76ec3 100644 --- a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini +++ b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini @@ -14,7 +14,7 @@ build_src_filter = ${esp32_base.build_src_filter} board_build.partitions = min_spiffs.csv ; get around 4mb flash limit lib_deps = ${esp32_base.lib_deps} - adafruit/Adafruit SSD1306 @ ^2.5.13 + lewisxhe/PCF8563_Library@^1.0.1 lewisxhe/XPowersLib @ ^0.2.7 ; === LILYGO T-Beam S3 Supreme with SX1262 environments === @@ -22,7 +22,6 @@ lib_deps = extends = T_Beam_S3_Supreme_SX1262 build_flags = ${T_Beam_S3_Supreme_SX1262.build_flags} - -D DISPLAY_CLASS=SSD1306Display -D ADVERT_NAME='"T-Beam S3 Supreme SX1262 Repeater"' -D ADVERT_LAT=0 -D ADVERT_LON=0 @@ -43,7 +42,7 @@ build_flags = ${T_Beam_S3_Supreme_SX1262.build_flags} -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 + -D MAX_GROUP_CHANNELS=1 -D BLE_PIN_CODE=123456 -D BLE_DEBUG_LOGGING=1 ; -D ENABLE_PRIVATE_KEY_IMPORT=1 diff --git a/variants/lilygo_tbeam_supreme_SX1262/target.cpp b/variants/lilygo_tbeam_supreme_SX1262/target.cpp index 801de5d2..6502e4af 100644 --- a/variants/lilygo_tbeam_supreme_SX1262/target.cpp +++ b/variants/lilygo_tbeam_supreme_SX1262/target.cpp @@ -30,7 +30,9 @@ static void setPMUIntFlag(){ } bool power_init() { - + //Start up Wire1 with PMU address + Wire1.begin(I2C_PMU_ADD); + //Set LED to indicate charge state PMU.setChargingLedMode(XPOWERS_CHG_LED_CTRL_CHG); @@ -109,7 +111,7 @@ bool power_init() { bool radio_init() { fallback_clock.begin(); - rtc_clock.begin(Wire); + rtc_clock.begin(Wire1); #ifdef SX126X_DIO3_TCXO_VOLTAGE float tcxo = SX126X_DIO3_TCXO_VOLTAGE; From f64470c581b53e6940c56b61abc2d73a962cce3e Mon Sep 17 00:00:00 2001 From: cod3doomy Date: Sat, 19 Apr 2025 19:51:01 -0700 Subject: [PATCH 5/5] t-beam s3 supreme: repeater, room server, and ble companion verified working. RTC working. No screen, GPS or sensors. --- platformio.ini | 1399 +---------------- src/helpers/TBeamS3SupremeBoard.h | 2 +- .../platformio.ini | 26 +- .../lilygo_tbeam_supreme_SX1262/target.cpp | 24 +- 4 files changed, 61 insertions(+), 1390 deletions(-) diff --git a/platformio.ini b/platformio.ini index 771ddf0d..985943c7 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,19 +9,19 @@ ; https://docs.platformio.org/page/projectconf.html [platformio] -extra_configs = +extra_configs = variants/*/platformio.ini [arduino_base] framework = arduino monitor_speed = 115200 -lib_deps = - SPI - Wire - jgromes/RadioLib @ ^7.1.2 - rweather/Crypto @ ^0.4.0 - adafruit/RTClib @ ^2.1.3 - melopero/Melopero RV3028 @ ^1.1.0 +lib_deps = + SPI + Wire + jgromes/RadioLib @ ^7.1.2 + rweather/Crypto @ ^0.4.0 + adafruit/RTClib @ ^2.1.3 + melopero/Melopero RV3028 @ ^1.1.0 build_flags = -w -DNDEBUG -DRADIOLIB_STATIC_ONLY=1 -DRADIOLIB_GODMODE=1 -D LORA_FREQ=869.525 -D LORA_BW=250 @@ -38,1388 +38,25 @@ platform = espressif32 monitor_filters = esp32_exception_decoder extra_scripts = merge-bin.py build_flags = ${arduino_base.build_flags} +; -D ESP32_CPU_FREQ=80 ; change it to your need build_src_filter = ${arduino_base.build_src_filter} [esp32_ota] -lib_deps = - me-no-dev/ESPAsyncWebServer @ ^3.6.0 - file://arch/esp32/AsyncElegantOTA +lib_deps = + me-no-dev/ESPAsyncWebServer @ ^3.6.0 + file://arch/esp32/AsyncElegantOTA +; ----------------- NRF52 --------------------- [nrf52_base] extends = arduino_base platform = nordicnrf52 build_flags = ${arduino_base.build_flags} - -D NRF52_PLATFORM + -D NRF52_PLATFORM [nrf52840_base] extends = nrf52_base build_flags = ${nrf52_base.build_flags} -lib_deps = - ${nrf52_base.lib_deps} - rweather/Crypto @ ^0.4.0 - https://github.com/adafruit/Adafruit_nRF52_Arduino - -[Generic_ESPNOW] -extends = esp32_base -board = esp32-c3-devkitm-1 -build_flags = - ${esp32_base.build_flags} - -I variants/generic_espnow - -D PIN_BOARD_SDA=-1 - -D PIN_BOARD_SCL=-1 - -D PIN_USER_BTN=0 -build_src_filter = ${esp32_base.build_src_filter} - + - +<../variants/generic_espnow> - -[env:Generic_ESPNOW_terminal_chat] -extends = Generic_ESPNOW -build_flags = - ${Generic_ESPNOW.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=1 -build_src_filter = ${Generic_ESPNOW.build_src_filter} - +<../examples/simple_secure_chat/main.cpp> -lib_deps = - ${Generic_ESPNOW.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Generic_ESPNOW_repeatr] -extends = Generic_ESPNOW -build_flags = - ${Generic_ESPNOW.build_flags} - -D ADVERT_NAME='"ESPNOW Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -build_src_filter = ${Generic_ESPNOW.build_src_filter} - +<../examples/simple_repeater/main.cpp> -lib_deps = - ${Generic_ESPNOW.lib_deps} - ${esp32_ota.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Generic_ESPNOW_comp_radio_usb] -extends = Generic_ESPNOW -build_flags = - ${Generic_ESPNOW.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 -build_src_filter = ${Generic_ESPNOW.build_src_filter} - +<../examples/companion_radio/main.cpp> -lib_deps = - ${Generic_ESPNOW.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Generic_ESPNOW_room_svr] -extends = Generic_ESPNOW -build_flags = - ${Generic_ESPNOW.build_flags} - -D ADVERT_NAME='"Heltec Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -build_src_filter = ${Generic_ESPNOW.build_src_filter} - +<../examples/simple_room_server/main.cpp> -lib_deps = - ${Generic_ESPNOW.lib_deps} - ${esp32_ota.lib_deps} - -[Heltec_lora32_v2] -extends = esp32_base -board = heltec_wifi_lora_32_V2 -build_flags = - ${esp32_base.build_flags} - -I variants/heltec_v2 - -D HELTEC_LORA_V2 - -D PIN_BOARD_SDA=4 - -D PIN_BOARD_SCL=15 - -D PIN_USER_BTN=0 - -D PIN_OLED_RESET=16 - -D RADIO_CLASS=CustomSX1276 - -D WRAPPER_CLASS=CustomSX1276Wrapper - -D LORA_TX_POWER=20 - -D P_LORA_TX_LED=25 -build_src_filter = ${esp32_base.build_src_filter} - +<../variants/heltec_v2> -lib_deps = - ${esp32_base.lib_deps} - adafruit/Adafruit SSD1306 @ ^2.5.13 - -[env:Heltec_v2_repeater] -extends = Heltec_lora32_v2 -build_flags = - ${Heltec_lora32_v2.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D ADVERT_NAME='"Heltec Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -build_src_filter = ${Heltec_lora32_v2.build_src_filter} - +<../examples/simple_repeater> - + -lib_deps = - ${Heltec_lora32_v2.lib_deps} - ${esp32_ota.lib_deps} - -[env:Heltec_v2_room_server] -extends = Heltec_lora32_v2 -build_flags = - ${Heltec_lora32_v2.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D ADVERT_NAME='"Heltec Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -build_src_filter = ${Heltec_lora32_v2.build_src_filter} - + - +<../examples/simple_room_server> -lib_deps = - ${Heltec_lora32_v2.lib_deps} - ${esp32_ota.lib_deps} - -[env:Heltec_v2_terminal_chat] -extends = Heltec_lora32_v2 -build_flags = - ${Heltec_lora32_v2.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=1 -build_src_filter = ${Heltec_lora32_v2.build_src_filter} - +<../examples/simple_secure_chat/main.cpp> -lib_deps = - ${Heltec_lora32_v2.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Heltec_v2_companion_radio_usb] -extends = Heltec_lora32_v2 -build_flags = - ${Heltec_lora32_v2.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 -build_src_filter = ${Heltec_lora32_v2.build_src_filter} - + - + - +<../examples/companion_radio> -lib_deps = - ${Heltec_lora32_v2.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Heltec_v2_companion_radio_ble] -extends = Heltec_lora32_v2 -build_flags = - ${Heltec_lora32_v2.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=0 - -D BLE_DEBUG_LOGGING=1 -build_src_filter = ${Heltec_lora32_v2.build_src_filter} - + - + - +<../examples/companion_radio> -lib_deps = - ${Heltec_lora32_v2.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[Heltec_lora32_v3] -extends = esp32_base -board = esp32-s3-devkitc-1 -build_flags = - ${esp32_base.build_flags} - -I variants/heltec_v3 - -D HELTEC_LORA_V3 - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D LORA_TX_POWER=22 - -D P_LORA_TX_LED=35 - -D PIN_BOARD_SDA=17 - -D PIN_BOARD_SCL=18 - -D PIN_USER_BTN=0 - -D SX126X_DIO2_AS_RF_SWITCH=true - -D SX126X_DIO3_TCXO_VOLTAGE=1.8 - -D SX126X_CURRENT_LIMIT=130.0f - -D SX126X_RX_BOOSTED_GAIN=1 -build_src_filter = ${esp32_base.build_src_filter} - +<../variants/heltec_v3> -lib_deps = - ${esp32_base.lib_deps} - adafruit/Adafruit SSD1306 @ ^2.5.13 - -[env:Heltec_v3_repeater] -extends = Heltec_lora32_v3 -build_flags = - ${Heltec_lora32_v3.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D ADVERT_NAME='"Heltec Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D MESH_PACKET_LOGGING=1 -build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + - +<../examples/simple_repeater> -lib_deps = - ${Heltec_lora32_v3.lib_deps} - ${esp32_ota.lib_deps} - -[env:Heltec_v3_room_server] -extends = Heltec_lora32_v3 -build_flags = - ${Heltec_lora32_v3.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D ADVERT_NAME='"Heltec Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + - +<../examples/simple_room_server> -lib_deps = - ${Heltec_lora32_v3.lib_deps} - ${esp32_ota.lib_deps} - -[env:Heltec_v3_terminal_chat] -extends = Heltec_lora32_v3 -build_flags = - ${Heltec_lora32_v3.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=1 -build_src_filter = ${Heltec_lora32_v3.build_src_filter} - +<../examples/simple_secure_chat/main.cpp> -lib_deps = - ${Heltec_lora32_v3.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Heltec_v3_companion_radio_usb] -extends = Heltec_lora32_v3 -build_flags = - ${Heltec_lora32_v3.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D DISPLAY_CLASS=SSD1306Display -build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + - +<../examples/companion_radio> -lib_deps = - ${Heltec_lora32_v3.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Heltec_v3_companion_radio_ble] -extends = Heltec_lora32_v3 -build_flags = - ${Heltec_lora32_v3.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D DISPLAY_CLASS=SSD1306Display - -D BLE_PIN_CODE=0 - -D BLE_DEBUG_LOGGING=1 -build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + - + - +<../examples/companion_radio> -lib_deps = - ${Heltec_lora32_v3.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Heltec_v3_companion_radio_wifi] -extends = Heltec_lora32_v3 -build_flags = - ${Heltec_lora32_v3.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D DISPLAY_CLASS=SSD1306Display - -D WIFI_DEBUG_LOGGING=1 - -D WIFI_SSID='"myssid"' - -D WIFI_PWD='"mypwd"' -build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + - + - +<../examples/companion_radio> -lib_deps = - ${Heltec_lora32_v3.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Heltec_WSL3_repeater] -extends = Heltec_lora32_v3 -build_flags = - ${Heltec_lora32_v3.build_flags} - -D ADVERT_NAME='"Heltec Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D MESH_PACKET_LOGGING=1 -build_src_filter = ${Heltec_lora32_v3.build_src_filter} - +<../examples/simple_repeater> -lib_deps = - ${Heltec_lora32_v3.lib_deps} - ${esp32_ota.lib_deps} - -[env:Heltec_WSL3_room_server] -extends = Heltec_lora32_v3 -build_src_filter = ${Heltec_lora32_v3.build_src_filter} - +<../examples/simple_room_server> -build_flags = - ${Heltec_lora32_v3.build_flags} - -D ADVERT_NAME='"Heltec Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -lib_deps = - ${Heltec_lora32_v3.lib_deps} - ${esp32_ota.lib_deps} - -[env:Heltec_WSL3_companion_radio_ble] -extends = Heltec_lora32_v3 -build_flags = - ${Heltec_lora32_v3.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 -build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + - +<../examples/companion_radio> -lib_deps = - ${Heltec_lora32_v3.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[LilyGo_T3S3_sx1262] -extends = esp32_base -board = t3_s3_v1_x -build_flags = - ${esp32_base.build_flags} - -I variants/lilygo_t3s3 - -D LILYGO_T3S3 - -D P_LORA_DIO_1=33 - -D P_LORA_NSS=7 - -D P_LORA_RESET=8 - -D P_LORA_BUSY=34 - -D P_LORA_SCLK=5 - -D P_LORA_MISO=3 - -D P_LORA_MOSI=6 - -D P_LORA_TX_LED=37 - -D PIN_VBAT_READ=1 - -D PIN_USER_BTN=0 - -D PIN_BOARD_SDA=18 - -D PIN_BOARD_SCL=17 - -D P_LORA_TX_LED=37 - -D PIN_OLED_RESET=21 - -D SX126X_DIO2_AS_RF_SWITCH=true - -D SX126X_DIO3_TCXO_VOLTAGE=1.8 - -D SX126X_CURRENT_LIMIT=130 - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D LORA_TX_POWER=22 - -D SX126X_RX_BOOSTED_GAIN=1 -build_src_filter = ${esp32_base.build_src_filter} - +<../variants/lilygo_t3s3> -lib_deps = - ${esp32_base.lib_deps} - adafruit/Adafruit SSD1306 @ ^2.5.13 - -[env:LilyGo_T3S3_sx1262_Repeater] -extends = LilyGo_T3S3_sx1262 -build_flags = - ${LilyGo_T3S3_sx1262.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D ADVERT_NAME='"T3S3-1262 Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} - + - +<../examples/simple_repeater> -lib_deps = - ${LilyGo_T3S3_sx1262.lib_deps} - ${esp32_ota.lib_deps} - -[env:LilyGo_T3S3_sx1262_terminal_chat] -extends = LilyGo_T3S3_sx1262 -build_flags = - ${LilyGo_T3S3_sx1262.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=1 -build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} - +<../examples/simple_secure_chat/main.cpp> -lib_deps = - ${LilyGo_T3S3_sx1262.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:LilyGo_T3S3_sx1262_room_server] -extends = LilyGo_T3S3_sx1262 -build_flags = - ${LilyGo_T3S3_sx1262.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D ADVERT_NAME='"T3S3-1262 Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} - + - +<../examples/simple_room_server> -lib_deps = - ${LilyGo_T3S3_sx1262.lib_deps} - ${esp32_ota.lib_deps} - -[env:LilyGo_T3S3_sx1262_companion_radio_usb] -extends = LilyGo_T3S3_sx1262 -build_flags = - ${LilyGo_T3S3_sx1262.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 -build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} - + - +<../examples/companion_radio> -lib_deps = - ${LilyGo_T3S3_sx1262.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:LilyGo_T3S3_sx1262_companion_radio_ble] -extends = LilyGo_T3S3_sx1262 -build_flags = - ${LilyGo_T3S3_sx1262.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 -build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} - + - + - +<../examples/companion_radio> -lib_deps = - ${LilyGo_T3S3_sx1262.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[LilyGo_TBeam] -extends = esp32_base -board = ttgo-t-beam -build_flags = - ${esp32_base.build_flags} - -I variants/lilygo_tbeam - -D LILYGO_TBEAM - -D RADIO_CLASS=CustomSX1276 - -D WRAPPER_CLASS=CustomSX1276Wrapper - -D LORA_TX_POWER=20 - -D P_LORA_TX_LED=4 - -D PIN_BOARD_SDA=21 - -D PIN_BOARD_SCL=22 - -D PIN_USER_BTN=38 -build_src_filter = ${esp32_base.build_src_filter} - +<../variants/lilygo_tbeam> -board_build.partitions = min_spiffs.csv -lib_deps = - ${esp32_base.lib_deps} - lewisxhe/XPowersLib@^0.2.7 - adafruit/Adafruit SSD1306 @ ^2.5.13 - -[env:Tbeam_companion_radio_ble] -extends = LilyGo_TBeam -board_build.upload.maximum_ram_size = 2000000 -build_flags = - ${LilyGo_TBeam.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=1 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 - -D RADIOLIB_DEBUG_BASIC=1 -build_src_filter = ${LilyGo_TBeam.build_src_filter} - + - + - +<../examples/companion_radio> -lib_deps = - ${LilyGo_TBeam.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Tbeam_repeater] -extends = LilyGo_TBeam -build_flags = - ${LilyGo_TBeam.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D ADVERT_NAME='"Tbeam Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D MESH_PACKET_LOGGING=1 -build_src_filter = ${LilyGo_TBeam.build_src_filter} - + - +<../examples/simple_repeater> -lib_deps = - ${LilyGo_TBeam.lib_deps} - ${esp32_ota.lib_deps} - -[T_Beam_S3_Supreme_SX1262] -extends = esp32_base -board = t_beams3_supreme -build_flags = - ${esp32_base.build_flags} - -I variants/lilygo_tbeam_supreme_SX1262 - -D LORA_TX_POWER=22 - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D DISPLAY_CLASS=SSD1306Display - -D SX126X_RX_BOOSTED_GAIN=1 -lib_deps = - ${esp32_base.lib_deps} - lewisxhe/PCF8563_Library@^1.0.1 - lewisxhe/XPowersLib @ ^0.2.7 -build_src_filter = ${esp32_base.build_src_filter} - +<../variants/lilygo_tbeam_supreme_SX1262> -board_build.partitions = min_spiffs.csv - -[env:T_Beam_S3_Supreme_SX1262_Repeater] -extends = T_Beam_S3_Supreme_SX1262 -build_flags = - ${T_Beam_S3_Supreme_SX1262.build_flags} - -D ADVERT_NAME='"T-Beam S3 Supreme SX1262 Repeater"' - -D ADVERT_LAT=0 - -D ADVERT_LON=0 - -D ADMIN_PASSWORD='"password"' -build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} - + - +<../examples/simple_repeater> -lib_deps = - ${T_Beam_S3_Supreme_SX1262.lib_deps} - ${esp32_ota.lib_deps} - -[LilyGo_TLora_V2_1_1_6] -extends = esp32_base -board = ttgo-lora32-v1 -build_unflags = -Os -build_type = release -board_build.partitions = min_spiffs.csv -build_flags = - ${esp32_base.build_flags} - -I variants/lilygo_tlora_v2_1 - -Os -ffunction-sections -fdata-sections - -D LILYGO_TLORA - -D P_LORA_DIO_0=26 - -D P_LORA_DIO_1=33 - -D P_LORA_NSS=18 - -D P_LORA_RESET=14 - -D P_LORA_SCLK=5 - -D P_LORA_MISO=19 - -D P_LORA_MOSI=27 - -D P_LORA_TX_LED=2 - -D PIN_VBAT_READ=35 - -D PIN_USER_BTN=0 - -D RADIO_CLASS=CustomSX1276 - -D ARDUINO_LOOP_STACK_SIZE=16384 - -D DISPLAY_CLASS=SSD1306Display - -D WRAPPER_CLASS=CustomSX1276Wrapper - -D LORA_TX_POWER=20 -build_src_filter = ${esp32_base.build_src_filter} - +<../variants/lilygo_tlora_v2_1> -lib_deps = - ${esp32_base.lib_deps} - adafruit/Adafruit SSD1306 @ ^2.5.13 - -[env:LilyGo_TLora_V2_1_1_6_Repeater] -extends = LilyGo_TLora_V2_1_1_6 -build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} - + - +<../examples/simple_repeater> -build_flags = - ${LilyGo_TLora_V2_1_1_6.build_flags} - -D ADVERT_NAME='"TLora-V2.1-1.6 Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -lib_deps = - ${LilyGo_TLora_V2_1_1_6.lib_deps} - ${esp32_ota.lib_deps} - -[env:LilyGo_TLora_V2_1_1_6_terminal_chat] -extends = LilyGo_TLora_V2_1_1_6 -build_flags = - ${LilyGo_TLora_V2_1_1_6.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 -build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} - + - +<../examples/simple_repeater> -lib_deps = - ${LilyGo_TLora_V2_1_1_6.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:LilyGo_TLora_V2_1_1_6_companion_radio_usb] -extends = LilyGo_TLora_V2_1_1_6 -build_flags = - ${LilyGo_TLora_V2_1_1_6.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 -build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} - + - +<../examples/companion_radio> -lib_deps = - ${LilyGo_TLora_V2_1_1_6.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:LilyGo_TLora_V2_1_1_6_companion_radio_ble] -extends = LilyGo_TLora_V2_1_1_6 -build_flags = - ${LilyGo_TLora_V2_1_1_6.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 -build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} - + - + - +<../examples/companion_radio> -lib_deps = - ${LilyGo_TLora_V2_1_1_6.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:LilyGo_TLora_V2_1_1_6_room_server] -extends = LilyGo_TLora_V2_1_1_6 -build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} - + - +<../examples/simple_room_server> -build_flags = - ${LilyGo_TLora_V2_1_1_6.build_flags} - -D ADVERT_NAME='"TLora-V2.1-1.6 Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -lib_deps = - ${LilyGo_TLora_V2_1_1_6.lib_deps} - ${esp32_ota.lib_deps} - -[Faketec] -extends = nrf52840_base -board = promicro_nrf52840 -build_flags = ${nrf52840_base.build_flags} - -I variants/promicro - -D FAKETEC - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D LORA_TX_POWER=22 - -D SX126X_CURRENT_LIMIT=130 - -D SX126X_RX_BOOSTED_GAIN=1 - -D DISPLAY_CLASS=SSD1306Display - -D PIN_BOARD_SCL=7 - -D PIN_BOARD_SDA=8 - -D PIN_OLED_RESET=-1 - -D PIN_USER_BTN=6 -build_src_filter = ${nrf52840_base.build_src_filter} - + - +<../variants/promicro> -lib_deps = - ${nrf52840_base.lib_deps} - adafruit/Adafruit SSD1306 @ ^2.5.13 - -[env:Faketec_Repeater] -extends = Faketec -build_src_filter = ${Faketec.build_src_filter} +<../examples/simple_repeater> + -build_flags = - ${Faketec.build_flags} - -D ADVERT_NAME="\"Faketec Repeater\"" - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD="\"password\"" -lib_deps = - ${Faketec.lib_deps} - adafruit/RTClib @ ^2.1.3 - -[env:Faketec_room_server] -extends = Faketec -build_src_filter = ${Faketec.build_src_filter} +<../examples/simple_room_server> + -build_flags = - ${Faketec.build_flags} - -D ADVERT_NAME="\"Test Room\"" - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD="\"password\"" - -D ROOM_PASSWORD="\"hello\"" -lib_deps = - ${Faketec.lib_deps} - adafruit/RTClib @ ^2.1.3 - -[env:Faketec_terminal_chat] -extends = Faketec -build_flags = - ${Faketec.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=1 -build_src_filter = ${Faketec.build_src_filter} +<../examples/simple_secure_chat/main.cpp> -lib_deps = - ${Faketec.lib_deps} - densaugeo/base64 @ ~1.4.0 - adafruit/RTClib @ ^2.1.3 - -[env:Faketec_companion_radio_usb] -extends = Faketec -build_flags = - ${Faketec.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 -build_src_filter = ${Faketec.build_src_filter} +<../examples/companion_radio> +<../examples/companion_radio> + -lib_deps = - ${Faketec.lib_deps} - adafruit/RTClib @ ^2.1.3 - densaugeo/base64 @ ~1.4.0 - -[env:Faketec_companion_radio_ble] -extends = Faketec -build_flags = - ${Faketec.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 - -D ENABLE_PRIVATE_KEY_EXPORT=1 - -D ENABLE_PRIVATE_KEY_IMPORT=1 -build_src_filter = ${Faketec.build_src_filter} + +<../examples/companion_radio> + -lib_deps = - ${Faketec.lib_deps} - adafruit/RTClib @ ^2.1.3 - densaugeo/base64 @ ~1.4.0 - -[ProMicroLLCC68] -extends = nrf52840_base -board = promicro_nrf52840 -build_flags = ${nrf52840_base.build_flags} - -I variants/promicro - -D PROMICROLLCC68 - -D RADIO_CLASS=CustomLLCC68 - -D WRAPPER_CLASS=CustomLLCC68Wrapper - -D LORA_TX_POWER=22 - -D SX126X_CURRENT_LIMIT=130 - -D SX126X_RX_BOOSTED_GAIN=1 -build_src_filter = ${nrf52840_base.build_src_filter} - + - +<../variants/promicro> - -[env:ProMicroLLCC68_Repeater] -extends = ProMicroLLCC68 -build_src_filter = ${ProMicroLLCC68.build_src_filter} +<../examples/simple_repeater/main.cpp> -build_flags = - ${ProMicroLLCC68.build_flags} - -D ADVERT_NAME="\"ProMicroLLCC68 Repeater\"" - -D ADMIN_PASSWORD="\"password\"" -lib_deps = - ${ProMicroLLCC68.lib_deps} - adafruit/RTClib @ ^2.1.3 - -[env:ProMicroLLCC68_room_server] -extends = ProMicroLLCC68 -build_src_filter = ${ProMicroLLCC68.build_src_filter} +<../examples/simple_room_server/main.cpp> -build_flags = - ${ProMicroLLCC68.build_flags} - -D ADVERT_NAME="\"ProMicroLLCC68 Room\"" - -D ADMIN_PASSWORD="\"password\"" - -D ROOM_PASSWORD="\"hello\"" -lib_deps = - ${ProMicroLLCC68.lib_deps} - adafruit/RTClib @ ^2.1.3 - -[env:ProMicroLLCC68_terminal_chat] -extends = ProMicroLLCC68 -build_flags = - ${ProMicroLLCC68.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=1 -build_src_filter = ${ProMicroLLCC68.build_src_filter} +<../examples/simple_secure_chat/main.cpp> -lib_deps = - ${ProMicroLLCC68.lib_deps} - densaugeo/base64 @ ~1.4.0 - adafruit/RTClib @ ^2.1.3 - -[env:ProMicroLLCC68_companion_radio_usb] -extends = ProMicroLLCC68 -build_flags = - ${ProMicroLLCC68.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 -build_src_filter = ${ProMicroLLCC68.build_src_filter} +<../examples/companion_radio/main.cpp> -lib_deps = - ${ProMicroLLCC68.lib_deps} - adafruit/RTClib @ ^2.1.3 - densaugeo/base64 @ ~1.4.0 - -[env:ProMicroLLCC68_companion_radio_ble] -extends = ProMicroLLCC68 -build_flags = - ${ProMicroLLCC68.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 - -D ENABLE_PRIVATE_KEY_EXPORT=1 - -D ENABLE_PRIVATE_KEY_IMPORT=1 -build_src_filter = ${ProMicroLLCC68.build_src_filter} + +<../examples/companion_radio/main.cpp> -lib_deps = - ${ProMicroLLCC68.lib_deps} - adafruit/RTClib @ ^2.1.3 - densaugeo/base64 @ ~1.4.0 - -[rak4631] -extends = nrf52840_base -platform = https://github.com/maxgerhardt/platform-nordicnrf52.git#rak -board = wiscore_rak4631 -board_check = true -build_flags = ${nrf52840_base.build_flags} - -I variants/rak4631 - -D RAK_4631 - -D PIN_USER_BTN=9 - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D LORA_TX_POWER=22 - -D SX126X_CURRENT_LIMIT=130 - -D SX126X_RX_BOOSTED_GAIN=1 -build_src_filter = ${nrf52840_base.build_src_filter} - + - +<../variants/rak4631> -lib_deps = - ${nrf52840_base.lib_deps} - adafruit/Adafruit SSD1306 @ ^2.5.13 - -[env:RAK_4631_Repeater] -extends = rak4631 -build_flags = - ${rak4631.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D ADVERT_NAME='"RAK4631 Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -build_src_filter = ${rak4631.build_src_filter} - + - +<../examples/simple_repeater> -lib_deps = - me-no-dev/AsyncTCP@^3.3.2 - esp32async/ESPAsyncWebServer@^3.7.5 - rweather/Crypto@^0.4.0 - jgromes/RadioLib@^7.1.2 - adafruit/RTClib@^2.1.4 - melopero/Melopero RV3028@^1.1.0 - lewisxhe/PCF8563_Library@^1.0.1 - adafruit/Adafruit GFX Library@^1.12.0 - adafruit/Adafruit SSD1306@^2.5.13 - -[env:RAK_4631_room_server] -extends = rak4631 -build_flags = - ${rak4631.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D ADVERT_NAME='"Test Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -build_src_filter = ${rak4631.build_src_filter} - + - +<../examples/simple_room_server> -lib_deps = - me-no-dev/AsyncTCP@^3.3.2 - esp32async/ESPAsyncWebServer@^3.7.5 - rweather/Crypto@^0.4.0 - jgromes/RadioLib@^7.1.2 - adafruit/RTClib@^2.1.4 - melopero/Melopero RV3028@^1.1.0 - lewisxhe/PCF8563_Library@^1.0.1 - adafruit/Adafruit GFX Library@^1.12.0 - adafruit/Adafruit SSD1306@^2.5.13 - -[env:RAK_4631_companion_radio_usb] -extends = rak4631 -build_flags = - ${rak4631.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 -build_src_filter = ${rak4631.build_src_filter} - + - +<../examples/companion_radio> -lib_deps = - ${rak4631.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:RAK_4631_companion_radio_ble] -extends = rak4631 -build_flags = - ${rak4631.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 -build_src_filter = ${rak4631.build_src_filter} - + - + - +<../examples/companion_radio> -lib_deps = - ${rak4631.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:RAK_4631_terminal_chat] -extends = rak4631 -build_flags = - ${rak4631.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=1 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 -build_src_filter = ${rak4631.build_src_filter} - +<../examples/simple_secure_chat/main.cpp> -lib_deps = - ${rak4631.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[Station_G2] -extends = esp32_base -board = station-g2 -build_flags = - ${esp32_base.build_flags} - -I variants/station_g2 - -D STATION_G2 - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D LORA_TX_POWER=7 - -D PIN_USER_BTN=0 - -D SX126X_DIO2_AS_RF_SWITCH=true - -D SX126X_DIO3_TCXO_VOLTAGE=1.8 - -D SX126X_CURRENT_LIMIT=130.0f -build_src_filter = ${esp32_base.build_src_filter} - +<../variants/station_g2> -lib_deps = - ${esp32_base.lib_deps} - -[env:Station_G2_repeater] -extends = Station_G2 -build_flags = - ${Station_G2.build_flags} - -D ADVERT_NAME='"Station G2 Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D MESH_PACKET_LOGGING=1 -build_src_filter = ${Station_G2.build_src_filter} - +<../examples/simple_repeater> -lib_deps = - ${Station_G2.lib_deps} - ${esp32_ota.lib_deps} - -[env:Station_G2_room_server] -extends = Station_G2 -build_src_filter = ${Station_G2.build_src_filter} - +<../examples/simple_room_server> -build_flags = - ${Station_G2.build_flags} - -D ADVERT_NAME='"Station G2 Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -lib_deps = - ${Station_G2.lib_deps} - ${esp32_ota.lib_deps} - -[nrf52840_t1000e] -extends = nrf52_base -platform_packages = framework-arduinoadafruitnrf52 -build_flags = ${nrf52_base.build_flags} - -I src/helpers/nrf52 - -I lib/nrf52/s140_nrf52_7.3.0_API/include - -I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52 -lib_ignore = - BluetoothOTA - lvgl - lib5b4 -lib_deps = - ${nrf52_base.lib_deps} - rweather/Crypto @ ^0.4.0 - -[t1000-e] -extends = nrf52840_t1000e -board = tracker-t1000-e -board_build.ldscript = boards/nrf52840_s140_v7.ld -build_flags = ${nrf52840_t1000e.build_flags} - -I variants/t1000-e - -D T1000_E - -D PIN_USER_BTN=6 - -D USER_BTN_PRESSED=HIGH - -D PIN_STATUS_LED=24 - -D RADIO_CLASS=CustomLR1110 - -D WRAPPER_CLASS=CustomLR1110Wrapper - -D LORA_TX_POWER=22 -build_src_filter = ${nrf52840_t1000e.build_src_filter} - + - + - +<../variants/t1000-e> -debug_tool = jlink -upload_protocol = nrfutil - -[env:t1000e_companion_radio_ble] -extends = t1000-e -build_flags = ${t1000-e.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 - -D RX_BOOSTED_GAIN=true - -D RF_SWITCH_TABLE - -D HAS_UI -build_src_filter = ${t1000-e.build_src_filter} - + - +<../examples/companion_radio/*.cpp> -lib_deps = ${t1000-e.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[nrf52840_t114] -extends = nrf52_base -platform_packages = framework-arduinoadafruitnrf52 -build_flags = ${nrf52_base.build_flags} - -I src/helpers/nrf52 - -I lib/nrf52/s140_nrf52_6.1.1_API/include - -I lib/nrf52/s140_nrf52_6.1.1_API/include/nrf52 -lib_deps = - ${nrf52_base.lib_deps} - rweather/Crypto @ ^0.4.0 - -[Heltec_t114] -extends = nrf52840_t114 -board = heltec_t114 -board_build.ldscript = boards/nrf52840_s140_v6.ld -build_flags = ${nrf52840_t114.build_flags} - -I variants/t114 - -DHELTEC_T114 - -D P_LORA_TX_LED=35 - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D LORA_TX_POWER=22 - -D SX126X_CURRENT_LIMIT=130 - -D SX126X_RX_BOOSTED_GAIN=1 -build_src_filter = ${nrf52840_t114.build_src_filter} - + - + - +<../variants/t114> -debug_tool = jlink -upload_protocol = nrfutil - -[env:Heltec_t114_repeater] -extends = Heltec_t114 -build_src_filter = ${Heltec_t114.build_src_filter} - +<../examples/simple_repeater/main.cpp> -build_flags = - ${Heltec_t114.build_flags} - -D ADVERT_NAME='"Heltec_T114 Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -lib_deps = - me-no-dev/AsyncTCP@^3.3.2 - esp32async/ESPAsyncWebServer@^3.7.5 - rweather/Crypto@^0.4.0 - jgromes/RadioLib@^7.1.2 - adafruit/RTClib@^2.1.4 - melopero/Melopero RV3028@^1.1.0 - lewisxhe/PCF8563_Library@^1.0.1 - adafruit/Adafruit GFX Library@^1.12.0 - adafruit/Adafruit SSD1306@^2.5.13 - -[env:Heltec_t114_room_server] -extends = Heltec_t114 -build_src_filter = ${Heltec_t114.build_src_filter} - +<../examples/simple_room_server> -build_flags = - ${Heltec_t114.build_flags} - -D ADVERT_NAME='"Heltec_T114 Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -lib_deps = - me-no-dev/AsyncTCP@^3.3.2 - esp32async/ESPAsyncWebServer@^3.7.5 - rweather/Crypto@^0.4.0 - jgromes/RadioLib@^7.1.2 - adafruit/RTClib@^2.1.4 - melopero/Melopero RV3028@^1.1.0 - lewisxhe/PCF8563_Library@^1.0.1 - adafruit/Adafruit GFX Library@^1.12.0 - adafruit/Adafruit SSD1306@^2.5.13 - -[env:Heltec_t114_companion_radio_ble] -extends = Heltec_t114 -build_flags = - ${Heltec_t114.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 -build_src_filter = ${Heltec_t114.build_src_filter} - + - +<../examples/companion_radio/main.cpp> -lib_deps = - ${Heltec_t114.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[nrf52840_techo] -extends = nrf52_base -platform_packages = framework-arduinoadafruitnrf52 -build_flags = ${nrf52_base.build_flags} - -I src/helpers/nrf52 - -I lib/nrf52/s140_nrf52_6.1.1_API/include - -I lib/nrf52/s140_nrf52_6.1.1_API/include/nrf52 -lib_deps = - ${nrf52_base.lib_deps} - rweather/Crypto @ ^0.4.0 - -[LilyGo_Techo] -extends = nrf52840_techo -board = t-echo -board_build.ldscript = boards/nrf52840_s140_v6.ld -build_flags = ${nrf52840_techo.build_flags} - -I variants/techo - -DLILYGO_TECHO - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D LORA_TX_POWER=22 - -D SX126X_CURRENT_LIMIT=130 - -D SX126X_RX_BOOSTED_GAIN=1 -build_src_filter = ${nrf52840_techo.build_src_filter} - + - + - +<../variants/techo> -debug_tool = jlink -upload_protocol = nrfutil - -[env:LilyGo_T-Echo_repeater] -extends = LilyGo_Techo -build_src_filter = ${LilyGo_Techo.build_src_filter} +<../examples/simple_repeater/main.cpp> -build_flags = - ${LilyGo_Techo.build_flags} - -D ADVERT_NAME='"T-Echo Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -lib_deps = - me-no-dev/AsyncTCP@^3.3.2 - esp32async/ESPAsyncWebServer@^3.7.5 - rweather/Crypto@^0.4.0 - jgromes/RadioLib@^7.1.2 - adafruit/RTClib@^2.1.4 - melopero/Melopero RV3028@^1.1.0 - lewisxhe/PCF8563_Library@^1.0.1 - adafruit/Adafruit GFX Library@^1.12.0 - adafruit/Adafruit SSD1306@^2.5.13 - -[env:LilyGo_T-Echo_room_server] -extends = LilyGo_Techo -build_src_filter = ${LilyGo_Techo.build_src_filter} +<../examples/simple_room_server/main.cpp> -build_flags = - ${LilyGo_Techo.build_flags} - -D ADVERT_NAME='"T-Echo Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -lib_deps = - me-no-dev/AsyncTCP@^3.3.2 - esp32async/ESPAsyncWebServer@^3.7.5 - rweather/Crypto@^0.4.0 - jgromes/RadioLib@^7.1.2 - adafruit/RTClib@^2.1.4 - melopero/Melopero RV3028@^1.1.0 - lewisxhe/PCF8563_Library@^1.0.1 - adafruit/Adafruit GFX Library@^1.12.0 - adafruit/Adafruit SSD1306@^2.5.13 - -[env:LilyGo_T-Echo_companion_radio_ble] -extends = LilyGo_Techo -build_flags = - ${LilyGo_Techo.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 -build_src_filter = ${LilyGo_Techo.build_src_filter} - + - +<../examples/companion_radio/main.cpp> -lib_deps = - ${LilyGo_Techo.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[Xiao_esp32_C3] -extends = esp32_base -board = seeed_xiao_esp32c3 -build_flags = - ${esp32_base.build_flags} - -I variants/xiao_c3 - -D LORA_TX_BOOST_PIN=D3 - -D P_LORA_TX_LED=D5 - -D PIN_VBAT_READ=D0 - -D P_LORA_DIO_1=D2 - -D P_LORA_NSS=D4 - -D P_LORA_RESET=RADIOLIB_NC - -D P_LORA_BUSY=D1 - -D PIN_BOARD_SDA=D6 - -D PIN_BOARD_SCL=D7 - -D SX126X_DIO2_AS_RF_SWITCH=true - -D SX126X_DIO3_TCXO_VOLTAGE=1.8 - -D SX126X_CURRENT_LIMIT=130.0f -build_src_filter = ${esp32_base.build_src_filter} - +<../variants/xiao_c3> - -[env:Xiao_C3_Repeater_sx1262] -extends = Xiao_esp32_C3 -build_src_filter = ${Xiao_esp32_C3.build_src_filter} - +<../examples/simple_repeater/main.cpp> -build_flags = - ${Xiao_esp32_C3.build_flags} - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D SX126X_RX_BOOSTED_GAIN=1 - -D LORA_TX_POWER=22 - -D ADVERT_NAME='"Xiao Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -lib_deps = - ${Xiao_esp32_C3.lib_deps} - ${esp32_ota.lib_deps} - -[env:Xiao_C3_Repeater_sx1268] -extends = Xiao_esp32_C3 -build_src_filter = ${Xiao_esp32_C3.build_src_filter} - +<../examples/simple_repeater/main.cpp> -build_flags = - ${Xiao_esp32_C3.build_flags} - -D RADIO_CLASS=CustomSX1268 - -D WRAPPER_CLASS=CustomSX1268Wrapper - -D LORA_TX_POWER=22 - -D ADVERT_NAME='"Xiao Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -lib_deps = - ${Xiao_esp32_C3.lib_deps} - ${esp32_ota.lib_deps} - -[Xiao_S3_WIO] -extends = esp32_base -board = seeed_xiao_esp32s3 -board_check = true -board_build.mcu = esp32s3 -build_flags = ${esp32_base.build_flags} - -I variants/xiao_s3_wio - -D SEEED_XIAO_S3 - -D P_LORA_DIO_1=39 - -D P_LORA_NSS=41 - -D P_LORA_RESET=42 - -D P_LORA_BUSY=40 - -D P_LORA_SCLK=7 - -D P_LORA_MISO=8 - -D P_LORA_MOSI=9 - -D SX126X_DIO2_AS_RF_SWITCH=true - -D SX126X_DIO3_TCXO_VOLTAGE=1.8 - -D SX126X_CURRENT_LIMIT=130 - -D RADIO_CLASS=CustomSX1262 - -D WRAPPER_CLASS=CustomSX1262Wrapper - -D LORA_TX_POWER=22 - -D SX126X_RX_BOOSTED_GAIN=1 -build_src_filter = ${esp32_base.build_src_filter} - +<../variants/xiao_s3_wio> - -[env:Xiao_S3_WIO_Repeater] -extends = Xiao_S3_WIO -build_src_filter = ${Xiao_S3_WIO.build_src_filter} - +<../examples/simple_repeater/main.cpp> -build_flags = - ${Xiao_S3_WIO.build_flags} - -D ADVERT_NAME='"XiaoS3 Repeater"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' -lib_deps = - ${Xiao_S3_WIO.lib_deps} - ${esp32_ota.lib_deps} - -[env:Xiao_S3_WIO_room_server] -extends = Xiao_S3_WIO -build_src_filter = ${Xiao_S3_WIO.build_src_filter} - +<../examples/simple_room_server> -build_flags = - ${Xiao_S3_WIO.build_flags} - -D ADVERT_NAME='"XiaoS3 Room"' - -D ADVERT_LAT=0.0 - -D ADVERT_LON=0.0 - -D ADMIN_PASSWORD='"password"' - -D ROOM_PASSWORD='"hello"' -lib_deps = - ${Xiao_S3_WIO.lib_deps} - ${esp32_ota.lib_deps} - -[env:Xiao_S3_WIO_terminal_chat] -extends = Xiao_S3_WIO -build_flags = - ${Xiao_S3_WIO.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 -build_src_filter = ${Xiao_S3_WIO.build_src_filter} - +<../examples/simple_secure_chat/main.cpp> -lib_deps = - ${Xiao_S3_WIO.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Xiao_S3_WIO_companion_radio_ble] -extends = Xiao_S3_WIO -build_flags = - ${Xiao_S3_WIO.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 -build_src_filter = ${Xiao_S3_WIO.build_src_filter} - + - +<../examples/companion_radio/main.cpp> -lib_deps = - ${Xiao_S3_WIO.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:Xiao_S3_WIO_companion_radio_serial] -extends = Xiao_S3_WIO -build_flags = - ${Xiao_S3_WIO.build_flags} - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D SERIAL_TX=D6 - -D SERIAL_RX=D7 -build_src_filter = ${Xiao_S3_WIO.build_src_filter} - + - +<../examples/companion_radio/main.cpp> -lib_deps = - ${Xiao_S3_WIO.lib_deps} - densaugeo/base64 @ ~1.4.0 - -[env:T_Beam_S3_Supreme_SX1262_companion_radio_ble] -extends = T_Beam_S3_Supreme_SX1262 -build_flags = - ${T_Beam_S3_Supreme_SX1262.build_flags} - -D DISPLAY_CLASS=SSD1306Display - -D MAX_CONTACTS=100 - -D MAX_GROUP_CHANNELS=8 - -D BLE_PIN_CODE=123456 - -D BLE_DEBUG_LOGGING=1 - -D MESH_PACKET_LOGGING=1 - -D MESH_DEBUG=1 -build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} - + - + - +<../examples/companion_radio> -lib_deps = - ${T_Beam_S3_Supreme_SX1262.lib_deps} - densaugeo/base64 @ ~1.4.0 - adafruit/Adafruit SSD1306@^2.5.13 +lib_deps = + ${nrf52_base.lib_deps} + rweather/Crypto @ ^0.4.0 + https://github.com/adafruit/Adafruit_nRF52_Arduino \ No newline at end of file diff --git a/src/helpers/TBeamS3SupremeBoard.h b/src/helpers/TBeamS3SupremeBoard.h index ef6d4ccf..2b8232d8 100644 --- a/src/helpers/TBeamS3SupremeBoard.h +++ b/src/helpers/TBeamS3SupremeBoard.h @@ -40,7 +40,7 @@ //I2C Wire addresses #define I2C_BME280_ADD 0x76 //BME280 sensor I2C address on Wire -#define I2C_OLED_ADD 0x3C //SSD1306/SH1106 OLED I2C address on Wire +#define I2C_OLED_ADD 0x3C //SH1106 OLED I2C address on Wire #define I2C_QMC6310U_ADD 0x1C //QMC6310U mag sensor I2C address on Wire //I2C Wire1 addresses diff --git a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini index b2f76ec3..57cc68db 100644 --- a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini +++ b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini @@ -7,7 +7,7 @@ build_flags = -D LORA_TX_POWER=22 -D RADIO_CLASS=CustomSX1262 -D WRAPPER_CLASS=CustomSX1262Wrapper - -D DISPLAY_CLASS=SSD1306Display + ;-D DISPLAY_CLASS=SSD1306Display ;Needs to be modified for SH1106 -D SX126X_RX_BOOSTED_GAIN=1 build_src_filter = ${esp32_base.build_src_filter} +<../variants/lilygo_tbeam_supreme_SX1262> @@ -16,9 +16,10 @@ lib_deps = ${esp32_base.lib_deps} lewisxhe/PCF8563_Library@^1.0.1 lewisxhe/XPowersLib @ ^0.2.7 + ;adafruit/Adafruit SSD1306 @ ^2.5.13 ; === LILYGO T-Beam S3 Supreme with SX1262 environments === -[env:T_Beam_S3_Supreme_SX1262_Repeater] +[env:T_Beam_S3_Supreme_SX1262_repeater] extends = T_Beam_S3_Supreme_SX1262 build_flags = ${T_Beam_S3_Supreme_SX1262.build_flags} @@ -29,29 +30,42 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} - + +<../examples/simple_repeater> lib_deps = ${T_Beam_S3_Supreme_SX1262.lib_deps} ${esp32_ota.lib_deps} +[env:T_Beam_S3_Supreme_SX1262_room_server] +extends = T_Beam_S3_Supreme_SX1262 +build_flags = + ${T_Beam_S3_Supreme_SX1262.build_flags} + -D ADVERT_NAME='"T_Beam_S3_Supreme_SX1262 Room"' + -D ADVERT_LAT=0.0 + -D ADVERT_LON=0.0 + -D ADMIN_PASSWORD='"password"' + -D ROOM_PASSWORD='"hello"' +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + +<../examples/simple_room_server> +lib_deps = + ${T_Beam_S3_Supreme_SX1262.lib_deps} + ${esp32_ota.lib_deps} [env:T_Beam_S3_Supreme_SX1262_companion_radio_ble] extends = T_Beam_S3_Supreme_SX1262 build_flags = ${T_Beam_S3_Supreme_SX1262.build_flags} - -D DISPLAY_CLASS=SSD1306Display -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=1 -D BLE_PIN_CODE=123456 -D BLE_DEBUG_LOGGING=1 ; -D ENABLE_PRIVATE_KEY_IMPORT=1 ; -D ENABLE_PRIVATE_KEY_EXPORT=1 - -D MESH_PACKET_LOGGING=1 + -D MESH_PACKET_LOGGING=8 -D MESH_DEBUG=1 build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + - + +<../examples/companion_radio> lib_deps = ${T_Beam_S3_Supreme_SX1262.lib_deps} diff --git a/variants/lilygo_tbeam_supreme_SX1262/target.cpp b/variants/lilygo_tbeam_supreme_SX1262/target.cpp index 6502e4af..c7ab2984 100644 --- a/variants/lilygo_tbeam_supreme_SX1262/target.cpp +++ b/variants/lilygo_tbeam_supreme_SX1262/target.cpp @@ -31,24 +31,31 @@ static void setPMUIntFlag(){ bool power_init() { //Start up Wire1 with PMU address - Wire1.begin(I2C_PMU_ADD); + //Serial.println("Starting Wire1 for PMU"); + //Wire1.begin(I2C_PMU_ADD); + //Wire1.begin(PIN_BOARD_SDA1,PIN_BOARD_SCL1); //Set LED to indicate charge state + Serial.println("Setting charge led"); PMU.setChargingLedMode(XPOWERS_CHG_LED_CTRL_CHG); //Set up PMU interrupts + Serial.println("Setting up PMU interrupts"); pinMode(PIN_PMU_IRQ,INPUT_PULLUP); attachInterrupt(PIN_PMU_IRQ,setPMUIntFlag,FALLING); //GPS + Serial.println("Setting and enabling a-ldo4 for GPS"); PMU.setALDO4Voltage(3300); - PMU.enableALDO3(); //disable to save power + PMU.enableALDO4(); //disable to save power //Lora + Serial.println("Setting and enabling a-ldo3 for LoRa"); PMU.setALDO3Voltage(3300); PMU.enableALDO3(); //To avoid SPI bus issues during power up, reset OLED, sensor, and SD card supplies + Serial.println("Reset a-ldo1&2 and b-ldo1"); if(ESP_SLEEP_WAKEUP_UNDEFINED == esp_sleep_get_wakeup_cause()){ PMU.enableALDO1(); PMU.enableALDO2(); @@ -57,44 +64,55 @@ bool power_init() { } //BME280 and OLED + Serial.println("Setting and enabling a-ldo1 for oled"); PMU.setALDO1Voltage(3300); PMU.enableALDO1(); //QMC6310U + Serial.println("Setting and enabling a-ldo2 for QMC"); PMU.setALDO2Voltage(3300); PMU.enableALDO2(); //disable to save power //SD card + Serial.println("Setting and enabling b-ldo2 for SD card"); PMU.setBLDO1Voltage(3300); PMU.enableBLDO1(); //Out to header pins + Serial.println("Setting and enabling b-ldo2 for output to header"); PMU.setBLDO2Voltage(3300); PMU.enableBLDO2(); + Serial.println("Setting and enabling dcdc4 for output to header"); PMU.setDC4Voltage(XPOWERS_AXP2101_DCDC4_VOL2_MAX); //1.8V PMU.enableDC4(); + Serial.println("Setting and enabling dcdc5 for output to header"); PMU.setDC5Voltage(3300); PMU.enableDC5(); //Other power rails + Serial.println("Setting and enabling dcdc3 for ?"); PMU.setDC3Voltage(3300); //doesn't go anywhere in the schematic?? PMU.enableDC3(); //Unused power rails + Serial.println("Disabling unused supplies dcdc2, dldo1 and dldo2"); PMU.disableDC2(); PMU.disableDLDO1(); PMU.disableDLDO2(); //Set charge current to 300mA + Serial.println("Setting battery charge current limit and voltage"); PMU.setChargerConstantCurr(XPOWERS_AXP2101_CHG_CUR_300MA); PMU.setChargeTargetVoltage(XPOWERS_AXP2101_CHG_VOL_4V2); //enable battery voltage measurement + Serial.println("Enabling battery measurement"); PMU.enableBattVoltageMeasure(); //Reset and re-enable PMU interrupts + Serial.println("Re-enable interrupts"); PMU.disableIRQ(XPOWERS_AXP2101_ALL_IRQ); PMU.clearIrqStatus(); PMU.enableIRQ( @@ -107,10 +125,12 @@ bool power_init() { //Set the power key off press time PMU.setPowerKeyPressOffTime(XPOWERS_POWEROFF_4S); + return true; } bool radio_init() { fallback_clock.begin(); + Wire1.begin(PIN_BOARD_SDA1,PIN_BOARD_SCL1); rtc_clock.begin(Wire1); #ifdef SX126X_DIO3_TCXO_VOLTAGE