From e5504ab3f0f31bb37f1deba375c6b7349a1c7550 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sat, 8 Nov 2025 19:02:12 +1300 Subject: [PATCH 01/11] Add rak3112 to board variants --- boards/wiscore_rak3112.json | 40 +++++++++++ variants/esp32s3/rak3112/pins_arduino.h | 93 +++++++++++++++++++++++++ variants/esp32s3/rak3112/platformio.ini | 12 ++++ variants/esp32s3/rak3112/variant.h | 54 ++++++++++++++ 4 files changed, 199 insertions(+) create mode 100644 boards/wiscore_rak3112.json create mode 100644 variants/esp32s3/rak3112/pins_arduino.h create mode 100644 variants/esp32s3/rak3112/platformio.ini create mode 100644 variants/esp32s3/rak3112/variant.h diff --git a/boards/wiscore_rak3112.json b/boards/wiscore_rak3112.json new file mode 100644 index 00000000000..171cb1de54d --- /dev/null +++ b/boards/wiscore_rak3112.json @@ -0,0 +1,40 @@ +{ + "build": { + "arduino": { + "ldscript": "esp32s3_out.ld", + "memory_type": "qio_opi" + }, + "core": "esp32", + "extra_flags": [ + "-DRAK3112", + "-DARDUINO_USB_CDC_ON_BOOT=1", + "-DARDUINO_USB_MODE=1", + "-DARDUINO_RUNNING_CORE=1", + "-DARDUINO_EVENT_RUNNING_CORE=1", + "-DBOARD_HAS_PSRAM" + ], + "f_cpu": "240000000L", + "f_flash": "80000000L", + "flash_mode": "qio", + "hwids": [["0x303A", "0x1001"]], + "mcu": "esp32s3", + "variant": "rak3112" + }, + "connectivity": ["wifi", "bluetooth"], + "debug": { + "openocd_target": "esp32s3.cfg" + }, + "frameworks": ["arduino", "espidf"], + "name": "RAKwireless RAK3112", + "upload": { + "flash_size": "16MB", + "maximum_ram_size": 327680, + "maximum_size": 16777216, + "use_1200bps_touch": true, + "wait_for_upload_port": true, + "require_upload_port": true, + "speed": 921600 + }, + "url": "http://www.rakwireless.com/", + "vendor": "RAKwireless" +} diff --git a/variants/esp32s3/rak3112/pins_arduino.h b/variants/esp32s3/rak3112/pins_arduino.h new file mode 100644 index 00000000000..df4c18fea7a --- /dev/null +++ b/variants/esp32s3/rak3112/pins_arduino.h @@ -0,0 +1,93 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#ifndef _VARIANT_RAK3112_ +#define _VARIANT_RAK3112_ +#endif + +#define USB_VID 0x303a +#define USB_PID 0x1001 + +// GPIO's +#define WB_IO1 21 +#define WB_IO2 2 +// #define WB_IO2 14 +#define WB_IO3 41 +#define WB_IO4 42 +#define WB_IO5 38 +#define WB_IO6 39 +// #define WB_SW1 35 NC +#define WB_A0 1 +#define WB_A1 2 +#define WB_CS 12 +#define WB_LED1 46 +#define WB_LED2 45 + +// LEDs +#define PIN_LED1 (46) +#define PIN_LED2 (45) +#define LED_BLUE PIN_LED2 +#define LED_GREEN PIN_LED1 +#define LED_BUILTIN LED_GREEN +#define LED_CONN PIN_LED2 +#define LED_STATE_ON 1 // State when LED is litted + +/* + * Analog pins + */ +#define PIN_A0 (21) +#define PIN_A1 (14) + +/* + * Serial interfaces + */ +// TXD1 RXD1 on Base Board +#define PIN_SERIAL1_RX (44) +#define PIN_SERIAL1_TX (43) + +// TXD0 RXD0 on Base Board (NC due to large flash chip) +// #define PIN_SERIAL2_RX (19) +// #define PIN_SERIAL2_TX (20) + +/* + * SPI Interfaces + */ +#define SPI_INTERFACES_COUNT 1 + +#define PIN_SPI_MISO (10) +#define PIN_SPI_MOSI (11) +#define PIN_SPI_SCK (13) +#define SPI_CS (12) + +static const uint8_t SS = SPI_CS; +static const uint8_t MOSI = PIN_SPI_MOSI; +static const uint8_t MISO = PIN_SPI_MISO; +static const uint8_t SCK = PIN_SPI_SCK; + +// Internal SPI to LoRa transceiver +#define LORA_SX126X_SCK 5 +#define LORA_SX126X_MISO 3 +#define LORA_SX126X_MOSI 6 +#define LORA_SX126X_CS 7 +#define LORA_SX126X_RESET 8 +#define LORA_SX126X_DIO1 47 +#define LORA_SX126X_BUSY 48 +#define LORA_SX126X_DIO2_AS_RF_SWITCH 1 +#define LORA_SX126X_DIO3_TCXO_VOLTAGE 1.8 + +/* + * Wire Interfaces + */ +#define WIRE_INTERFACES_COUNT 2 + +#define PIN_WIRE_SDA (9) +#define PIN_WIRE_SCL (40) +#define SDA PIN_WIRE_SDA +#define SCL PIN_WIRE_SCL + +#define PIN_WIRE1_SDA (17) +#define PIN_WIRE1_SCL (18) + +#endif /* Pins_Arduino_h */ \ No newline at end of file diff --git a/variants/esp32s3/rak3112/platformio.ini b/variants/esp32s3/rak3112/platformio.ini new file mode 100644 index 00000000000..6a45ef9a266 --- /dev/null +++ b/variants/esp32s3/rak3112/platformio.ini @@ -0,0 +1,12 @@ +[env:rak3112] +extends = esp32s3_base +board = wiscore_rak3112 +upload_protocol = esptool +upload_speed = 921600 +monitor_speed = 115200 +board_build.filesystem = littlefs + +build_flags = + ${esp32_base.build_flags} + -D RAK3112 + -I variants/esp32s3/rak3112 \ No newline at end of file diff --git a/variants/esp32s3/rak3112/variant.h b/variants/esp32s3/rak3112/variant.h new file mode 100644 index 00000000000..7440a2c992d --- /dev/null +++ b/variants/esp32s3/rak3112/variant.h @@ -0,0 +1,54 @@ +// ============================ +// For Meshtastic +// ============================ + +#ifndef _VARIANT_RAK3112_ +#define _VARIANT_RAK3112_ +#endif + +#define HAS_SDCARD +#define SDCARD_USE_SPI1 + +#define USE_SSD1306 + +#define BATTERY_PIN WB_A0 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage +// ratio of voltage divider = 2.0 (R42=100k, R43=100k) +#define ADC_MULTIPLIER 2.11 // 2.0 + 10% for correction of display undervoltage. +#define ADC_CHANNEL ADC1_GPIO1_CHANNEL + +#define I2C_SDA PIN_WIRE_SDA // I2C pins for this board +#define I2C_SCL PIN_WIRE_SCL + +#define I2C_SDA1 PIN_WIRE1_SDA +#define I2C_SCL1 PIN_WIRE1_SCL + +// // The default Wire will be mapped to PMU and RTC +// static const uint8_t SDA = PIN_WIRE_SDA; +// static const uint8_t SCL = PIN_WIRE_SCL; + +#define LED_PIN LED_GREEN // If defined we will blink this LED +#define BUTTON_PIN WB_IO5 // If defined, this will be used for user button presses, +#define ledOff(pin) pinMode(pin, INPUT) + +#define BUTTON_NEED_PULLUP + +#define USE_SX1262 + +#define LORA_SCK 5 +#define LORA_MISO 3 +#define LORA_MOSI 6 +#define LORA_CS 7 +#define LORA_RESET 8 + +// per SX1262_Receive_Interrupt/utilities.h +#ifdef USE_SX1262 +#define SX126X_CS LORA_CS +#define SX126X_DIO1 47 +#define SX126X_BUSY 48 +#define SX126X_RESET LORA_RESET +#define SX126X_DIO2_AS_RF_SWITCH +#define SX126X_DIO3_TCXO_VOLTAGE 1.8 +#endif + +#define HAS_SDCARD // Have SPI interface SD card slot +#define SDCARD_USE_SPI1 \ No newline at end of file From 4ccc901c1b907b0164a0d008a0915d4fe13e8e69 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sat, 8 Nov 2025 19:14:11 +1300 Subject: [PATCH 02/11] Add rak3112 to architecture definitions --- protobufs | 2 +- src/mesh/generated/meshtastic/mesh.pb.h | 2 ++ src/platform/esp32/architecture.h | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/protobufs b/protobufs index 7654db2e2d1..9068e7f128d 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 7654db2e2d1834aebde40090a9b74162ad1048ae +Subproject commit 9068e7f128d09e63fdd38d343cf12968e2f297c6 diff --git a/src/mesh/generated/meshtastic/mesh.pb.h b/src/mesh/generated/meshtastic/mesh.pb.h index 0da44cce075..3b81d45f6e8 100644 --- a/src/mesh/generated/meshtastic/mesh.pb.h +++ b/src/mesh/generated/meshtastic/mesh.pb.h @@ -288,6 +288,8 @@ typedef enum _meshtastic_HardwareModel { meshtastic_HardwareModel_WISMESH_TAP_V2 = 116, /* RAK3401 */ meshtastic_HardwareModel_RAK3401 = 117, + /* RAKwireless WisBlock Core RAK3112 https://docs.rakwireless.com/product-categories/wisduo/rak3112-module/overview/ */ + meshtastic_HardwareModel_RAK3112 = 118, /* ------------------------------------------------------------------------------------------------------------------------------------------ Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. ------------------------------------------------------------------------------------------------------------------------------------------ */ diff --git a/src/platform/esp32/architecture.h b/src/platform/esp32/architecture.h index 9b5abfba048..eedbce3ef63 100644 --- a/src/platform/esp32/architecture.h +++ b/src/platform/esp32/architecture.h @@ -191,6 +191,8 @@ #define HW_VENDOR meshtastic_HardwareModel_CROWPANEL #elif defined(RAK3312) #define HW_VENDOR meshtastic_HardwareModel_RAK3312 +#elif defined(RAK3112) +#define HW_VENDOR meshtastic_HardwareModel_RAK3112 #elif defined(RAK_WISMESH_TAP_V2) #define HW_VENDOR meshtastic_HardwareModel_WISMESH_TAP_V2 #elif defined(LINK_32) From d54b2b97000925e1814fc413b7938a1670f678ff Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sat, 8 Nov 2025 19:30:26 +1300 Subject: [PATCH 03/11] Disable SDcard support --- variants/esp32s3/rak3112/variant.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/variants/esp32s3/rak3112/variant.h b/variants/esp32s3/rak3112/variant.h index 7440a2c992d..74a256e1c55 100644 --- a/variants/esp32s3/rak3112/variant.h +++ b/variants/esp32s3/rak3112/variant.h @@ -6,8 +6,8 @@ #define _VARIANT_RAK3112_ #endif -#define HAS_SDCARD -#define SDCARD_USE_SPI1 +// #define HAS_SDCARD +// #define SDCARD_USE_SPI1 #define USE_SSD1306 @@ -50,5 +50,5 @@ #define SX126X_DIO3_TCXO_VOLTAGE 1.8 #endif -#define HAS_SDCARD // Have SPI interface SD card slot -#define SDCARD_USE_SPI1 \ No newline at end of file +// #define HAS_SDCARD // Have SPI interface SD card slot +// #define SDCARD_USE_SPI1 \ No newline at end of file From 6e43ab096d6ae6b1182da317fb9696c843898ca5 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sat, 8 Nov 2025 22:02:58 +1300 Subject: [PATCH 04/11] Update comments --- variants/esp32s3/rak3112/variant.h | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/variants/esp32s3/rak3112/variant.h b/variants/esp32s3/rak3112/variant.h index 74a256e1c55..8487fd72e15 100644 --- a/variants/esp32s3/rak3112/variant.h +++ b/variants/esp32s3/rak3112/variant.h @@ -1,14 +1,7 @@ -// ============================ -// For Meshtastic -// ============================ - #ifndef _VARIANT_RAK3112_ #define _VARIANT_RAK3112_ #endif -// #define HAS_SDCARD -// #define SDCARD_USE_SPI1 - #define USE_SSD1306 #define BATTERY_PIN WB_A0 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage @@ -22,7 +15,13 @@ #define I2C_SDA1 PIN_WIRE1_SDA #define I2C_SCL1 PIN_WIRE1_SCL -// // The default Wire will be mapped to PMU and RTC +/* + Mapping the default wire to PMU and RTC fails here at compile-time despite + being in the RAK examples: + https://github.com/RAKWireless/WisBlock/blob/master/examples/RAK3112/IDE-Patches/PlatformIO/rakwireless/variants/rak3112/variant.h + + Using a preprocessor #define is no better and it works okay without it :) +*/ // static const uint8_t SDA = PIN_WIRE_SDA; // static const uint8_t SCL = PIN_WIRE_SCL; @@ -50,5 +49,10 @@ #define SX126X_DIO3_TCXO_VOLTAGE 1.8 #endif -// #define HAS_SDCARD // Have SPI interface SD card slot +/* + When an SD card is present; definitions for SPI_SCK, SPI_MISO, SPI_MOSI and SDCARD_CS must + also be provided. +*/ +// Have SPI interface SD card slot +// #define HAS_SDCARD // #define SDCARD_USE_SPI1 \ No newline at end of file From f88a68be99398780627d3ce2fc2dff044cb2cb58 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sun, 9 Nov 2025 00:13:54 +1300 Subject: [PATCH 05/11] Remove duplicate definitions and use expected SPI naming for SDcard module --- variants/esp32s3/rak3112/pins_arduino.h | 18 ++++++------------ variants/esp32s3/rak3112/variant.h | 12 +----------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/variants/esp32s3/rak3112/pins_arduino.h b/variants/esp32s3/rak3112/pins_arduino.h index df4c18fea7a..93180446d53 100644 --- a/variants/esp32s3/rak3112/pins_arduino.h +++ b/variants/esp32s3/rak3112/pins_arduino.h @@ -56,26 +56,20 @@ */ #define SPI_INTERFACES_COUNT 1 -#define PIN_SPI_MISO (10) -#define PIN_SPI_MOSI (11) -#define PIN_SPI_SCK (13) +#define SPI_MISO (10) +#define SPI_MOSI (11) +#define SPI_SCK (13) #define SPI_CS (12) static const uint8_t SS = SPI_CS; -static const uint8_t MOSI = PIN_SPI_MOSI; -static const uint8_t MISO = PIN_SPI_MISO; -static const uint8_t SCK = PIN_SPI_SCK; +static const uint8_t MOSI = SPI_MOSI; +static const uint8_t MISO = SPI_MISO; +static const uint8_t SCK = SPI_SCK; // Internal SPI to LoRa transceiver #define LORA_SX126X_SCK 5 #define LORA_SX126X_MISO 3 #define LORA_SX126X_MOSI 6 -#define LORA_SX126X_CS 7 -#define LORA_SX126X_RESET 8 -#define LORA_SX126X_DIO1 47 -#define LORA_SX126X_BUSY 48 -#define LORA_SX126X_DIO2_AS_RF_SWITCH 1 -#define LORA_SX126X_DIO3_TCXO_VOLTAGE 1.8 /* * Wire Interfaces diff --git a/variants/esp32s3/rak3112/variant.h b/variants/esp32s3/rak3112/variant.h index 8487fd72e15..03426a503cc 100644 --- a/variants/esp32s3/rak3112/variant.h +++ b/variants/esp32s3/rak3112/variant.h @@ -15,16 +15,6 @@ #define I2C_SDA1 PIN_WIRE1_SDA #define I2C_SCL1 PIN_WIRE1_SCL -/* - Mapping the default wire to PMU and RTC fails here at compile-time despite - being in the RAK examples: - https://github.com/RAKWireless/WisBlock/blob/master/examples/RAK3112/IDE-Patches/PlatformIO/rakwireless/variants/rak3112/variant.h - - Using a preprocessor #define is no better and it works okay without it :) -*/ -// static const uint8_t SDA = PIN_WIRE_SDA; -// static const uint8_t SCL = PIN_WIRE_SCL; - #define LED_PIN LED_GREEN // If defined we will blink this LED #define BUTTON_PIN WB_IO5 // If defined, this will be used for user button presses, #define ledOff(pin) pinMode(pin, INPUT) @@ -53,6 +43,6 @@ When an SD card is present; definitions for SPI_SCK, SPI_MISO, SPI_MOSI and SDCARD_CS must also be provided. */ -// Have SPI interface SD card slot +// // Have SPI interface SD card slot // #define HAS_SDCARD // #define SDCARD_USE_SPI1 \ No newline at end of file From ad663e493b5c121041b2b1b8c9b347a6bdb0244e Mon Sep 17 00:00:00 2001 From: ford-jones Date: Sun, 9 Nov 2025 01:31:30 +1300 Subject: [PATCH 06/11] SDcard module serial interface chip set definition --- variants/esp32s3/rak3112/variant.h | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/variants/esp32s3/rak3112/variant.h b/variants/esp32s3/rak3112/variant.h index 03426a503cc..d896c3e3754 100644 --- a/variants/esp32s3/rak3112/variant.h +++ b/variants/esp32s3/rak3112/variant.h @@ -39,10 +39,7 @@ #define SX126X_DIO3_TCXO_VOLTAGE 1.8 #endif -/* - When an SD card is present; definitions for SPI_SCK, SPI_MISO, SPI_MOSI and SDCARD_CS must - also be provided. -*/ -// // Have SPI interface SD card slot -// #define HAS_SDCARD -// #define SDCARD_USE_SPI1 \ No newline at end of file +// Have SPI interface SD card slot +#define HAS_SDCARD +#define SDCARD_USE_SPI1 +#define SDCARD_CS SPI_CS \ No newline at end of file From 8813804d351315dd13d6240c9d64bf32f69563e0 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Tue, 11 Nov 2025 13:03:32 +1300 Subject: [PATCH 07/11] Refactor modular variant into existing environment --- variants/esp32s3/rak3112/pins_arduino.h | 87 ------------------------- variants/esp32s3/rak3112/platformio.ini | 12 ---- variants/esp32s3/rak3112/variant.h | 45 ------------- variants/esp32s3/rak3312/pins_arduino.h | 49 ++++++++++++++ variants/esp32s3/rak3312/variant.h | 33 +++++++--- 5 files changed, 74 insertions(+), 152 deletions(-) delete mode 100644 variants/esp32s3/rak3112/pins_arduino.h delete mode 100644 variants/esp32s3/rak3112/platformio.ini delete mode 100644 variants/esp32s3/rak3112/variant.h diff --git a/variants/esp32s3/rak3112/pins_arduino.h b/variants/esp32s3/rak3112/pins_arduino.h deleted file mode 100644 index 93180446d53..00000000000 --- a/variants/esp32s3/rak3112/pins_arduino.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef Pins_Arduino_h -#define Pins_Arduino_h - -#include - -#ifndef _VARIANT_RAK3112_ -#define _VARIANT_RAK3112_ -#endif - -#define USB_VID 0x303a -#define USB_PID 0x1001 - -// GPIO's -#define WB_IO1 21 -#define WB_IO2 2 -// #define WB_IO2 14 -#define WB_IO3 41 -#define WB_IO4 42 -#define WB_IO5 38 -#define WB_IO6 39 -// #define WB_SW1 35 NC -#define WB_A0 1 -#define WB_A1 2 -#define WB_CS 12 -#define WB_LED1 46 -#define WB_LED2 45 - -// LEDs -#define PIN_LED1 (46) -#define PIN_LED2 (45) -#define LED_BLUE PIN_LED2 -#define LED_GREEN PIN_LED1 -#define LED_BUILTIN LED_GREEN -#define LED_CONN PIN_LED2 -#define LED_STATE_ON 1 // State when LED is litted - -/* - * Analog pins - */ -#define PIN_A0 (21) -#define PIN_A1 (14) - -/* - * Serial interfaces - */ -// TXD1 RXD1 on Base Board -#define PIN_SERIAL1_RX (44) -#define PIN_SERIAL1_TX (43) - -// TXD0 RXD0 on Base Board (NC due to large flash chip) -// #define PIN_SERIAL2_RX (19) -// #define PIN_SERIAL2_TX (20) - -/* - * SPI Interfaces - */ -#define SPI_INTERFACES_COUNT 1 - -#define SPI_MISO (10) -#define SPI_MOSI (11) -#define SPI_SCK (13) -#define SPI_CS (12) - -static const uint8_t SS = SPI_CS; -static const uint8_t MOSI = SPI_MOSI; -static const uint8_t MISO = SPI_MISO; -static const uint8_t SCK = SPI_SCK; - -// Internal SPI to LoRa transceiver -#define LORA_SX126X_SCK 5 -#define LORA_SX126X_MISO 3 -#define LORA_SX126X_MOSI 6 - -/* - * Wire Interfaces - */ -#define WIRE_INTERFACES_COUNT 2 - -#define PIN_WIRE_SDA (9) -#define PIN_WIRE_SCL (40) -#define SDA PIN_WIRE_SDA -#define SCL PIN_WIRE_SCL - -#define PIN_WIRE1_SDA (17) -#define PIN_WIRE1_SCL (18) - -#endif /* Pins_Arduino_h */ \ No newline at end of file diff --git a/variants/esp32s3/rak3112/platformio.ini b/variants/esp32s3/rak3112/platformio.ini deleted file mode 100644 index 6a45ef9a266..00000000000 --- a/variants/esp32s3/rak3112/platformio.ini +++ /dev/null @@ -1,12 +0,0 @@ -[env:rak3112] -extends = esp32s3_base -board = wiscore_rak3112 -upload_protocol = esptool -upload_speed = 921600 -monitor_speed = 115200 -board_build.filesystem = littlefs - -build_flags = - ${esp32_base.build_flags} - -D RAK3112 - -I variants/esp32s3/rak3112 \ No newline at end of file diff --git a/variants/esp32s3/rak3112/variant.h b/variants/esp32s3/rak3112/variant.h deleted file mode 100644 index d896c3e3754..00000000000 --- a/variants/esp32s3/rak3112/variant.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef _VARIANT_RAK3112_ -#define _VARIANT_RAK3112_ -#endif - -#define USE_SSD1306 - -#define BATTERY_PIN WB_A0 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage -// ratio of voltage divider = 2.0 (R42=100k, R43=100k) -#define ADC_MULTIPLIER 2.11 // 2.0 + 10% for correction of display undervoltage. -#define ADC_CHANNEL ADC1_GPIO1_CHANNEL - -#define I2C_SDA PIN_WIRE_SDA // I2C pins for this board -#define I2C_SCL PIN_WIRE_SCL - -#define I2C_SDA1 PIN_WIRE1_SDA -#define I2C_SCL1 PIN_WIRE1_SCL - -#define LED_PIN LED_GREEN // If defined we will blink this LED -#define BUTTON_PIN WB_IO5 // If defined, this will be used for user button presses, -#define ledOff(pin) pinMode(pin, INPUT) - -#define BUTTON_NEED_PULLUP - -#define USE_SX1262 - -#define LORA_SCK 5 -#define LORA_MISO 3 -#define LORA_MOSI 6 -#define LORA_CS 7 -#define LORA_RESET 8 - -// per SX1262_Receive_Interrupt/utilities.h -#ifdef USE_SX1262 -#define SX126X_CS LORA_CS -#define SX126X_DIO1 47 -#define SX126X_BUSY 48 -#define SX126X_RESET LORA_RESET -#define SX126X_DIO2_AS_RF_SWITCH -#define SX126X_DIO3_TCXO_VOLTAGE 1.8 -#endif - -// Have SPI interface SD card slot -#define HAS_SDCARD -#define SDCARD_USE_SPI1 -#define SDCARD_CS SPI_CS \ No newline at end of file diff --git a/variants/esp32s3/rak3312/pins_arduino.h b/variants/esp32s3/rak3312/pins_arduino.h index 15a26e991c6..43b0e82a7c6 100644 --- a/variants/esp32s3/rak3312/pins_arduino.h +++ b/variants/esp32s3/rak3312/pins_arduino.h @@ -17,6 +17,8 @@ static const uint8_t MOSI = 11; static const uint8_t MISO = 10; static const uint8_t SCK = 13; +#define SPI_INTERFACES_COUNT 1 + #define SPI_MOSI (11) #define SPI_SCK (13) #define SPI_MISO (10) @@ -25,4 +27,51 @@ static const uint8_t SCK = 13; // LEDs #define LED_BUILTIN LED_GREEN +#ifdef _VARIANT_3112_ +/* + * Serial interfaces + */ +// TXD1 RXD1 on Base Board +#define PIN_SERIAL1_RX (44) +#define PIN_SERIAL1_TX (43) + +/* + * Internal SPI to LoRa transceiver + */ +#define LORA_SX126X_SCK 5 +#define LORA_SX126X_MISO 3 +#define LORA_SX126X_MOSI 6 + +/* + * Analog pins + */ +#define PIN_A0 (21) +#define PIN_A1 (14) + +/* + * Wire Interfaces + */ +#define WIRE_INTERFACES_COUNT 2 + +#define PIN_WIRE1_SDA (17) +#define PIN_WIRE1_SCL (18) + +/* + * GPIO's + */ +#define WB_IO1 21 +#define WB_IO2 2 +// #define WB_IO2 14 +#define WB_IO3 41 +#define WB_IO4 42 +#define WB_IO5 38 +#define WB_IO6 39 +// #define WB_SW1 35 NC +#define WB_A0 1 +#define WB_A1 2 +#define WB_CS 12 +#define WB_LED1 46 +#define WB_LED2 45 +#endif + #endif /* Pins_Arduino_h */ diff --git a/variants/esp32s3/rak3312/variant.h b/variants/esp32s3/rak3312/variant.h index dfdf4de7134..ab0dbea5eba 100644 --- a/variants/esp32s3/rak3312/variant.h +++ b/variants/esp32s3/rak3312/variant.h @@ -1,3 +1,5 @@ +// #define _VARIANT_RAK3112_ + #define I2C_SDA 9 #define I2C_SCL 40 @@ -18,11 +20,6 @@ #define SX126X_DIO3_TCXO_VOLTAGE 1.8 #endif -#define SX126X_POWER_EN (4) - -#define PIN_POWER_EN PIN_3V3_EN -#define PIN_3V3_EN (14) - #define LED_GREEN 46 #define LED_BLUE 45 @@ -35,10 +32,30 @@ #define LED_STATE_ON 1 // State when LED is litted +#define BATTERY_PIN 1 +#define ADC_CHANNEL ADC1_GPIO1_CHANNEL + +#ifdef _VARIANT_RAK3112_ // Modular variant (stamp) +#define ADC_MULTIPLIER 2.11 + +#define BUTTON_NEED_PULLUP + +#define HAS_SDCARD +#define SDCARD_USE_SPI1 +#define SDCARD_CS SPI_CS + +#define I2C_SDA1 PIN_WIRE1_SDA +#define I2C_SCL1 PIN_WIRE1_SCL +#else // Generic 3312 variant (40-pin standard connector) +#define ADC_MULTIPLIER 1.667 + +#define SX126X_POWER_EN (4) + +#define PIN_POWER_EN PIN_3V3_EN +#define PIN_3V3_EN (14) + #define HAS_GPS 1 #define GPS_TX_PIN 43 #define GPS_RX_PIN 44 -#define BATTERY_PIN 1 -#define ADC_CHANNEL ADC1_GPIO1_CHANNEL -#define ADC_MULTIPLIER 1.667 \ No newline at end of file +#endif \ No newline at end of file From 7f02dbe4f5e7eec404c32f64ee6d35e6fb8323dc Mon Sep 17 00:00:00 2001 From: ford-jones Date: Tue, 11 Nov 2025 13:21:17 +1300 Subject: [PATCH 08/11] Make requested changes --- boards/wiscore_rak3112.json | 40 ------------------------- protobufs | 2 +- src/mesh/generated/meshtastic/mesh.pb.h | 2 -- 3 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 boards/wiscore_rak3112.json diff --git a/boards/wiscore_rak3112.json b/boards/wiscore_rak3112.json deleted file mode 100644 index 171cb1de54d..00000000000 --- a/boards/wiscore_rak3112.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "build": { - "arduino": { - "ldscript": "esp32s3_out.ld", - "memory_type": "qio_opi" - }, - "core": "esp32", - "extra_flags": [ - "-DRAK3112", - "-DARDUINO_USB_CDC_ON_BOOT=1", - "-DARDUINO_USB_MODE=1", - "-DARDUINO_RUNNING_CORE=1", - "-DARDUINO_EVENT_RUNNING_CORE=1", - "-DBOARD_HAS_PSRAM" - ], - "f_cpu": "240000000L", - "f_flash": "80000000L", - "flash_mode": "qio", - "hwids": [["0x303A", "0x1001"]], - "mcu": "esp32s3", - "variant": "rak3112" - }, - "connectivity": ["wifi", "bluetooth"], - "debug": { - "openocd_target": "esp32s3.cfg" - }, - "frameworks": ["arduino", "espidf"], - "name": "RAKwireless RAK3112", - "upload": { - "flash_size": "16MB", - "maximum_ram_size": 327680, - "maximum_size": 16777216, - "use_1200bps_touch": true, - "wait_for_upload_port": true, - "require_upload_port": true, - "speed": 921600 - }, - "url": "http://www.rakwireless.com/", - "vendor": "RAKwireless" -} diff --git a/protobufs b/protobufs index 9068e7f128d..7654db2e2d1 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 9068e7f128d09e63fdd38d343cf12968e2f297c6 +Subproject commit 7654db2e2d1834aebde40090a9b74162ad1048ae diff --git a/src/mesh/generated/meshtastic/mesh.pb.h b/src/mesh/generated/meshtastic/mesh.pb.h index 3b81d45f6e8..0da44cce075 100644 --- a/src/mesh/generated/meshtastic/mesh.pb.h +++ b/src/mesh/generated/meshtastic/mesh.pb.h @@ -288,8 +288,6 @@ typedef enum _meshtastic_HardwareModel { meshtastic_HardwareModel_WISMESH_TAP_V2 = 116, /* RAK3401 */ meshtastic_HardwareModel_RAK3401 = 117, - /* RAKwireless WisBlock Core RAK3112 https://docs.rakwireless.com/product-categories/wisduo/rak3112-module/overview/ */ - meshtastic_HardwareModel_RAK3112 = 118, /* ------------------------------------------------------------------------------------------------------------------------------------------ Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. ------------------------------------------------------------------------------------------------------------------------------------------ */ From 5e42b30b77ecd0c67b40676c2ee0e47e0ac338cf Mon Sep 17 00:00:00 2001 From: ford-jones Date: Tue, 11 Nov 2025 13:24:04 +1300 Subject: [PATCH 09/11] Extend 3312 variants --- variants/esp32s3/rak3312/platformio.ini | 12 ++++++++++++ variants/esp32s3/rak3312/variant.h | 2 -- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/variants/esp32s3/rak3312/platformio.ini b/variants/esp32s3/rak3312/platformio.ini index 0de36498f69..38430db67bd 100644 --- a/variants/esp32s3/rak3312/platformio.ini +++ b/variants/esp32s3/rak3312/platformio.ini @@ -9,3 +9,15 @@ build_flags = ${esp32_base.build_flags} -D RAK3312 -I variants/esp32s3/rak3312 + +[env:rak3112] +extends = esp32s3_base +board = wiscore_rak3312 +board_level = pr +board_check = true +upload_protocol = esptool + +build_flags = + ${esp32_base.build_flags} + -D RAK3312 _VARIANT_3112_ + -I variants/esp32s3/rak3312 diff --git a/variants/esp32s3/rak3312/variant.h b/variants/esp32s3/rak3312/variant.h index ab0dbea5eba..1f8eb9e391d 100644 --- a/variants/esp32s3/rak3312/variant.h +++ b/variants/esp32s3/rak3312/variant.h @@ -1,5 +1,3 @@ -// #define _VARIANT_RAK3112_ - #define I2C_SDA 9 #define I2C_SCL 40 From 40f7c719b11f64fad313e4f86ea6bcd5e1aeba49 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Tue, 11 Nov 2025 13:29:26 +1300 Subject: [PATCH 10/11] Remove duplicate architecture definition --- src/platform/esp32/architecture.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/platform/esp32/architecture.h b/src/platform/esp32/architecture.h index eedbce3ef63..9b5abfba048 100644 --- a/src/platform/esp32/architecture.h +++ b/src/platform/esp32/architecture.h @@ -191,8 +191,6 @@ #define HW_VENDOR meshtastic_HardwareModel_CROWPANEL #elif defined(RAK3312) #define HW_VENDOR meshtastic_HardwareModel_RAK3312 -#elif defined(RAK3112) -#define HW_VENDOR meshtastic_HardwareModel_RAK3112 #elif defined(RAK_WISMESH_TAP_V2) #define HW_VENDOR meshtastic_HardwareModel_WISMESH_TAP_V2 #elif defined(LINK_32) From 45ad77763684cdd336a27c8e9a12057193093b05 Mon Sep 17 00:00:00 2001 From: ford-jones Date: Mon, 17 Nov 2025 16:52:34 +1300 Subject: [PATCH 11/11] Fix definition naming --- variants/esp32s3/rak3312/pins_arduino.h | 2 +- variants/esp32s3/rak3312/platformio.ini | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/variants/esp32s3/rak3312/pins_arduino.h b/variants/esp32s3/rak3312/pins_arduino.h index 43b0e82a7c6..dc5d30d61da 100644 --- a/variants/esp32s3/rak3312/pins_arduino.h +++ b/variants/esp32s3/rak3312/pins_arduino.h @@ -27,7 +27,7 @@ static const uint8_t SCK = 13; // LEDs #define LED_BUILTIN LED_GREEN -#ifdef _VARIANT_3112_ +#ifdef _VARIANT_RAK3112_ /* * Serial interfaces */ diff --git a/variants/esp32s3/rak3312/platformio.ini b/variants/esp32s3/rak3312/platformio.ini index 38430db67bd..eb1938637b3 100644 --- a/variants/esp32s3/rak3312/platformio.ini +++ b/variants/esp32s3/rak3312/platformio.ini @@ -19,5 +19,6 @@ upload_protocol = esptool build_flags = ${esp32_base.build_flags} - -D RAK3312 _VARIANT_3112_ + -D RAK3312 + -D _VARIANT_RAK3112_ -I variants/esp32s3/rak3312