Магистратура в 35. Шлюз интернета-вещей
Предыстория
В этом году 4 июля мне исполнится 35 лет. В этот же день должен выйти приказ о моём отчислении из института в связи с окончанием обучения. После школы я поступил в ВУЗ, но тратить деньги на дорогу в Москву оказалось не так интересно, как зарабатывать их в местном магазине оргтехники. Компьютеры меня увлекали с самого детства, познавал я их самостоятельно, поэтому решил, как и многие, что высшее образование не понадобится. После череды компаний (продажа железок, системное администрирование, WEB-разработка, видеонаблюдение и СКУД, автоматика на ЖД) дорога привела меня на местный завод и познакомила с ассемблером.
Я осознал, что встройка — это круто. Погоня за временем исполнения кода, погружение в схемотехнику и СВЧ, необходимость одновременно и конструировать, и программировать привели меня к простому факту — я не знаю матан. Это и было решающим фактором для поступления в бакалавриат.
В 27 лет я пришёл в филиал МИРЭА по ЕГЭ на платное место направления «Конструирование и технология электронных средств». Я рад, что не прошёл на бюджет, потому что с моей небольшой зарплатой у меня появилась прекрасная мотивация учиться так, чтобы не платить. Первые два курса дали мне тот самый матан, тервер, ТФКП, без которых не очень получалось раскурить уравнения Максвелла и понять, что вообще происходит в высокочастотных цепях железок, с которыми я работаю.
Я не планировал поступать в магистратуру, но в 2022 году появилось опасение, что мой «неполноценный» диплом превратится в тыкву. Было сразу запущенно несколько процессов: мой перевод в другой отдел, который занимается разработкой телеком оборудования, запись на курсы для поступающих в магистратуру того же МИРЭА, выбор направления обучения (хотелось попробовать что-то новое). Я большой фанат автоматизации и всего, что ездит, летает и двигается, поэтому с сентября я вышел на занятия по направлению «Мехатроника и робототехника» в столице. Через полгода бессонных ночей из-за шести-семидневной рабочей недели (шесть часов дорога в Москву и обратно, четыре пары, остальные дни — работа) я смог перевестись обратно в филиал, досдать предметы, которые пропустил из-за разницы программ, и продолжить магистратуру на том же самом «Конструировании и технологии». На днях прошла моя предзащита.
Магистерская диссертация предполагает академическое обсуждение: публикацию в журнале, участие в конференции с докладом или что-то подобное. С моей точки зрения это такое себе обсуждение, поэтому я и решил поделиться с вами тем, что я делал, и результатом, которого удалось достигнуть.
Вступление
Магистерская диссертация конструктора предполагает разработку устройства, производство опытного образца и его тестирование. Студенты распределяются на практику или уже где-то работают, поэтому темы их дипломов вытекают из специализации подразделения, в которое их занесла судьба. В бакалавриате система похожая, мне довелось пройти по этому пути, и особого восторга я не испытал — хотелось прочувствовать все стадии: от идеи до тестов. Поэтому тема работы не связана ни с одним устройством, проектируемым в нашем отделе.
Я давно хотел войти в IoT из личного интереса к этой теме, а самыми интересными железками интернета-вещей с точки зрения программиста мне показались базовые станции или шлюзы.
Цели работы, сильно отличающиеся от того, что написано в тексте диплома, были сформулированы так:
получить железку на Linux, благодаря которой можно поиграться с LoRaWAN;
научиться общаться с миром по LTE и раздавать Wi-Fi;
попробовать поставить доступный PCIe свитч, т.к. в работе достаточно часто возникает потребность сделать из одного PCIe несколько;
сделать устройство, которое должно питаться от PoE (хочу);
в конце произвести хотя бы одну полностью собранную железку (для красивых фотографий) и одну запасную;
осуществить все закупки самостоятельно на собственные средства.
Из-за моего перевода с другого направления я уже отставал от программы на полгода, поэтому стартанул достаточно поздно. Прикинув разные конструктивные варианты, остановился на несущей плате, в которую втыкаются беспроводные модули и какой-нибудь одноплатник. Следуя трендам импортозамещения, вместо одноплатника, я выбрал SMARC на «Скифе», который мне предоставили коллеги из другого отдела, а на самый чёрный день, нашёл аналогичный модуль на Rockchip. Устройство получило кодовое название Kari, в честь скандинавского ётуна — покровителя воздуха и ветра. Настало время узнать, какой по счёту велосипед я изобретаю.
Аналитика
Вообще, выпускная квалификационная работа начинается не с аналитики, а с «проектной части»: описания стратегии разработки, методов управления, формирование команды и прочее. Далее следует обзор публикаций, патентов и устройств уже существующих на рынке. Отдельно хочу отметить эту статью, которая дала мне понимание о том, что вообще такое LoRaWAN. Большую часть литературы я нашёл в виде произвольных публикаций на sciencedirect, патенты — в соответствующих поисковых системах. Патентный поиск меня сильно позабавил, не знал, что можно запатентовать, например, расположение органов управления в промышленных железках. Вообще, выглядит патентная система максимально странно, но не могу сказать, что не интересно.
Особенная история с «обзором аналогов». Большинство дипломов, которые я видел, следуют такому алгоритму: у вас есть техническое задание, вы ищете пять-шесть устройств этого же класса, сравниваете характеристики, находите отклонение и сообщаете, что «в связи с отсутствием аналогов необходимо запустить новую разработку». Еще в бакалавриате у меня возникал вопрос:, а откуда берётся техническое задание?
Было принято решение писать наоборот — сначала посмотреть, что делают другие, потом выкатить ТЗ с улучшенными характеристиками. Это не очень сложно, т.к. в работе отсутствует экономическая составляющая. Достаточно вставить процессор потолще, и вот вы в ситуации, когда аналогов у вашего устройства нет.
В качестве опорных устройств были выбраны: Miktotik wAP LR8 kit, ATB-LW-BS, Вега-Абсолют БС-2.2, WAVIOT NB-Fi, LORIX One. Обычно студенты в этом разделе рисуют только таблицы параметров, которые потом сводятся для сравнения с ТЗ, но намного интереснее посмотреть, как построены подобные устройства и какие чипы используют.
Купить все перечисленные железки — путь затратный, благо существуют презентации компаний, disassembly ролики на youtube и, конечно, документация.
Mikrotilk является, фактически, wifi-роутером с miniPCIe разъёмом, который превращает его в базовую станцию.
В документации представлена и структурная схема устройства: SoC Qualcomm QCA9531 реализует Wi-Fi и Ethernet, остальные беспроводные протоколы доступны по USB в miniPCIe. Как я понял, в этом варианте пользователь выбирает, что для него критичнее: LoRa или LTE. Любопытно, как реализовано PoE. Если трансформатор для Ethernet может быть встроен в разъём, то развязки для flyback-преобразователя я на указанной фотографии не увидел.
Интересно было посмотреть и на отечественные решения. Обе LoRa-железки я видел ещё до того, как думал, что буду что-то писать про IoT шлюзы, к счастью, в открытых источниках нашлись достаточно детальные фотографии.
Вега БС-2.2 уже больше похожа на LoRa шлюз. IP67, wifi отсутствует (в общем-то он и не нужен), чипы от Semtech (большой управляющий и два приёмопередатчика), LTE для связи с внешним миром, ну и GPS для позиционирования. Выглядит всё достаточно мило, с явным запасом интерфейсов для конфигурации и отладки. Процессор AM3352. Ethernet видно прямо в центре платы, PoE, вроде, тоже заявлен, но я опять не вижу обвязки изолированной схемы питания. Хотя, я никак не могу считаться большим специалистом по этим вопросам.
Интересно было также посмотреть на WAVIOT NB-Fi, но там отдельная история благодаря тому, что ребята сделали свой протокол гостированным, да ещё и запилили свои чипы (трансивер K5553BB015). В остальном базовая станция состоит из RaspberryPi и NB-Fi модуля с микроконтроллером STM32L071KBU6 и трансиверами.
В результате обзора устройств, существующих на рынке, родилось следующее техническое задание:
Параметр | Значение |
---|---|
ЦПУ | АRM 1000 МГц |
ОЗУ, МБ | не менее 512 |
ПЗУ, МБ | не менее 1024 |
Питание | DC 12В, PoE |
Потребляемая мощность, Вт | не более 30 |
Поддержка Wi-Fi | 802.11b/g/n |
Поддержка стандартов IoT | LoRaWAN |
Количество Ethernet портов | 1 |
Диапазон рабочих температур, °C | 5…60 |
Степень защиты корпуса | IP20 |
Габаритные размеры | 180×170 х 50 |
Параметры вычислительной части продиктованы по большей части SMARCом, потребление взято с большим запасом, в основном для реализации PoE+ 802.3at. Степень защиты корпуса занижена, этот параметр определяется исключительно конструкцией, а запихивать электронную начинку в стандартный герметичный бокс как-то не очень хотелось. К тому же это требует дополнительных испытаний. Габариты были взяты произвольно, после окончания разработки были поправлены задним числом (забегая вперёд, не очень сильно).
Расчёты
Первая фаза эскизного проектирования выглядела так.
с одной стороны платы располагается SMARC;
с другой стороны три miniPCIe с USB и PCIe линиями (это и избыточно, но предоставляет бОльшую совместимость с покупными модулями);
на нижней стенке — питание и Ethernet у одного края, кнопки power, reset, а также разъём USB у другого;
индикация на фронтальной стенке (питание, lora, wifi, ethernet, lte).
В тексте ВКР (выпускной квалификационной работы) присутствует более красивая картинка.
К этому моменту сложилось примерное понимание перечня ключевых компонентов, которые потребуются. В критерии отбора добавился фактор возможности и сроков поставки: основные чипы и модули надо купить в течение месяца-двух. Поиск проходил в основном по одному очень дорогому магазину электронных компонентов и Али. PCIe-свитч ASM1184 нашёлся в этой статье и на АлиЭкспресс. Недорогой PoE контроллер KTA1137A я выбрал из-за цены на российских площадках, а всё тот же китайский магазин предложил сроки поставки 18 дней, вместо »7–9 недель». Беспроводные модули, которые также же были притащены почтой:
Структурная схема несущей платы.
Исходя из рисунка, в схемотехническую САПР закладывается пять листов схемы:
SMARC и обвязка (согласование уровней 1V8 в 3V3);
PCIE (свитч и разъёмы);
Ethernet, включая PoE;
преобразователи питания;
всё остальное (USB, индикация, UART для отладки и т.д.)
Что касается самой схемотехники, имея достаточное количество референсов, процесс разработки превращается в стыковку больших блоков между собой. У KTA1137 предоставлен дизайн отладочной платы с изолированной flyback-схемой, на ASM1184 по запросу так же можно получить референс, проектов по обвязке SMARC в открытом доступе достаточно много, в т.ч. у компании НПЦ Элвис. Звучит достаточно просто, по факту это всё сожрало кучу времени. Большая часть работы — внимательно проверить уровни напряжений сопрягаемых сигналов, не перепутать или наоборот перепутать Rx (PER) и Tx (PET) PCIe линий, подобрать аналоги того, что есть в референсах, но нет на стоках. Проблемы, в частности, возникли из-за накопительной индуктивности flyback-преобазователя. В опорном дизайне стоял здоровенный почти noname трансформатор, после поиска на сайтах Wurth и Coilcraft и сопоставления с ассортиментом Али, удалось найти ему замену, правда менее удобную в трассировке.
Отдельной историей стала индикация беспроводных интерфейсов. miniPCIе предусматривает три вывода: LED_WWAN#, LED_WLAN#, LED_WPAN#. Очень хотелось предположить, что у всех модулей туда что-то выводится, но, если у Wi-Fi и LTE модуля там действительно оказалась та или иная индикация, LoRaWAN модуль не задействует эти пины. При этом индикация у него есть, но отдельными светодиодами на самой плате.
В ходе оформления схемотехники несущей платы в САПР (на который на работе, к счастью, есть лицензия) маркировались дифференциальные пары для задания правил при трассировке. На плате несколько земель: корпус ethernet порта, изолированная часть PoE и всё остальное.
Самые большие вопросы были к этому куску схемы, если кто-то может подсказать, как нормальные люди моделируют такие цепи импульсного питания с кучей элементов в обратной связи, буду признателен.
Трассировка выполнялась исходя из шестислойного стека: верх+экран, низ+экран для дифференциальных пар, а также два дополнительных слоя: менее ответственные к трассировке сигнальные линии и питание. Для USB импеданс 90 Ом, PCIE и Ethernet 100 Ом. Расчёт профиля дифференциальной пары выполнялся во встроенном калькуляторе импедансов, выравнивание длин 0,05 мм. Благо трассировка не сложная, места много. В связи с тем, что PCIe переходили с верхнего на нижний слой (SMARC — PCIE-свитч), у переходных отверстий сигнальных синий надо было разместить и переходные отверстия с землёй для нормального формирования поля. Я это вспомнил слишком поздно, плата ушла в производство без них…
Ещё одной проблемой явилась уже упомянутая накопительная индуктивность flyback цепи. Как я упоминал, я нашёл замену, исходя из значения индуктивности, но расположение выводов у неё не подходило для удобной трассировки KTA1137. По итогу пришлось несколько коряво перенести выход PoE контроллера на bottom слой.
Использование изолированной схемы обусловлено опытом работы, связанным с системами видеонаблюдения, проводной автоматики и прочими подобными вещами. В моей жизни как минимум одна гроза и один пожар в щитке являлись причиной одновременной гибели достаточно большоего количества устройств, поэтому желание защитить ключевые компоненты устройства продиктовано душевными травмами прошлого.
Итоговый результат.
Конструкция
В ВКР это достаточно большой раздел, по большей части рассказывающий по конструкторскую документацию, её выгрузку и прочие околоЕСКД вещи.
Корпус повторяет контуры печатной платы с поправкой на установленные модули и итоговую толщину. Рисовался он прямо поверх сборки несущей платы и остальных модулей. Чтобы было веселее печатать на 3D-принтере, несколько поверхностей, в т.ч. часть фронтальной были сделаны наклонными. В остальном всё достаточно прозаично: стойки крепления платы к корпусу под шурупы, отверстия под световод индикации, отверстия под крепления кабельных сборок для антенн (на боковых поверхностях). В дипломе тут огромное количество воды, которую проще проиллюстрировать сборкой. Сплайны кабелей было рисовать в 3D уже откровенно лень.
Технология и эксперименты
Тут начинается полное отступление от текста ВКР. В работе описан технологический маршрут, оборудование, причины, по которым устройство собиралось руками, а не на автоматической линии и т.п. Потом пара этапов визуального контроля, сборка и переход к экспериментальной части. В реальности последовательность немного сбилась, два раздела ВКР слились в один.
QFN и SMD-разъёмы мне помогли припаять коллеги из другого отдела, за что им огромное спасибо. Монтаж крупных SMD и выводной монтаж я выполнял уже самостоятельно в майские праздники. После очередного дня наедине с паяльной станцией я со спокойной душой отмыл плату в УЗ-ванне, настроил лабораторный источник на DC 12В, торжественно подал питание, посмотрел, как из PoE контроллера выходит волшебный дым и отправился в последний выходной, который у меня остался.
В первый рабочий день я отправился с платой на рентген-контроль. Наиболее часто им пользуются для анализа качества монтажа BGA компонентов, но иногда полезно просветить и QFN. Перед тем, как скинуть сгоревшую микросхему, я решил узнать, дело в пайке или в моей схемотехнике.
Не в схемотехнике. На рисунке слева видно, как паста залезает с земляного полигона на пины, в частности на пины питания. На рисунке справа ответ, почему паста на снимке такая пористая. Её не прогрели, флюс просто не оплавился. Честно говоря, вижу такое впервые, но… Просто не повезло. На второй плате такого дефекта нет, если бы включил сначала её — ушёл бы на выходной довольным. После замены микросхемы (почти все ключевые компоненты брал с запасом) питание на выходе появилось. Подача PoE+ также дала на выходе flyback 6 В.
Проблема в том, что я рассчитывал, что в этой точке будет 12 В. Если открыть кусок схемы, который я показывал ранее и посчитать делитель (R28, R31), открывающий управляемый стабилитрон TL432, можно установить, что рабочая точка его активности будет как раз 6 В, поэтому после того, как он был пересчитан на 12 В, всё встало на свои места.
Пока я с помощью коллеги ковырял плату, выяснилось, что полигон на bottom слое я забыл подключить к земле. Супер.
Далее, начались проблемы со стабилизаторами. Из 12 В нарезаются напряжения 3V3, 1V8, 1V2, 5V. Последний стабилизатор включаться отказывался. После некоторого времени, потраченного на отладку, коллеге пришла мысль подать сигнал EN (enable) после включения всех остальных источников — это помогло. В результате на плате появилась RC-цепочка отсроченного старта SMARC. Наконец-то удалось увидеть приглашение в консоль Скифа.
У меня несколько сбилась хронология, но где-то же в этот период параллельно происходило изготовление корпуса. Печать выполнялась экструзией АБС пластика, усадка составила 1 мм на 200 мм длины. Первый раз печатали в один заход с высотой слоя 0,4 мм, что дало ступеньки на наклонной поверхности корпуса. Честно говоря, я впервые сталкивался с 3D-печатью, но что-то слышал про постобработку поверхности растворителями. Стало любопытно попробовать осуществить этот метод, поэтому после изготовления пары корпусов я отправился в один химический институт с кучей разных растворителей, вытяжками и другим оборудованием для создания атмосферы насыщенного пара ацетона, в который можно было бы поместить пластиковую деталь. Несмотря на прекрасно проведённый выходной в химической лаборатории, два часа в ацетоновой бане видимого эффекта не дали. По итогу перепечатали корпус в два этапа: основание и саму наклонную панель.
Устройство в сборе (замазаны всякие персональные данные).
Тесты, кроме отладки аппаратной части, заключались в загрузке ОС и проверки корректного определения устройств в lspci
и lsusb
. Всё оказалось на месте:
[root@localhost ~]# lspci
...
01:00.0 PCI bridge: ASMedia Technology Inc. ASM1184e 4-Port PCIe x1 Gen2 Packet Switch
02:01.0 PCI bridge: ASMedia Technology Inc. ASM1184e 4-Port PCIe x1 Gen2 Packet Switch
02:03.0 PCI bridge: ASMedia Technology Inc. ASM1184e 4-Port PCIe x1 Gen2 Packet Switch
02:05.0 PCI bridge: ASMedia Technology Inc. ASM1184e 4-Port PCIe x1 Gen2 Packet Switch
02:07.0 PCI bridge: ASMedia Technology Inc. ASM1184e 4-Port PCIe x1 Gen2 Packet Switch
04:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
[root@localhost ~]# lsusb
...
Bus 003 Device 004: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
Bus 003 Device 003: ID 0483:5740 STMicroelectronics Virtual COM Port
...
Дальнейшее взаимодействие с представленной аппаратной платформой возможно после разработки соответствующего специального программного обеспечения, что выходит за рамки данной работы.
Заключение
Всё заработало. Я удивлён, но всё, что планировалось, удалось завести.
Разработка заняла от стадии «эскиз на бумаге» до «сдача оформленного текста и КД» 4,5 месяца, аналитическую часть я писал ещё в прошлом году. Общие расходы на диплом составили 60'164,66 рублей, расходы на одно собранное устройство 30'635,29 рублей БЕЗ учёта стоимости SMARC. Не знаю точную стоимость Скифа, но при использовании Rockchip можно плюсовать ещё 7'000 рублей точно. Одной из целей работы было желание оценить стоимость и сроки подобной разработки, сравнить с организационными процессами, которые я наблюдаю на месте своего трудоустройства.
Касаемо самой ВКР. Одними из критериев магистерской диссертации являются актуальности и новизна. Касаемо первого, всё просто: IoT, киберфизические системы, импортозамещение — это всё очень модно и актуально. Можно спорить об эффективности, но актуальность данных ключевых слов можно оценить по тому, что о них слышно из каждого утюга. Теперь новизна. Тут можно что-то притянуть с точки зрения структуры устройства, или дизайна, или использования того же отечественного вычислительного модуля, но судить уже не мне, а, скорее, аттестационной комиссии и, конечно, вам.
Кроме описанных с самом начале статьи целей мне был интересен ещё один аспект: в чём разница между окончанием магистратуры инженера-конструктора условно в 24 года и в 35 лет. Конечно, учиться, когда у тебя полноценная работа и семья вообще не просто. Это тот ещё ад с постоянными недосыпами и практически полным отсутствием другой жизни. В принципе, многие профессионалы так и живут, но я не знал, что это, пока не попробовал, и никому такого не пожелаю. Также я специально привёл в конце расходы: не уверен, что у студента 24 лет есть лишние 60–80 тысяч на выпуск своего опытного образца. Возможно, дело в месте прохождения практики, взаимодействии с ВУЗом, есть куча конкурсов и грантов, но всё это дело удачи или большой административной работы. «Советский инженер должен уметь всё, российский — ещё и писать бизнес-планы». Многие ребята в московской магистратуре, с которыми я недолго учился, стараются уже устроиться на работу к этому времени, т.к. надо на что-то жить. И дополнить и без того большую работу расчётами экономики и маркетинговыми исследованиями, чтобы попробовать податься на грант, может получиться далеко не у каждого.
Но это было круто. Придя к необходимости получения высшего образования с некоторым жизненным и профессиональным опытом за плечами, я получил невероятное удовольствие от учёбы. Интересно было всё: от «стандартизации в управлении качеством» до «основ физики твёрдого тела». Ни разу в ходе обучения не возник вопрос «да где мне это пригодится?» Даже на философии. Сама магистерская диссертация вышла такой, как я её задумывал — максимум свободы творчества, самостоятельное выстраивание процессов, структуры работы, подходов к разработке. Единственное, о чём я жалею — не хватило времени погрузиться в схемотехническое и топологическое моделирование. Было легко заниматься проектированием железки, т.к. основная моя деятельность — разработка встраиваемого программного обеспечения. Лучший отдых — смена деятельности.
Я безмерно благодарен коллегам и куче интересных людей, с которыми взаимодействовал во время консультаций по тем или иным вопросам. Огромное спасибо, что помогали и поддерживали меня.
Отдельная благодарность трём преподавателям МИРЭА:
Кузнецова Татьяна Анатольевна (математический анализ).
Батоврин Виктор Константинович (системная инженерия).
Богданов Сергей Александрович (схемотехника).
Спасибо за внимание. Постараюсь ответить на ваши вопросы.