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

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

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

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


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


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

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

Описание
Один модуль подключенный к плате Arduino UNO (схема выше) будет подключен к компьютеру, другой же, после заливки скетча может быть отключен от компьютера и запитан от батареи.
Скетчи
Передатчик
/*
Передатчик
*/
#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);
}

Приемник
/*
Приемник
*/
#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);
}