|
Ниже показано подключение модуля 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:
Настройка 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: руководство пользователя. 2. Meshtastic: быстрый старт. |