Команды библиотеки RF24, канал и адрес
Я пытаюсь использовать библиотеку RF24 для беспроводной связи. Однако оказалось, что в этой библиотеке нет опции «помощь». Был файл keywords, но в нем не объяснялось, что он делает. Я нашел пару примеров в Интернете и в библиотеке, но id не объяснил все подробно.
Не могли бы вы объяснить мне, как работает эта команда, и есть ли файл справки для библиотеки?
В частности, у меня есть вопрос о канале и адресе, используемом в библиотеке.
A. Принимает ли адрес символ или цифру в качестве входных данных? Официальный пример в используемой библиотеке
byte addresses[][6] = {"1Node","2Node"};
Но я также говорю о некоторых примерах использования
byte addresses[][6] = {"00001","00002"};
Команда byte должна была быть 8-битной без знака. число от 0 до 255, но почему они использовали строку " " в качестве ввода?
Я нашел предложение в файле RF24.h: Адреса назначаются через массив байтов, по умолчанию длина адреса составляет 5 байт. Но почему они написали байтовые адреса[][6] вместо байтовые адреса[][5]?
B. Из какого-то другого видео я узнал, что у RF24 есть канал и адрес для связи, где канал может принимать значение от 0 до 125; вывод/порт принимает значение от 0,1 до 5; и адрес.
setChannel KEYWORD2
Вывод описан в RF24.h. Однако
- Можно ли открыть несколько каналов одновременно?
- Если использовать одни и те же адреса в нескольких каналах одновременно, можно ли различить адреса или они рассматривались как один и тот же адрес?
- Является ли адрес канала/порта (во время записи) древовидной структурой?
В. Можно ли открыть больше контактов/портов для передачи и записи?
openWritingPipe KEYWORD2
openReadingPipe KEYWORD2
1 ответ
Лучший ответ:
А. Принимает ли адрес символ или цифру в качестве входных данных?
Адрес составляет 5 байт. В этой библиотеке он предоставляется в виде массива. В C строка — это просто массив байтов. Таким образом, массив байтов можно представить в виде простой строки. Внутри два представления:
byte address[] = "123ab";
и
byte address[] = { '1', '2', '3', 'a', 'b' };
и даже:
byte address[] = { 0x49, 0x50, 0x51, 0x97, 0x98 };
все идентичны, за исключением того, что первый добавляет дополнительный 0x00
в конец, чтобы отметить конец строки (который полностью игнорируется библиотекой).
Б. Из какого-то другого видео я узнал, что у RF24 есть канал и адрес для связи, где канал может принимать значение от 0 до 125; вывод/порт принимает значение от 0,1 до 5; и адрес.
Здесь полезно иметь некоторое представление об основной терминологии радиосвязи.
Когда вы говорите, что устройство работает на частоте X, вы обычно имеете в виду только "диапазон частот", в котором работает устройство (в данном случае 2,4 ГГц). Устройство не работает на частоте 2,4 ГГц — только "в диапазоне 2,4 ГГц". Затем эта полоса частот делится на каналы. Каждый канал имеет определенную частоту. Точно так же, как у вашего телевизора есть каналы, вы выбираете один конкретный канал (и, следовательно, частоту), чтобы настроиться и общаться.
Номера каналов используются только потому, что гораздо проще запомнить "канал 21" вместо, например, 471,25 МГц.
Чтобы два устройства могли обмениваться данными, они должны быть настроены на одну и ту же частоту и, следовательно, на один и тот же канал.
"Адрес" больше похож на адрес вашего компьютера в сети. В пределах частоты канала у вас может быть несколько взаимодействующих устройств. Адрес точно указывает, на какое из устройств вы хотите отправлять данные или с каких устройств получать данные.
С. Можно ли открыть больше контактов/портов для передачи и записи?
В nRF24L01 внутри используются конвейеры как метод разделения данных с разных устройств на отдельные потоки, из которых вы можете считывать. Это просто для удобства. Вы можете открыть до 6 каналов одновременно, каждый из которых будет получать данные с разных адресов. Все трубы находятся на одном канале, поскольку вы можете настроиться только на один канал за раз.
Кстати, файл keywords.txt
существует исключительно для того, чтобы среда IDE выделяла определенные слова. Он не предназначен для чтения человеком при работе с библиотекой.
- Как отправить данные датчика с Arduino через NRF24L01 на Raspberry Pi
- Самая низкая задержка при запуске нескольких Arduino с использованием NRF24L01+
- Понимание спецификаций NRF24L01
- Беспроводная связь с NRF24L01+
- Ардуино с nRF24L01.
- nRF24L01 - пропускает конечные символы во время передачи
- NRF24L01 PA+LNA с Arduino
- nRF24L01+ Невозможно установить адрес
на странице, на которую вы ссылаетесь, есть ссылка. http://tmrh20.github.io/RF24, @Juraj
Я бы посоветовал прочитать даташит. Это довольно хорошо написано. Не беспокойтесь, если вы не все понимаете; просто продолжайте читать. Это должно дать вам хорошее представление о том, что делает этот модуль и как он работает., @Gerben