Программирование ARM Meshtastic на основе ESP32-S3: подключение к модулю E22-900M30S. Tue, March 24 2026  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Meshtastic на основе ESP32-S3: подключение к модулю E22-900M30S. Печать
Добавил(а) microsin   

Ниже показано подключение модуля Ebyte E22-900M30S LoRa [1] к микроконтроллеру ESP32-S3 для организации узла Meshtastic.

E22-900M30S использует интерфейс SPI и требует также несколько сигналов управления. Есть несколько разработанных Meshtastic-community вариантов схемы, для которых рекомендуется следующее подключение к портам ESP32-S3.

Вывод E22-900M30S Функция GPIO ESP32-S3 Примечания
19 NSS / CS GPIO39 Сигнал для разрешения обмена SPI
18 SCK GPIO15 Такты SPI. Занят Ethernet, но SPI можно разделять.
17 MOSI GPIO16 Master Out Slave In (выход главного и вход подчиненного устройства SPI). Занят Ethernet, но SPI можно раделять.
16 MISO GPIO17 Master In Slave Out (вход главного и выход подчиненного устройства SPI). Занят Ethernet, но SPI можно разделять.
15 NRST GPIO40 Сигнал сброса для radio модуля
14 BUSY GPIO41 Индикатор занятости модуля
13 DIO1 GPIO42 Вывод прерывания / конфигурации
7 TXEN GPIO38 Управление разрешением передачи
6 RXEN GPIO37 Управление разрешением приема
9, 10 VCC 3.3V / 5V Power supply (2.5V - 5.5V)
1, 2, 3, 4, 5, 11, 12, 20, 22 GND GND Общий провод питания и сигналов, земля

Важное замечание по TXEN и RXEN: таблица показывает один из нескольких допустимых вариантов разводки, когда оба сигнала TXEN и RXENподключены к раздельным выводам MCU. Прошивка firmware должна быть сконфигурирована соответствующим образом.

[Конфигурация Firmware для Meshtastic]

Чтобы собрать custom-прошивку Meshtastic firmware для этого setup, вы должны создать файл variant.h, который определяет назначение выводов (pin mappings) и конфигурацию radio.

Ниже показан минимальный пример файла variant.h для приведенной выше таблицы соединений:

// Radio Module Configuration
#define USE_SX1262 // E22-900M30S использует чип SX1262.
#define SX126X_MAX_POWER 22 // Установите этот параметр в 22
// для модуля E22. Это приблизительно
// соответствует выходной мощности 30dBm.
#define SX126X_DIO3_TCXO_VOLTAGE 1.8 // Опорное напряжение TCXO для модулей
// серии E22.

// Определение выводов для SPI и управления
#define SX126X_CS 39
#define SX126X_SCK 15
#define SX126X_MOSI 16
#define SX126X_MISO 17
#define SX126X_RESET 40
#define SX126X_BUSY 41
#define SX126X_DIO1 42

// Разрешение выводов TX/RX (Option 3: оба управляются MCU)
#define SX126X_TXEN 38
#define SX126X_RXEN 37

// Не определяйте DIO2_AS_RF_SWITCH, когда используете
// отдельные выводы TXEN/RXEN.

Основные соединения схемы. Схема должна соответствовать приведенной выше таблице соединений. Вот несколько моментов, которые надо учитывать:

● Источник питания: модуль E22 может получать питание непосредственно от 3.3V или 5V шин питания ESP32-S3, поскольку для модуля может быть широкий диапазон напряжений питания (2.5V - 5.5V). Однако следует иметь в виду, что модуль потребляет большой ток (до 650mA) во время передачи, поэтому критически важно обеспечить стабильный источник питания.

● Развязывающие конденсаторы: чтобы подавить импульсы тока питания, возникающие при передаче, настоятельно рекомендуется добавить большой электролитический конденсатор (100µF - 2000µF) и параллельно ему небольшой керамический конденсатор (100nF), размещенные близко к выводам VCC и GND модуля на вашей печатной плате.

● Выводы управления загрузкой ESP32-S3 (Strapping Pins): при выборе используемых выводов GPIO, избегайте выводов управления загрузкой (GPIO0, GPIO3, GPIO45, GPIO46) и выводов USB pins (GPIO19, GPIO20) чипа ESP32-S3, чтобы обеспечить надежную загрузку MCU при подаче питания. Выбранные в таблице выше выводы соответствуют безопасному варианту.

[Подключение индикатора LCD через I2C]

В Meshtastic нет жестко закрепленных портов GPIO для I2C — они определяются в файле variant.h для конкретной платы. Вы можете назначить любые свободные GPIO через конфигурацию.

Назначение GPIO I2C в Meshtastic. Файл variant.h использует два макроса для определения шины I2C, к которой будет подключен LCD:

Макрос Назначение Пример значения
I2C_SDA Сигнал данных I2C 19
I2C_SCL Тактовый сигнал I2C 20

Вот примеры из реальных плат Meshtastic — вы можете взять любую из этих пар, если порты GPIO не конфликтуют с Ethernet на вашей плате ESP32-S3-ETH:

Плата / Вариант I2C_SDA I2C_SCL
tbeam_v07 21 22
M5Stack Core 21 22
Station G2 5 6
Heltec WSL 48 47
My ESP32-S3 DIY 18 17
TrackerD 21 22
TLORA_V2 21 22

Настройка variant.h для LCD I2C. Чтобы добавить поддержку LCD в вашу кастомную плату, нужно создать файл variant.h в директории вашего варианта и указать в нем несколько ключевых параметров.

Полный минимальный пример для ESP32-S3 с I2C LCD:

// variants/esp32s3/my_custom_board/variant.h
#pragma once

// ==================== I2C Display Configuration ====================
#define HAS_SCREEN 1 // Включаем поддержку экрана
#define I2C_SDA 19 // Порт GPIO для SDA (выберите свободный)
#define I2C_SCL 20 // Порт GPIO для SCL (выберите свободный)

// Раскомментируйте нужный тип дисплея:
// #define USE_SSD1306 // Для OLED 128x64 (самый распространенный)
// #define USE_SH1107_128_64 // Для SH1107 128x64
// #define USE_SH1106_128_64 // Для SH1106 128x64

// ==================== LoRa Radio Configuration ====================
#define USE_SX1262 // Ваш модуль E22-900M30S
#define SX126X_CS 39
#define SX126X_SCK 15
#define SX126X_MOSI 16
#define SX126X_MISO 17
#define SX126X_RESET 40
#define SX126X_BUSY 41
#define SX126X_DIO1 42
#define SX126X_TXEN 38
#define SX126X_RXEN 37
#define SX126X_DIO3_TCXO_VOLTAGE 1.8

// ==================== Power Management ====================
// (Опционально, если у вас есть измерение батареи)
// #define BATTERY_PIN 35
// #define ADC_MULTIPLIER 2.0

Структура директории для кастомной платы. Чтобы Meshtastic при компиляции подхватил вашу конфигурацию, файлы должны лежать в правильной структуре:

meshtastic-firmware/
└── variants/
    └── esp32s3/
        └── my_custom_board/          # Название вашего варианта
            ├── variant.h             # Основной файл конфигурации
            ├── platformio.ini        # Настройки сборки
            └── README.md             # Описание платы (опционально)

Дополнительные настройки. Для корректной работы дисплея иногда требуется настроить питание. Если LCD питается от отдельного управляемого порта GPIO, добавьте в variant.h:

#define DISPLAY_POWER_PIN 5          // GPIO для включения питания дисплея
#define DISPLAY_POWER_ON_VALUE 1 // Уровень для включения (1 = HIGH, 0 = LOW)

Проверьте, какие порты GPIO уже используются под Ethernet на вашей плате ESP32-S3-ETH. I2C порты должны быть свободными и не конфликтовать с:

- RMII интерфейсом Ethernet (обычно порты GPIO 1, 2, 3, 4, 5, 10, 11, 12).
- SPI портами LoRa модуля.
- Strapping портами (GPIO 0, 3, 45, 46).

Как это работает. Meshtastic использует макросы из variant.h для инициализации аппаратных интерфейсов. После определения I2C_SDA и I2C_SCL и включения HAS_SCREEN, система автоматически:

1. Инициализирует шину I2C на указанных портах GPIO.
2. Подключает драйвер выбранного дисплея.
3. Запускает интерфейс пользователя на экране.

Если вы используете готовую плату (например, DFRobot LoRaWAN ESP32-S3), ее выводы портов GPIO I2C уже предопределены. Для кастомной платы нужно задать их самостоятельно.

[Ссылки]

1. E22-900M30S: руководство пользователя.
2Meshtastic: быстрый старт.

 

Добавить комментарий


Защитный код
Обновить

Top of Page