Radio Comando 2,4 gHz

In questo articolo spiego come creare un radiocomando a 2,4 gHz da utilizzare con una radioricevente che verrà illustrata in un'altro articolo.

Per il progetto e stato utilizzata l'Arduino Pro Mini 328 (3.3V/8MHz)

e la scheda nRF24L01+Module (Modulo radio TX/RX) con la libreria RF24

come stick si possono utilizzare dei Mini Joystick o il vecchio telecomando di un giocattolo

 Schema elettrico

 Sketch Arduino :


#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#define JOYSTICK_CH1 A0
#define JOYSTICK_CH2 A1
#define JOYSTICK_CH3 A2
#define JOYSTICK_CH4 A3
#define JOYSTICK_CH5 A4
#define JOYSTICK_CH6 A5
#define JOYSTICK_CH7 A6
#define JOYSTICK_CH8 A7

#define OUTPUT_1 2
#define OUTPUT_2 3
#define OUTPUT_3 4
#define OUTPUT_4 5
#define OUTPUT_5 6
#define OUTPUT_6 7
#define OUTPUT_7 8

#define CSN_PIN  9
#define CE_PIN   10

const uint64_t pipe = 0xE8E8F0F0E1LL; 

RF24 radio(CE_PIN, CSN_PIN); 

byte joystick[8];  

void setup() {

  pinMode(OUTPUT_1, OUTPUT);
  pinMode(OUTPUT_2, OUTPUT);
  pinMode(OUTPUT_3, OUTPUT);
  pinMode(OUTPUT_4, OUTPUT);
  pinMode(OUTPUT_5, OUTPUT);
  pinMode(OUTPUT_6, OUTPUT);
  pinMode(OUTPUT_7, OUTPUT);
  
  digitalWrite(OUTPUT_1, LOW);
  digitalWrite(OUTPUT_2, LOW);
  digitalWrite(OUTPUT_3, LOW);
  digitalWrite(OUTPUT_4, LOW);
  digitalWrite(OUTPUT_5, LOW);
  digitalWrite(OUTPUT_6, LOW);
  digitalWrite(OUTPUT_7, HIGH);

  radio.begin();
  radio.setPayloadSize(sizeof(joystick));
  radio.openWritingPipe(pipe);

}

void loop() {

  joystick[0] = (byte)map(analogRead(JOYSTICK_CH1), 0, 1023, 0, 255);
  joystick[1] = (byte)map(analogRead(JOYSTICK_CH2), 0, 1023, 0, 255);
  joystick[2] = (byte)map(analogRead(JOYSTICK_CH3), 0, 1023, 0, 255);  
  joystick[3] = (byte)map(analogRead(JOYSTICK_CH4), 0, 1023, 0, 255);
  joystick[4] = (byte)map(analogRead(JOYSTICK_CH5), 0, 1023, 0, 255);
  joystick[5] = (byte)map(analogRead(JOYSTICK_CH6), 0, 1023, 0, 255);
  joystick[6] = (byte)map(analogRead(JOYSTICK_CH7), 0, 1023, 0, 255);
  joystick[7] = (byte)map(analogRead(JOYSTICK_CH8), 0, 1023, 0, 255);  

  if (radio.write(joystick, sizeof(joystick))) {
    digitalWrite(OUTPUT_7, HIGH);
  } 
  else {
    digitalWrite(OUTPUT_7, LOW);
  }

}

Galleria Immagini

comando_bb.jpg comando_stickjpg.jpg rc001.jpg

rc002.jpg rc003.jpg rc004.jpg

rc005.jpg