Привет, GT!
Если вы хотели бы сделать свой собственный «железный» модуль на Intel Edison, но не уверены, с какого бока к нему подступиться — этот текст для вас. Он — про особенности и мелкие нюансы создания своего устройства на Edison, без использования готовых отладочных плат Intel или Sparkfun.
Недавно у нас возникла специфическая задача: нам понадобился IoT-хаб (то есть шлюз между специфическими для «Интернета вещей» сетями 6LoWPAN и LoRa, которыми мы занимаемся, и внешним миром) на архитектуре x86. Наш стандартный вариант — это решение на нашем собственном микрокомпьютере Unwired One на архитектуре MIPS, но в данном случае был нужен именно x86.
Дело в том, что хаб у нас — это не просто транслятор из 6LoWPAN/LoRa во внешний мир всего, что с той стороны прилетело, а во-первых, небольшой сервер IoT-сети, который поддерживает её существование, раздаёт IP-адреса (при наличии в данной сети таковых) и занимается прочей технической работой, во-вторых, собственно border router из IoT во внешний мир, в-третьих, прослойка на уровне приложений, превращающая наши собственные протоколы IoT-сети в распространённый MQTT и унифицирующая сети разных видов, а в-четвёртых, платформа, на которой клиент может сам написать какой-либо интересный ему софт, проводящий накопление и обработку данных до отправки их на большой сервер, в облако и т.п.
Собственно, в последнем и возникла загвоздка. Проблема в том, что при всех разговорах о грядущей победе IoT, с ПО этого уровня в нём всё довольно плохо — его, если говорить коротко, нет. Стандартного, универсального, не привязанного к конкретной железке и не написанного на яве (да простят меня её поклонники, но когда у вас 256 МБ ОЗУ — это много, Java — так себе выбор).
И тут мы познакомились с СУБД Tarantool разработки Mail.ru. Лёгкая — работает на устройствах с ОЗУ от 128 МБ. Универсальная — не привязана к конкретному вендорскому железу или конкретным вендорским облакам. Со встроенным сервером приложений — и скриптовым языком Lua.
Одна проблема — Tarantool не работает на MIPS, 64 МБ памяти ему всё-таки мало, а также он хочет FPU, которого у нас также нет. Вторая проблема — встраиваемые компьютеры на ARM, на которых Tarantool в принципе работает, весьма редко встречаются в габаритах меньше 50x50 мм. И если для промышленных проектов это часто безразлично, то для нашего набора быстрого прототипирования Unwired Kit очень не хотелось бы выходить за пределы ширины базового модуля — 45 мм — без веских на то оснований. Кроме того, встроенный Wi-Fi — отдельная редкость, а если мы говорим про набор для прототипирования, то его в девяти случаях из десяти используют именно с Wi-Fi.
К счастью, на рынке есть модуль, идеально подходящий под наши требования — очень маленький, с Wi-Fi и не на MIPS.
Это, очевидно, Intel Edison.
Слева 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; скажем, нежно любимые мной свитчи STMPS21x1 работать с 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.
Автор: Intel