433: Рабочая частота модуля — 433 МГц.
-
T: Тип модуляции — ASK (Amplitude Shift Keying) он же OOK (On-Off Keying). Логическая
1
— это наличие несущей частоты, логический0
— ее отсутствие (пауза). -
30: Скорее всего, это пульс или базовое время (часто обозначается как
delay
илиpulseLength
), равное 300 микросекунд. Это фундаментальная единица времени, от которой рассчитываются длительности всех остальных импульсов. Цифра часто округляется, реальное значение может быть 300, 320, 350 мкс и т.д. -
D: Схема кодирования — Decimal или, что более вероятно в контексте RCSwitch, указание на то, что данные передаются в виде десятичных кодов (хотя физически это все равно биты). Чаще это относится к формату триггеров:
-
1
кодируется как: короткий импульс (например, 1 единица времени) + длинная пауза (например, 3 единицы времени). - <p ">
0
кодируется как: длинный импульс (3 единицы времени) + короткая пауза (1 единица времени).
-
Пример для пульса = 300 мкс:
-
Длительность короткого сигнала/паузы: 1 * 300мкс = 300 мкс.
-
Длительность длинного сигнала/паузы: 3 * 300мкс = 900 мкс.
-
Бит
1
: ВКЛ (300 мкс) + ВЫКЛ (900 мкс) = всего 1200 мкс. -
Бит
0
: ВКЛ (900 мкс) + ВЫКЛ (300 мкс) = всего 1200 мкс.
2. Что означают "пакеты байтами по 32 байта"
Здесь речь идет уже о структуре полезной нагрузки — тех данных, которые вы хотите передать.
-
Пакет: Это complete сообщение, которое передатчик отправляет одним сеансом. Обычно пакет состоит из:
-
Преамбулы (Preamble): Серия импульсов, которая помогает приемнику "поймать" сигнал и синхронизироваться. Например, несколько длинных импульсов ВКЛ/ВЫКЛ.
-
Синхроимпульса (Sync): Специальная последовательность, отличающаяся от
0
и1
, которая标记 начало данных. -
Полезной нагрузки (Payload): Ваши данные. Вот они-то и разбиты на 32 байта.
-
Стоповых битов/Контрольной суммы: Может добавляться для проверки целостности данных.
-
-
По 32 байта: Это означает, что длина полезной нагрузки (данных) в каждом пакете фиксирована и составляет 32 байта (256 бит). Если вам нужно отправить меньше 32 байт, оставшиеся байты обычно заполняются нулями (null-байты,
0x00
) или каким-то другим значением. Если нужно отправить больше — разбивается на несколько пакетов.
Пример полного процесса передачи
Допустим, мы хотим передать строку "Hello!"
.
-
Подготовка данных: Строка
"Hello!"
в байтах (в кодировке ASCII) это48 65 6C 6C 6F 21
. Это всего 6 байт. Так как пакет должен быть 32 байта, мы дополняем его 26 нулевыми байтами (0x00
).Пакет = [0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x21, 0x00, 0x00, ... , 0x00]
(всего 32 элемента). -
Преобразование в биты: Микроконтроллер (например, Arduino) преобразует каждый байт в последовательность бит. Обычно младший бит (LSB) передается первым, но это зависит от реализации.
Байт0x48
(H
) в битах (в порядке LSB first):0x48
=01001000
в двоичной -> в порядке LSB first:00010010
. -
Кодирование протоколом: Для каждого бита формируется соответствующая импульсная последовательность согласно протоколу
T30D
:-
Если следующий бит
0
: передатчик включается на 900 мкс и выключается на 300 мкс. -
Если следующий бит
1
: передатчик включается на 300 мкс и выключается на 900 мкс.
-
-
Формирование пакета: Микроконтроллер "оборачивает" эти данные в пакет:
-
Отправляется преамбула (например, 20 импульсов по 300 мкС ВКЛ/ВЫКЛ).
-
Отправляется синхроимпульс (например, ВКЛ на 900 мкс + ВЫКЛ на 300 мкс).
-
Отправляются все 256 бит (32 байта * 8 бит) полезной нагрузки, закодированные как описано выше.
-
Передача завершается.
-
-
Радиопередача: Радиомодуль физически модулирует несущую частоту 433 МГц этими включениями и выключениями.
Итог
Фраза "радиомодуль отправляет 433T30D пакета байтами по 32 байта" описывает:
-
Аппаратную часть: Модуль на 433 МГц.
-
Протокол кодирования: OOK с базовым временем ~300 мкс и манчестер-подобным кодированием (
D
). -
Формат пакета: Полезная нагрузка данных имеет фиксированный размер в 32 байта.
Для работы с таким модулем на Arduino вы бы использовали библиотеку вроде RCSwitch
или VirtualWire
, где задали бы параметры пульса (300
) и, возможно, выбрали подходящий протокол (их в библиотеке несколько predefined).