PHP Dashboard für HmIP Smartmeter
09.10.2024
Elektronik | Funk | Software
Der Technik-Blog
Zu diesem Artikel gibt es auch ein Video auf Youtube: Arduino NRF24L01+PA+LNA
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.
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.
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.
#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); }
#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);
}
}
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.
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?
WeiterlesenDer 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
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved