#define MODEL_DB 0xDB // LilyGO T-Beam Supreme, 433 MHz
#define MODEL_DC 0xDC // LilyGO T-Beam Supreme, 868 MHz
+ #define PRODUCT_XIAO_ESP32S3 0xEB // Xiao ESP32S3 - sold by Seeed Studio
+ #define BOARD_XIAO_ESP32S3 0x3E
+ #define MODEL_DD 0xDD // Xiao ESP32S3, 868 MHz
+
#define PRODUCT_T32_10 0xB2 // T3 v1.0 - sold by LilyGO
#define BOARD_LORA32_V1_0 0x39
#define MODEL_BA 0xBA // LilyGO T3 v1.0, 433 MHz
#define MODEL_CA 0xCA // Heltec Lora32 v3, 868 MHz
#define PRODUCT_H_W_PAPER 0xC3
- #define BOARD_H_W_PAPER 0x3E
+ #define BOARD_H_W_PAPER 0x3F
#define MODEL_C8 0xC8
#define PRODUCT_RAK4631 0x10 // RAK4631 - sold by RAKWireless
-1 // pin_tcxo_enable
}
};
+ #elif BOARD_MODEL == BOARD_XIAO_ESP32S3
+ #define IS_ESP32S3 true
+
+ #define HAS_DISPLAY true
+ #define DISPLAY OLED
+ //#define HAS_CONSOLE true
+ #define HAS_BLUETOOTH false
+ #define HAS_BLE true
+ //#define HAS_PMU true
+ #define HAS_NP false
+ #define HAS_SD false
+ #define HAS_EEPROM true
+
+ #define HAS_INPUT true
+ #define HAS_SLEEP true
+ #define PIN_WAKEUP GPIO_NUM_21
+ #define WAKEUP_LEVEL 0
+
+ #define INTERFACE_COUNT 1
+
+// #define PMU_IRQ 40
+// #define I2C_SCL 41
+// #define I2C_SDA 42
+
+ // Wio-SX1262 button pulls down GPIO21
+ // THis is shared with the Yellow LED
+ // on the ESP32S3 (also active Low)
+ const int pin_btn_usr1 = 21;
+
+ const uint8_t interfaces[INTERFACE_COUNT] = {SX1262};
+ const bool interface_cfg[INTERFACE_COUNT][3] = {
+ // SX1262
+ {
+ true, // DEFAULT_SPI
+ true, // HAS_TCXO
+ true // DIO2_AS_RF_SWITCH
+ },
+ };
+ const int8_t interface_pins[INTERFACE_COUNT][10] = {
+ // SX1262
+ {
+ 41, // pin_ss
+ 7, // pin_sclk
+ 9, // pin_mosi
+ 8, // pin_miso
+ 40, // pin_busy
+ 39, // pin_dio
+ 42, // pin_reset
+ -1, // pin_txen
+ -1, // pin_rxen
+ -1 // pin_tcxo_enable
+ }
+ };
+
+// const int SD_MISO = 37;
+// const int SD_MOSI = 35;
+// const int SD_CLK = 36;
+// const int SD_CS = 47;
+
+// const int IMU_CS = 34;
+
+ // HAS LED/tx on Wio board - 48 Hi/ON
+ // LED 21 on ESP board - Lo/ON/Yellow
+ // shared with button input.
+ #if HAS_NP == false
+ #if defined(EXTERNAL_LEDS)
+ const int pin_led_rx = -1;
+ const int pin_led_tx = 48; //47;
+ #else
+ const int pin_led_rx = -1;
+ const int pin_led_tx = 48; //47;
+ #endif
+ #endif
#else
#error An unsupported ESP32 board was selected. Cannot compile RNode firmware.
#endif
firmware-heltec_w_paper:
arduino-cli compile --fqbn esp32:esp32:heltec_wifi_lora_32_V3 $(COMMON_BUILD_FLAGS) --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3E\""
+firmware-xiao_esp32s3:
+ arduino-cli compile --fqbn esp32:esp32:XIAO_ESP32S3 $(COMMON_BUILD_FLAGS) --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x3E\""
+
firmware-rnode_ng_20: check_bt_buffers
arduino-cli compile --fqbn esp32:esp32:ttgo-lora32 $(COMMON_BUILD_FLAGS) --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x40\""
@sleep 3
python ./Release/esptool/esptool.py --port $(or $(port), /dev/ttyUSB0) $(COMMON_UPLOAD_FLAGS) ./Release/console_image.bin
+upload-xiao_esp32s3:
+ arduino-cli upload -p $(or $(port), /dev/ttyACM0) --fqbn esp32:esp32:XIAO_ESP32S3
+ @sleep 1
+ rnodeconf $(or $(port), /dev/ttyACM0) --firmware-hash $$(./partition_hashes ./build/esp32.esp32.XIAO_ESP32S3/RNode_Firmware_CE.ino.bin)
+ @sleep 3
+ python ./Release/esptool/esptool.py --port $(or $(port), /dev/ttyACM0) --chip esp32-s3 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin
+
upload-opencom-xl upload-rak4631:
arduino-cli upload -p $(or $(port), /dev/ttyACM0) --fqbn rakwireless:nrf52:WisCoreRAK4631Board
unzip -o build/rakwireless.nrf52.WisCoreRAK4631Board/RNode_Firmware_CE.ino.zip -d build/rakwireless.nrf52.WisCoreRAK4631Board
void sleep_now() {
#if HAS_SLEEP == true
#if PLATFORM == PLATFORM_ESP32
- #if BOARD_MODEL == BOARD_T3S3
+ #if BOARD_MODEL == BOARD_T3S3 || BOARD_MODEL == BOARD_XIAO_ESP32C3
display_intensity = 0;
update_display(true);
#endif
void sx126x::enableTCXO() {
if (_tcxo) {
- #if BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_OPENCOM_XL || BOARD_MODEL == BOARD_HELTEC32_V3
+ #if BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_OPENCOM_XL || BOARD_MODEL == BOARD_HELTEC32_V3 || BOARD_MODEL == BOARD_XIAO_ESP32S3
uint8_t buf[4] = {MODE_TCXO_3_3V_6X, 0x00, 0x00, 0xFF};
#elif BOARD_MODEL == BOARD_TBEAM
uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF};
void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
void led_id_on() { }
void led_id_off() { }
+ #elif BOARD_MODEL == BOARD_XIAO_ESP32S3
+ void led_rx_on() {}
+ void led_rx_off() {}
+ void led_tx_on() { digitalWrite(pin_led_tx, LED_ON); }
+ void led_tx_off() { digitalWrite(pin_led_tx, LED_OFF); }
+ void led_id_on() {}
+ void led_id_off() {}
#elif BOARD_MODEL == BOARD_GENERIC_ESP32
void led_rx_on() { digitalWrite(pin_led_rx, HIGH); }
void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
if (model == MODEL_DB) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
if (model == MODEL_DC) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
+ if (model == MODEL_DD) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
+
if (model == MODEL_E4) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
if (model == MODEL_E9) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
if (model == MODEL_E3) radio->setTxPower(txp, PA_OUTPUT_PA_BOOST_PIN);
#endif
#if PLATFORM == PLATFORM_ESP32
- if (rval == PRODUCT_RNODE || rval == BOARD_RNODE_NG_20 || rval == BOARD_RNODE_NG_21 || rval == PRODUCT_HMBRW || rval == PRODUCT_TBEAM || rval == PRODUCT_T32_10 || rval == PRODUCT_T32_20 || rval == PRODUCT_T32_21 || rval == PRODUCT_H32_V2 || rval == PRODUCT_H32_V3 || rval == PRODUCT_TDECK_V1 || rval == PRODUCT_TBEAM_S_V1 || rval == PRODUCT_H_W_PAPER) {
+ if (rval == PRODUCT_RNODE || rval == BOARD_RNODE_NG_20 || rval == BOARD_RNODE_NG_21 || rval == PRODUCT_HMBRW || rval == PRODUCT_TBEAM || rval == PRODUCT_T32_10 || rval == PRODUCT_T32_20 || rval == PRODUCT_T32_21 || rval == PRODUCT_H32_V2 || rval == PRODUCT_H32_V3 || rval == PRODUCT_TDECK_V1 || rval == PRODUCT_TBEAM_S_V1 || rval == PRODUCT_H_W_PAPER || rval == PRODUCT_XIAO_ESP32S3) {
#elif PLATFORM == PLATFORM_NRF52
if (rval == PRODUCT_RAK4631 || rval == PRODUCT_HELTEC_T114 || rval == PRODUCT_OPENCOM_XL || rval == PRODUCT_TECHO || rval == PRODUCT_HMBRW) {
#else
if (model == MODEL_16 || model == MODEL_17) {
#elif BOARD_MODEL == BOARD_TBEAM_S_V1
if (model == MODEL_DB || model == MODEL_DC) {
+ #elif BOARD_MODEL == BOARD_XIAO_ESP32S3
+ if (model == MODEL_DD) {
#elif BOARD_MODEL == BOARD_LORA32_V1_0
if (model == MODEL_BA || model == MODEL_BB) {
#elif BOARD_MODEL == BOARD_LORA32_V2_0