Stap 3: Het gebruik van de 2.4GHz-modules?:
Ik gebruik twee nRF24L01 2,4 GHz Radio/Wireless Transceivers te communiceren de twee arduinos. Het bereik van deze modules zijn 50 voeten tot 2000 voet afstanden. Deze 2,4 GHz Radio modules zijn gebaseerd op de Nordic Semiconductor nRF24L01 + chip. De Noordse nRF24L01 + integreert een volledige 2,4 GHz RF transceiver, RF synthesizer en baseband logica met inbegrip van de Enhanced ShockBurst protocol hardwareversneller een high-speed SPI-interface volledig ondersteunt. Deze korte afstand modude van loeien-vermogen hebben een ingebouwde antenne.
Deze transcevers gebruiken de band 2.4 GHz zonder vergunning als veel WiFi routers, sommige draadloze telefoons enz. Deze module gegevens verzenden en ontvangen in 'pakketten' van meerdere bytes per keer. Er is ingebouwde foutcorrectie en opnieuw te verzenden, en het is mogelijk om één eenheid communiceren met maximaal 6 andere soortgelijke eenheden op hetzelfde moment. De pinout zoals weergegeven in diagram tha kunt u zien in de foto's en een tabel met de coneections voor verschillende modellen van arduinos.
* BELANGRIJK *: deze modules VCC verbinding moet naar 3,3 v niet 5.0V
Ik zal tonen een voorbeeld van zenden en ontvangen van de software onder voor een joystick:
Transmiter:
<p>/* <br>- WHAT IT DOES: Reads Analog values on A0, A1 and transmits them over a nRF24L01 Radio Link to another transceiver. 1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE to Arduino pin 9 4 - CSN to Arduino pin 10 5 - SCK to Arduino pin 13 6 - MOSI to Arduino pin 11 7 - MISO to Arduino pin 12 8 - UNUSED - Analog Joystick: GND to Arduino GND VCC to Arduino +5V X Pot to Arduino A0 Y Pot to Arduino A1 */ /*-----( Import needed libraries )-----*/</p><p>#include <SPI.h><br>#include <nRF24L01.h></p><p>#include <RF24.h></p><p>/*-----( Declare Constants and Pin Numbers )-----*/<br>#define CE_PIN 9 #define CSN_PIN 10 #define JOYSTICK_X A0 #define JOYSTICK_Y A1</p><p>// NOTE: the "LL" at the end of the constant is "LongLong" type const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe</p><p>/*-----( Declare objects )-----*/ RF24 radio(CE_PIN, CSN_PIN); // Create a Radio /*-----( Declare Variables )-----*/ int joystick[2]; // 2 element array holding Joystick readings</p><p>void setup() /****** SETUP: RUNS ONCE ******/ { Serial.begin(9600); radio.begin(); radio.openWritingPipe(pipe); }//--(end setup )--- void loop() /****** LOOP: RUNS CONSTANTLY ******/ { joystick[0] = analogRead(JOYSTICK_X); joystick[1] = analogRead(JOYSTICK_Y); radio.write( joystick, sizeof(joystick) ); }//--(end main loop )--</p>
Ontvanger:
<p>/*<br>- WHAT IT DOES: Receives data from another transceiver with 2 Analog values from a Joystick Displays received values on Serial Monitor 1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE to Arduino pin 9 4 - CSN to Arduino pin 10 5 - SCK to Arduino pin 13 6 - MOSI to Arduino pin 11 7 - MISO to Arduino pin 12 8 - UNUSED</p><p>/*-----( Import needed libraries )-----*/</p><p>#include <SPI.h></p><p>#include <nRF24L01.h></p><p>#include <RF24.h></p><p>/*-----( Declare Constants and Pin Numbers )-----*/<br>#define CE_PIN 9 #define CSN_PIN 10</p><p>// NOTE: the "LL" at the end of the constant is "LongLong" type const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe</p><p>/*-----( Declare objects )-----*/ RF24 radio(CE_PIN, CSN_PIN); // Create a Radio</p><p>/*-----( Declare Variables )-----*/ int joystick[2]; // 2 element array holding Joystick readings</p><p>void setup() /****** SETUP: RUNS ONCE ******/ { Serial.begin(9600); delay(1000); Serial.println("Nrf24L01 Receiver Starting"); radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening();; }//--(end setup )---</p><p>void loop() /****** LOOP: RUNS CONSTANTLY ******/ { if ( radio.available() ) { // Read the data payload until we've received everything bool done = false; while (!done) { // Fetch the data payload done = radio.read( joystick, sizeof(joystick) ); Serial.print("X = "); Serial.print(joystick[0]); Serial.print(" Y = "); Serial.println(joystick[1]); } } else { Serial.println("No radio available"); } }//--(end main loop )---</p>