MESHINFO.ru
Софт

Дополнения для прошивки для модуля E22P 868M30S

ВАЖНО!

Разрыв дорожки и перемычка

Данный модуль умеет корректно работать только с подключением TXEN к DIO2. Три дня я потратил на эксперименты, перерыл весь github, задолбал deepseek, перепробовал кучу вариантов которые ни к чему не привели, в итоге порезал дорожку, сделал перемычку - все тут же заработало.

Возможно в будущем что-то изменится, на текущий момент чтобы работало корректно надо делать именно так.

MESHTASTIC

Для того, чтобы модуль Ebyte E22P 868M30S корректно заработал на прошивке мештастик, я рекомендую сделать следующее: 

  • Скопировать /variants/esp32/diy/hydra и назвать проект hydra_e22p_868m.
  • Скопировать отсюда код полностью, либо только измененные части кода.
  • Сохранить проект, перезапустить VSCode, выбрать новую прошивку, собрать и прошить.

файл platformio.ini


[env:hydra_e22p_868m]
custom_meshtastic_hw_model = 39
custom_meshtastic_hw_model_slug = HYDRA
custom_meshtastic_architecture = esp32
custom_meshtastic_actively_supported = true
custom_meshtastic_support_level = 3
custom_meshtastic_display_name = Hydra
custom_meshtastic_tags = DIY

extends = esp32_base
board = esp32doit-devkit-v1
build_flags =
  ${esp32_base.build_flags}
  -D DIY_V1
  -I variants/esp32/diy/hydra_e22p_868m

файл variants.h


// For OLED LCD
#define I2C_SDA 21
#define I2C_SCL 22

// For GPS, 'undef's not needed
#define GPS_TX_PIN 15
#define GPS_RX_PIN 12
#define PIN_GPS_EN 4

#define BUTTON_PIN 39 // The middle button GPIO on the T-Beam
// Note: On the ESP32 base version, gpio34-39 are input-only, and do not have internal pull-ups.
// If 39 is not being used for a button, it is suggested to remove the #define.
#define BATTERY_PIN 35 // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
#define ADC_CHANNEL ADC1_GPIO35_CHANNEL
#define ADC_MULTIPLIER 1.85 // (R1 = 470k, R2 = 680k)
#define EXT_PWR_DETECT 4    // Pin to detect connected external power source for LILYGO® TTGO T-Energy T18 and other DIY boards
#define EXT_NOTIFY_OUT 12   // Overridden default pin to use for Ext Notify Module (#975).
#define LED_POWER 2         // add status LED (compatible with core-pcb and DIY targets)

// Radio
#define USE_SX1262 // E22-900M30S uses SX1262
#define USE_SX1268 // E22-400M30S uses SX1268
#define SX126X_MAX_POWER 22 // Для модуля E22P 868M30S выходная мощность не более 12дбм! на выходе будет 30дбм!
#define SX126X_DIO3_TCXO_VOLTAGE 1.8 // E22 series TCXO reference voltage is 1.8V

#define SX126X_CS 18    // EBYTE module's NSS pin
#define SX126X_SCK 5    // EBYTE module's SCK pin
#define SX126X_MOSI 27  // EBYTE module's MOSI pin
#define SX126X_MISO 19  // EBYTE module's MISO pin
#define SX126X_RESET 23 // EBYTE module's NRST pin
#define SX126X_BUSY 32  // EBYTE module's BUSY pin
#define SX126X_DIO1 33  // EBYTE module's DIO1 pin

#define SX126X_TXEN RADIOLIB_NC // Schematic connects EBYTE module's TXEN pin to MCU
#define SX126X_RXEN RADIOLIB_NC
#define SX126X_POWER_EN 14
#define SX126X_DIO2_AS_RF_SWITCH

#define LORA_CS SX126X_CS       // Compatibility with variant file configuration structure
#define LORA_SCK SX126X_SCK     // Compatibility with variant file configuration structure
#define LORA_MOSI SX126X_MOSI   // Compatibility with variant file configuration structure
#define LORA_MISO SX126X_MISO   // Compatibility with variant file configuration structure
#define LORA_DIO1 SX126X_DIO1   // Compatibility with variant file configuration structure
#define LORA_TXEN SX126X_TXEN   // Compatibility with variant file configuration structure
#define LORA_RXEN SX126X_RXEN   // Compatibility with variant file configuration structure
#define LORA_RESET SX126X_RESET // Compatibility with variant file configuration structure

MESHCORE

С прошивками MeshCore дела обстоят немного проще и немного сложнее, там не нужно делать копию проекта, достаточно в файле platformio.ini добавить нужную вам секцию.

Но при этом необходимо внести правки в файл /src/helpers/ESP32Board.h

Напомню, что в meshcore существует три типа устройств: repeater, companion и room server. Я приведу пример для companion и repeater, уверен, по аналогии у вас получится сделать то, что вам требуется.

Аналогично, после внесения изменений, и сохранения, необходимо перезапустить окно (или программу), и выбрать добавленную вами конфигурацию, и после выбрать Upload and Monitor

Добавить в файл  /src/helpers/ESP32Board.h в раздел void begin() по аналогии с уже существущими

  #ifdef P_LORA_EN
    pinMode(P_LORA_EN, OUTPUT);
    digitalWrite(P_LORA_EN, HIGH);
  #endif

Добавить в самый низ файла platformio.ini


[env:Meshadventurer_sx1262_e22p868_companion_radio_ble]
extends = Meshadventurer
build_src_filter = ${Meshadventurer.build_src_filter}
  +<helpers/esp32/*.cpp>
  +<../examples/companion_radio/*.cpp>
  +<../examples/companion_radio/ui-new/*.cpp>
build_flags =
  ${Meshadventurer.build_flags}
  -I examples/companion_radio/ui-new
  -D RADIO_CLASS=CustomSX1262
  -D WRAPPER_CLASS=CustomSX1262Wrapper
  -D SX126X_RXEN=RADIOLIB_NC
  -D SX126X_TXEN=RADIOLIB_NC
  -D P_LORA_EN=14
  -D SX126X_DIO2_AS_RF_SWITCH=1
  -D LORA_TX_POWER=12
  -D MAX_CONTACTS=160
  -D MAX_GROUP_CHANNELS=40
  -D BLE_PIN_CODE=123456
  -D BLE_DEBUG_LOGGING=1
  -D OFFLINE_QUEUE_SIZE=128
  -D MESH_PACKET_LOGGING=1
  -D MESH_DEBUG=1
lib_deps =
  ${Meshadventurer.lib_deps}
  densaugeo/base64 @ ~1.4.0

[env:Meshadventurer_sx1262_e22p868_repeater]
extends = Meshadventurer
build_src_filter = ${Meshadventurer.build_src_filter}
  +<../examples/simple_repeater>
build_flags =
  ${Meshadventurer.build_flags}
  -D RADIO_CLASS=CustomSX1262
  -D WRAPPER_CLASS=CustomSX1262Wrapper
  -D SX126X_RXEN=RADIOLIB_NC
  -D SX126X_TXEN=RADIOLIB_NC
  -D P_LORA_EN=14
  -D SX126X_DIO2_AS_RF_SWITCH=1
  -D LORA_TX_POWER=12
  -D ADVERT_NAME='"Meshadventurer Repeater"'
  -D ADVERT_LAT=0.0
  -D ADVERT_LON=0.0
  -D ADMIN_PASSWORD='"password"'
  -D MAX_NEIGHBOURS=50
;  -D MESH_PACKET_LOGGING=1
;  -D MESH_DEBUG=1
lib_deps =
  ${Meshadventurer.lib_deps}
  ${esp32_ota.lib_deps}