Wiren Board 6: снова на Хабре с новой версией контроллера для автоматизации
Всем привет!
Сегодня мы расскажем про совершенно новую версию нашего контроллера для автоматизации, умного дома и всего такого. Ниже — подробный технический обзор устройства.
Например, в «умном здании» контроллер может управлять освещением и климатикой, снимать показания с датчиков климата и охранных датчиков. Для этого контроллер поддерживает разные внешние устройства, выполняет правила и сценарии, хранит и красиво отображает данные.
Контроллер работает под управлением Linux, имеет множество встроенных проводных и беспроводных интерфейсов для связи с внешними устройствами и внешним миром.
Контроллер модульный — сбоку пристыковываются модули ввода-вывода (реле, входы для сухих контактов), внутрь вставляются модули расширения — дополнительные порты RS-485, RS-232 и т. д.
Естественно, всё это industrial-grade: корпус на DIN-рейку, большой диапазон входного питания, широкий температурный диапазон, надёжная память, защита всех портов и т. д.
Зачем мы выпустили новую версию
Времена нынче тяжелые: чтобы помигать светодиодом, без гигагерца тактовой частоты часто не обойтись. Если серьёзно, то производительности нашего предыдущего Wiren Board 5 с ARM9 хватало практически для всех задач, но только с нашим ПО, написанным на C++ и Go.
Мы хотели дать пользователям больше гибкости — чтобы без проблем можно было использовать требовательные к памяти и процессору приложения.
Главное изменение в Wiren Board 6 — новый процессор NXP i.MX 6ULL с одним ядром Cortex A7 на частоте 800 МГц и 512 Мбайт оперативной памяти DDR3 (в WB5 был Freescale i.MX28 454 МГц ARM9 и DDR2 128 Мбайт).
Контроллер стал быстрее в несколько раз: кроме собственно увеличения тактовой частоты, играет роль и использование более производительной (в пересчёте на МГц) архитектуры ядра. В i.MX 6ULL есть аппаратный FPU — в некоторых приложениях, сохраняющих и обрабатывающих данные, это дало существенный прирост в производительности.
Новый процессор позволил использовать свежие версии Node.js (архитектура предыдущего процессора не поддерживалась в движке V8), использовать Node-RED и устанавливать готовое ПО для Raspberry Pi без перекомпиляции.
В целом, с точки зрения разработки и выбора ПО Wiren Board 6 перешёл из категории «встраиваемое железо» в категорию «обычный компьютер с Linux, но со множеством интерфейсов».
Пара слов про то, почему не 8xCortex A53@2.2GHz мы выбрали процессор медленнее, чем в новых ТВ-приставках или в свежей Raspberry Pi. i.MX 6ULL — это современный (2017 год) процессор для индустриальных встраиваемых систем. Он имеет очень низкое энергопотребление — и поэтому почти не греется. Но при этом допустимая рабочая температура ядра составляет целых 105 °C. Для нас это важно, потому что Wiren Board обычно стоят в закрытых шкафах без всякого охлаждения. На холоде контроллеры тоже работают, минимальная температура всех компонентов — минус 40 °C.
А ещё этот процессор имеет отличную поддержку в mainline ядре Linux, и производитель гарантирует его производство минимум до 2026 года.
Другие изменения в контроллере
У контроллеров Wiren Board 5 было несколько аппаратных ревизий, по которым можно проследить эволюцию устройства. Отличий последней ревизии от первой довольно много:
- добавлен клеммник Vout — выход напряжения питания. Удобно для подключения периферийных устройств по RS-485 — можно взять линии данных и питания от единого устройства;
- отладочная консоль выведена на интерфейс Micro-USB вместо UART;
- добавлен второй порт Ethernet. Используется как резервный канал, для подключения к изолированным сетям и для подключения других контроллеров;
- изменена схема питания. Использовали синхронный step down (выше КПД — меньше нагрев платы), диапазон входного питания до 40 вольт, избавились от электролитических конденсаторов (теперь только керамические) — это увеличивает срок службы;
- добавлены джамперы для включения терминирующих резисторов на линиях RS-485/CAN;
- убран интерфейс цифрового звука S/PDIF — не пользовался популярностью;
- убран порт для ИК-приёмопередатчика — использовать оказалось не очень удобно, поэтому выпустили отдельное устройство WB-MIR с RS-485;
- ограниченная поддержка 3G модема: его можно устанавливать вместо модуля Wi-Fi.
В Wiren Board 6 добавились еще изменения:
- добавили поддержку двух SIM-карт. Страна большая, качество связи не всегда на высоте, а теперь сразу есть резерв;
- реализовали полноценную поддержку 3G модуля и даже NB-IoT (про это будет отдельная статья). 3G честно выдаёт 5 Мбит/с. SSH не тормозит, в целом более стабильное соединение, можно забирать любое количество параметров с удалённых объектов;
- температурный датчик на плату контроллера. Недорого, а людям полезно посмотреть, в каких условиях работает контроллер. Ещё один датчик измеряет температуру ядра процессора, чтобы контроллер автоматически сбрасывал частоту при перегреве;
- второй порт USB. Потому что можем.
Внутренние изменения:
- Переделали схему питания (опять? сколько можно, Карл?). Теперь выглядит так:
Плюсы такой схемы:
— основное потребление в контроллере идет по линии 5В. КПД при большой нагрузке (много боковых модулей, внешние датчики и т.д.) получается выше;
— если внутрь контроллера установить наш модуль резервного питания, то при отсутствии внешнего напряжения на клеммник Vout подается 11 вольт. Это позволяет работать нескольким подключенным по RS-485 устройствам;
— выход можно программно включать и выключать, что полезно, чтобы удалённо перезагружать по питанию подключенную периферию разных производителей. - Программно отключаемая растяжка линий RS-485. Слабая резисторная «растяжка» линий нужна, чтобы задавать на шине фиксированный логический уровень, когда ни одно устройство не передаёт данные. Отключать «растяжку» (failsafe bias по-умному) нужно, если к шине подключено несколько контроллеров, например, когда Wiren Board работает как Modbus slave.
- «Умные» ключи вместо транзисторов на клеммах A1-A4: с защитой от КЗ и перегрева, и ограничением тока.
Модули расширения
Модули ввода-вывода (это модули с дополнительными входами-выходами, подключающиеся к контроллеру сбоку) оставили такими же как раньше, а вот модули расширения решили переделать.
Распиновка разъема расширения. Слева — как было, справа — как стало.
В WB5 вывели сигналов с запасом — питание, UART, I2C, SPI. За три года придумали только один модуль использующий SPI — модуль SD карты, и для него не требуются внешние клеммники. А I2C достаточно программного на GPIO. Поэтому лишнее убрали, и освободилось место под третий слот для модулей расширения, не требующих внешних клеммников (это GPS, слот microSD, в перспективе разные модули с радио).
Сами модули расширения сделали с ключом — выступающая часть платы вставляется в прорезь в плате контроллера. Это добавляет жесткости соединению — платки не болтаются в разъеме, и вставить неправильно невозможно.
Криптопроцессор
В Wiren Board 6 мы добавили криптопроцессор. Это специальный чип, который хранит в себе пользовательские приватные ключи шифрования и использует их, чтобы делать криптографическую цифровую подпись данных.
Если просто, то это аналог смарт-карт или USB-свистков, которые выдают банки и госорганы для подтверждения личности пользователя.
Раньше для подключения контроллеров, допустим, к VPN-серверу нужно было использовать общий логин и пароль (небезопасно) или выдавать каждому контроллеру отдельные реквизиты (неудобно). Кроме сложностей с управлением реквизитами, оба решения потенциально небезопасны: и реквизиты, и файл сертификата при желании можно было скопировать с одного контроллера на другой и получить доступ к системе.
С криптопроцессором всё сильно упрощается: на сервере нужно только прописать список серийных номеров (common name) разрешённых контроллеров. Сервер при этом проверяет криптографическую подпись сертификата контроллера, которую невозможно подделать и скопировать.
Мы реализовали поддержку крипточипа в стандартной системной библиотеке OpenSSL, поэтому почти любое стандартное ПО, использующее SSL, TLS или HTTPS, сможет работать с защищёнными аппаратными ключами.
Сейчас мы работаем с партнёрами — поставщиками систем верхнего уровня над тем, чтобы Wiren Board подключался к этим системам без паролей и предварительной настройки. Поддержка также запланирована для IoT-платформ ведущих вендоров: Amazon, Google и прочих.
Софт
В целом, обновления ПО Wiren Board выходят одновременно для всех поддерживаемых версий и ревизий контроллеров.
Однако к выходу Wiren Board 6 мы приурочили несколько важных изменений в софте.
Debian 9
Новые контроллеры поставляются с последней стабильной версией Debian — Debian Stretch. Процесс перехода с Debian Wheezy оказался долгим и болезненным, в первую очередь, из-за использования systemd вместо sysvinit в новых Debian.
Зато теперь наши пользователи получают современный дистрибутив с относительно свежими версиями стороннего ПО. Более того, дистрибутив и сам WB6 совместимы с пакетами для Raspbian.
Новая система обновлений и восстановления прошивки
Предыдущие версии контроллеров можно было обновлять через пакетный менеджер APT, или перезаписывать целиком всю прошивку через веб-интерфейс. Если неосторожные действия пользователя привели к неработоспособности системы, то полное восстановление заводской прошивки выполнялось через USB-порт с использованием компьютера или виртуалки с Linux и специальной программы mxsldr.
В Wiren Board 6 мы реализовали ещё и обновление с помощью загрузчика. Для восстановления прошивки достаточно вставить в USB-порт контроллера флешку с файлом новой прошивки и нажать на кнопку обновления.
Похожим образом можно сбросить все настройки контроллера на заводские.
Call To Action
Нужно больше технической информации? Здесь можно найти полные характеристики.
Есть другие вопросы по устройству и его применениям? Ждём вас на нашем сайте https://wirenboard.com/ и в гостях в нашем офисе.
Хотите попробовать новый контроллер в работе? Купить контроллер в розницу можно прямо у нас на сайте. Мы отправляем оборудование курьером через 1–2 дня после заказа.