Последнее время часто приходится слышать про системы умный дом, автоматизацию полива огорода и тому подобное. Поэтому, когда на днях, попал в руки релейный модуль CP-9052, управляемый по USB интерфейсу решил написать эту статью.
Итак начнем с комплектации. В комплект поставки входит блок питания 12В, диск с описанием протокола работы модуля и собственно сам модуль CP-9052. Модуль представляет из себя восемь управляемых реле, которые могут коммутировать нагрузку до 6А с питанием от переменного напряжения до 250В или постоянного напряжения до 125В.
С одной стороны 6А не так много, но с другой стороны вполне достаточно чтобы скоммутировать например восемь килловатныйх чайников. Каждый канал защищен предохранителем. Это правильно, поскольку неизвестно какую нагрузку подключит пользователь. Ну и в конце концов защищает модуль и провода от короткого замыкания.
Состояние предохранителя легко проверить ничего не вскрывая через проём в колпачке держателя предохранителя. Так же на модуле имеется светодиодная индикация активного канала, питания и режима настройки.
Подключим модуль к компьютеру и попробуем управлять реле. Для этого подключаем к модулю питание 12В, убедившись, что светодиод питания загорелся. Соединим USB кабелем модуль и компьютер. Если все правильно то операционная система (в моём случае это Windows 7) обнаружит новое устройство.
Выбираем ручную установку и указываем путь к драйверу на диске входящем в комплект модуля. Устанавливать драйвер необходимо 2 раза, сначала устанавливается USB драйвер для FT232RL.
После чего Windows обнаружит еще одно устройство - USB Serial Port. Указываем прежний путь к драйверу на диске.
В диспетчере устройств должен появиться COM порт - USB Serial Port ( у нас COM15). Устройство готово к работе.
При желании, перед началом работы с модулем можно настроить такие параметры как:
- Скорость передачи данных, бит/с (если модуль подключается по USB);
- Включить / Отключить обработку модулем контрольной суммы CRC16;
- Сменить пароль Bluetooth (если модуль подключается по Bluetooth.
Прежде чем переходить к испытаниям разберёмся с протоколом передачи данных. Для этого необходимо изучить "Описание протокола модуля CP-9052" которое находится так же на диске входящем в комплект. Из этого документа следует, что формат посылки в модуль и ответ от него один и тот же и имеет размер 11 байт:
Номер байта в пакете |
Условное обозначение байта |
Назначение |
1 |
ADR |
Адрес устройства. Для модуля CP-9052 адрес всегда 1. В ответном пакете этот адрес будет иметь значение 0 т.к. предполагается, что компьютер имеет нулевой адрес.
|
2 |
TYPE |
Тип устройства. Модуль CP-9052 всегда имеет тип 52. Таким образом при ответе на запрос модуль указывает в данном байте значение 52. При получении пакета от компьютера модулем CP-9052 данный байт никак не учитывается.
|
3 |
COM |
Команда устройству. Данный байт определяет функцию, которую необходимо выполнить устройству. Более подробно будет описано ниже.
|
4 |
PAC |
Номер подпакета. Данный байт служит для пакетной передачи данных. Применяется когда необходимо передать устройству более 2 байт данных.
|
5 |
D2 |
Данные. Данные в зависимости от команды могут иметь разное назначение. Например, при команде 1 имеют значения активных реле, а при команде 2 значение нового адреса устройства.
|
6 |
D1 |
7 |
MY_ADR |
Адрес устройства отправителя. Байт содержит адрес устройства, от которого отправлен пакет. Таким образом, при ответе на запрос модуль указывает в данном байте значение своего адреса т.е. 1. При получении пакета от компьютера модулем CP-9052 данный байт никак не учитывается.
|
8 |
CRC2 |
Два байта контрольной суммы CRC16. Проверка CRC16 модулем CP-9052 не осуществляется в режиме конфигурирования. Кроме того, проверку CRC16 можно отключить с помощью соответствующей команды (См.описание команд ниже).
|
9 |
CRC1 |
10 |
0D |
Байты окончания пакета. В шестнацетиричном формате 0x0D, 0x0A. Всегда добавляются в конце пакета.
|
11 |
0A |
Для управления модулем необходимы команды:
- 0x01 (COM=1 - команда на управление реле);
- 0x04 (COM=4 - команда запрос состояния реле).
Теперь открываем программу COM Port Toolkit (скачать можно тут), выбираем вкладку "Настройка" / "COM - порт". В открывшемся окне выбираем COM порт на котором висит модуль (у нас это COM15).
Если в модуле не менялись заводские настройки, то выбираем скорость 9600 (остальные параметры порта оставляем стандартными: данные - 8, паритет - Нет, стоп биты - 1, упр. потоком Нет).
Жмем ОК. После чего открываем вкладку "Сообщение" / "Отправить...". В открывшемся окне параметр "Тип данных" устанавливаем - "HEX", параметр "Посылка" устанавливаем - "Одиночная".
В верхнем окне "Сообщения" будем вводить последовательность из 11 байт в соответствующем формате.
1. Команда управления реле.
Команда управления реле |
№ байта |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Условное обозначение |
ADR |
TYPE |
COM |
PAC |
D2 |
D1 |
MY_ADR |
CRC2 |
CRC1 |
0D |
0A |
Значение в HEX формате |
01 |
00 |
01 |
00 |
00 |
05 |
00 |
00 |
00 |
0D |
0A |
Разберём почему посылка имеет именно такой вид.
- ADR = 1, тут я думаю всем понятно. Данный модуль всегда имеет адрес 1;
- TYPE = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой тип 52, т.е. в формате HEX будет 0x34;
- COM = 1, (0x01 - в шестнадцатеричном формате) команда на управление реле;
- PAC = 0, для команды 0x01 байт PAC может быть только 0;
- D2 = 0, для команды 0x01 байт D2 может иметь любое значение, так так он не учитывается. Мы установим его равным нулю;
- D1 = 5, байт данных указывает на то какие реле необходимо активировать. Состоянию реле соответствует состояние бит в данном байте. Нулевому биту соответствует состояние реле 1 и т.д. :
Биты байта D1 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Реле 8 |
Реле 7 |
Реле 6 |
Реле 5 |
Реле 4 |
Реле 3 |
Реле 2 |
Реле 1 |
Для активации 1го и 3го реле байт D1 должен иметь значение 0b00000101 (в двоичном формате) или 0x05 (в шестнацетеричном).
- MY_ADR = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой адрес, который всегда равен одному;
- CRC1 = 0, CRC2 = 0, при стандартных заводских настройках обработка контрольной суммы CRC16 модулем CP-9052 отключена. Поэтому установим значения данных байт равными нулю.
- 0x0D, 0x0A, два байта признака окончания пакета, добавляются всегда в конце пакета.
В результате будем иметь такую картину:
В ответных пакетах от модуля значение байт аналогично значениям байт в пакете запроса.
2. Команда запрос состояния реле.
Команда запрос состояния реле |
№ байта |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Условное обозначение |
ADR |
TYPE |
COM |
PAC |
D2 |
D1 |
MY_ADR |
CRC2 |
CRC1 |
0D |
0A |
Значение в HEX формате |
01 |
00 |
04 |
00 |
00 |
00 |
00 |
00 |
00 |
0D |
0A |
Разберём почему посылка имеет именно такой вид.
- ADR = 1, тут я думаю всем понятно. Данный модуль всегда имеет адрес 1;
- TYPE = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой тип 52, т.е. в формате HEX будет 0x34;
- COM = 4, (0x04 - в шестнадцатеричном формате) команда запроса состояния реле;
- PAC = 0, для команды 0x04 байт PAC может быть только 0;
- D1 = 0, D2 = 0, для команды 0x04 байты D1, D2 могут иметь любые значения, так так он не учитывается. Мы установим значения равные нулю;
- MY_ADR = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой адрес, который всегда равен одному;
- CRC1 = 0, CRC2 = 0, при стандартных заводских настройках обработка контрольной суммы CRC16 модулем CP-9052 отключена. Поэтому установим значения данных байт равными нулю.
- 0x0D, 0x0A, два байта признака окончания пакета, добавляются всегда в конце пакета.
В ответном от модуля пакете байт D1 = 5, указывает на то какие реле активировать. Состоянию реле соответствует состояние бит в данном байте. Нулевому биту соответствует состояние реле 1 и т.д. :
Биты байта D1 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Реле 8 |
Реле 7 |
Реле 6 |
Реле 5 |
Реле 4 |
Реле 3 |
Реле 2 |
Реле 1 |
Таким образом мы научились управлять по USB восемью реле и считывать их состояние.
В заключении прикладываю фото с объекта, где модуль CP-9052 нашел свое применение в качестве устройства управляющее светом над бильярдными столами. После оплаты аренды стола, автоматически включается свет над соответствующим столом на оплаченный период времени.
Сам модуль установлен в щите на стене.
Стати по схожей тематики:
Так же кому будет интересно видео с тестированием модуля CP-9052 (версия с Bluetooth):
|