Дополнения для прошивки для модуля 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}