Вай фай передатчик

Беспроводной приемопередатчик NRF905

Пример 1 (Передатчик): В примере иллюстрируется отправка абстрактных данных (счетчик) на аналогичный модуль связи, а также попытка приема данных, если они есть и вывод данных в монитор Serial порта. (Пример тестировался на контроллере Smart UNO)

Что нужно Кол-во, шт
Контроллер Smart UNO 1
Беспроводной приемопередатчик NRF905 1
Провода папа-мама 11
Провода папа-папа 7
Резисторы 4,7 кОм 6
Резисторы 220 Ом 6

Подключение:

Скетч для загрузки:

#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 = {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; 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); }

Пример 2 (Приемник): В примере иллюстрируется прием данных от передатчика, и отправка полученных данных как ответ об успешном получении данных. (Пример тестировался на контроллере Smart UNO)

Что нужно Кол-во, шт
Контроллер Smart UNO 1
Беспроводной приемопередатчик NRF905 1
Провода папа-мама 11
Провода папа-папа 7
Резисторы 4,7 кОм 6
Резисторы 220 Ом 6

Подключение:

Скетч для загрузки:

Приемник: #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; // Ожидание данных 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(); }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *