А если точнее, на STM32WLE5CCU6.
Почему STM32?
Дёшево. Просто неприлично дешево.
STM32WLE5 это SoC, система на кристалле, лора SX1262 с Arm Cortex-M4 на 48 МГц, до 256 КБ Flash и 64 КБ SRAM. Как видно производительности и памяти там прям в впритык, а что вы хотели за эти деньги? Но и на этом можно запустить репитер мешкора, и вроде даже месштастика тоже, но я не пробовал.
Подобные характеристики как бы намекают на очень низкое энергопотребление, и да потребление тут ниже nRF52, мощность кстати тоже не дотягивает до заявленных 22дб, как и потребление ~80ма при передаче не соответствует заявленной мощности. Это оказалась беда программная и исправимая, при передачи потребляет 136мА. Потребление в режиме приема 10мА, сейчас это самый низкий показатель.
Данная вещь пригодна для автономных репитеров с батарейным, солнечным питанием, там где экономичность важнее нарушений регламентов мощности. С чувствительностью приемника там все в порядке, принципиальных отличий в сравнительных тестах с RA62 в городской застройки замечено не было, уровень сигнала у STM был немного ниже, но отсутствие прямой видимости оказывала куда большее влияние Тесты проводились до исправлений в коде с заниженной мощностью, так что не актуальны, в городе действительно что 16дб, что 22дб, особой разницы нет.
Где взять?
Добыть модуль E77-900M22S, сейчас вариант оптимальный и именно с него началось мое знакомство с STM32WLE5.

На самом деле это клиент LoRaWAN с управлением АТ командами и заботливо выведенным интерфейсом SWD для перепрошивки. Есть версии на 433МГц. Не самый удобный формат модуля для самоделок, шаг контактов 1,27, но у меня есть платы.
или E52-900NW22S, Это радиокакойто модем с зачатками меш сетей, от E77-900M22S похоже отличается только прошивкой, насколько оно пригодно пока не понятно и стоит дороже, я пока погрысть не пробовал.
Еще можно добыть модуль HC-15
Это уже обычный радиомодем с лорой на все том же STM32WLE5, точнее модуль для ардуино и им подобных вещей, бывает только на 433МГц.
Ai-Thinker Ra-09H, RAK3372, Wio-E5 / LoRa-E5



Это уже варианты не из дешевых и плохо доступных в РФ. В целом железка дефицитом не является, варианты есть почти у всех производителей подобных радиомодулей, но большинство из них сделаны скорее под LoRaWAN.
Как с этим работать?
Паяльником… эта штука несколько сложнее PR2040, тут нет привычного USB, и радиоинтерфейс тут только лора, если у вас есть сложности с прошивкой ESP32, дальше можно не читать. На самом деле работать с ней не сложнее чем с голой ESP, кто уже работал с STM разницы вряд ли заметит. Есть свои тонкости, но все решаемо.
Готовых решений под мешкор пока что разве что RAK3172, LoRa-E5, и моя плата на E77. Еще раз, изначально это решение под LoRaWAN.
Нужен будет «ST-Link V2 программатор STM8 STM32», вот именно так забиваете в поиск и заказываете. Без него никак.

Скорее всего нужно будет обновить прошивку в программаторе, но это уже в «stm32 cube programmer» опять же в поиск, скачиваете и устанавливаете, это приложение для прошивки STM.
Интерфейс через который происходит прошивка называется SWD, на самом деле STM32 можно прошить и обычным UART адаптером, примерно как ESP, но для этого нужно увести его в соответствующий бут режим, но вот кнопку для этого очевидно никто не сделал, поэтому работать будем через SWD, там две ноги SWDIO для данных и SWDCLK для тактов. ST-Link нужно соединить двумя этими ногами к подопытному модулю и подать питание.
В HC-15 залит свой софт модема от производителя, сам модуль, мк точнее, защищен от чтения прошивки, содержимое не слить, а вообще он может быть полностью залочен и прошить его не удаться, вполне вероятно что халява может когданибуть закончится, но пока полностью залоченные не попадались, вероятно оставили возможность обновления прошивки. После разлочки и заливки мешкора прошлый функционал вернуть не получится.
Мешкор прошиваем программатором через SWD, он находится на пятаках возле разъема с UART, распиновка на картинке.
Видео процесса тоже есть.
С E77-900M22S принцип работы схож, распиновка та доступна в даташите, но вот.

Вы пробовали чтонибуть припаять к модулю с контактами с шагом 1,27? Это нужно быть очень мотивированным.
Вот есть платы, пока что есть на авитах, это с одной стороны удобное подключение модуля для перепрошивки и дальнейшего использования с ардуинами, с другой уже готовый репитер с возможностью этажерить две такие платы в кроссбенд репитер. Есть тонкости с его перепрошивкой, модуль не залочен, но предустановленная прошивка под LoRaWAN уводит его в энергосбережение. После попытки соединиться в stm32 cube programmer модулю нужно надавить на ресет. Про это все есть видео.
MeshCore
Из коробки не работает. Нет, он подает признаки жизни, но нет, сейчас не работает. Это как RP2040 только еще хуже, ибо не доведено до стабильного состояния.
Первое с чем столкнулись это антенный коммутатор, это не проблема мешкора и прошивок, а варианты реализации конкретных железок, это примерно тоже самое что и входы TX\RX у RA62, и они могут подключатся на разные GPIO.
Строка находится в target.cpp. Для модуля E77-900M22S она должна выглядит так:
static const uint32_t rfswitch_pins[] = {PA7, PA6, RADIOLIB_NC, RADIOLIB_NC, RADIOLIB_NC};
Для HC-15
static const uint32_t rfswitch_pins[] = {PB0, PA8, RADIOLIB_NC, RADIOLIB_NC, RADIOLIB_NC};
Без этой настройки корректной работы не будет, антенна не будет подключена, точнее коммутироваться, причем на столе модуль работать будет, но только на столе.
Далее это TCXO, он есть не везде, но точно есть в E77-900M22S, а в HC-15 его точно нет, остальные рассматривать не будем за неимением у меня таковых. Строчка.
int status = radio.begin(LORA_FREQ, LORA_BW, LORA_SF, LORA_CR, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, LORA_TX_POWER, 16, 1.7, 0);
в этой строчки интересует цифра 1.7, напряжение которое подается на TCXO, это значение верно для E77, но для HC-15 и там где нет TCXO, по хорошему должен быть ноль. Главное что там не обязательно должно быть 1,7 вольт, значение зависит от конкретной железки, причем директиву -D SX126X_DIO3_TCXO_VOLTAGE=1.8 писать бессмысленно, ибо 1,8 и не верно и бессмысленно, если в строке инициализации не менять значение 1.7 на директиву с константой.
Ну и самое что, вишенка на торте, директива -D SX126X_CURRENT_LIMIT=140 не работает, ибо вообще не ясно на что и где она должна указывать, а раз оно не указано, библиотека устанавливает тот самый лимит защиты перегрузки по току по умолчанию в 60мА, отчего мощность передатчика ограничивается на уровне ~18дб. Кстати, а если еще и с неправильными GPIO коммутатора, на выходе может быть аж 14дб. После инициализации лоры, той radio.begin, нужно всего то добавить строку.
#ifdef SX126X_CURRENT_LIMIT
radio.setCurrentLimit(SX126X_CURRENT_LIMIT);
#endif
I2C и датчики, из коробки их нет, есть некое у lora_e5_mini, там прям в нулевой канал запихнули BME280, и данные с него отображаются вместе с напряжением в нулевом канале, решение в лоб и оно только там. Датчики можно добавить по аналогии с RP2040, но для всех их не хватает флеш памяти, поэтому надо делать по аналогии с pro micro на nRF, с подключением только основных и необходимых датчиков. Да I2C датчики на STM могут работать и работают, вопреки всяким мнениям. Можно теоретически и дисплей подключить, но что на нем смотреть и зачем.
Возможно со временем это все будет не актуально и у нас будет официальная прошивка под E77, но пока так.
Плата под E77-900M22S

Версия первая, делалась без понимания что и как, из проблем тут только отсутствие вольтметра, не понятно было как и на какие GPIO его выводить, непонятное было с GPIO под I2C, вроде сделал по даташиту, но после электронный болван в виде ИИ сказал что GPIO9 отдана под внутренние нужды и использовать его нельзя, на самом деле можно и конфиг там верный.

гербер будет доступен позже.

На плате два UART порта, первый сделан под разъем USB-TTL адаптера на CH340, такой как на картинке выше, ссылка на али есть, но ссылки дохнут от старости. Он нужен для конфигурации репитера через терминал. Второй чтобы соединять две платы в кросбенд репитер, для этого же на обратной стороне платы есть пятаки\площадки чтоб перебросить TX и RX местами. Питание на разъеме нет, подключается TX\RX и два GND.
Питание там отдельно, подведены на соответствующую колодку со входа питания и 3.3 вольта со стабилизатора. Выбрать нужно что то одно, если у нас две идентичные платы со своим стабилизатором на плате, то соединятся должны только Vin, и соответственно 3.3 вольта соединятся не должны. Если собираем именно кроссбенд из двух плат, то второй стабилизатор ставить не обязательно, очевидно 3.3 вольта можно и нужно взять со второй платы.
Колодка для I2C совместима с большинством модулей, вроде модуля BMP180 или AHT10.
Телеметрия доступна, на примере BMP180, с напряжением решим чуть позже.
Тесты и сравнения
После всех разбирательств и правок очень хочется убедиться в правильной работе, но у меня нет возможности измерить мощность.
Я взял два кросбенд репитера, один на RP2040 с HT-RA62 и репитер на E77-900M22S, поставил на обоих относительно быстрый пресет, set radio 868.732,62.5,5,6 если быть точнее, второй стороной была городская сеть. Суть, смотреть уровень сигнала только с двух репитеров, минимизируя помехи от других репитеров.
Репитеры находились в одном месте с одинаковыми антеннами TX868-JKD-20, я же с клиентом находился примерно в 300 метрах.


999b это E77-900M22S, C036 это RA62 соответственно. Разница в сигнале на уровне погрешности, сравнение условное, поэтому можно считать сигнал с одним уровнем.
Пинги


Вероятно 1dB делся на подключении антенны шнурком, а возможно повлияла разница в расположении или еще что, в других условиях они могут работать немного иначе, одно точно, проблема с мощностью решена.
Прошивки, герберы, и все остальное будет позже.
ООО «АЛИБАБА.КОМ (РУ)» ИНН 7703380158


