DIY handgjorda Hexapod med arduino (Hexdrake) (15 / 19 steg)
Steg 15: Hur du använder 2,4 GHz moduler?:
Jag använder två nRF24L01 2.4GHz Radio trådlösa sändare för att kommunicera de två arduinos. Spänna av denna moduler är 50 fot till 2000 fot avstånd. Dessa 2,4 GHz radiomoduler är baserade på Nordic Semiconductor nRF24L01 + chip. Den nordiska nRF24L01 + integrerar en komplett 2.4GHz RF transceiver, RF synthesizer och baseband logik inklusive den förbättrade ShockBurst protokoll maskinvaruaccelerator stödja ett höghastighetståg SPI gränssnitt. Dessa låg effekt korta avstånd modude har en inbyggd antenn.
Dessa transcevers använder 2,4 GHz olicensierade bandet som många WiFi routrar, vissa sladdlösa telefoner etc. Dessa modul skicka och ta emot data i "paket" av flera byte i taget. Det finns inbyggd felkorrigering och sänder igen, och det är möjligt att ha en enhet som kommunicerar med upp till 6 andra liknande enheter på samma gång. Ordningen på pinout som visas i diagrammet tha kan du se i bilderna och en tabell med coneections till olika modeller av arduinos.
* VIKTIGT *: dessa moduler VCC anslutning måste gå till 3.3V inte 5.0V
Jag kommer att visa ett exempel av sändnings och få programvara nedan för styrspak:
Transmiter:
< p > / * < br >-vad det gör: läser analoga värden på A0, A1 och överför
dem över en nRF24L01 radiolänk till en annan sändtagare.
1 - GND
2 - VCC 3.3V!!! INTE 5V
3 - CE till Arduino pin 9
4 - CSN till Arduino stift 10
5 - SCK till Arduino stift 13
6 - MOSI till Arduino stift 11
7 - MISO till Arduino stift 12
8 - OANVÄNDA
-Analog styrspak: < /p >< p > GND till Arduino GND < br > VCC till Arduino + 5V
X-potten till Arduino A0
Y potten till Arduino A1
*/
/ *---(Import behövs bibliotek)---* /
#include < SPI.h >< /p >< p > < nRF24L01.h >< /p >< p > #include #include < RF24.h >< /p >< p > / *---(deklarera konstanter och Pin-koder)---* / < br > #define CE_PIN 9
#define CSN_PIN 10
#define JOYSTICK_X A0
#define JOYSTICK_Y A1 < /p >< p >
Obs: "LL" i slutet av konstanten är "LongLong" typ
CONST uint64_t pipe = 0xE8E8F0F0E1LL; Definiera sändnings röret
< br >< /p >< p > / *---(deklarera objekt)---* /
RF24 radio (CE_PIN, CSN_PIN); Skapa en Radio
/ *---(Deklarera variabler)---* /
int joystick [2]. matris med 2 element håller Joystick avläsningar < /p >< p >
void setup() / *** SETUP: kör en gång *** /
{
Serial.BEGIN(9600);
radio.BEGIN();
radio.openWritingPipe(pipe);
} //--(end setup)---
void loop() / *** LOOP: kör ständigt *** /
{
joystick [0] = analogRead(JOYSTICK_X);
joystick [1] = analogRead(JOYSTICK_Y);
radio.write (joystick, sizeof(joystick));
} //--(end huvudloop)--< /p >
Mottagare:
< p > / * < br >-vad det gör: tar emot data från en annan sändtagare med
2 analoga värden från en Joystick
Visar fått värden på Serial Monitor
1 - GND
2 - VCC 3.3V!!! INTE 5V
3 - CE till Arduino pin 9
4 - CSN till Arduino stift 10
5 - SCK till Arduino stift 13
6 - MOSI till Arduino stift 11
7 - MISO till Arduino stift 12
8 - oanvända < /p >< p >
/ *---(Import behövs bibliotek)---* /
#include < SPI.h >< /p >< p > < nRF24L01.h >< /p >< p > #include #include < RF24.h >< /p >< p > / *---(deklarera konstanter och Pin-koder)---* / < br > #define CE_PIN 9
#define CSN_PIN 10 < /p >< p >
Obs: "LL" i slutet av konstanten är "LongLong" typ
CONST uint64_t pipe = 0xE8E8F0F0E1LL; Definiera sändnings röret < /p >< p >
/ *---(Deklarera objekt)---* /
RF24 radio (CE_PIN, CSN_PIN); Skapa en Radio < /p >< p >
/ *---(Deklarera variabler)---* /
int joystick [2]. matris med 2 element håller Joystick avläsningar < /p >< p >
void setup() / *** SETUP: kör en gång *** /
{
Serial.BEGIN(9600);
Delay(1000);
Serial.println ("Nrf24L01 mottagare start");
radio.BEGIN();
radio.openReadingPipe(1,pipe);
radio.startListening();
} //--(end setup)---< /p >< p >
void loop() / *** LOOP: kör ständigt *** /
{
om (radio.available())
{/ / Läs datanyttolasten tills vi har fått allt
bool = false;
medan (! gjort)
{/ / Hämta datanyttolasten
klart = radio.read (joystick, sizeof(joystick));
Serial.Print ("X =");
Serial.Print(joystick[0]);
Serial.Print ("Y =");
Serial.println(joystick[1]);
}
}
annat < /p >< p > {< /p >< p > Serial.println ("ingen radio tillgängliga");
}
} //--(end huvudloop)---< /p >