Радиомодуль 2.4 ГГц

ID#19
Радиомодуль 2.4 ГГц ID#19
255 c

Категории: Модули

Модель: NRF24l01
Напряжение: 3.3V
Частота: 2.4GHz
Расстояние: 100м на скорости 250кбит/с
Скорость: от 250кбит до 2Мбит
Что можно сделать?
- Управлять роботом, машинкой, сервами и моторами с помощью пульта управления (без компьютера).
- Возможна телеметрия. Сбор данных с удаленных объектов: температура, влажность, данные счетчиков и многое другое.
- Двусторонняя связь между модулями - можно не только принимать данные, но и отправлять команды.


Схема подключения


Рассмотрим скетчи на примере передачи данных от Ультразвукового дальномера (Как подключить Ультразвуковой дальномер HC-SR04 к Arduino UNO) к Компьютеру.

Что понадобится?
1. Две платы Arduino UNO (можно использовать любые другие платы Arduino)

Описание
Один модуль подключенный к плате Arduino UNO (схема выше) будет подключен к компьютеру, другой же, после заливки скетча может быть отключен от компьютера и запитан от батареи.
Скетчи
Передатчик
/*
Передатчик
http://geek.kg/nrf24l01/
*/
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#include "Ultrasonic.h"
#define MAX_BUFF 32
Ultrasonic ultrasonic(4,3); //Trig - 4, Echo - 3
void setup(){
  Serial.begin(9600);
  
  Mirf.cePin = 7;
  Mirf.csnPin = 8;
  
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
   
  Mirf.setRADDR((byte *)"app1");
  Mirf.payload = sizeof(unsigned int);
  // Mirf.channel = 10;
  Mirf.config();
  
  Serial.println("Beginning ... "); 
}
void loop(){
  unsigned int range;
  //отправка данных
  Mirf.setTADDR((byte *)"app2");
  range = ultrasonic.Ranging(CM);
  Mirf.send((uint8_t *)&range);
  while(Mirf.isSending()){
  }
  Serial.println(range);
  delay(100);
}

Приемник
/*
Приемник
http://geek.kg/nrf24l01/
*/
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define MAX_BUFF 32
void setup(){
  Serial.begin(9600);
  Mirf.cePin = 7;
  Mirf.csnPin = 8;
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
   
  Mirf.setRADDR((byte *)"app2");
  Mirf.payload = sizeof(unsigned int);
  // Mirf.channel = 10;   
  Mirf.config();
  
  Serial.println("Beginning ... "); 
}
uint8_t buff[4];
int c_count = 0;
void loop(){
  int i;
  //прием данных  
  while(!Mirf.dataReady()) {
  }  
  Mirf.getData(buff);
  Serial.println((unsigned int)*buff);
  delay(100);
}