Контроллер умного дома (с Ethernet, WiFi, USB, блэкджеком и плюшками) за $20?
Некоторое время назад к нам обратился один потенциальный заказчик со своей идеей проекта «умного дома». Мы заказчикам всегда рады, особенно если у них есть более-менее внятная идея и достаточно денег для ее воплощения (сразу скажу — этот заказчик пока что является идеалом сферического заказчика в вакууме, повезло нам с ним). Так что после пары встреч родилось общее описание проекта, и мы приступили к поиску вариантов технической реализации. Нужен был недорогой контроллер с поддержкой WiFi и USB, небольшим энергопотреблением и, главное, с достаточно открытой архитектурой, чтобы мы могли сделать на его базе собственное кастомизированное решение.
И тут очень удачно попалась нам на глаза статья. Ух ты, какие штуки бывают, оказывается! У меня самого в качестве передвижной точки доступа для поездок по Китаю (где до сих пор RJ-45 розетка в номере при отсутствии WiFi — довольно частое явление) давно уже используется мини-роутер TP-LINK TL-WR702N, купленный рублей за 700, но тот факт, что внутри живет вполне приличный одноплатный компьютер с кучей дополнительных возможностей, стал для меня приятным сюрпризом. А поскольку мы по своему основному бизнесу плотно завязаны с Китаем (и китайскими производителями электроники в частности), стало нам интересно — во сколько же нам обойдется собственная плата на базе SoC AR9331, если целое законченное решение в корпусе, в коробке, с проводами и блоком питания, стоит в России 700р (на то время — $22) в рознице?
1. Чем так привлекательна SoC AR9331?
Для начала, что же лежит в основе всех этих крайне дешевых мини-роутеров? Это SoC (system-on-chip) Atheros AR9331 (даташит). В одном небольшом чипе (12х12мм) сосредоточены:
- 32-разрядный процессор MIPS 400МГц
- интерфейсы памяти (DRAM и serial Flash)
- пятипортовый Ethernet switch
- радиоинтерфейс 2.4 ГГц WiFi 802.11b/g/n (до 130Мбит)
- контроллер USB 2.0 (хост/клиент)
- UART, I2S/SPDIF, SLIC интерфейсы
- до 28 GPIO (!!!).
Работает это все (помимо проприетарных прошивок) под управлением OpenWRT. Но самое интересное — этот чип в Китае оптом стоит в районе 5-6 USD! Однако…
2. Дайте две!
Очень захотелось посмотреть на это чудо живьем, провести пару-тройку бесчеловечных экспериментов. Выяснилось, что в «шаговой доступности» есть два варианта CPU board на основе AR9331. Это литовская Карамбола2 и китайские платы EL-M150. Конечно, для удобства мы заказали по паре-тройке development board (эту и вот такую, соответственно).
Понятно, что китайские платы мы заказывали по своим каналам в Шеньжене, и обошлись они гораздо дешевле (65 USD с доставкой). Заодно у китайцев приобрели несколько штук процессорных плат, чтобы узнать, сколько же на самом деле стоит их производство? (в розницу китайцы ими торгуют по $25). Вот таких:
3. Carambola2 development board
Что хорошо:
- недорогая (33 Euro)
- разъём miniUSB (подсоединяем к компу и сразу получаем питание плюс консоль)
- маленькая (84х63х12мм вместе с разъемами)
- керамическая антенна WiFi плюс разъем для маленькой внешней антенны
- 16Мб флеш-памяти
- развитое сообщество энтузиастов.
Что не очень хорошо:
- мало всего: разъемов, кнопок, LEDов и т.п.
- WiFi по умолчанию отключен, SCP и консоль — недоступны, из коробки — только WEB-доступ через Ethernet
- неинформативная индикация текущего состояния
- мне пришел вариант с какой-то сильно усеченной прошивкой
- непонятно, что с доступностью: я до Нового года покупал, а вот сейчас на сайте доступен только предзаказ.
Поскольку питание — от компа через miniUSB, потребляемую мощность пока не замеряли.
4. EL-M150 development board
Что хорошо:
- дофига всего на плате (14 LEDов, две релюхи, три Ethernet разъема, три USB (полноразмерных), слот для карт SD, кнопка включения с фиксацией, три кнопки без фиксации (включая Reset), 16 джамперов), разъем для большой антенны WiFi
- прошивка сразу вполне полноценная, перепрошивать сходу не понадобилось
- WiFi включен из коробки в режиме «точка доступа» — первоначальная настройка без проблем
- SCP и консоль доступны сразу (если покупатель достаточно догадлив, чтобы угадать пароль «admin» для пользователя «root»).
Что не очень хорошо:
-
подороже и побольше Карамболы(это не недостаток — см. список возможностей чуть выше) - нужен отдельный блок питания (7-12В)
- флеш-памяти — 8Мб
- встроенная WiFi антенна (дорожка на плате) — не фонтан (хотя и работает)
- изначально WEB-интерфейс — на китайском языке (ох, как же я матерился!)
- 2 реле волшебного бренда «HUI KE» почему-то в номинале 1А 125В (что мешало 230В поставить — непонятно)
- китайская специфика — технической поддержки не дождешься
- одну плату мне каким-то образом удалось превратить в кирпич.
Потребляемая мощность (без внешних подключенных устройств) — порядка 1.1 Вт.
5. Процессорная плата EL-M150
Как я уже упоминал, нам было очень интересно — какова же себестоимость изделия наших китайских друзей (напоминаю, в розницу они продают эту плату в среднем за $25)? Мы посчитали. Итак, на тираже в 1000 шт. себестоимость платы выходит чуть меньше $12:
SoC AR9331 $5.4
RAM DDR2 64Мб $1.5
Serial flash 8Мб $1.1
Изготовление печатной платы (4 слоя) плюс монтаж — $3.2
Плюс мелочевка, тестирование и прошивка.
Наша собственная плата получится в себестоимости чуть подороже, чем китайская, т.к. мы делаем вход питания 5В (у китайцев — 3.3В), чтобы можно было сразу на процессорную плату подключать USB клиентов (и питать ее от USB же). В общем, $20 в розницу в России — вполне реально. Опять же, китайские друзья сделали нижнюю поверхность гладкой
Да, кстати. Процессорная плата «в сборе» потребляет порядка 0.4Вт и не греется (вообще!).
Ну а сейчас в качестве эксперимента попробуем сделать с каждой из этих двух development boards и самой дешевой USB WEB-камеры (в тумбочке валялась Logitech какая-то, покупалась когда-то дешвле 500р) IP-камеру с трансляцией видео по локальной сети через WiFi. Надо же с чего-то начинать?
1. EL-M150
Начнем с китайской платы, т.к. с ней все проще простого.
1. Включаем питание. Секунд 20 плата мигает огоньками, как новогодняя елочка, после чего пара светодиодов начинают гореть постоянно. Плата готова к экспериментам.
2. Смотрим доступные WiFi сети. Обнаруживаем что-то вроде «Небезопасная беспроводная сеть OpenWRT_el-m150_020020». Цепляемся за нее, получаем IP адрес.
3. Лезем браузером на 192.168.1.1. Вводим пароль «admin». Видим неземную красотищу и радуемся, блин.
4. Переключаем язык на английский, радуемся еще раз, но гораздо сильнее. (я нашел видео на YouTube, где переключали немножко другой интерфейс OpenWRT, и сравнивал иероглифы, ...!!!). Заодно устанавливаем дату/время и сохраняем все конфиги. Еще можно зайти на вкладку «LEDX/RELAYX», посмотреть на мигающие светодиоды и послушать щелчки реле.
5. Переводим плату из режима «точка доступа» в режим клиента своей (домашней или рабочей) сети WiFi. Как это делать — подробно написано здесь. Запоминаем IP-адрес платы.
6. Подключаем камеру к порту USB.
7. Заходим на плату уже по новому IP-адресу в своей родной локальной сети. В WEB-интерфейсе выбираем вкладку usbd/webcam и ставим флажок на поле «enable or disable mjpg-streamer webcam». Сохраняем изменения — вуаля, на камере загорается зеленый светодиод, мы в эфире!
Теперь можно смотреть видео (например, в плеере VLC) по адресу http://<IP-адрес платы>:8080/?action=stream, или ловить скриншоты по ссылке http://<IP-адрес платы>:8080/?action=snapshot.
2. Carambola2
Здесь работы побольше (ну, хоть приключений с китайским языком нет).
1. Подключаем плату к компьютеру шнурком USB-miniUSB. Плата радостно мигает (один раз) зеленым светодиодиком. В консоли ничего нет. Новых WiFi сетей нет. Только ласково (и постоянно!) горят зеленые светодиоды на двух разъемах RJ-45. Что вообще происходит?!
2. Цепляем витой парой порт J4 на Карамболе к сетевой карте компа. Ага, комп получил IP-адрес! Идем на 192.168.1.1, видим LuCI, ура!
3. Устанавливаем пароль для рута. Теперь плата «видна» в консоли и по SCP. Круто.
4. Включаем WiFi, меняем режим с «точки доступа» на «клиент». Цепляемся за плату в локальной сети через WiFi — ура! Теперь плата может выйти в Интернет (нужно для следующего пункта).
5. Хотим поставить пакет mjpg-streamer. Облом!!! Нет такого пакета в репозитории! Нифига себе…
6. Скачиваем с сайта последнюю прошивку, перепрошиваем плату через WEB-интерфейс с сохранением настроек.
Ура, mjpg-streamer появился в списке пакетов! Устанавливаем.
7. Подключаем камеру к USB.
8. Все круто, только mjpg_streamer не запускается. Ошибка «Init v4L2 failed». Сравниваем установленные пакеты на M150 (где видео работает) и на Карамболе. Оказывается, не хватает еще пакета kmod-video-videobuf2. Устанавливаем пакет, перезапускаем стример — ура! Заработало.
С подключением и использованием USB флешек проблем никаких. Сейчас потихоньку мучаем GPIO, подключение 3G модема, собираем собственные прошивки OpenWRT и т.д. За эти деньги, я считаю, обе development boards — просто подарок. А сама процессорная плата — сказка.
Насколько решение на AR9331 подходит в качестве контроллера «умного дома»? По-моему, идеально подходит. В локальную сеть интегрируется без каких-либо проблем (хочешь — по кабелю Ethernet, причем PoE никто не отменял, хочешь — по WiFi). Мощности 400МГц MIPS процессора более чем достаточно. OpenWRT позволяет делать с этой платой что угодно без особых трудностей в программировании, множество пакетов доступно из репозитория в готовом виде. Периферия подключается легко. Стоит вполне разумных денег. В общем, если не нужно аппаратное кодирование/декодирование видео — по-моему, просто чума.