Перейти к содержимому






Фотография
- - - - -

Радиомодуль NRF905 (ID:165)

Написано admin , 11 May 2015 · 6196 Просмотров

Радиомодуль NRF905 (ID:165) Радиомодуль NRF905 способен передать информацию со скоростью передачи до 50 Kbps на расстояние до 400 метров. Его можно использовать для беспроводной передачи информации с одной платы Arduino на другую. Плата радиомодуля имеет четырнадцати контактный разъем и отдельный разъем для подключения антенны.
Обозначение выводов :
GND - подключение к общему проводу.
VCC - подключение к выводу +3,3 Вольт.
CE - подключение к выводу 7 Arduino.
PWR - подключение к выводу 8 Arduino.
TxEN - подключение к выводу 9 Arduino.
CD - подключение к выводу 2 Arduino.
DR - подключение к выводу 3 Arduino.
CSN - подключение к выводу 10 Arduino.
MISO - подключение к выводу 12 Arduino.
MOSI - подключение к выводу 11 Arduino.
SCK - подключение к выводу 13 Arduino.
Остальные выводы использоваться не будут.


Прикрепленное изображение: nrf905_opis.JPG



После скачивания файла архива nrf905.zip, поместите содержимое архива в папку libraries, которая находится в папке с программой Arduino.
Для работы нам понадобится две платы Arduino.
Попробуем с помощью радиомодуля передать информацию с одной платы Arduino на другую.
Примерный скетч передатчика - сервера выглядит следующим образом:
/*
 * Wait for data and reply.
 *
 * 7 -> CE
 * 8 -> PWR
 * 9 -> TXE
 * 2 -> CD
 * 3 -> DR
 * 10 -> CSN
 * 12 -> SO
 * 11 -> SI
 * 13 -> SCK
 */

#include <nRF905.h>
#include <SPI.h>

#define RXADDR 0x586F2E10 // Address of this device (4 bytes / long data type)
#define TXADDR 0xFE4CA6E5 // Address of device to send to (4 bytes / long data type)

void setup()
{
  // Start up
  nRF905_init();

  // Set address of this device
  nRF905_setRXAddress(RXADDR);

  // Put into receive mode
  nRF905_receive();

  Serial.begin(9600);

  Serial.println("Server started");
}

void loop()
{
  Serial.println("Waiting for ping...");

  // Make buffer for data
  byte buffer[NRF905_MAX_PAYLOAD];

  // Wait for data
  while(!nRF905_getData(buffer, sizeof(buffer)));

  // Set address of device to send to
  nRF905_setTXAddress(TXADDR);

  // Set payload data (reply with data received)
  nRF905_setData(buffer, sizeof(buffer));

  // Send payload (send fails if other transmissions are going on, keep trying until success)
  while(!nRF905_send());

  // Put back into receive mode
  nRF905_receive();

  Serial.println("Got ping");
}
Примерный скетч приемника - клиента выглядит следующим образом:
/*
* Time how long it takes to send some data and get a reply
* Should be around 14-16ms with default settings.
*
* 7 -> CE
* 8 -> PWR
* 9 -> TXE
* 2 -> CD
* 3 -> DR
* 10 -> CSN
* 12 -> SO
* 11 -> SI
* 13 -> SCK
*/

#include <nRF905.h>
#include <SPI.h>

#define RXADDR 0xFE4CA6E5 // Address of this device (4 bytes / long data type)
#define TXADDR 0x586F2E10 // Address of device to send to (4 bytes / long data type)
#define TIMEOUT 1000 // 1 second ping timeout

// Just some random data to send
byte data[NRF905_MAX_PAYLOAD] = {
  0x0A,
  0x68,
  0x45,
  0xFA
};

void setup()
{
  // Start up
  nRF905_init();

  // Set address of this device
  nRF905_setRXAddress(RXADDR);

  // Put into receive mode
  nRF905_receive();

  Serial.begin(9600);

  Serial.println("Client started");
}

void loop()
{
  unsigned long startTime = millis();

  // Set address of device to send to
  nRF905_setTXAddress(TXADDR);

  // Set payload data
  nRF905_setData(data, sizeof(data));

  // Send payload (send fails if other transmissions are going on, keep trying until success)
  while(!nRF905_send());

  // Put into receive mode
  nRF905_receive();

  // Make buffer for reply
  byte buffer[NRF905_MAX_PAYLOAD];
  bool success;

  // Wait for reply with timeout
  unsigned long sendStartTime = millis();
  while(!(success = nRF905_getData(buffer, sizeof(buffer))) && millis() - sendStartTime < TIMEOUT);

  if(success)
  {
    unsigned int totalTime = millis() - startTime;
    Serial.print("Ping time: ");
    Serial.print(totalTime);
    Serial.println("ms");
  }
  else
    Serial.println("Ping timed out");

  delay(1000);
}
Подключаем передатчик- сервер к одной плате Arduino, относим его на некоторое расстояние.
Подключаем приемник - клиент к другой плате Arduino, включаем монитор порта и видим каждую секунду изменяющиеся цифры . Теперь можно поэкспериментировать. Проверьте, как положение антенн влияет на дальность связи, какая максимальная дальность связи.

Ссылка на витрину магазина http://dvrobot.ru/238/431.html





Trackbacks для записи [ Trackback URL ]

Для данной записи нет trackbacks.

Последние комментарии