Автономный LTE роутер своими руками | Часть 1 — От идеи до схемы

3e79f0cd62b2f534bfab13381ee223cd.png

Приветствую, в этом цикле статей постараюсь описать разработку собственного сетевого устройства и поделиться своими мыслями, набитыми шишками и конечно же опытом. Цикл статей будет охватывать временной период порядка 1.5 лет неторопливой разработки.

Да-да, это именно разработка собственного роутера, не простой допил уже имеющегося и переупаковка в другой корпус. Отнюдь! Схема, печатная плата, пайка — всё сделаем сами и защитим диплом.

А какова мотивация?

Классическое «А зачем?» с буханками сюда тоже относятся. Буду краток, мы ведь не за этим собрались:

  1. Мне нужен девайс, удовлетворяющий мои потребности

  2. Готовые девайсы на рынке, если не совсем днище — то не проходят по требованиям

  3. В конце концов, это бесценный опыт и моя дипломная работа :3

Ожидая вопрос «А почему просто не использовать смартфон…» Просто? Чтобы сделать банальный TTLfix нужен Magisk, да даже если есть, то что делать с: подключением антенн, RJ45, ресурсом аккумулятора? Даже если оператор позволяет без ухищрений раздавать интернет, то не всегда такие тепличные условия доступны и надеяться только на это глупо.

Сам же роутер для меня удобнее, чем связка телефон+ноутбук или модем+ноутбук.

Надеюсь тема закрыта, не начавшись и в комментариях ко всем частям будет вестись обсуждение проекта и устройства. Приятного прочтения!

Как зарождалось устройство? И немного о себе

Электроника и околотехника — это мой основные увлечения, хотя я и не являюсь профессионалом и истиной в первой инстанции. Это так, отступление дабы у вас не формировались завышенные ожидания относительно моей компетенции. 

Роутерами я увлекаюсь ещё с 16 лет. Лето 2019 года: благодаря лучшему другу Арсению ко мне в руки попадет TL-MR3220 и становится на долгое время основным, первое физическое знакомство с OpenWRT.

Естественно не просто так) Роутер полукирпич, на фото жесть по его поднятиюЕстественно не просто так) Роутер полукирпич, на фото жесть по его поднятию

Снова лето, 2020 год: скилы повышаются. На этот раз расширение памяти через USB, знакомство с реализацией сетевой загрузки на OWRT и статья в локальный паблик про это дело.

Очень интересная и несправедливо забытая технология среди обычных гиковОчень интересная и несправедливо забытая технология среди обычных гиков

Второй курс, весна 2021: в качестве дипломной работы и задачки «just for fun», я сажусь делать свой роутер.

«Почему именно роутер?» У меня эпизодически имеется необходимость в использовании портативного роутера, к примеру, при выездах на море/в гости в родную деревню. Да и это просто круто, особенно учитывая, что большая часть группы, как окажется, втупую скопипастит воду из интернета к себе в дипломы, а ты действительно что-то сделаешь руками.

Ранее летом 2021 для этого я использовал данный сетап:

Raspberry Pi 3 Model B Rev 1.2 + Ugreen 10000 мАч + Huawei e3372-153Raspberry Pi 3 Model B Rev 1.2 + Ugreen 10000 мАч + Huawei e3372–153

Всё бы хорошо, но это отдельные девайсы, которые мало того, что мне нужны по отдельности, так ещё не являются монолитным устройством.

Дорогу в деревню на электричке (порядка ~5ч) сетап переживает отлично, при установке на месте появляются сложности:

Сетап закреплённый на уровне крыш и направленный до ближайшей БССетап закреплённый на уровне крыш и направленный до ближайшей БС

Проблема 1. Всё это дело питается от телефонной зарядки которая находится на чердаке. А в свою очередь, к ней на чердак тянется «переноска» c 220V и это крайне неудобно. Ещё в процессе руфинга чердака становится понятно, что PoE в роутере нужен обязательно.

Да я слышал про PoE hat, но это слишком простой путь. Поэтому жду фитбек от тех, кто пользовался PoE на малине.

Кейс из PLA после дня под палящим кубанским солнцемКейс из PLA после дня под палящим кубанским солнцем

Проблема 2. Крепление роутерной части на крыше, если конструкция для этого не проектировалась — крайне гиблая затея.

Проблема решается просто. Либо делаем нормальный корпус, либо покупаем антенну и прячем роутерную часть в доме.

Лето 2022, Antex Petra BB MIMO 2*2 + собственный роутерЛето 2022, Antex Petra BB MIMO 2×2 + собственный роутер

Анализируем рынок

Прежде чем ваять что-то своё, неплохо бы ознакомиться с готовыми устройствами. Как минимум чтобы своровать идей вдохновиться и понять во что мы вляпались — Это я понял уже только после создания своего роутера, это первая ошибка. Я хоть и вдохновлялся одним из девайсов, который будет описан ниже, но этого недостаточно. На мой взгляд, балом автономных роутеров потребительского сегмента, на данный момент правят ZTE и Huawei. Если абстрагироваться от названий, которые дают операторы сотовой связи, то внутри это всё те же вышеописанные роутеры.

Небольшая подборка роутеров из онлайн магазинов двух операторов связи, что доступны в продаже на момент написания статьиНебольшая подборка роутеров из онлайн магазинов двух операторов связи, что доступны в продаже на момент написания статьи

Кроме моделей от именитых брендов, рынок роутеров и модемов наводнили китайские подделки и поделки. Не знаю, зачем и почему, но их отличительной чертой является логотип, который китайцы не стесняются лепить, как и на свои поделки, так и на подделки.

Знакомьтесь, чудо китайской инженерной мысли с чипсетом от обычного смартфона — CPE903-1Знакомьтесь, чудо китайской инженерной мысли с чипсетом от обычного смартфона — CPE903–1

Если стесняются лепить логотип на страницу устройства, то залепят в веб:

Были подобные во владении? — опишите свой опыт, будет интересно почитать.Были подобные во владении? — опишите свой опыт, будет интересно почитать.

Возвращаясь к теме, давайте отберём 2 интересных на мой взгляд роутера и разберём каждый, что называется «по косточкам». Предвидя возможный вопрос: «А почему именно 2, их же вон сколько всяких разных!» — позвольте снова немного отойти и ввести в курс дела, ибо информация довольно нетипичная для Хабра.

Так уж сложилось, что автономно-портативные роутеры базируются на двух вариациях чипсетов — относительно открытые и поддающиеся переходу на свободные прошивки, и закрытые, модификации ПО для которых долго и скрупулёзно создаются в ходе реверс-инжиниринга. Для конечного пользователя это практически ничего не меняет (за исключением ограниченности возможных модификаций), но вот для разработчика собственного устройства, чипсет — это первая отправная точка.

Ниже представлена сводная таблица, составленная в процессе анализа рынка, располагайтесь удобнее, наливайте чай и анализируйте вместе со мной :3

Ссылка на таблицу в кликабельном виде – в источникахСсылка на таблицу в кликабельном виде — в источниках

Обозначим тезисы после взгляда на таблицу:

  • Форм-фактор «роутеров повербанков» с возможностью подключения внешнего USB LTE модема, не особо прижился среди пользователей, их вытеснили роутеры с встроенным модемом и слотом под SIM — это видно, как из доступности, так и из годов выпуска SoC, которые обычно коррелируют с годами производства девайсов. 

  • Все модемные SoC базируются на ARM — повод задуматься о энергоэффективности MIPS роутеров.

  • Модемные SoC сложны для разработки и подходят для крупных партий устройств — на все описанные безмодемные SoC имеется техническая документация, не обложенная NDA (либо обложенная когда-то, но ныне слитая в сеть)

С форм-фактором относительно всё понятно, пользователи обленились и перестали собирать свои сетапы роутер+USB LTE модем, ведь на рынке появились удобные, умещающиеся в среднюю по размеру ладонь, роутеры со встроенным модемом.

Но вот c модемными SoC не всё так однозначно, c одной стороны удобство для разработчиков, когда практически на одном чипе располагается модемо-вычислительная часть, но это одновременно и сложность ведь требуется подробная документация, а без полноценного партнёрства и/или без лицензии её получить нереально. Помимо этого сложности с ПО — в мейнлайн ветке Linux вы не найдёте поддержки модемов серии MDM, кроме одного единственного MDM9615, а следовательно и кастомных прошивках аля OpenWRT и прочих — тоже. Это же подтверждается тем что, выложенные в сеть исходники ПО базируются на версиях ядра 3.x.x.

«Отлично, а что с автономными роутерами на относительно открытых чипсетах?» — по сути, те же роутеры что и их большие собратья. Если открыть даташит на один из указанных в таблице чипсетов, то это быстро станет понятно. Соответственно программная поддержка есть, но значительно лучше, чем описано выше, где примерный её уровень, это отсутствие.

Итак, после того как все точки над Ё расставлены, можно наконец ознакомиться с готовыми девайсами, которые лично мне приглянулись:

Huawei E5770

a8b26cf07b40e4a5a3d6697f340ad41e.png

Претендент, которым я и вдохновлялся, идеальный, за исключением двух моментов:  

  1. Беды с ПО — древняя версия ядра + софта и библиотек, соответственно уязвимость на уязвимости. Ситуацию разбавляет возможность накатить Entware (благо места на флеше зачастую вагон), но это не панацея.

  2. Один порт Ethernet — даже находясь вне дома у меня была потребность сразу в двух портах, к тому же, скорее всего по-человечески нельзя менять его назначение «на лету».

Ross&Moor PB-X5

f7c3b0e0ead2a1c3a9310b0b252259d6.png

  • SoC — AR9331 | одно ядро MIPS24Kc

  • 8Mb ROM & 64Mb RAM

  • WiFi 2.4Gz b/g/n + Ethernet

  • Аккумулятор 5200mAh — 2×18650

  • 2 USB A хост/зарядка + MicroUSB зарядка

  • ПО: U-boot + OpenWRT

Претендент из разряда «допили сам», внутри прикольная этажерка из двух плат с простенькой схемотехникой, но не всё так радужно:

  1. Роутеру требуется LTE модем, а это значит либо торчащий из корпуса неудобный свисток, либо создание корпуса с нуля и включение модема внутрь.

  2. Довольно хилый и жрущий процессор

  3. По-прежнему один порт Ethernet, но по крайней мере он конфигурируется, как угодно.

После анализа готовых устройств, думаю есть смысл описать полный список «хотелок», составить своеобразное ТЗ, дабы было от чего отталкиваться:

  • 2 порта Ethernet, WiFi

  • Достаточно ёмкий аккумулятор дабы устройство могло жить 4+ часа

  • Открытое ПО

  • Поддержка PoE

  • Ну и до кучи, мониторинг по всем линиям питания

На последние 2 пункта меня вдохновили роутеры от небезызвестной Mikrotik. C PoE думаю все знакомы, очень удобная технология, упрощающая жизнь и сокращающая провода. 

Мониторинг же имеется в некоторых продвинутых моделях Mikrotik и позволяет мониторить вот это поворот жизненные показатели роутера. Для меня это скорее дополнительная задачка, которую интересно реализовать.

Конечно же можно было использовать готовый девайс. Да и если бы не мой нездоровый интерес к роутерам, то скорее всего я бы так и поступил. Но поскольку это скучный вариант, то давайте уже наконец приступить к подбору SoC и знакомиться со схемой. А то заканчивается шестая страница текста, а роутера ещё «в проекте» нет!

SoC

Любая схема электронно-технического устройства начинается с подбора мозга системы, будь это МК, SoC или FPGA. Честно признаться я особо и не помню, как мой выбор с ходу пал на старый добрый MT76×8. В следующий раз постараюсь исправиться и как минимум записать :3 К слову, это вторая ошибка. Из-за безалаберного выбора SoC были пойманы некоторые грабли, но об этом позже.

Процессор имеет следующие ттхПроцессор имеет следующие ттх

И может работать в двух режимах, так называемые «IoT Device Mode» и «IoT Gateway Mode», как их именует Mediatek. Первый режим направлен на работу с внешней периферией (EMMC/SD-XC/etc.) посредством 16 контактов GPIO. А второй использует эти же 16 линий в качестве дополнительных 4 портов Ethernet и как понятно, это нужно обычно в роутерах. Первый же режим предназначен для всякого IoT, на ум сразу приходит Onion Omega2, Лёше привет), в котором используется именно этот процессор. Наверно не каждый, кто держал в руках «луковицу», догадывался что она может быть ещё и роутером с 5 портами.

С процессором почти разобрались. Остаётся определиться с типом монтажа на плату.
Есть синяя и красные таблетки два варианта:

«голый» SoC вместе со всей обвязкой паяется руками на плату«голый» SoC вместе со всей обвязкой паяется руками на платуSoM – System on Module, вся необходимая минимальная обвязка уже распаяна на небольшой печатной плате, в зависимости от форм-фактора, нужно запаять/установить на плату.SoM — System on Module, вся необходимая минимальная обвязка уже распаяна на небольшой печатной плате, в зависимости от форм-фактора, нужно запаять/установить на плату.

Казалось бы, там и там устанавливается процессор, но есть один нюанс. Гусары молчать! В случае с непосредственной запайкой процессора на плату, увеличивается сложность и плотность монтажа платы, на этапе её трассировки (разводка под RAM, обвязка радиочасти и вот это всё).

В случае с модулем, за нас, так сказать «подумали» и все усилия сводятся только к выбору и установке того или иного модуля на плату. А поскольку MT76×8 распространяются только в DR-QFN корпусах и на момент сборки платы, QFN я буду паять первый раз в жизни — то выбор очевиден.

Использование процессорных модулей поверхностного монтажа — довольно распространенно и вполне нормально, особенно в мелкосерийных «взрослых» устройствах. В пример можно привести тык и тык. Поэтому не считаю зазорным использовать данный вариант.

Выбор модулей поверхностного монтажа не такой уж большой: либо «попсовый» и относительно известный модуль от Onion — Omega2s. Либо менее известный модуль HLK-76×8 от китайцев из Hi-Link — многим электронщикам знакома эта фирма своими преобразователями питания. Также есть клоны модулей HLK, но ввиду отсутствия информации по ним — этот вариант отбросим. Модули настолько похожи по количеству GPIO, что проще описать каких GPIO нету на каждом из модулей:

fdc1cc5d1e021e85b4a8540380f79b50.png

Поскольку один из моих знакомых собирал отладочную плату на модуле Omega2s, то я решил, что? — Правильно! Пойти по противоположному пути и использовать модуль от Hi-Link. Отличия я показал, поэтому переходим к финальной части статьи.

Схемотехника

Не буду тянуть Хабр за НЛО, поэтому сразу покажу схемуНе буду тянуть Хабр за НЛО, поэтому сразу покажу схему

Знакомьтесь, перед вами первая версия схемы роутера и она была значительно переработана по части питания, но без косяков не обошлось….

Сейчас я в поисках другой среды разработки или Хабр посоветуй ECAD

Как можно было заметить проект делался в EasyEDA — бесплатной онлайн ECAD системе, местами кривенькая и косая, но я считаю это расплатой за удобное использование из любого браузера. После создания первой версии отладочной платы появилось желание освоить что-то менее кривое, поэтому вот небольшой список критерий:

  • Не обязательно онлайн

  • Кроссплатформенная

  • Интеграция с поставщиками компонентов

  • С бесплатной лицензией (аля лицензия для хоббистов у Fusion360. Классическое йо-хо-хо тоже вариант, но осуждаю)

  • Чтобы трассировка дифпар не вызывала боль ниже пояса

И главное: чтобы ECAD была принята на рынке труда среди вакансий Embedded работодателей. Что под этим подразумевается? Я эпизодически просматриваю вакансии Embedded разработчиков и там встречаются критерии аля «умение разрабатывать в %ECAD_NAME%». Было бы довольно неплохо, если предложенная вами ECAD подходила хотя бы под несколько описанных выше критерий. 

Если вы можете посоветовать что-то почти новичку — Welcome в комменты и заранее спасибо)

Конечно же, о выборе за меня и речи не идёт, у меня есть свои размышления на эту тему, но хотелось бы услышать мнения более компетентных людей…

Прежде чем продолжить, давайте сразу уточню один момент — Я не привык изобретать велосипеды, написал человек делающий свой роутер поэтому бОльшая часть схемы основывается на референсах и схемах устройств которые уже имеются на рынке. Как по мне, эта практика имеет право на жизнь, поскольку в таком случае некоторые риски сводятся на нет, хоть и не полностью. Да и будем откровенны, довольно не всегда разработчикам приходится придумывать что-то с нуля, зачастую части схем базируются на референсах описанных в даташитах и апноутах. Поэтому в источниках, помимо непосредственно материалов, на которые я ссылался, вы также найдёте и референсы схем.

Продолжаем, поскольку я использовал блочное разделение частей схемы — давайте поблочно смотреть что и почему изменилось, а затем плавно перейдём к общему обзору схемы:

Преобразователи питания и зарядка для Li-Ion

Наглядная демонстрация того, как одна микросхема может заменить сразу несколькоНаглядная демонстрация того, как одна микросхема может заменить сразу несколько

Как и в большинстве поделок, что можно найти в интернете — в первой версии зарядка базировалась на классической TP4056. Была срисована схемка зарядно-защитного модуля на её базе и без каких-либо проблем интегрирована в общую схему.

Однако после того как была составлена первая версия схемы и начата трассировка платы на её основе, мне на глаза попадается статья: Препарируем дельфина: что внутри у Flipper Zero. И там я замечаю крайне интересный контроллер заряда с I2C и кучей наворотов — BQ25896. Быстро принимается решение миграции на данную микросхему. Попутно выкидывается преобразователь на 5V FP6291, поскольку у bq«шки уже имеется мощный преобразователь, заточенный под OTG, но это не мешает его использовать и в своих целях (с оговоркой на некоторые нюансы).

Между тем схема преобразователя 3.3v не потерпела изменений — и это третья ошибка. В референсной схеме на модуль расширения Omega2 Pro, преобразователь AP3417 подключается к ветке 5V и работает сугубо на понижение. А что сделал я? — Правильно! Подключил к выходу SYS контроллера, а это по сути выход батареи с характерными уровнями напряжения. Когда ошибка вскрылась, было поздно и платы уже ехали. Были надежды, что установка SYS_MIN у bq«шки хоть как-то поможет, но нет — разница напряжений недостаточная для эффективной работы преобразователя 3.3v……

Порты Ethernet и реализация PoE

Как ни странно, но тут было допущено сразу несколько недочётов, если не сказать ошибок:

Как вам прайс 3 бакса за разъём?Как вам прайс 3 бакса за разъём?

Естественно цена не взята китайцами с потолка и обусловлена следующим:

  • Самое дорогое — поддержка PoE 802.3af. Хотя, казалось бы, объединили несколько пар в разъёме и завели их на диодный мост, а оттуда на выводы

  • Встроенные трансформаторы

  • Стандартные светодиоды в порту

Всё это возможно реализовать самому и вышло бы дешевле. Но некому вернуться в прошлое и дать мне по шапке за мою лень)  

PoE реализован как опциональная фича, как это сделано в той же малине с PoE hat. Схема работы этого чуда следующая:

PoE естественно пассивный и вангую что даже на половину не попадает под стандарт, держите это в головеPoE естественно пассивный и вангую что даже на половину не попадает под стандарт, держите это в голове

Увы, ввиду некоторых обстоятельств, мне до сих пор так и не удалось проверить работу PoE, хотя на бумаге худо-бедно работать должно.

Что касается светодиодов — видимо не зря практически все производители сетевых железок на MTK, используют по одному светодиоду на порт. «Почему?» — С этим вопросом вынужден оставить вас, до выхода статьи про ПО собственного роутера. Вы ведь не хотите спойлеров?) Просто оставим пометочку, что лучше использовать по одному светодиоду на порт и не выделываться.

АЦП

Изначально была идея — использовать отдельные микросхемы, аля MCP3021 как в схеме Omega2Pro. Но затея разводить по отдельному участку с АЦП для каждой ветки питания, как-то не вдохновляла.

Поэтому мой выбор достаточно быстро пал на INA3221. Трёхканальный АЦП от Ti измеряющий напряжение, ток и мощность в одном флаконе.

«Почему именно она?» — Всё просто, данная микросхема используется в видеокартах Nvidia GTX 9XX/10XX серий и её в случае чего, можно легко найти в донорах, если под рукой такие имеются. Я не занимаюсь ремонтом карт, однако на момент создания дипломной — у меня была возможность использовать запасы доноров, спасибо мастеру нашей группы)

А вот собственно схема и трассированный блок АЦП. Схема не потерпела изменений, кроме косметических и в ней не было найдено ошибок, красотаА вот собственно схема и трассированный блок АЦП. Схема не потерпела изменений, кроме косметических и в ней не было найдено ошибок, красота

По софтовой работе с АЦП будет рассказано в следующих частях. Здесь по схемотехнике, отмечу только два момента.

Первый, касательно трассировки измерительных шунтов — они подключаются так называемым соединением Кельвина:

Такое подключение нужно для уменьшения погрешности измерения, которое может быть вызвано сопротивлением дорожек и выводов резистораТакое подключение нужно для уменьшения погрешности измерения, которое может быть вызвано сопротивлением дорожек и выводов резистора

Второй, это работа PoE — она будет ограничена максимум 26 вольтами, ибо именно столько может измерять конкретный АЦП.

Отладочные блоки

Следующая интересная часть схемы — встроенный преобразователь USB<->UART. «Зачем он на плате?» — Конечно же для «аппаратной» консоли Uboot и Linux! Да и поскольку первая версия платы в любом случае будет отладочная, то на ней обязаны существовать подобные блоки.

Внимательные на месте? Сможете найти ошибку в обоих схемах связанную с линями данных UART?)Внимательные на месте? Сможете найти ошибку в обоих схемах связанную с линями данных UART?)

Микросхемы были заменены, лишь из-за проблем с логистикой, дешевле и проще оказалось дербанить красные модули с Aliexpress.

Когда не нашёл 34-x пинового разъёма. (Схема перевёрнута для удобства)Когда не нашёл 34-x пинового разъёма. (Схема перевёрнута для удобства)

Можно сказать, классическая гребёнка GPIO. На неё выведена большая часть контактов модуля, хотя и не все — из-за возможной сложности с трассировкой, не были продублированы и оставлены за бортом пины MDI0 и MDI4.

Но вот в случае с MDI4 были оставлены «нулевые» резисторные сборки, дабы была возможность отключать интерфейсную часть от разъёма в случае использования альтернативного «IoT Device» режима пинов.

Олды возможно заметили, но распиновка разъёма была составлена таким образом, чтобы подходить по числу контактов, к стандартному 34-x пиновому IDC шлефу от FDD.

Референсом идеи послужили подобные 40 пиновые шлейфы для Raspberry PiРеференсом идеи послужили подобные 40 пиновые шлейфы для Raspberry Pi

Очень удачно получилось дублировать линии питания и земли, одновременно устранив проблему таких шлейфов — низкую нагрузочную способность на один провод + попасть в нужное число контактов.

Конечно же подразумевается, что «релизной» версии платы эти блоки применяться не будут, из-за них увеличивается как стоимость, так и сложность с размерами платы.

Нововведения

Не обошлось и без нововведений — на дифпары USB и Ethernet были добавлены ESD сборки BV-SRV05–4, вместо отдельных диодов. Помимо супрессоров, на линии USB были добавлены синфазные дроссели в корпусе 1206. 

Лично я считаю это хорошим тоном при создании собственных устройств, хотя может кто-то сочтёт это лишней мерой, поскольку делается «для себя». Однако в массовой качественной электронике, это стало стандартом де-факто и должно применяться повсеместно. Поскольку для меня, как для энтузиаста самоучки это отдельный «тёмный лес», могу лишь поделиться довольно подробной статьёй на эту тему и своей реализацией, а компетентные люди оценят правильность моих действий:

Не трудно догадаться, что слева USB, а справа MDI4Не трудно догадаться, что слева USB, а справа MDI4

Ещё в качестве эксперимента решил попробовать использовать резисторные сборки, вместо отдельных резисторов для ограничения тока светодиодов. Всегда было интересно попробовать как оно паяется, обязательно затронем это, но это уже в следующей статье про сборку платы.

Ну и под конец – оставлю вас вместе с текущей версией схемыНу и под конец — оставлю вас вместе с текущей версией схемы

Итоги первой части

Ни разу не пожалел, что начал данный проект, хотя и признаться честно — одному идти сложнее. Даже из 1/5 от моей истории проекта, есть что подчерпнуть и есть за что поругать. 

Это мой первый опыт публикации на Хабре, ранее были только локальные паблики и форумы, поэтому — буду рад услышать любую адекватную критику по поводу самого материала, его подачи и статьи в целом. Спасибо что уделили время, увидимся в следующих частях (если меня не закидают тапками :3)!

Отдельные благодарности

© Habrahabr.ru