Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Беспроводной приемопередатчик NRF905 ====== ===== Описание ===== Универсальный приемопередатчик работающий в ISM диапазоне (Industrial, Scientific, Medical), предназначен для построения радиочастотных систем передачи данных в нелицензированных частотных диапазонах. Приемопередатчики устойчивы к помехам, высокочувствительны, превосходная стабильность частоты, имеют низкое энергопотребление. Применяются для: Удаленного управления, телеметрии, создания беспроводных сетей, систем контроля доступа, систем мониторинга, промышленных систем сбора данных, для беспроводных меток, идентификации, беспроводных радиочастотных смарт-карт, беспроводные терминалы данных, системы безопасности, системы пожарной безопасности, гидрологический и метеорологический мониторинг, управление роботами, цифровая аудио- и видеопередача. ==== Технические характеристики ==== * Напряжение питания: 2,7-3,3В * Потребляемый ток в режиме передачи: 30мА * Потребляемый ток в режиме приема: 13мА * Потребляемый ток в режиме ожидания: 8мкА * Рабочая частота: 433МГц * Скорость передачи данных: 76,8Кбит/с * Количество независимых каналов: 170 * Чувствительность приемника: -105ДБм * Выходная мощность: 10ДБм * Дальность связи в прямой видимости: 1000 м ==== Физические размеры ==== * Приемопередатчик (ДхШхВ): 33 х 20 х 15 мм * Антенна (ДхШхВ): 8 х 8 х 50 мм ==== Плюсы использования: ==== * Высокая дальность связи * Хорошая помехоустойчивость * Шифрование сигнала * Низкое энергопотребление * Одно устройство и приемник и передатчик одновременно ==== Минусы использования: ==== * Интерфейс подключения: SPI – занято много выходов * Требуется контроллер для работы * Сложны в подключении ==== Библиотека для работы с модулем ==== * [[https://files.smartelements.ru/know_libs/nrf905.zip|Скачать (nrf905)]] ===== Примеры подключения и использования: ===== **Пример 1 (Передатчик):** В примере иллюстрируется отправка абстрактных данных (счетчик) на аналогичный модуль связи, а также попытка приема данных, если они есть и вывод данных в монитор Serial порта. (Пример тестировался на контроллере Smart UNO) ^ Что нужно ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[https://smartelements.ru/collection/svyaz/product/besprovodnoy-priemoperedatchik-nrf905|Беспроводной приемопередатчик NRF905]] | 1 | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]] | 11 | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-papa|Провода папа-папа]] | 7 | | [[https://smartelements.ru/collection/radiodetali/product/nabor-rezistorov|Резисторы 4,7 кОм]] | 6 | | [[https://smartelements.ru/collection/radiodetali/product/nabor-rezistorov|Резисторы 220 Ом]] | 6 | **Подключение:** {{ :главная:связь:nrf905_m.jpg |}} **Скетч для загрузки:** <file Arduino> #include <nRF905.h> #include <SPI.h> #define RXADDR {0xFE, 0x4C, 0xA6, 0xE5} // Адрес этого устройства (4 байта) #define TXADDR {0x58, 0x6F, 0x2E, 0x10} // Адрес устройства, которому будем отправлять (4 байта) #define TIMEOUT 1000 // 1 секунда для перерыва между соединениями void setup() { // Инициализация модуля nRF905_init(); // Уставновка адреса (идентификатора) этого устройства byte addr[] = RXADDR; nRF905_setRXAddress(addr); // Перевод в режим получения данных nRF905_receive(); //Связь с компьютером (для отладки) Serial.begin(9600); //Вывод сообщения Serial.println(F("Client started")); } void loop() { // Переменная counter - счетчик // Квалификатор static означает что переменная сохраняет значение между вызовами функции static byte counter; // Создание данных для передачи char data[NRF905_MAX_PAYLOAD] = {0}; sprintf(data, "test %hhu", counter); // Инкремент счетчика counter++; // Запомнить текущее "время" unsigned long startTime = millis(); // Установка адреса для передачи byte addr[] = TXADDR; nRF905_setTXAddress(addr); // Установка данных nRF905_setData(data, sizeof(data)); // Отправить данные (отправить сбой, если происходит другая передача данных, // продалжать попытки пока не появится удачная отправка) while(!nRF905_send()); // Перевести в режим получения данных nRF905_receive(); // Создание буфера для ответа byte buffer[NRF905_MAX_PAYLOAD]; bool success; // Дождаться ответа с задержкой между соединениями unsigned long sendStartTime = millis(); while(1) { success = nRF905_getData(buffer, sizeof(buffer)); if(success)// Получены данные break; // Задержка if(millis() - sendStartTime > TIMEOUT) break; } // Если данные успешно получены, вывести на дисплей (в терминал) if(success) { unsigned int totalTime = millis() - startTime; Serial.print(F("Ping time: ")); Serial.print(totalTime); Serial.println(F("ms")); // Вывод содержимого соединения Serial.print(F("Data from server: ")); Serial.write(buffer, sizeof(buffer)); Serial.println(); } else Serial.println(F("Ping timed out")); delay(1000); } </file> **Пример 2 (Приемник):** В примере иллюстрируется прием данных от передатчика, и отправка полученных данных как ответ об успешном получении данных. (Пример тестировался на контроллере Smart UNO) ^ Что нужно ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[https://smartelements.ru/collection/svyaz/product/besprovodnoy-priemoperedatchik-nrf905|Беспроводной приемопередатчик NRF905]] | 1 | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]] | 11 | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-papa|Провода папа-папа]] | 7 | | [[https://smartelements.ru/collection/radiodetali/product/nabor-rezistorov|Резисторы 4,7 кОм]] | 6 | | [[https://smartelements.ru/collection/radiodetali/product/nabor-rezistorov|Резисторы 220 Ом]] | 6 | **Подключение:** {{ :главная:связь:nrf905_m.jpg |}} Скетч для загрузки: <file Arduino> Приемник: #include <nRF905.h> #include <SPI.h> #define RXADDR {0x58, 0x6F, 0x2E, 0x10} // Адрес этого устройства (4 байта) #define TXADDR {0xFE, 0x4C, 0xA6, 0xE5} // Адрес устройства, которому будем отправлять (4 байта) void setup() { // Инициализация модуля nRF905_init(); // Уставновка адреса (идентификатора) этого устройства byte addr[] = RXADDR; nRF905_setRXAddress(addr); // Перевод в режим получения данных nRF905_receive(); //Связь с компьютером (для отладки) Serial.begin(9600); //Вывод сообщения Serial.println(F("Server started")); } void loop() { Serial.println(F("Waiting for ping...")); // Создание буфера для данных byte buffer[NRF905_MAX_PAYLOAD]; // Ожидание данных while(!nRF905_getData(buffer, sizeof(buffer))); //Произведено соединение Serial.println(F("Got ping")); // Установка адреса для передачи byte addr[] = TXADDR; nRF905_setTXAddress(addr); // Установить основные данные (ответ с полученными данными) nRF905_setData(buffer, sizeof(buffer)); //Сообщение об отправке ответа Serial.println(F("Sending reply...")); // Отправить данные (отправить сбой, если происходит другая передача данных, // продолжать попытки пока не появится удачная отправка) while(!nRF905_send()); // Вернуть в режим получения данных nRF905_receive(); // Сообщение об успешной отправке ответа Serial.println(F("Reply sent")); // Вывести содержание соединения Serial.print(F("Data: ")); Serial.write(buffer, sizeof(buffer)); Serial.println(); } </file>