From 6800a4da8ef3b90abec4f9f929573567f4958667 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 30 Mar 2025 10:43:36 +0200 Subject: [PATCH] E22 module is now working. --- Boards.h | 6 +- CHANGELOG.md | 23 ++++ ...firmware-and-compile-it_MeesElectronics.md | 117 ++++++++++++++++++ README.md | 17 ++- RNode_Firmware_CE.ino | 1 + Radio.cpp | 3 + 6 files changed, 158 insertions(+), 9 deletions(-) diff --git a/Boards.h b/Boards.h index b343c0c..215ec12 100644 --- a/Boards.h +++ b/Boards.h @@ -1041,11 +1041,11 @@ #define INTERFACE_COUNT 1 #define HAS_NP true - const int pin_np = 21; + const int pin_np = 21;// 21 on Waveshare ESP32 S3 Pico, 48 on ESP32-S3-DevKitC-1 #if HAS_NP == false #if defined(EXTERNAL_LEDS) - const int pin_led_rx = 16; - const int pin_led_tx = 17; + const int pin_led_rx = 18; + const int pin_led_tx = 33; #else const int pin_led_rx = 21; const int pin_led_tx = 21; diff --git a/CHANGELOG.md b/CHANGELOG.md index 8af473f..8c99c52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,29 @@ All notable changes to this project will be documented in this file. Fixed : for any bug fixes. Security : in case of vulnerabilities. +### 2025-03-30 + +#### Fixed + +Both SX1278 and SX1268 modules are now working. + +#### Changed + +Pinout changed to make room for RXEN pin of E22 module. + +|pin|GPIO| +|---|----| +|NSS|10| +|MOSI|11| +|SCK|12| +|MISO|13| +|RST|14| +|DIO|15| +|BUSY|16| +|RXEN|17| +|RX LED|18| +|TX LED|33| + ### 2025-03-10 #### Changed diff --git a/Documentation/HOWTO-change-firmware-and-compile-it_MeesElectronics.md b/Documentation/HOWTO-change-firmware-and-compile-it_MeesElectronics.md index 5a8412d..a5257b8 100644 --- a/Documentation/HOWTO-change-firmware-and-compile-it_MeesElectronics.md +++ b/Documentation/HOWTO-change-firmware-and-compile-it_MeesElectronics.md @@ -332,6 +332,123 @@ When the rnode is flashed, it is signed with a key. If you connect the RNode to $ rnodeconf /dev/ttyACM0 --eeprom-wipe $ rnodeconf /dev/ttyACM0 -r --platform ESP32 --model a4 --product f0 --hwrev 3 +## Adding support for SX1268 module + +### Boards.h + +Change the following section: + +```` + const uint8_t interfaces[INTERFACE_COUNT] = {SX1278}; + const bool interface_cfg[INTERFACE_COUNT][3] = { + // SX1278 + { + false, // DEFAULT_SPI + false, // HAS_TCXO + false // DIO2_AS_RF_SWITCH + }, + }; + const int8_t interface_pins[INTERFACE_COUNT][10] = { + // SX1278 + { + 10, // pin_ss + 12, // pin_sclk + 11, // pin_mosi + 13, // pin_miso + -1, // pin_busy + 15, // pin_dio + 14, // pin_reset + -1, // pin_txen + -1, // pin_rxen + -1 // pin_tcxo_enable + } + }; +```` + +with this: + +```` + #if BOARD_VARIANT == MODEL_F1 + const uint8_t interfaces[INTERFACE_COUNT] = {SX1278}; + const bool interface_cfg[INTERFACE_COUNT][3] = { + // SX1278 + { + false, // DEFAULT_SPI + false, // HAS_TCXO + false // DIO2_AS_RF_SWITCH + }, + }; + const int8_t interface_pins[INTERFACE_COUNT][10] = { + // SX1278 + { + 10, // pin_ss + 12, // pin_sclk + 11, // pin_mosi + 13, // pin_miso + -1, // pin_busy + 15, // pin_dio + 14, // pin_reset + -1, // pin_txen + -1, // pin_rxen + -1 // pin_tcxo_enable + } + }; + #elif BOARD_VARIANT == MODEL_F2 + const uint8_t interfaces[INTERFACE_COUNT] = {SX1262}; + const bool interface_cfg[INTERFACE_COUNT][3] = { + // SX1262 + { + false, // DEFAULT_SPI + true, // HAS_TCXO + true // DIO2_AS_RF_SWITCH + }, + }; + const int8_t interface_pins[INTERFACE_COUNT][10] = { + // SX1262 + { + 10, // pin_ss + 12, // pin_sclk + 11, // pin_mosi + 13, // pin_miso + 16, // pin_busy + 15, // pin_dio + 14, // pin_reset + -1, // pin_txen + 17, // pin_rxen + -1 // pin_tcxo_enable + } + }; + #endif +```` + +### Radio.cpp + +Add the following statement to the function **sx126x::enableTCXO()**. + + // Board added by Mees Electronics + #elif BOARD_MODEL == BOARD_MEES_ESP32_S3 + uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF}; + +#### Makefile + +Change the following section: + +```` +# Added board from Mees Electronics +firmware-mees-esp32-s3: + arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" $(COMMON_BUILD_FLAGS) --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x61\"" +```` + +with this: + +```` +# Added board from Mees Electronics +firmware-mees-esp32-s3: + arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc" $(COMMON_BUILD_FLAGS) --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x61\" \"-DBOARD_VARIANT=0xF2\"" +```` + +If you want to compile the board for the SX1278 just change **BOARD_VARIANT** to *0xF1*. + # License (C) 2025 M.T. Konstapel https://meezenest.nl/mees diff --git a/README.md b/README.md index f7c04eb..5dcf5fe 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,16 @@ # RNode Firmware - Mees Electronics Edition +This version of the RNode firmware is made to add support for the E22-400M33S LoRa module. With an output power of 33 dBm this module is suitable for ham radio applications. + This is a copy of the community maintained fork of the open firmware which powers RNode devices found on [https://github.com/liberatedsystems/RNode_Firmware_CE](https://github.com/liberatedsystems/RNode_Firmware_CE). The copy has been created to add support for hardware designed by [Mees Electronics](https://meezenest.nl/mees). The original repository by Mark Qvist can be found [here](https://github.com/markqvist/RNode_Firmware). -The first new board is a combination of a Waveshare ESP32 S3 Pico and an Ra-02 SX1278 LoRa transceiver. See [./Documentation/HOWTO-change-firmware-and-compile-it_MeesElectronics.md](https://git.meezenest.nl/marcel/RNode_Firmware_CE/src/branch/master/Documentation/HOWTO-change-firmware-and-compile-it_MeesElectronics.md) for more information about adding a new board to the code. +Support is added for **ESP32 S3** boards with either an **SX1278** or an **SX1268** LoRa module. It is tested with a **Waveshare ESP32 S3 Pico** and a **LilyGO T7-S3 ESP32-S3 Development Board**. But it is expected to work with all ESP32 S3 boards which expose the proper GPIO pins. LoRa modules that are tested are the **Ra-02 SX1278** transceiver and the **E22-400M33S SX1268** transceiver. See [./Documentation/HOWTO-change-firmware-and-compile-it_MeesElectronics.md](https://git.meezenest.nl/marcel/RNode_Firmware_CE/src/branch/master/Documentation/HOWTO-change-firmware-and-compile-it_MeesElectronics.md) for more information about adding a new board to the code. -The Waveshare firmware also works on the LilyGO T7-S3 ESP32-S3 Development Board. And it is expected to work on all ESP32-S3 boards which expose the proper GPIO pins. +More information about this project can be found on: [https://www.meezenest.nl/mees-elektronica/projects/reticulum_design_my_own_rnode/index.html](https://www.meezenest.nl/mees-elektronica/projects/reticulum_design_my_own_rnode/index.html) -Pinout between ESP and Ra-02: +Pinout between ESP and LoRa module: -|Ra-02|ESP32 GPIO| +|LoRa|ESP32 GPIO| |---|----| |NSS|10| |MOSI|11| @@ -17,8 +19,11 @@ Pinout between ESP and Ra-02: |RST|14| |DIO|15| |BUSY|16| -|RX LED|17| -|TX LED|18| +|RXEN|17| +|RX LED|18| +|TX LED|33| + +Note: **BUSY** and **RXEN** are only necessary when using the SX1268 module. # What it is diff --git a/RNode_Firmware_CE.ino b/RNode_Firmware_CE.ino index b80b930..b7c40e9 100644 --- a/RNode_Firmware_CE.ino +++ b/RNode_Firmware_CE.ino @@ -409,6 +409,7 @@ void setup() { // Validate board health, EEPROM and config validate_status(); + } void lora_receive(RadioInterface* radio) { diff --git a/Radio.cpp b/Radio.cpp index 3af22e4..85d7b25 100644 --- a/Radio.cpp +++ b/Radio.cpp @@ -711,6 +711,9 @@ void sx126x::enableTCXO() { uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF}; #elif BOARD_MODEL == BOARD_HELTEC_T114 uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF}; + // Board added by Mees Electronics + #elif BOARD_MODEL == BOARD_MEES_ESP32_S3 + uint8_t buf[4] = {MODE_TCXO_1_8V_6X, 0x00, 0x00, 0xFF}; #else uint8_t buf[4] = {0}; #endif