Как уважаемыее знают, вот уже почти год мы разрабатываем маленький компьютер (примерно с SD-карточку), работающий под OpenWRT, со встроенным Wi-Fi, USB, Ethernet, азартными играми и доступными женщинами. Дмитрий dzhe уже несколько раз писал про него — и, в общем, с каждым разом собирал в комментариях один и тот же вопрос: а зачем вы вообще его делаете? Ну ведь есть же Raspberry Pi, стоит он столько же, есть VoCore, Carambola, Edison, в конце концов, — зачем нужен ещё один «нанокомпьютер»?
Пожалуй, надо наконец на этот вопрос ответить — заодно отметив этим ответом появление у нас своего корпоративного блога (спасибо!), а также запуск отдельного веб-сайта, посвященного только этому проекту.
Если коротко: хотя изначально проект начинался как «а не сделать ли нам нанокомпьютер как у китайцев, но для себя и подешевле?», мотивация довольно быстро сместилась — мы поняли, что можем сделать его если не дешевле, то лучше и удобнее, и не только для себя.
Вообще если посмотреть на существующие микро- и нанокомпьютеры («нано» я условно определяю как всё, сравнимое со спичечным коробком, а если оно сравнимо с сигаретной пачкой — то уже «микро», наверное; надо же как-то градацию размеров вводить, чтобы BlackSwift перестали сравнивать с RPi?), то они довольно чётко делятся на две категории:
- Для любителей, ярчайший пример — RPi в своём классическом исполнении, да и Arduino, хотя это уже не наша весовая категория. Очень простые в подключении, ничего для первого включения паять не надо.
- Для профессионалов — VoCore, Carambola, Intel Edison и масса других. Очень маленькие, легко встраиваемые в вашу собственную разработку, но со сравнительно высоким порогом входа: из этих трёх без паяльника запустить можно разве что VoCore, да и то этот запуск ограничится подключением питания, для USB уже нужна дочерняя плата.
Так вот, мы поняли, что мы можем и хотим совместить две вещи: сделать нанокомпьютер с низким порогом входа и одновременно не только пригодный, но и удобный для профессионалов (в конце концов, мы его сами хотим в своих разработках использовать).
Что надо для любителей? Простота базового подключения (в идеале, питание и какая-нибудь периферия должны подключаться вообще без паяльника — чтобы можно было сразу начать экспериментировать), простота настройки, простота написания и отладки своего софта.
Что надо для профессионалов? Минимальные габариты, много I/O, много разных интерфейсов, удобство запайки в свою конструкцию. Простота написания и отладки софта тоже не помешает: всё-таки человек может быть профессионалом от электроники, а с OpenWRT опыт иметь только в рамках настройки домашнего роутера.
Собственно, из совмещения этих требований и родился Black Swift (я сразу оговорюсь, что это work-in-progress — с софтом пока возимся, а уже готовые прототипы платы не имеют, например, стабилизатора 2,75 В — он появится в финальной версии):
- Два стандартных micro-USB на плате, через один подаётся питание, в другой через переходник USB-OTG можно подключить какую-либо USB-периферию, например, веб-камеру. То есть, для старта достаточно обычной зарядки от смартфона.
- Wi-Fi на плате, включая печатную антенну.
- Стабилизатор питания на плате. Плата живёт от 3,4 до 6 В, то есть может работать от одной литиевой банки (хотя если нужен USB — тут, конечно, 5 В ±5%).
- У встроенного стабилизатора большой запас мощности: он выдаёт до 1 А, сама плата потребляет не больше 300 мА. Соответственно, можно остаток использовать в своей конструкции: подаёте на BSB 5 В, снимаете с него 3,3 В до 700 мА.
- Дополнительный стабилизатор на 2,75 В 300 мА. Фокус в том, что рекомендуемое максимальное напряжение для GPIO в AR9331 — 2,75 В (хотя с 3,3 В они тоже работают), поэтому BSB обеспечивает простой и удобный способ следовать этой рекомендации.
- I/O в виде обычных площадок под гребёнки, хоть и с мелким шагом (PLLD 1,27 мм). Для любителей это возможность запаяться проводами прямо в плату, если захочется подцепить какую-то несложную периферию, для профи — удобная установка в свои проекты (намного удобнее, чем при контактах по краю платы, как у Карамболы, не говоря уж о том, что можно сделать модуль съёмным или поставить его вертикально на угловой гребёнке).
- Питание и USB продублированы на гребёнках, конечно.
- Предустановленная OpenWRT, сразу настроенная на работу точкой доступа. То есть после первого включения — просто коннектимся к плате по Wi-Fi.
- Виртуальная машина для ПК, в которой уже всё настроено для написания и отладки софта под OpenWRT — мы в курсе, что далеко не все хотят ручками устанавливать себе OpenWRT toolchain.
- Набор библиотек для работы с основной периферией — начиная с GPIO.
- Юзерспейс-утилиты для работы с основной периферией. Не все любят программирование на C, а возможность подёргать ножкой из юзерспейса означает, что какой-то свой фронтенд можно написать на bash-скриптах, PHP (заодно с веб-мордой) или на чём ещё конкретному человеку будет удобнее писать, выбор тут становится немаленьким.
- Всё это с открытыми исходниками и примерами использования.
(подключение периферии — да хоть просто проводами)
При этом на плате достаточно вычислительной мощи и памяти практически для всего, что душа может пожелать от компьютера такого размера. Для примера — на том же чипе Atheros AR9331 делают дешёвые роутеры, самый известный пример — TP-Link TL-MR3020 и производные от него. Там 4 МБ (прописью: четыре мегабайта) флэша, при этом в него влезает OpenWRT с веб-интерфейсом, и ещё где-то полмегабайта места остаётся. На Black Swift стоят 16 МБ флэша и 64 МБ оперативки — то есть, чтобы исчерпать его ресурсы, с OpenWRT надо делать что-то весьма серьёзное (да и в этом случае можно подключить к USB обычную флэшку — OpenWRT умеет их использовать для расширения корневой файловой системы). Из периферии — 26 GPIO, USB-хост, UART, I2S, I2C, SPI, Ethernet…
Более того, если в MR3020 стоит DDR-память, в системах на Ralink RT5350 (тот же VoCore) — и вовсе SDR, то у нас — честный DDR2, с соответствующей прибавкой к производительности.
(Я мигаю светодиодиком!)
Как мы видим применение?
Во-первых, сверхмодная сейчас тема «умного дома» и чайников с Wi-Fi. Если вы хотите с этим направлением поиграться — то на Black Swift можно легко сделать автоматизацию и вывод в интернет практически любого устройства, от розетки (сделать Wi-Fi-розетку на Black Swift — это как помигать светодиодиком на Ардуине, это должен пройти каждый!) до хоть стиральной машинки. Размеры позволяют встроить Black Swift практически во что угодно, обилие GPIO — подключить кнопки и индикаторы либо параллельно с родными потрохами устройства, либо просто вместо них. В простейшем случае, когда нужны несколько GPIO (чайник!), обвязку можно сделать хоть навесным монтажом, если надо чуть сложнее или чуть красивее — нарисовать и сделать хоть ЛУТом, хоть китайцами «материнку» под Black Swift.
Можно сделать старый, но любимый принтер беспроводным, можно колонки превратить в Wi-Fi-радио, можно — в mp3-плеер, который будет играть музыку с файлопомойки на домашнем NAS'е, а управляться с любого смартфона (кстати, в колонках очень удобно заюзать один GPIO под включение-отключение питания их усилителя в зависимости от того, играет ли музыка). Во всех случаях всё это будет несложно, аккуратно и спрятано внутри самого устройства.
Raspberry Pi в этом качестве, как вы понимаете, как-то не очень — она банально не влезет внутрь большинства устройств. Так что прекратите нас с ней сравнивать.
При желании можно и весь контроллер «умного дома» сделать на Black Swift, повесив на него нужные вам приёмопередатчики. Получится просто, недорого и очень компактно.
Во-вторых, хотя это узкая ниша, радиоуправляемые модели. Габариты, для летающего — вес (плата весит 3 грамма), наличие USB под веб-камеру, если камера не нужна — возможность питания от одной банки Li… В общем, желающим развлечься тут есть где развернуться.
В-третьих, конечно, вообще свои собственные разработки. Спроектировать вычислительный модуль такой производительности могут немногие, произвести — тем более (можно, конечно, и AR9331 вручную паять, но это уж очень для эстетов), а вот сделать под готовый модуль материнскую плату — уже задача более чем посильная, тем более — под гребёнки, а не напайку прямо на поверхность «материнки». Модуль можно даже не впаивать, а ставить на разъёме — в него запаять гребёнку PLLD (двухрядная 1,27 мм), а в плату — гнездо PBD.
Для профессионалов это будет просто удобная в применении готовая плата (которую, к тому же, можно официально купить в России, со всеми счетами-фактурами и без ВЭД), для начинающих — не только простой в применении встраиваемый компьютер, но и своеобразная лесенка к более сложным разработкам. Дело в том, что с Black Swift можно развивать свою работу постепенно: начать со стандартной USB-периферии, потом — подключаться к GPIO через переходник или просто подпаиваясь проводами, потом сделать свою плату с помощью ЛУТ, потом с помощью китайцев или «Резонита»… преимущество BSB в том, что центральная часть на всех этих этапах будет оставаться одной и той же.
Кстати, если говорить о материнках — будет переходник на гребёнки 2,54 мм, и думаем ещё о devboard, на которой будет сразу максимум всякой периферии (непрактично для практического применения, но удобно для отладки), небольшой плате с несколькими силовыми ключами и логическими входами, и плате с AVR, на котором можно сделать АЦП на несколько каналов и ШИМ.
Кстати, про AVR. Так как на Black Swift есть UART — то можно в качестве периферии к нему использовать Arduino (с согласованием уровней, конечно: у Black Swift питание 3,3 В, а у ардуины — 5 В). На Arduino можно сделать вышеупомянутые АЦП и ШИМ, можно что-нибудь жёстко риалтаймовое, а на Black Swift — основную логику, Wi-Fi, веб-интерфейс.
Кстати, про Web-интерфейс. Возможность без проблем поднять на плате HTTP-сервер с PHP (и даже HTTPS, если хотите) — это не только интерфейс в браузере, но и простое смартфонное приложение. На андроиде берёте компонент WebView, который будет показывать ваш интерфейс, добавляете к нему щепотку Network Service Discovery, на плате запускаете веб-сервер и демон avahi (он штатно есть для OpenWRT). Avahi вещает в сеть «позывные» платы, NSD по ним находит IP устройства, WebView показывает интерфейс с него — получили простейшее смартфонное приложение для вашего проекта, которое выглядит как настоящее и даже радует. Дёргать же из PHP ножки Black Swift или, наоборот, читать внешнюю АЦПшку и показывать температуру воды в чайнике — задача, которая у нас будет решаться легко.
В общем, наверное, надо останавливать себя с этим «кстати», а то можно продолжать ещё долго. Крохотная плата с Wi-Fi и простым подключением и использованием — это сильная вещь.
P.S.
1) Русскоязычный сайт проекта, в процессе наполнения.
2) На Kickstarter — 20 января.
3) Пробная партия с финальным дизайном платы — к 10 января. Сейчас сэмплы есть, но их немного и они не финальные по функционалу и разводке разъёмов.
4) Номинальная стоимость планируется $25, для России рассматриваем номинальную стоимость $20.
Автор: olartamonov