Events

:

:

Elektronik | Funk | Software

Der Technik-Blog

  • Social Media

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden

    Der Technik-Blog

    NRF24L01 PA LNA Arduino Uno

    Arduino NRF24L01 Funkmodul

    Alex @ AEQ-WEB

    Zu diesem Artikel gibt es auch ein Video auf Youtube: Arduino NRF24L01+PA+LNA

    NRF24L01 & Arduino

    Das NRF24L01 Funkmodul ist eine Weiterentwicklung vom klassischen NRF24. Die neue Version wird auch gerne als nRF24L01+PA+LNA bezeichnet. Diese Version hat eine stärkere Endstufe und einen externen Antennenanschluss, wo Reichweiten von bis zu 1000 Metern möglich sein sollen. Das Modul wird mit in diesem Artikel mit einem Arduino Uno Board betrieben, wovon ein Modul der Sender und ein Modul der Empfänger ist. Da jedes Modul senden und empfangen kann, ist ein Datenaustausch in beide Richtungen möglich.

    Werbung:

    Das Modul am Arduino

    Das Modul verwendet die SPI-Schnittstelle für die Verbindung zum Arduino. Zusätzlich werden noch zwei weitere Pins (CSN & CE) benötigt. Das Modul benötigt keine zusätzliche Stromversorgung, jedoch muss es an den 3,3 Volt Pin angeschlossen werden. Das Modul darf nicht mit 5 Volt betrieben werden! Die Datenleitungen können ohne Spannungsreduzierung direkt an das Modul angeschlossen werden.

    Software

    Der Sender und der Empfänger haben jeweils eine eigene Software. Die Konfiguration und Pinbelegung ist jedoch an beiden Seiten gleich. Der Parameter, der übertragen wird, kann als String gesendet werden und wird auch auf der Empfängerseite als String ausgegeben. Mit einer entsprechenden Software Erweiterung kann der String geteilt werden, wodurch es leicht möglich ist, mit einer Sendung mehrere Parameter auszutauschen. Der Beispielcode ist sehr vereinfacht und zeigt hier die minimalen Einstellungen für einen Datenaustausch. Zusätzlich wird auch noch die NRF24 Library benötigt.

    Code für den Sender
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    
    const byte rxAddr[6] = "00001"; //TX adress (Same as on RX)
    int counter = 0; //Count TX (Only for demo example)
    RF24 radio(8, 9); //Define Radio (CE-PIN,CSN-PIN)
    
    void setup() {
    Serial.begin(9600);
    radio.begin();
    radio.setPALevel(RF24_PA_MAX); // Transmit Power (MAX,HIGH,LOW,MIN)
    radio.setDataRate( RF24_250KBPS ); //Transmit Speeed (250 Kbits)
    radio.setRetries(15, 15);
    radio.openWritingPipe(rxAddr);
    // Disable Receiver
    radio.stopListening();
    }
    
    
    void loop() {
    counter++;
    String str = "Send Counter: "; 
    str += String(counter);
    int str_len = str.length() + 1; 
    char char_array[str_len];
    str.toCharArray(char_array, str_len);
    radio.write(&char_array, sizeof(char_array));
    Serial.print("Actual Transmission: ");
    Serial.println( char_array );
    delay(250);
    }

    Code für den Empfänger

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

    RF24 radio(8, 9); //Define radio (CE-PIN,CSN-PIN)
    const byte rxAddr[6] = "00001"; //RX adress (Same as on TX)
    String received_data;

    void setup()
    {
    // Start the serial
    Serial.begin(9600);
    Serial.println("NRF24 Receiver");
    radio.begin();
    radio.setPALevel(RF24_PA_LOW); // Transmit Power (MAX,HIGH,LOW,MIN)
    radio.setDataRate( RF24_250KBPS ); //Transmit Speeed (250 Kbits)
    radio.openReadingPipe(0, rxAddr);
    radio.startListening();

    }

    void loop()
    {
    if (radio.available())
    {
    char text[100] = {0}; //Buffer
    radio.read(&text, sizeof(text));
    received_data = String(text);
    Serial.println(received_data);
    delay(20);
    }
    }


    Werbung:

    Reichweite

    Da die Module sehr leistungsstrak sind, soll eine Datenübertragung von mehreren Hundert Metern möglich sein. Dazu werden wir mit den Modulen noch einen Reichweitentest machen. In unseren ersten Test haben wir eine saubere Datenübertragung auf einer Entfernung von 130 Metern (freie Sicht) bereits geschafft.


    122X122

    Über den Autor

    Alex, der Gründer von AEQ-WEB. Seit über 10 Jahren beschäftigt er sich mit Computern und elektronischen Bauteilen aller Art. Neben den Hardware-Projekten entwickelt er auch Webseiten, Apps und Software für Computer.

    Top Artikel in dieser Kategorie:

    Arduino LM358 PT1000 Sensor Converter

    Temperatur messen mit PT1000 & Arduino

    • Video
    • DE/EN

    PT1000 Sensoren können nicht direkt analog mit einem Mikrocontroller gemessen werden. Wie baut man einen Messwandler mit dem LM358 für den PT1000 und Arduino?

    Weiterlesen
    Arduino PT100 Temperature Sensor Converter

    PT100 Temperatur messen mit Arduino

    • Video
    • DE/EN

    Der PT100 ist ein sehr präziser industrieller Temperatursensor. In diesem Artikel geht es um den Bau eines Messverstärkers zum Einlesen eines PT100 am Arduino

    Weiterlesen

    Social Media

    Werbung:


    Neue Artikel


    Events

    • Keine zukünftigen Events vorhanden