IoT-хаб на Intel Edison

Привет, GT!

Если вы хотели бы сделать свой собственный «железный» модуль на Intel Edison, но не уверены, с какого бока к нему подступиться — этот текст для вас. Он — про особенности и мелкие нюансы создания своего устройства на Edison, без использования готовых отладочных плат Intel или Sparkfun.

Недавно у нас возникла специфическая задача: нам понадобился IoT-хаб (то есть шлюз между специфическими для «Интернета вещей» сетями 6LoWPAN и LoRa, которыми мы занимаемся, и внешним миром) на архитектуре x86. Наш стандартный вариант — это решение на нашем собственном микрокомпьютере Unwired One на архитектуре MIPS, но в данном случае был нужен именно x86.

Дело в том, что хаб у нас — это не просто транслятор из 6LoWPAN/LoRa во внешний мир всего, что с той стороны прилетело, а во-первых, небольшой сервер IoT-сети, который поддерживает её существование, раздаёт IP-адреса (при наличии в данной сети таковых) и занимается прочей технической работой, во-вторых, собственно border router из IoT во внешний мир, в-третьих, прослойка на уровне приложений, превращающая наши собственные протоколы IoT-сети в распространённый MQTT и унифицирующая сети разных видов, а в-четвёртых, платформа, на которой клиент может сам написать какой-либо интересный ему софт, проводящий накопление и обработку данных до отправки их на большой сервер, в облако и т.п.

725da5e64b96491a913d2a89365e5117.jpg

Собственно, в последнем и возникла загвоздка. Проблема в том, что при всех разговорах о грядущей победе IoT, с ПО этого уровня в нём всё довольно плохо — его, если говорить коротко, нет. Стандартного, универсального, не привязанного к конкретной железке и не написанного на яве (да простят меня её поклонники, но когда у вас 256 МБ ОЗУ — это много, Java — так себе выбор).

И тут мы познакомились с СУБД Tarantool разработки Mail.ru. Лёгкая — работает на устройствах с ОЗУ от 128 МБ. Универсальная — не привязана к конкретному вендорскому железу или конкретным вендорским облакам. Со встроенным сервером приложений — и скриптовым языком Lua.

Одна проблема — Tarantool не работает на MIPS, 64 МБ памяти ему всё-таки мало, а также он хочет FPU, которого у нас также нет. Вторая проблема — встраиваемые компьютеры на ARM, на которых Tarantool в принципе работает, весьма редко встречаются в габаритах меньше 50×50 мм. И если для промышленных проектов это часто безразлично, то для нашего набора быстрого прототипирования Unwired Kit очень не хотелось бы выходить за пределы ширины базового модуля — 45 мм — без веских на то оснований. Кроме того, встроенный Wi-Fi — отдельная редкость, а если мы говорим про набор для прототипирования, то его в девяти случаях из десяти используют именно с Wi-Fi.

К счастью, на рынке есть модуль, идеально подходящий под наши требования — очень маленький, с Wi-Fi и не на MIPS.

Это, очевидно, Intel Edison.

f1097ef3cd254f7a879b61eabdf1ad95.jpg
Слева Unwired One, справа — Edison.

Поэтому мы взяли — да и сделали модуль UMDK-EDISON, то есть переходник с Intel Edison с его специфическим разъёмом на формат наших модулей.

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

Особенности и трудности

Главная проблема Edison — это разъём. В нём используется межплатный разъём высокой плотности с неприятно мелким шагом ног — 0,4 мм; ширина одной ноги — 0,2 мм, зазор между ногами — 0,2 мм. С одной стороны, это если не исключает всякий ЛУТ, то делает его довольно трудным; с другой — такие размеры ещё находятся в пределах того, что в отечественной классификации подпадает под 4 категорию сложности — то есть тот же «Резонит» такие платы сделает быстро и по базовым расценкам.

С пайкой чуть сложнее —, но тоже решаемо. Мы в пробные образцы запаивали разъёмы «комбинированным методом» — облуживали дорожки, наносили поверх хороший флюс (EFD SolderPlus NCLR-A), приклеивали разъём и ставили в печку для паяльной пасты, после печки доводили тонким жалом и оплёткой для удаления перемычек между ножками. Думаю, хорошей тонкой «микроволной» можно запаять и полностью вручную, ну, а для сколь-нибудь массового производства, конечно, надо делать нормальный трафарет и ставить разъём на пасту.

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

Разъём делает компания Hirose и называется он DF40C (2.0)-70DS-0.4V (51). Мы покупали их в «Элитане» — получилось по 60 рублей штука с доставкой примерно за месяц. На складах в России такой экзотики ни у кого нет, но если текущие сроки и цены «Элитана» не устраивают — можно попробовать «Контест», «Воркэл» и другие компании, возящие компоненты под заказ.

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

Зато после того, как вы разобрались с разъёмом, подключение Edison оказывается предельно простым:

  • на три ножки VSYS и одну DCIN подать +3,3 В (допустимый диапазон — 3,15…4,5 В)
  • на шесть ножек GND подать «землю»
  • PROFIT!!!

То есть, говоря ещё короче, достаточно подать питание.

Если же вы хотите большего — то в первую очередь стоит обратить внимание на:

  • Все GPIO работают с уровнями 1,8 В, поэтому для сопряжения с электроникой с питанием 3,3 В или 5 В нужны согласователи уровня. В качестве преобразователей уровня мы используем TI серии TXB. Работают как часы, хотя, конечно, есть много альтернатив.
  • Напряжение 1,8 В для этих согласователей можно взять с ножки VDD1V8, внешний стабилизатор не нужен
  • Если вы питаете Edison не ровно от 3,3 В, а например, просто от банки литиевого аккумулятора, то стабилизированные 3,3 В для питания периферии можно взять с ножки VDD3V3
  • В общем случае вы захотите вывести наружу отладочную консоль UART — это ножки GP130 (RX) и GP131 (TX). Без консоли Edison довольно беспомощен — по умолчанию Wi-Fi у него не поднимается, поэтому консоль является единственным средством доступа внутрь. UART надо выводить через преобразователь уровней и/или мостик на USB (обратите внимание, что мостики бывают разные: например, FT232R умеет работать с уровнями 1,8 В как родной, а вот более дешёвый CP2102 — нет, ему нужен промежуточный преобразователь в 3,3 В)
  • Второй UART можно взять с GP134 и GP135
  • Для порта USB у Edison есть сигнал включения питания и сигнал перегрузки по питанию, поэтому USB лучше подключать через специализированный свитч — например, MIC2019. Не забывайте про уровни 1,8 В — свитч должен иметь уровень »1» на входе EN в районе 1,5 В и выход FAULT с открытым стоком, который вы резистором подтянете к VDD1V8; скажем, нежно любимые мной свитчи STMPS21×1 работать с Edison не будут.

Бонус-трек

  • Edison Compute Module Hardware Guide — официальный документ Intel по работе с Edison с точки зрения разработчика
  • Схема электрическая принципиальная нашего адаптера для Edison. Фактически, это минимум, с которым Edison запускается — плюс преобразователь уровней на 8 GPIO (включая отладочный UART), плюс второй UART, который идёт на наш радиомодем 6LoWPAN, плюс порт USB
  • Библиотека с Edison для DipTrace (в ней два символа: с группировкой ножек по номеру и по смыслу)

P.S. И, разумеется, на IoT-хакатоне в Mail.Ru в следующие выходные на руках у команд будет именно эта связка — Intel Edison, наши модули 6LoWPAN и СУБД Tarantool.

© Geektimes