Комнатный тонкий клиент RS-485 для умного дома

 

Сделан на базе Orange Pi Zero. Кроме своей основной функциональности - обслуживания сети клиентских устройств по аппаратному протоколу RS-485, плата обеспечивает подачу контролируемого паразитного питания для них и имеет на борту dc/dc преобразователь для питания микрокомпьютера и его периферии.

Контроль питания клиентов

Предельное значение тока, передаваемого в линию устройств, по умолчанию установлено в 1А и может быть изменено записью в регистр памяти 2. Режим отработки "предохранителя" задается в регистре 3 и имеет следующие варианты: 0 - средневзвешенное значение (за 256 проходов измерения), 1 - по мгновенному значению тока.

Амперметр возвращает (и устанавливается) значения с коэффициэнтом приблизительно 10 мА на единицу.

Прибор так же контролирует напряжение питания линии клиентов.

Порт расширения

Дополнительный порт расширения имеет следующие контакты:

  1. общий провод;
  2. pin/output #1;
  3. pin/output #2;
  4. pin/output #3;
  5. pin/output #4;
  6. pin/output #5;

Порт расширения и программирования имеет следующие контакты:

  1. общий провод;
  2. +5В для питания плат расширения;
  3. сигнал принудительного сброса микроконтроллера;
  4. pin/output #8;
  5. pin/output #7;
  6. pin/output #6.

Настройка назначения (вход/выход) контактов порта расширения задается в регистре 0 одним байтом.

Та же маска задает инверсию входов/выходов в регистре 1 (0 - без инверсии, 1 - инверсно).

Остальные биты игнорируются. Бит #0 всегда выход без инверсии и управляет подачей питания в линию клиентов. При включении или сбросе микроконтроллера, после измерения значения датчика тока, соответствующего нулю, микропрограмма производит попытку подачи питания в линию.

Как и остальные логические выходы, порт управления питанием может управляться программно, путем передачи в нужный номер порта длительности его включения в секундах (2 байта) или 0 для выключения.

Датчик движения

На плате присутствует разъем подключения для HC-SR501.

Номер пина датчика движения - 9.

Датчики среды

Комплект датчиков распаян непосредственно на плате контроллера. В их работу небольшую погрешность может вносить тепловыделение активными компонентами схемы и точность их показаний зависит от качества вентиляции внутри корпуса прибора.

Датчики температуры и влажности имеют следующие приблизительные значения пересчета.

параметр k a
температура в градусах цельсия 0.200000 -63.000000
относительная влажность в процентах 0.125000 -12.500000
освещенность в процентах 0.100000 0.000000

ИК приемопередатчик

Поддерживаемые протоколы:

При передаче данных, номер ИК выхода соответствует протоколу.

Приемник возвращает индекс 0 для протоколов "NEC" и "Mitsubishi heavy". Протокол "Panasonic" - индекс 1.

Максимальная длина пакета принимаемых и передаваемых данных - 32 байта, что более чем достаточно для обработки сигналов кондиционеров.

Сторожевой таймер

Для повышения надежности системы управления, в состав платы входит сторожевой таймер, позволяющий принудительно перезагружать микрокомпьютер по питанию, в случае отсутствия сигнала сброса в течении заданого времени.

Время работы таймера задается командой "W" с индексами:

  1. длительность таймера;
  2. длительность отключения питания.

Передаваемые данные - 1 байт значения в секундах.

Если передать 0 в значение таймера, он будет отключен.

Индикация

Плата имеет три светодиодных индикатора работы. Светодиод, расположеный рядом с краю платы, имеет следующее назначение цветов:

Индикатор обмена с микрокомпьютером так же имеет три цвета, обозначающих:

Индикация состояния сети RS-485 расположена непосредственно на разъемах RG-45.

Основная индикация так же настраиваема и содержит два байта: первый - разрешение, второй - яркость свечения. Их битовые маски:

  1. индикатор питания;
  2. прием ИК сигнала;
  3. передача ИК;
  4. передача компьютеру;
  5. прием данных от компьютера;
  6. ошибка обмена с компьютером.

Остальные биты игнорируются.

ttyS2

Колодка расширения "ttyS2" напрямую передает контакты микрокомпьютера UART2 с CMOS уровнями (будьте осторожны при подключении и использовании!). В зависимости от конфигурации ядра linux, их так же можно использовать для ввода/вывода логических сигналов или для обслуживания каких-нибудь специфических протоколов (наподобии 1-wire).

Ее основное назначение - подключение дополнительного мастера сети клиентских устройств.

Назначение выводов (по ключу):

  1. общий провод;
  2. +5В для питания плат расширения;
  3. UART RX / PA1;
  4. UART TX / PA0;
  5. UART CTS / PA3;
  6. UART RTS / PA2.

Мультимедиа

На плате установлен микрофон для обработки компьютером голосовых команд.

Так же, на плате присутствует разъем выхода звука, имеющий активный ФНЧ второго порядка, эффективно убирающий шумы ЦАП выхода микрокомпьютера.

Вспомогательные выходы USB микрокомрьютера тоже обеспечены внешними разъемами.

Питание

Устройство потребляет от 9 до 16 вольт постоянного тока (напряжение питания клиентов проводится без потерь и соответствует входному) и максимально энергоэффективно (максимальные потери при интенсивной работе микрокомпьютера с дополнительной нагрузкой на USB около одного ватта), что позволяет использовать аккумуляторы для бесперебойного питания системы.

Рекомендуемая нагрузка по питанию +5В - не более 3А (включая компьютер и его обвес по USB).

Рекомендуемый источник питания - 12В 2А (3А максимум), с учетом передачи до 1А в линию устройств.

Малый сервер

Мощности применяемого микрокомпьютера вполне достаточно для полнофункционального сервера системы. Однако, для размещения Базы Данных непосредственно на micro-SD карте с системой желательно использовать карточки "extreme", гарантирующие большое колмчество циклов записи.

Сводная таблица команд

Протокол обмена данными с устройством.

Запросы
команда данные описание
R   Полная перезагрузка устройства.
r   Сброс портов, перезагрузка базового значения амперметра и питания линии.
S   Сброс дополнительных портов в неактивное состояние (с учетом инверсии).
i   Запрос модели устройства.
p   Запрос состояния логических входов/выходов.
a   Запрос значения тока в линии клиентских устройств.
v   Запрос значения напряжения питания.
d   Запрос списка активных устройств.
o #вывода + 2 байта длительности
или 4х2 байта для всех портов
Изменение состояния вывода (включение) на длительность в секундах. Если длительность больше 65000, постоянное включение (до сброса или следующего изменения).
Порядок следования байт длительности - от старшего.
Порядок следования портов (для управления одним пакетом) - от 0 до 3, без указания номера порта.
c 1 байт номера +
данные
передача ИК пакета. Виртуальный порт 0 передает сигнал с широкими импульсами, 1 - с узкими.
t   Запрос значения датчика температуры.
m   Запрос значения датчика относительной влажности.
h   Запрос значения датчика освещенности.
W 1 байт индекса
1 байт секунд
Установка сторожевого таймера.
0 - таймер.
1 - длительность провала питания.
M #регистра + значение Запись настроек в EEPROM.
0 - направление выводов + 1 байт маски.
1 - инверсия выводов + 1 байт маски.
2 - максимальная величина тока в линии + 2 байта - значение.
3 - метод замера тока для "предохранителя" + 1 байт (0 - средневзвешенное значение, 1 - мгновенное).
4 - фильтр отчета аналоговых данных.
5 - время провала питания микрокомпьютера по умолчанию.
l 1 байт маски
или 1 байт маски +
1 байт маски яркости
Настройка индикации.
Ответы
команда данные описание
A   Подтверждение успешного приема команды.
E   Ошибка в команде.
U   Команда не поддерживается
L   Неправильная длина принятых данных (не соответствует протоколу).
u 1 байт адреса Устройство активно (вышло на связь).
N 1 байт адреса Устройство не отвечает (выключено или отсутствует).
i LINE COORDINATOR NT ROOM Ответ названия (типа) устройства.
p 1 байт - количество изменений
[1 байт - номер +1 байт - состояние]
Состояния изменений в логических входах/выходах. При старте или по запросу - текущее состояние всех контактов.
a 1 байт - количество изменений = 1
1 байт - индекс = 0
2 байта - значение
Значение датчика тока в линии клиентских устройств.
v 1 байт - количество изменений = 1
1 байт - индекс = 0
2 байта - значение
Значение датчика напряжения в линии клиентских устройств.
t 1 байт - количество изменений=1
1 байт - индекс=0
2 байта - значение
Температура воздуха. Старший байт идет первым.
m 1 байт - количество изменений=1
1 байт - индекс=0
2 байта - значение
Относительная влажность воздуха. Старший байт идет первым.
h 1 байт - количество изменений=1
1 байт - индекс=0
2 байта - значение
Освещенность. Старший байт идет первым.
c 1 байт - количество изменений=1
1 байт - индекс=0
данные
принятый пакет ИК данных.

Геометрические размеры

Размеры платы с установленным микрокомпьютером: 140х80х22 мм.

Минимальная высота установки платы над внутренней поверхностью корпуса (крепежные стойки): 4 мм.