Академический Документы
Профессиональный Документы
Культура Документы
руководство пользователя
Версия 1.1 от 02.06.2015
PDF создан с использованием инструмента с открытым исходным кодом mwlib. См. http://code.pediapress.com/ для получения более
подробной информации.
PDF generated at: Tue, 02 Jun 2015 19:40:58 CEST
Содержание
Статьи
Wiren Board NETMON-1 1
Интерфейсы 9
Power over Ethernet 9
Debug UART 11
"Сухой контакт" 14
Программное обеспечение 15
Программное обеспечение Wiren Board 15
MQTT 17
Wiren Board 4:Веб-интерфейс 20
Движок правил wb-rules 22
Настройка контроллера 29
Как узнать IP-адрес контроллера 29
SSH 31
Просмотр файлов контроллера с компьютера 33
Подсистемы 36
GSM/GPRS 36
ADC 38
GPIO 41
Watchdog 42
Buzzer 42
Датчик SHT1x 43
Подключение периферии 44
Поддерживаемые устройства 44
Управление низковольтной нагрузкой 48
RS-485 50
Драйвер wb-homa-modbus 53
Приложения 57
Работа с последовательным портом из Linux 57
Работа с GPIO 59
CMUX 62
Примечания
Источники и основные авторы 70
Источники, лицензии и редакторы изображений 71
Wiren Board NETMON-1 1
ПО
Контроллер
Беспроводные интерфейсы
Wi-Fi 802.11 b/g/n 2.4 ГГц (опция, устанавливается в USB-разъём внутри устройства)
GSM/GPRS 900/1800 МГц. GPRS multi-slot class 10/8 max. 85.6 kbps (downlink). SIM-карта формата miniSIM
(полноразмерная)
Проводные интерфейсы
Подключение датчиков
8x АЦП до 20V
Выходы
2xРеле 220В/10А, нормально замкнутые. Пары розетка IEC-320-C13 - вилка IEC-320-C14 на задней панели.
Прочее
Сторожевой таймер (watchdog) Отдельный аппаратный watchdog, перезагружающий устройство целиком по питанию
Питание
Эксплуатация Рабочая температура - 0..70C (-40..85C по запросу) Покрытие лаком для влагозащиты.
Комплект поставки
• контроллер Wiren Board NETMON-1
• карта памяти с ОС Linux
• клеммники ответные 4шт
• набор для крепления корпуса в 19" стойку
Питание
Аккумулятор
Wiren Board NETMON-1 может комплектоваться одним или двумя аккумуляторами Li-Ion (Li-Pol) c
максимальным напряжением 4.2В. При подключении питания аккумулятор заряжается током до 0,5 А.
Есть защита от зарядки при отрицательных температурах и при перегреве.
Wiren Board NETMON-1 3
GSM/GPRS-модем
Wiren Board NETMON-1 комплектуется 2G (GPRS)-модемом, который поддерживает GPRS, CSD, отправку и
получение SMS.
Антенна GSM подключается к SMA разъему на задней панели контроллера. При слабом сигнале GSM
рекомендуется использовать выносную антенну и располагать ее вдали от контроллера.
USB-порт
Wiren Board NETMON-1 имеет один порт USB (Host, type A) внутри корпуса. Порт предназначен для
подключения Wi-Fi-стиков, 3G-модемов и т.п.
Задняя панель
Wiren Board NETMON-1 оборудован
двумя группами коммутации
питания на задней панели.
Каждая группа состоит из вилки
(входа) IEC-320-C14 и розетки
(выхода) IEC-320-C13. Вход и выход Входы-выходы для управления 220В и разъём для антенны GSM
Передняя панель
На передней панели Wiren Board
NETMON-1 находятся четыре группы
релейных выходов, выведенные на
разъёмные клеммники.
Каждое реле является переключаемым,
т.е. выведены контакты NO
(нормально-разомкнутый), NC
(нормально-замкнутый), COM (общий).
Номинальный ток реле: 10А@240VAC
(резистивной нагрузки).
Рекомендуется использовать выходы для Релейный выходы на передней панели
Последовательные порты
Wiren Board NETMON-1 оснащён двумя полудуплексными портами RS-485 и двумя портами RS-232 (только
RX/TX).
Оба порта RS-485 и один порт RS-232 выведены на разъёмы RJ45 на передней панели, один порт RS-232
выведен на разъём RJ45 на задней панели.
Устройства в Linux:
• /dev/ttyNSC0 - RS-485 на разъёме и8
• /dev/ttyNSC1 - RS-485 на разъёме и6
• /dev/ttyNSC2 - RS-232 на разъёме и4
• /dev/ttyNSC3 - RS-232 на разъёме на задней панели
Про работу с RS-485 и подключениие периферийных устройств см. также статью RS-485.
Отладочная консоль
Отладочная консоль (debug UART) выведена на разъём и2 (см. ниже), а также на гребёнку внутри корпуса.
Порт имеет уровни 3.3V и требует специального переходника USB-UART или RS232-UART для подключения
к компьютеру.
Подробности по работе с отладочной консолью см. в статье Debug UART.
передняя панель
порты функция
и1 discrete input
и3 discrete input
и4 RS-232
и5 discrete input
и6 RS-485
и7 discrete input
и8 RS-485
Wiren Board NETMON-1 5
и9 discrete input
а1 ADC input
а2 ADC input
а3 ADC input
а4 ADC input
а5 ADC input
а6 ADC input
а7 ADC input
Ehternet и1 и2 и3 и4 и5 и6 и7 и8 и9
1 Y/W discrete input 5v discrete input 6 - Isolated GND - Isolated GND - Isolated GND
1
2Y discrete input 5v discrete input 7 - discrete input - discrete input - discrete input
2 11 15 19
3 G/W discrete input Debug discrete input 8 GND Isolated GND - Isolated GND - Isolated GND
3 Tx
4B discrete input 1-Wire discrete input 9 RS-232 Tx discrete input RS-485 discrete input RS-485 discrete input
4 1 12 A2 16 A1 20
5 B/W discrete input GND discrete input GND Isolated GND RS-485 Isolated GND RS-485 Isolated GND
5 10 B2 B1
6G Isolated GND Debug Isolated GND RS-232 Tx discrete input - discrete input - discrete input
Rx 1 13 17 21
7 Br/W Isolated GND GND Isolated GND - Isolated GND - Isolated GND - Isolated GND
8 Br Isolated GND GND Isolated GND - discrete input - discrete input - discrete input
14 18 22
Ethernet а1 а2 а3 а4 а5 а6 а7
1 Y/W 3.3V - - - - - -
2Y 3.3V - - - - - -
3 G/W GND - - - - - -
4B ADC input 4 ADC input 1 ADC input 6 ADC input 2 ADC input 7 ADC input 3 ADC input 8
6G ADC input 5 - - - - - -
7 Br/W 5V - - - - - -
8 Br 5V - - - - - -
Wiren Board NETMON-1 6
Задняя панель
Разъём RJ-45 на задней панели,
распиновка:
Ethernet
2Y RS-232 TX (2)
4B V+ вход (5-15V)
6G RS-232 RX (2)
7 Br/W GND
8 Br GND
shield GND
Wiren Board NETMON-1 7
Список GPIO
Wiren Board NETMON-1: Список GPIO
Управление низковольтной
нагрузкой
Реле на 12/24В, светодиоды,
вентиляторы, сигнальные лампы и т.
д.
Низковольтной нагрузкой можно
управлять с помощью четырёх реле
на передней панели.
Пример подключения кнопки
Программное обеспечение
См. Программное обеспечение Wiren Board
9
Интерфейсы
Примеры инжекторов:
• [2]
• [3]
• [4]
PoE Injector
Power over Ethernet 10
PoE Injector
Примечания
[1] http:/ / ru. wikipedia. org/ wiki/ Power_over_Ethernet#Passive_PoE
[2] http:/ / contactless. ru/ store/ #!/
PoE-%D0%B8%D0%BD%D0%B6%D0%B5%D0%BA%D1%82%D0%BE%D1%80-%D0%B4%D0%BB%D1%8F-Wiren-Board/ p/
32771179/ category=8751035
[3] http:/ / shop. nag. ru/ catalog/ 03100. Ubiquiti/ 11930. Aksessuary/ 04354. POE-15
[4] http:/ / www. aliexpress. com/ item/ Free-shipping-1pcs-Original-UBIQUITI-UBI-POE-15-8-15V-0-8A-Power-over-Ethernet-Adapter/
731084931. html
Debug UART 11
Debug UART
Внимание!
1. Подключайте Debug UART только через переходники USB-UART или RS-232-UART с напряжением 3.3В.
2. UART не является синонимом RS-232. Подключение Debug UART к порту RS-232 (или переходнику
USB-RS-232) напрямую гарантировано убьёт устройство.
Debug UART, он же отладочный UART - порт в Wiren Board, подключившись к которому можно получить
прямой доступ к консоли Wiren Board. На него также выводится консоль Linux при загрузке. Доступ к консоли
также можно получить через SSH.
Подключение
1. Запустите приложение от имени администратора:
• в Windows - щёлкните по значку PuTTY правой кнопкой и выберите Run This Program As An
Administrator
• в Linux - gksu putty
2. В меню слева выберите последний пункт - Serial. В появившиеся поля справа введите настройки порта:
• название последовательного порта
• для Windows - это COM4 (цифра может меняться, точную можно узнать через Диспетчер
устройств, найдя в нём переходник USB-UART)
• для Linux - это /dev/ttyUSB0 (цифра может меняться, смотрите список файлов в папке /dev/)
• скорость - 115200
• количество битов в посылке - 8
• количество стоп-битов - 1
• чётность - нет
• контроль потока - нет
Debug UART 12
3. В меню слева выберите первый пункт - Session. Справа переключите тип подключения на Serial - в поля
должны попасть настройки порта. Затем нажмите Open.
4. Чтобы проверить, правильно ли вы всё сделали, кнопкой выключите и включите контроллер - на экране
должны появиться сообщения о загрузке. После завершения загрузки появится запрос логина - введите root
и нажмите Enter, и пароля - введите wirenboard (вводимые символы не будут отображаться) и нажмите
Debug UART 13
Enter.
5. Появится приветственное сообщение - вы в консоли контроллера.
Wiren Board 4
Выведен на боковую панель рядом с разъёмами для microSD и microSIM карт.
Примечания
[1] http:/ / the. earth. li/ ~sgtatham/ putty/ latest/ x86/ putty. exe
[2] http:/ / elinux. org/ RPi_Serial_Connection
"Сухой контакт" 14
"Сухой контакт"
"Сухой контакт" - условное название входов, которые проверяют, подключены ли они к "земле".
Используется для подключения герконов, счётчиков воды и электричества, кнопок. Для этого один контакт
кнопки/геркона/счётчика подключается к земле (например, к клемме GND), а другой к входу "сухой контакт".
Состояние входа (ноль или единица) показывает, замкнута цепь или разомкнута:
• замкнуто на землю - состояние входа "включено"
• не замкнуто на землю - состояние входа "выключено"
15
Программное обеспечение
Веб-интерфейс
Wiren Board 4 имеет собственный,
находящийся локально на устройстве
веб-интерфейс. Это удобный способ
управления подключенными
устройствами и контроля
подключённых датчиков.
Операционная система
Wiren Board работает под
управлением стандартной сборки
Debian Linux 7.0. Для архитектуры
используемого процессора есть
[1]
официальный порт . Поэтому
почти любой пакет найдётся в
стандартном репозитории, и его
можно установить одной командой
(apt-get install).
Репозиторий и Git
Также у нас есть собственный
debian-репозиторий
releases.contactless.ru, в котором
хранятся пакеты, собранные специально для контроллера. Репозиторий прописан в образе ПО для Wiren Board
по умолчанию (файл /etc/apt/sources.list).
Весь исходный код доступен на Github [2]. Там можно почерпнуть примеры для разработки собственного ПО.
MQTT
Wiren Board использует очередь сообщений MQTT (статья на википедии [3]) в качестве единого стандарта
сбора информации с внутренних модулей (реле, АЦП и т.д.) и внешних устройств (датчиков 1-Wire, устройств
Modbus). Для каждого такого модуля и внешнего совместимого устройства разработан "драйвер", который
передаёт данные в систему сообщений MQTT и обратно. Веб-интерфейс тоже берёт данные из этой системы
сообщений, и все изменения, внесённые через него (например, включить реле) он отправляет туда же. Через ту
же очередь сообщений работает и движок правил.
Подробнее смотрите MQTT.
Веб-интерфейс
Подробнее см. Wiren Board 4:Веб-интерфейс
[4]
Веб-интерфейс работает непосредственно на Wiren Board. В качестве веб-сервера работает лёгкий webfsd .
Сам сайт написан на AngularJS [5], сайт взаимодействует с MQTT через WebSocket [6].
Движок правил
Можно создавать правила, например, "если значение с датчика температуры ниже 18С, включи нагреватель".
Правила пишутся на языке Javascript. Подробнее смотрите Движок правил wb-rules.
Программное обеспечение Wiren Board 17
Примечания
[1] https:/ / www. debian. org/ ports/ arm/
[2] https:/ / github. com/ contactless/
[3] http:/ / en. wikipedia. org/ wiki/ MQTT
[4] http:/ / manpages. ubuntu. com/ manpages/ lucid/ man1/ webfsd. 1. html
[5] https:/ / angularjs. org/
[6] http:/ / en. wikipedia. org/ wiki/ WebSocket
MQTT
MQTT - очередь сообщений, использующаяся в Wiren Board. Большая часть встроенных функций
контроллера (АЦП, реле, транзисторный выход, watchdog) и внешних совместимых устройств транслируются
туда в виде сообщений и реагируют на управляющие сообщения оттуда. Веб-интерфейс работает также через
систему сообщений MQTT - нажатие кнопки в интерфейсе вызывает отправку сообщения сообщения в
MQTT-брокер, изменение показания датчика, поступившее в систему сообщений, тут же транслируется в
веб-интерфейс.
Базовая информация по MQTT - статья [3] на википедии. Используемый демон - брокер сообщений Mosquitto
[1]
.
Принцип работы
системы сообщений
MQTT построена по следующему принципу: есть иерархическая система "топиков" (прямо как на обычных
форумах), куда клиенты могут писать сообщения, и откуда могут читать. Чтобы было удобно следить за
изменениями нужного топика (например, температуры), на него можно "подписаться".
MQTT 18
Пример сообщения
Вот пример сообщения от драйвера датчика 1-Wire (драйвер регулярно опрашивает датчик и отправляет в
виде сообщений значения с него):
/devices/wb-w1/controls/28-000004a7d3f9 24.687000
Пример подписки
Клиенты, которые хотят следить за значением температуры, "подписываются" на этот топик, и им приходят
все новые сообщения - меняющиеся значения температуры. Один из таких клиентов - веб-интерфейс.
Подписаться на сообщения можно и из консоли Linux при помощи утилиты mosquitto_sub:
, где # - означает любое количество топиков. Соответственно, вывелись не только значения с "контрола"
устройства, но и топики с метаданными - название драйвера устройства и тип "контрола" - temperature.
Полное описание системы топиков и подписок: [3].
Тут стоит отметить, что MQTT сохраняет часть сообщений (а именно с флагом retained) вечно, поэтому после
подписки вы получите даже те сообщения, которые были отправлен раньше, чем вы подписались.
Реле управляется драйвером wb-gpio (этот драйвер также управляет транзисторными выходами и всем, что в
электрическом смысле управляется GPIO). У него есть соответствующий топик-"контрол" Relay_1. У него
самого есть значение - 0 (реле выключено), и есть два подтопика. Один из них - служебный: в /meta/type
записан тип "контрола". Здесь он switch - выключатель. Второй подтопик /on - интереснее: в него клиенты
пишут то состояние, в которое они хотят установить реле. Заметим, что оно может не совпадать с тем
состоянием, в котором реле находится, так как драйвер реле ведёт себя следующим образом: при получении
сообщения в топик /devices/wb-gpio/controls/Relay_1/on он физически устанавливает его на реле, а лишь затем
записывает новое значение реле в топик /devices/wb-gpio/controls/Relay_1.
Например, если мы сейчас нажмем на реле в веб-интерфейсе (переключим его состояние), то получим новые
сообщения:
/devices/wb-gpio/controls/Relay_1/on 1
/devices/wb-gpio/controls/Relay_1 1
- веб-интерфейс сначала "даёт указание" включить реле, потом драйвер его включает и ставит актуальное
состояние в "контрол".
например:
mqtt-delete-retained '/devices/noolite_tx_1234/#'
Система правил
Вы можете написать свои правила на языке Javascript. Подробнее смотрите [8]
Примечания
[1] http:/ / mosquitto. org/
[2] http:/ / mosquitto. org/ man/ mosquitto_sub-1. html
[3] http:/ / mosquitto. org/ man/ mqtt-7. html
[4] https:/ / github. com/ contactless/ homeui/ blob/ contactless/ conventions. md
[5] https:/ / github. com/ contactless/ wb-homa-drivers
[6] https:/ / github. com/ contactless/ mqtt-tools
[7] http:/ / mosquitto. org/ man/ libmosquitto-3. html
[8] https:/ / github. com/ contactless/ wb-rules
Как зайти в
веб-интерфейс
Просто введите в адресную строку
браузера IP-адрес контроллера.
Также смотрите статью Как узнать
IP-адрес контроллера.
Главная страница веб-интерфейса
Структура интерфейса
В интерфейсе есть 6 разделов:
Wiren Board 4:Веб-интерфейс 21
Dashboards (Панели)
Виджеты со схожим назначением можно группировать в панели, где на одном экране находятся все
необходимые кнопки, настройки и показатели датчиков. Например, можно объединить виджеты включения
подогрева, кондиционера, отображения температуры и влажности. В разделе Dashboards можно увидеть все
созданные панели. На самом деле, раздел Home тоже отображает одну из панелей, какую - выбирается в
настройках.
Devices (Устройства)
Здесь отображаются все физически подключённые устройства и их параметры. Отображаемые устройства и
параметры не тождественны виджетам; наоборот, виджеты строятся на их основе.
Rooms (Комнаты)
Так как виджетов может быть очень много, каждый из них привязывается к определённой "комнате". Обычно
комнаты соответствуют комнатам без кавычек - физическим локациям, в которых находятся подключённые
устройства. Комната задаётся при создании виджета, потом каждый виджет можно найти в соответствующей
комнате.
Widgets (Виджеты)
Виджеты - непосредственно элементы интерфейса. Создаются на основе подключённых устройств. Например,
если через встроенное Реле 1 Wiren Board подключён главный свет в комнате 1, то можно создать такой
виджет:
• Название: Главный свет
• Комната: Комната 1 (комнату с таким названием нужно заранее создать в разделе Rooms)
• Тип виджета: Light Control Relay (Управление светом)
• "Контрол" (реальное устройство, которое будет выполнять эту функцию): /devices/wb-gpio/controls/Relay_1
Settings (Настройки)
Раздел "Login" - используется только при работе через облачный веб-интерфейс, если вы работаете с
интерфейсом локально на устройстве, то все настройки в нём уже выставлены правильно. Если вы работаете с
облачным интерфейсом, смотрите раздел ниже.
Раздел "Common Info" - здесь можно выбрать панель, которая будет отображаться на главной странице
странице (Home).
Раздел "Statistics Overview" - здесь выводится техническая информация, в частности, все подключённые
устройства и их "контролы", а также возможные типы виджетов.
Wiren Board 4:Веб-интерфейс 22
Облачный интерфейс
Wiren Board может управляться не только с интерфейса, расположенного на самом контроллере - этот же
интерфейс может находиться на сервере в облаке. Пока что такой вариант доступен только
корпоративным клиентам по запросу.
Подготовка
Правила имеют вид файлов, которые пишутся на языке Javascript, и находятся на контроллере в папке
/etc/wb-rules. Инструкцию, как их редактировать, смотрите в статье Просмотр файлов контроллера с
компьютера.
После добавления нового правила перезагрузите контроллер ИЛИ выполните из консоли команду
Примеры правил
Слежение за контролом
Это простейшее правило следит за контролом и устанавливает другой контрол в такое же состояние.
Например правило может включать сирену и лампу, если датчик движения заметил движение.
В примере датчик движения подключен к входу "сухой контакт", контрол типа "switch". Сирена подключена к
встроеному реле Wiren Board, а лампа - через релейный блок по Modbus. Когда вход типа "сухой контакт"
(выход датчика движения) замкнут, то на лампу и реле подаётся "1", когда выключен - "0".
Правило срабатывает каждый раз при изменении значения контрола "D1_IN" у устройства "wb-gpio". В код
правила передаётся новое значение этого контрола в виде переменной newValue.
defineRule("motion_detector", {
whenChanged: "wb-gpio/D1_IN",
then: function (newValue, devName, cellName) {
dev["wb-gpio"]["Relay_2"] = newValue;
dev["wb-mrm2_6"]["Relay 1"] = newValue;
}
});
Движок правил wb-rules 23
defineVirtualDevice("simple_test", {
title: "Simple switch",
cells: {
enabled: {
type: "switch",
value: false
},
}
});
defineRule("simple_switch", {
whenChanged: "simple_test/enabled",
then: function (newValue, devName, cellName) {
dev["wb-gpio"]["Relay_2"] = newValue;
dev["wb-mrm2_6"]["Relay 1"] = newValue;
}
});
Системные правила
Некторые правила поставляются с системой правил по-умолчанию в пакете wb-rules-system.
Полный список правил в репозитории [1].
Некоторые примеры:
cells: {
frequency : {
type : "range",
value : 3000,
max : 7000,
},
volume : {
type : "range",
value : 10,
max : 100,
},
enabled : {
type : "switch",
Движок правил wb-rules 24
value : false,
},
}
});
// setup pwm2
runShellCommand("echo 2 > /sys/class/pwm/pwmchip0/export");
function _buzzer_set_params() {
var period = parseInt(1.0 / dev.buzzer.frequency * 1E9);
var duty_cycle = parseInt(dev.buzzer.volume * 1.0 / 100 * period * 0.5);
defineRule("_system_buzzer_params", {
whenChanged: [
"buzzer/frequency",
"buzzer/volume",
],
defineRule("_system_buzzer_onof", {
whenChanged: "buzzer/enabled",
then: function (newValue, devName, cellName) {
if ( dev.buzzer.enabled) {
_buzzer_set_params();
runShellCommand("echo 1 > /sys/class/pwm/pwmchip0/pwm2/enable");
} else {
runShellCommand("echo 0 > /sys/class/pwm/pwmchip0/pwm2/enable");
}
}
});
Движок правил wb-rules 25
defineVirtualDevice("power_status", {
title: "Power status", //
cells: {
'working on battery' : {
type : "switch",
value : false,
readonly : true
},
'Vin' : {
type : "voltage",
value : 0
}
}
});
defineRule("_system_track_vin", {
whenChanged: "wb-adc/Vin",
then: function() {
if (dev["wb-adc"]["Vin"] < dev["wb-adc"]["BAT"] ) {
dev["power_status"]["Vin"] = 0;
} else {
dev["power_status"]["Vin"] = dev["wb-adc"]["Vin"] ;
}
}
});
defineRule("_system_dc_on", {
asSoonAs: function () {
Движок правил wb-rules 26
defineRule("_system_dc_off", {
asSoonAs: function () {
return dev["wb-adc"]["Vin"] <= dev["wb-adc"]["BAT"];
},
then: function () {
dev["power_status"]["working on battery"] = true;
}
});
FF FF 0A 01 FF 00 00 0A
При выключении переключателя будем отправлять команду (уст. Яркость кан. 00=0x00) для Uniel UCH-M141:
FF FF 0A 01 00 00 00 0B
1. Настройка порта
Для настройки порта /dev/ttyNSC0 на скорость 9600 надо выполнить следующую команду
stty -F /dev/ttyNSC0 ospeed 9600 ispeed 9600 raw clocal -crtscts -parenb -echo cs8
2. Отправка команды
Отправка данных делается следующей шелл-командой:
defineVirtualDevice("rs485_cmd", {
title: "Send custom command to RS-485 port",
cells: {
Движок правил wb-rules 27
enabled: {
type: "switch",
value: false
},
}
});
runShellCommand("stty -F /dev/ttyNSC0 ospeed 9600 ispeed 9600 raw clocal -crtscts -parenb -echo cs8");
defineRule("_rs485_switch_off", {
asSoonAs: function () {
return !dev.rs485_cmd.enabled;
},
then: function() {
runShellCommand("/usr/bin/printf '\\xff\\xff\\x0a\\x01\\x00\\x00\\x00\\x0b' >/dev/ttyNSC0");
}
});
cells: {
enabled: {
type: "switch",
Движок правил wb-rules 28
value: false
},
});
function setup_port() {
runShellCommand("stty -F /dev/ttyNSC0 ospeed 9600 ispeed 9600 raw clocal -crtscts -parenb -echo cs8");
defineRule("_rs485_switch_on", {
asSoonAs: function () {
return dev.rs485_cmd.enabled;
},
then: function() {
});
defineRule("_rs485_switch_off", {
asSoonAs: function () {
return !dev.rs485_cmd.enabled;
},
then: function() {
});
setTimeout(setup_port, 1000); // запланировать выполненеи setup_port() через 1 секунду после старта правил.
Примечания
[1] https:/ / github. com/ contactless/ wirenboard/ tree/ master/ system_rules/ rules
[2] https:/ / github. com/ contactless/ wirenboard/ blob/ master/ system_rules/ rules/ buzzer. js
[3] https:/ / github. com/ contactless/ wirenboard/ blob/ master/ system_rules/ rules/ power_status. js
[4] https:/ / github. com/ contactless/
wb-rules#%D0%94%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%
29
Настройка контроллера
IP-адрес при
подключении к
созданной контроллером
Wi-Fi точке доступа
По умолчанию контроллер создаёт
Wi-Fi точку доступа WirenBoard без
пароля. К ней можно подключиться с
любого устройства, и адрес
контроллера в ней всегда одинаков -
192.168.42.1.
ifconfig
SSH
SSH - протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть
или Интернет. Смотрите описание в Википедии [1]. Кроме SSH, получить доступ к консоли можно
поключившись напрямую к устройству через Debug UART.
Необходимая информация
Чтобы зайти на устройство, вам нужно знать три вещи:
1. IP-адрес устройства - смотрите статью Как узнать IP-адрес контроллера
2. Логин пользователя: root
3. Пароль пользователя: wirenboard
Установка SSH-клиента
Для работы с SSH установите на вашем компьютере утилиту - SSH-клиент, например, PuTTY:
• версия для Windows - скачать с официального сайта [1]
• версия для Linux Debian или Ubuntu - выполните команду apt-get install putty
Подключение
1. Запустите приложение, введите IP-адрес, убедитесь, что выбрано подключение по SSH, нажмите Open.
2. При первом подключении к контроллеру появится запрос на приём от него ключа для шифрования
соединения - нажмите Accept.
SSH 32
3. Когда откроется окно консоли, в нём появится запрос имени пользователя - введите root и нажмите Enter;
появится запрос пароля - введите wirenboard (вводимые символы не будут отображаться) и нажмите Enter.
Примечания
[1] http:/ / en. wikipedia. org/ wiki/ Secure_Shell
7. Drive Letter: оставьте - это будет буква "диска", в котромбудет отображаться файловая система
контроллера
3. Нажмите кнопку Save
4. Нажмите кнопку Mount
Теперь вы можете работать с файловой системой контроллера как с обычным диском, в том числе открывать и
редактировать файлы. Будьте осторожны - повреждение некоторых файлов может нарушить работу
контроллера.
Надёжный способ
Файлы контроллера можно просматривать и редактировать, если у вас есть доступ к его консоли через Debug
UART или по SSH. Для этого:
1. Зайдите в консоль устройства через Debug UART или по SSH.
Подсистемы
GSM/GPRS
В Wiren Board установлен GSM/GPRS-модуль SIM900R, с помощью которого можно:
• отправлять СМС
• принимать СМС
• устанавливать соединение с интернетом
Полный список возможностей смотрите в описании модуля.
Работа из Linux
Внутри контроллера модем подключён к процессору по двухпроводному последовательному порту (UART). В
Linux этот порт отображается как псевдоустройство /dev/ttyAPP0 (первый порт (Application UART)
процессора). Модуль управляется посредством передачи команд на этот порт.
Кроме того, модуль можно выключить и перезагрузить, подав сигналы на контакты модуля PWRKEY и
RESET. Для этих целей написана простая утилита wb-gsm (примеры использования смотрите ниже). Прямой
доступ к этим контактам реализован через GPIO (подробнее читайте GPIO, ищите в таблице соответствующие
названия).
Включение модуля
[1]
Для включения или перезагрузки модуля можно пользоваться утилитой wb-gsm (исходники ). Утилита
установлена в стандартном образе в пакете wb-utils.
Примеры:
Работа с модулем
Ознакомьтесь с инструкцией - Работа с последовательным портом из Linux
Для интерактивного режима:
• запускаем minicom с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и
т.д.):
$ minicom -s /dev/ttyAPP0
• Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт
/dev/ttyAPP0, скорость и чётность - 115200, 8N1, Hardware flow control - No, Software flow control - No
• Сохранить настройки: Save setup as _dev_ttyAPP0
• Далее запускать как minicom /dev/ttyAPP0 (все параметры будут сразу браться из профиля с названием
/dev/ttyAPP0, который мы ранее создали)
GSM/GPRS 37
• Первой вашей командой должна стать AAAAAAAAAT - с её помощью модуль распознает скорость, с которой
мы к нему обращаемся (смотрите SIM900R)
• Второй командой выполните просто AT. Вам должен прийти ответ OK
Примеры команд
(Полный список команд смотрите в документации модуля)
• Синхронизовать скорость порта (не совсем команда)
AAAAAAAAAAAAAT
AT+COPS=?
AT+CSQ
ATD+79154816100;
AT+IPR=115200
AT+CCLK?
AT+CCLK="14/03/19,01:20:29+00"
AT+GSN
86820400xxxxxxY
OK
Мультиплексирование
Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно
одновременно работать с модемом. Например, через один порт можно открыть сессию PPP для GPRS, а через
другой получать и отправлять SMS, проверять баланс и т.д. Подробнее смотрите CMUX.
Работа с GPRS
Настройка GPRS происходит стандартно для Linux.
Сначала при помощи утилиты pppconfig создаётся конфигурационный файл подключения с параметрами для
вашего оператора (например, МТС [3]), затем запускается подключение командой
Если вам нужна всего одна конфигурация, назовите её provider - тогда она будет запускаться по умолчанию,
подключение можно будет запускать просто командой pon без аргументов.
Подробная информация по настройке: ссылка [4]
GSM/GPRS 38
Конфигурационные файлы для операторов "большой тройки" уже есть в стандартном образе: ссылка [5]
+CRTXVMA: (0204,01C9,0184,0149,0118,00EF,00CE,00B3,009E,008E,0081,0077,006F,0067,005F,0053),(021A,01B6
,016D,0131,0105,00E0,00C4,00AE,009B,008C,0080,0078,0071,006A,0065,0053),(023A,01B7,0181,014F,0122,00FC
,00DC,00C1,00AB,009A,008B,007F,0076,0072,006B,0068),(01F4,01AF,0165,012A,00FB,00D7,00BB,00A5,0093,0086
,007A,0071,006B,0065,0061,005D)
Примечания
[1] https:/ / github. com/ contactless/ wirenboard
[2] http:/ / m2msupport. net/ m2msupport/ atcsq-signal-quality/
[3] http:/ / www. corp. mts. ru/ help/ corp_settings/ gprs_edge/ win_xp/
[4] https:/ / help. ubuntu. com/ community/ DialupModemHowto/ SetUpDialer#Alternative_Way_2_. 28using_pppconfig_. 26_pon. 2Fpoff. 29
[5] https:/ / github. com/ contactless/ wirenboard/ tree/ master/ configs/ configs/ etc/ ppp
ADC
Как получить напряжение с АЦП
1. Выберите клемму, к которой можно подключить ваш источник, исходя из максимального допустимого
напряжения (смотрите таблицу ниже).
2. Большинство клеммников с функциями АЦП могут выполнять две функции: АЦП и управление
низковольтной нагрузкой. Перед тем, как измерить напряжение на АЦП, поставьте соответствующий выход
управления низковольтной нагрузкой в положение "выключено". Например, если вы подключаетесь к
клемме A1, выключите в веб-интерфейсе A1_OUT (раздел Relays & FETs).
Подробнее смотрите Мультиплексирование портов
3. Подключите ваш источник к клемме. Значение напряжения сразу появится в веб-интерфейсе в устройстве
ADCs. Также значение транслируется в систему сообщений MQTT.
• Чтение показаний:
или
root@wirenboard:~# wb-adc-get-value
3838
Пример
• Устанавливаем ADC на измерение напряжения на клеммнике A3:
root@wirenboard:~# wb-adc-set-mux A3
root@wirenboard:~# wb-adc-get-value
2523
• Конвертируем значение
Измерение сопротивлений
См. ADC:Измерение сопротивлений - технические детали
Входное напряжение
Демон wb-homa-adc транслирует значение в очередь сообщений MQQT в топик /devices/wb-adc/controls/Vin .
Таким образом, значение отображается в веб-интерфейсе как канал Vin устройства ADCs
Напряжение аккумулятора
Демон wb-homa-adc транслирует значение в очередь сообщений MQTT в топик /devices/wb-adc/controls/BAT .
Таким образом, значение отображается в веб-интерфейсе как канал BAT устройства ADCs
В ручном режиме (для WB 2.8 и WB 3.5):
cat /sys/bus/iio/devices/iio:device0/in_voltage7_raw
Опорное напряжение
Опорное напряжение LRADC составляет 1.85V. Возможна программная установка делителя 2:1 внутри канала
Основные каналы
Часть каналов АЦП выведена на клеммы параллельно с транзисторами управления низковольтной нагрузки.
Убедитесь, что вы явно закрыли соответствующий FET помощью GPIO перед использованием АЦП.
Подробнее смотрите Мультиплексирование портов
Перевод значений
На канале должен стоять делитель на два (пока нет). Формула для перевода:
WB4
клеммник Делитель Формула для Итоговая формула (без V макс. измеряемое (с комментарии
пересчета делителя) делителем)
WB3.5
Vin 33k/4k53 N / 4095 * 1.85V * 8.28 V = N * 3.74 mV 30V входное напряжение, iio channel: 0
ADC 41
WB NETMON-1
клеммник Делитель Формула для пересчета Итоговая формула (без делителя) V макс. измеряемое (с делителем) комментарии
WB2.8
Примечания
[1] http:/ / contactless. ru/ forums/ topic/
%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81-%D0%B0%D0%BA%D0%BA%D1%83%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%
GPIO
GPIO (General-purpose input/output - ввод-вывод общего назначения) - контакт электрической схемы, на
который пользователь может выводить значение (логическую единицу или ноль), или получать с него
значение. Несмотря на общее название, логическая единица может представляться разным напряжением -
следите за этим.
Watchdog
Сторожевой таймер, или "Watchdog" - аппаратно реализованная схема контроля за зависанием системы.
Представляет собой таймер, который сбрасывается подачей переменного сигнала от процессора на вход
таймера.
Если сброса не произошло в течение некоторого интервала времени (~15c), происходит перезагрузка по
питанию (выключение питания на 3-4 секунды).
Buzzer
Излучатель звука подключен в Wiren Board Smart Home к выходу ШИМ и управляется через sysfs-интерфейс
ядра. Номер порта PWM - 2.
ШИМ - это прямоугольные импульсы, интерфейс ядра позволяет регулировать частоту импульсов и
коэффициент заполнения. Коэффециент заполнения влияет на громкость звука.
Экспорт порта в sysfs:
Выключение:
Пример [1]
Примечания
[1] https:/ / github. com/ contactless/ wirenboard/ tree/ master/ examples/ beeper
Датчик SHT1x 43
Датчик SHT1x
Датчики Sensirion SHT1x (SHT10, SHT11, SHT15).
Пакет: wb-mqtt-sht1x Исходные коды: https://github.com/contactless/wb-mqtt-sht1x
В автозагрузке демон wb-mqtt-sht1x, отправляющий результаты в MQTT:
Конфиг демона:
/etc/wb-mqtt-sht1x.conf
Адреса в MQTT:
Sensor data:
/devices/sht1x/controls/temperature
/devices/sht1x/controls/humidity
Example:
Настройка в Zabbix:
mqtt.value[/devices/sht1x/controls/humidity]
mqtt.value[/devices/sht1x/controls/temperature]
44
Подключение периферии
Поддерживаемые устройства
Категории поддерживаемых устройств:
Подключаемые непосредственно к Wiren Board:
• Низковольтная нагрузка (реле на 12/24В, светодиоды, вентиляторы, сигнальные лампы и т. д.)
• Контакторы с управляющим напряжением 220В
• Датчики с аналоговым выходом по напряжению
• Датчики с резистивным выходом
• Датчики с релейным выходом или "открытый коллектор" (датчики дыма, протечек, движения)
• Счетчики с импульсными выходами (электро- и водосчётчики)
• Устройства с выходом открытый коллектор
• 1-Wire датчики температуры
Радиоустройства по 433МГц (в Wiren Board 4 и Wiren Board Smart Home 3.5):
• Устройства nooLite [1]
• Погодная станции Oregon Scientific
А также периферия по RS-485:
• Устройства собственного производства (диммер, молуль реле)
• Устройства компании Разумный дом [2] с интерфейсом ModBus RTU (датчики, релейные модули, диммеры
светодиодных лент и т. д.)
• Диммеры и релейные модули компании Uniel [3]
Далее устройства сгруппированы по интерфейсу подключения.
Статус: Tested,
Postponed
Поддерживаемые устройства 45
RS-485
Modbus RTU
Для перечисленных устройств есть примеры конфигурации, в принципе же поддержка устройств, работающих
по протоколу Modbus RTU, данным списком не ограничена. Подробнее.
Устройства собственного производства
[4] Tested
Разумный дом - MSU34+TLP
[5] Tested
Разумный дом - MSU21
[6] Tested
Разумный дом - MSU24
[7] Tested
Разумный дом - DDL24
[8] Tested
Разумный дом - DRB88
Устройства "ICP-DAS"
[9] Tested
ICP DAS - tM-P3R3
[10] Tested
ICP DAS - LC-103
[12] Tested
Uniel - Модуль управления освещением UCH-M111RX/0808
[13] Tested
Uniel - Модуль управления автоматикой UCH-M121RX/0808
[14] Tested
Uniel - Диммер ламп накаливания и галогенных ламп UCH-M131RC/0808
[15] Tested
Uniel - Диммер cветодиодных ламп UCH-M141RC/0808
Поддерживаемые устройства 46
1-wire
Модель Cтатус комментарии
DS18B20 и клоны Tested через ядерный sysfs интерфейс, одновременное считывание не поддерживается. код [16]
433Mhz Radio
Только для Wiren Board Smart Home 3.5 и Wiren Board 4 с радио-модулем.
Датчики
Noolite
Исполнительные устройства
Noolite
Поддерживается весь модельный ряд.
I2C
Модель Cтатус комментарии
Датчики давления и температуры BMP085 и BMP180 Tested через ядерный драйвер, см BMP085
Другое
Модель Cтатус комментарии
USB-устройства
Модель Cтатус комментарии
Примечания
[1] http:/ / www. noo. com. by/ sistema-noolite. html
[2] http:/ / www. razumdom. ru/ oborudovanie_rs485/
[3] http:/ / www. uniel. ru/ ru/ catalog/ 1639
[4] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row90/
[5] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row110/
[6] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row109/
[7] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row473/
[8] http:/ / www. razumdom. ru/ oborudovanie_rs485/ row83/
[9] http:/ / www. icpdas. com/ root/ product/ solutions/ remote_io/ rs-485/ tm-series/ tm-p3r3. html
[10] http:/ / www. icpdas. com/ root/ product/ solutions/ remote_io/ rs-485/ lighting_control/ lc-103. html
[11] https:/ / github. com/ contactless/ wb-homa-drivers/ blob/ master/ README.
md#%D0%A3%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0-uniel
[12] http:/ / www. uniel. ru/ ru/ catalog/ 2202. html
[13] http:/ / uniel. ru/ ru/ catalog/ 2200
[14] http:/ / www. uniel. ru/ ru/ catalog/ 2198. html
[15] http:/ / www. uniel. ru/ ru/ catalog/ 2199. html
[16] https:/ / github. com/ contactless/ wb-homa-drivers/ tree/ master/ wb-homa-w1
[17] http:/ / jeelabs. net/ projects/ cafe/ wiki/ Decoding_the_Oregon_Scientific_V2_protocol
[18] http:/ / contactless. ru/ forums/ topic/ поддержка-датчиков-ветра-и-осадков-oregon-scientif/
[19] https:/ / github. com/ contactless/ wb-mqtt-sht1x
[20] https:/ / github. com/ contactless/ wb-mqtt-co2mon
[21] https:/ / github. com/ drblez/ wirenboard
Управление низковольтной нагрузкой 48
Технические детали
Для сокращения общего числа
клеммников каналы управления
низковольтной нагрузки совмещены
с каналами АЦП - смотрите
Мультиплексирование портов.
Поэтому выходы имеют большое, но
конечное сопротивление
(30-100кОм). Это может вызывать,
например, слабое свечение
светодиодных лент (решение
проблемы: добавить резистор на
питание)
Примеры использования
Нагрузка подключается следующим
образом: "плюс" нагрузки
подключается к источнику питания,
"минус" подключается к
транзисторному выходу. Чтобы
нагрузка начала работать, нужно
подать высокий уровень на затвор
транзистора.
На иллюстрациях приведены схемы
подключения светодиода и реле.
Также можно легко подключить
готовый модуль реле, например
такой [1]
3. Устанавливаем GPIO в режим вывода для управления транзистором. Это обязательно, т.к. GPIO может
находится в режиме ввода и иметь высокий импенданс, оставляя транзистор в неопределённом состоянии.
Примечания
[1] http:/ / dx. com/ p/ 4-channel-5v-relay-module-black-blue-171144
RS-485
RS-485 - стандарт коммуникации по двухпроводной шине. По порту RS-485 к Wiren Board можно подключать
периферийные устройства.
Поддерживаемые протоколы
RS-485 - стандарт физического уровня, в котором биты передаются разностью напряжений - смотрите
описание в Википедии [1]. Поверх него должен работать логический уровень - стандарт сообщений, которыми
обмениваются устройства. Wiren Board из коробки поддерживает стандарт Modbus RTU [2], а также протоколы
устройств Uniel [3] и ydom.ru [4].
Поддерживаемые устройства
Однако даже если Wiren Board поддерживает протокол, по которому работает устройство, Wiren Board не
обязательно поддерживает само это устройство. В стандартном ПО Wiren Board идут драйверы как для работы
с периферией производства компании "Бесконтактные устройства", так и для некоторой другой - смотрите
список Поддерживаемые_устройства#RS-485.
Прокладка шины
Все устройства RS-485 устанавливаются на одну шину. Хотя шина работает по двум проводам, удобно
прокладывать четырёхжильным кабелем - дифпара для данных (сигналы А и В) и ещё пара проводов (GND и
+12V) для питания периферийных устройств на шине. Можно использовать обычную витую пару CAT5 для
Ethernet - тогда одна пара используется для данных, ещё две — для питания (так как по питанию идёт
значительный ток, лучше и для 12В, и для земли использовать по два скрученных провода), одна остаётся
свободной.
В конце шины нужно установить терминальный резистор (примерно 150 Ом, подробнее в Википедии
[5]
).
RS-485 51
Подключение устройств
Так как соединение осуществляется общей шиной, следует обратить внимание на качественное соединение
всех узлов линии:
• при обрыве линии устройства за обрывом не будут работать
• при коротком замыкании не будут работать все устройства.
Рекомендуем использовать штыревые наконечники под обжимку [6]. Это позволяет легко
подключать-отключать устройства без потери работоспособности остальных устройств на шине.
Провод A на всех устрйоствах подключается к клеммнику с маркировкой А, провод B - всегда к B. На Wiren
Board рядом с клеммниками А и В расположены клеммники GND и Vout - можно сразу подключить шины
питания (сначала проверьте требования ваших устройств!).
Лайфхак: так как внутри Wiren Board стоит растяжка линий, после подключения его к шине напряжение на
линии A будет больше чем на B примерно на 0.5 В. Поэтому подключая периферийные устройства вы легко
можете определить линии шины вольтметром.
Дополнительная информация
1. Дифференциальная линия дает хорошую помехозащищенность. Длина линии до 1200 метров.
2. При прокладке шины нужно соблюдать определённые правила [7], но для передачи в одной квартире
подойдёт любой кабель и даже возможны ответвления.
Wiren Board 4
Порты определяются в системе как:
• /dev/ttyNSC0 - изолированный (RS-485-ISO),
• /dev/ttyNSC1 - неизолированный порт.
Примечания
[1] https:/ / ru. wikipedia. org/ wiki/ RS-485
[2] https:/ / ru. wikipedia. org/ wiki/ Modbus#. D0. 92. D0. B2. D0. B5. D0. B4. D0. B5. D0. BD. D0. B8. D0. B5
[3] http:/ / smart. uniel. ru/
[4] http:/ / ydom. ru
[5] https:/ / ru. wikipedia. org/ wiki/ RS-485#. D0. A1. D0. BE. D0. B3. D0. BB. D0. B0. D1. 81. D0. BE. D0. B2. D0. B0. D0. BD. D0. B8. D0.
B5
[6] http:/ / www. chipdip. ru/ catalog-show/ tips/
[7] http:/ / www. gaw. ru/ html. cgi/ txt/ interface/ rs485/ app. htm
Драйвер wb-homa-modbus
Внимание! В этой статье даётся упрощённое и, возможно, устаревшее описание драйвера, работающего с
устройствами Modbus и Uniel и передающего сообщения в MQTT. Полное актуальное описание смотрите в
документации [1] на драйвер.
Конфигурационный файл
Для работы драйвера нужно создать и отредактировать файл /etc/wb-homa-modbus.conf. Для этого:
1. Воспользуйтесь инструкцией Просмотр файлов контроллера с компьютера
2. Файл /etc/wb-homa-modbus.conf имеет структуру порты (ports) -> устройства (devices): в файле
есть описания физических портов контроллера, а внутри них - список устройств, которые подключены к
этому порту.
Для каждого порта указываются настройки (скорость, чётность и т.п.), а также протокол (Modbus, RTU,
etc.)
Для каждого устройства обязательно указывается его уникальный адрес на шине - slave_id (подробнее
про это можно прочитать в статье RS-485). Также можно указать другие необязательные параметры -
смотрите полное описание формата в подробной документации [2].
3. Впишите конфигурацию для портов и подключённых устройств в файл, используя примеры ниже.
4. Перезагрузите устройство ИЛИ выполните из консоли команду
tail /var/log/messages
или откройте файл /var/log/messages и промотайте его до конца. Если там будет строчка такого
типа:
May 6 17:50:58 wirenboard user.notice modbus: FATAL: Error parsing config
file: Failed to parse JSON: * Line 15, Column 17
- ищите ошибку в 15-й строке конфигурационного файла.
Узнать файл, соответствующий порту для вашего контроллера - RS-485#Реализация портов в разных версиях
Wiren Board.
Полный список поддерживаемых типов устройств: см. здесь [3].
"baud_rate": 9600,
"parity": "N",
"data_bits": 8,
"stop_bits": 2,
"poll_interval": 0,
"enabled": true,
"devices" : [
{
"name": "DRB88",
"id": "drb88",
"enabled": true,
"slave_id": "0x23",
"device_type" : "DRB88"
},
{
"slave_id": "0x26",
"device_type" : "MSU24"
},
{
"slave_id": "0x31",
"device_type" : "MSU34"
},
{
"slave_id": "0x04",
"device_type" : "LC-103"
},
{
"device_type" : "DDL24",
"slave_id" : "0x20"
},
{
"enabled": true,
"slave_id": "0x06",
"device_type" : "WB-MRM2"
},
{
"slave_id" : 16,
"device_type" : "WB-MRGB"
}
]
},
{
"path" : "/dev/ttyNSC0",
"type": "uniel",
"poll_interval": 10,
"enabled": true,
"devices" : [
Драйвер wb-homa-modbus 56
{
"device_type" : "UCH-M141RC",
"slave_id": 1
}
]
}
]
}
Примечания
[1] https:/ / github. com/ contactless/ wb-homa-drivers/ blob/ master/ wb-homa-modbus/ README. md
[2] https:/ / github. com/ contactless/ wb-homa-drivers/ #wb-homa-modbus
[3] https:/ / github. com/ contactless/ wb-homa-drivers/ blob/ master/ wb-homa-modbus/ README.
md#%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2-dev
[4] mailto:info@contactless. ru
57
Приложения
Справка по использованию
root@wirenboard:~# serial_tool -h
usage: serial_tool [-h] [-b BAUD] [-p PARITY] [-d DATA_BITS] [-s STOP_BITS]
[-t READ_TIMEOUT]
port
positional arguments:
port Serial port to open, i.e. /dev/ttyXXX
optional arguments:
-h, --help show this help message and exit
-b BAUD, --baud BAUD Baud rate (default: 9600)
-p PARITY, --parity PARITY
set parity, one of [N, E, O, M, S] (default: N)
-d DATA_BITS, --data-bits DATA_BITS
set number of data bits, i.e. bytesize (default: 8)
-s STOP_BITS, --stop-bits STOP_BITS
set number of stop bits, one of [1, 1.5, 2] (default:
1)
Работа с последовательным портом из Linux 58
Пример запуска
root@wirenboard:~# serial_tool -b 9600 -p N -d 8 -s 2 -t 1 /dev/ttyNSC1
serial_tool on /dev/ttyNSC1: 9600 8N2.0
Enter your commands below in HEX form.
All characters but 0-9,a-f including spaces are ignored.
Press Control-D or Control-C to leave the application.
Press [Enter] to print received data
>> FF FF 0A 01 11 00 00 1C
<< FF FF 0A 00 11 00 00 1B
Здесь установлены настройки 9600 8N2, таймаут 1 секунда, порт /dev/ttyNSC1 (RS-485).
$ minicom -s /dev/ttyAPP0
• Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт
/dev/ttyAPP0, скорость и чётность - 115200, 8N1, Hardware flow control - No, Software flow control - No
• Сохранить настройки: Save setup as _dev_ttyAPP0
• Далее запускать как:
$ minicom /dev/ttyAPP0
(все параметры будут сразу браться из профиля с названием /dev/ttyAPP0, который мы ранее создали)
• Теперь можно вводить данные, которые вы хотите отправить в порт. Приходящие в порт данные от внешних
устройств также будут выводиться
Примечания
[1] https:/ / github. com/ contactless/ serial_tool
Работа с GPIO 59
Работа с GPIO
В Wiren Board часть GPIO выведена на клеммники, часть выведена на разъёмы UEXT, часть используется для
служебных целей. GPIO также используются для управления транзисторами для коммутации низковольтной
нагрузки.
Соответствие между номерами GPIO в Linux и их местоположением и функцией можно найти в табличке WB
SH 3.5: Список GPIO или WB rev. 2.8: Список GPIO.
В Wiren Board rev. 2.8 8 GPIO на специальном разъёме подключены через MCP23S08 и временно не работают
со стандартным Linux API. Описание работы с ними есть на странице MCP23S08.
Все GPIO (как и остальные порты Wiren Board) работают с напряжением 3.3V. Ни в коем случае не
подключайте к GPIO напрямую сигналы, напряжением больше 3.3V! В случае необходимости
подключения устройств, работающих с более высоким напряжением, необходимо использовать схемы
согласования или подключать (для 5V) через резистор в 20 кОм и более
На некоторых GPIO (в частности на 3х GPIO, выведенных на клеммники в Wiren Board rev. 2.8) можно
программно установить 47к подтяжку к +3.3В. См. Pin_pull-up.
root@wirenboard:~# ls -1 /sys/class/gpio/
export
gpio32
gpiochip0
gpiochip120
gpiochip32
gpiochip64
unexport
В директории /sys/class/gpioN теперь находятся файлы для работы с GPIO (где N - номер GPIO, как и было
сказано ранее):
root@wirenboard:~# ls -1 /sys/class/gpio/gpioN/
active_low
device
direction
edge
power
subsystem
uevent
value
Запись:
echo out > /sys/class/gpio/gpioN/direction # установим GPIO номер N на вывод
echo 0 > /sys/class/gpio/gpioN/value # установим логический 0 (низкое напряжение) на GPIO номер N
echo 1 > /sys/class/gpio/gpioN/value # установим логический 1 (высокое напряжение) на GPIO номер N
none
root@wirenboard:~# cat /proc/interrupts | grep gpiolib # прерывание появилось в списке. 26 - внутренний номер прерывания, 0 - количество событий
root@wirenboard:~# cat /proc/interrupts | grep gpiolib # после нескольких собтий, 76 - количество событий
Прерывания можно ловить из userspace с помощью системного вызова epoll() и select() на файл value. Пример
работы см. [1]
См. также elinux.org [2]
Пример 1
Определим сигнал 6@UEXT2 (SDA) в качестве источника прерываний для драйвера mrf24j40. Согласно
таблице Список GPIO, сигнал соответствует GPIO 53 процессора. 53 принадлежит второму банку gpio (от 32
до 63). Номер GPIO внутри банка 53-32=21 :
6lowpan@0 {
compatible = "microchip,mrf24j40";
spi-max-frequency = <100000>;
reg = <6>;
interrupt-parent = <&gpio1>;
interrupts = <21 0>;
};
Примечания
[1] https:/ / github. com/ contactless/ wiegand-linux-sysfs
[2] http:/ / elinux. org/ GPIO
[3] http:/ / olimex. wordpress. com/ 2012/ 09/ 11/ imx233-olinuxino-gpios-faster-and-faster/
[4] https:/ / github. com/ OLIMEX/ OLINUXINO/ blob/ master/ SOFTWARE/ iMX233/ gpio-mmap. h
CMUX 62
CMUX
Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно
одновременно работать с модемом. Например через один порт можно открыть сессию PPP для GPRS, а через
другой получать и отправлять SMS, проверять баланс и т.д.
Для работы необходима поддержка GSM line discipline в ядре (включена как модуль в стандартной прошивке).
Специальный демон, cmux отправляет модем в режим CMUX, после чего создаёт четыре виртуальных порта,
/dev/ttyGSM[1-4] . Закрытие демона cmux до закрытия всех виртуальных портов приведёт к kernel
panic!
Демон cmux
Репозитарий [1]
Оригинальный автор: [2]
Демон установлен по-умолчанию как "/usr/bin/cmux", доступен в пакете cmux. Скачать бинарник демона
можно здесь [3]
Пример работы
Включаем модем:
root@wirenboard:~# wb-gsm on
root@wirenboard:~# cmux
SERIAL_PORT = /dev/ttyAPP0
AAAT : AAAT OK
AT+IFC=2: AT+IFC=2,2 OK
AT+GMM : AT+GMM SIMCOM_SIM900R OK
AT : AT OK
AT+CMUX=: AT+CMUX=0 OK
Line dicipline set
Created /dev/ttyGSM1
Created /dev/ttyGSM2
Created /dev/ttyGSM3
Created /dev/ttyGSM4
Going to background
Примечания
[1] https:/ / github. com/ contactless/ cmux/
[2] https:/ / github. com/ Rtone/ cmux
[3] https:/ / github. com/ contactless/ cmux/ releases/ tag/ 0. 3
63
1-Wire
1-Wire - шина для подключения внешних датчиков по двум (или трём) проводам. Так как это шина, можно
подключить несколько устройств на один порт 1-Wire.
Поддерживаемые датчики
Wiren Board поддерживает один тип датчиков - температурные на основе чипов DS18B20 и подобных,
например:
• SNR-DTS [1]
• Stainless Steel Package [2]
Возможна реализация поддержки других датчиков по запросу на support@contactless.ru
Подключение
Датчик имеет три вывода: земля, питание и данные. Если есть возможность подключить все три вывода, то
лучше сделать именно так: на землю, 5 В и контакт 1-Wire. Если нужно уменшьшить число проводов, что
нужно соединить контакты питания и земли датчика, и подключить их к земле контроллера. В таком случае
датчик будет брать питание с канала с данными, но этот способ не так надёжен, как подключение по трём
проводам, и может замедлить опрашивание датчиков, особенно если их несколько на одном канале.
Длина шины может быть до сотни метров, однако эффективная дальность зависит от наводок на кабель.
Поддержка в ПО
После подключения значения с датчиков сразу будут транслироваться в MQTT и появятся в веб-интерфейсе.
Каждый датчик имеет собственный уникальный идентификатор.
Более подробная информация про 1-Wire на нашем форуме [3].
Примечания
[1] http:/ / shop. nag. ru/ catalog/ 00007. Avtomatizatsiya-i-monitoring/ 06630. Datchiki/ 08428. SNR-DTS
[2] http:/ / www. aliexpress. com/ item/ Waterproof-DS18B20-Temperature-Probe-Temperature-Sensor-Stainless-Steel-Package-100cm-Wire/
1426853426. html
[3] http:/ / contactless. ru/ forums/ topic/
%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0-1-wire-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D
#post-2605
WB-MRM2 Реле 2х канальное 64
Технические характеристики
Условия эксплуатации:
Порядок подключения
Управление
Параметры шины.
Скорость 9600 бит/сек, данных - 8 бит, чётность – нет, стоповый бит - 2.
READ_COIL 1
WRITE_SINGLE_COIL 5
WRITE_MULTI_COILS 15
READ_HOLDING_REGISTERS 3
WRITE_SINGLE_REGISTER 6
WRITE_MULTI_REGISTERS 16
Безопасный режим
В этом режиме при прекращение обмена данными по modbus устройство отключает оба реле по прошествии
заданного времени.
Для включения безопасного режима нужно записать значение отличное от 0 в HOLDING_REGISTER по
адресу 2. Это значение - таймаут в секундах.
Кнопки
Поддерживается три режима работы кнопок:
• Режим 0: прямое управление каналами, выключатели без фиксации (кнопки). Нажатие на кнопку
переключает состояние реле.
• Режим 1: прямое управление каналами, выключатели с фиксацией. Переключение выключателя с
фиксацией устанавливает состояние реле в соответствии с положением выключателя.
• Режим 255: управление каналами отключено
Поведением по-умолчанию является прямое управление каналами реле (режим 0). Установить режим можно
записав соответствующее число в HOLDING_REGISTER по адресу 5.
В любом режиме работы, текущее состояние кнопок можно прочесть из HOLDING_REGISTER по адресам 6 и
7.
WB-MRM2 Реле 2х канальное 66
Карта регистров
200-206 holding R {'W','B','M','R','2',0} hex: 0x0057 0x0042 0x004d 0x0052 0x0032 сигнатура
0x0000
Диммер WB-RGB
WB-RGB Диммер RGB 67
Технические характеристики
- 3 канала ШИМ для управления светодиодной лентой.
- Ток до 5А на канал.
- Частота ШИМа - 24кГц.
- Напряжение питания: от 11 до 24 В.
- Потребляемая мощность: 0,3Вт.
- Интерфейс: RS485, ModBus RTU.
- Сохранение состояния при отключении питания
- Входы для кнопок управления балансом цвета и общей яркости.
- Размеры – 55*30*10мм
Условия эксплуатации:
- Температура воздуха от 0°С до +50°С;
- Относительная влажность воздуха до 92%,без конденсата влаги.
Порядок подключения
Модуль выполнен в бескорпусном варианте - плата в термоусадочной трубке.
К синим клеммам подключаются RS-485 и управляющие кнопки:
• А и В - сигнальные линии RS485
• GND - земля шины RS485 (если есть)
• b1 и GND - кнопка управления яркостью
• b2 и GND - кнопка управления баланса цвета
Питание модуля совмещено с питанием светодиодных лент. Подключается к зеленым клеммам "-" "+".
Напряжение питания в пределах от 11В до 24В.
Стандартная светодиодная RGB лента имеет четыре провода и подключается к зеленым клеммам:
R (red)-управление красным цветом
G (green)-управление зеленым цветом
B (blue)-управление синим цветом
V+ общий провод (плюс источника питания)
Управление
Параметры шины.
Скорость 9600 бит/сек, данных - 8 бит, чётность – нет, стоповый бит - 2.
READ_COIL 1
WRITE_SINGLE_COIL 5
WRITE_MULTI_COILS 15
READ_HOLDING_REGISTERS 3
WRITE_SINGLE_REGISTER 6
WRITE_MULTI_REGISTERS 16
Кнопки
Модуль имеет две аппаратные кнопки.
Кнопка 1. Короткое нажатие – включение/выключение всех каналов. Длительное нажатие – плавное
изменение яркости всех каналов.
Кнопка 2. Длительное нажатие кнопки – плавное изменение цвета.
Отключить управление каналами с помощью кнопок можно, записав число 255(0xFF) в HOLDING_REGISTER
по адресу 5.
В любом режиме работы, текущее состояние кнопок можно прочесть из HOLDING_REGISTER по адресу 6 и
7. 0 отпущена, 1 - нажата.
Карта регистров
Программное обеспечение Wiren Board Источник: http://contactless.ru/wiki/index.php?oldid=3125 Редакторы: Admin, EvgenyBoger, Fizikdaos
Просмотр файлов контроллера с компьютера Источник: http://contactless.ru/wiki/index.php?oldid=3204 Редакторы: Admin, Евгений Твёрдый