Go Down

Topic: NRF24L01 ans laufen bringen (Read 205 times) previous topic - next topic

jens_mega

Hallo, ich versuche die NRF24l01+ Module ans Laufen zu bringen. Ich verwende 2 Arduino Nanos. Ich bin nach der Seite hier ->https://schullebernd.de/arduino_und_nrf24l01_verbinden/   vorgegangen.

Die NRF24l01 liegen wenige cm entfernt, aber irgendwie bekomme ich keine Verbindung.

Ich hab jetzt den Ganzen Aufbau noch mal mit dem Multimeter durch gemessen, scheint alles OK zu sein.

Die NRFs haben extra eine kleine Spannungsversorgung mit 3,3Volt.

Ich hab jetzt schon das 3. Paar durch probiert aber ohne Glück.

Hat jemand eine Idee?

Gibt es ein Script das alein die Kabel Verbindung prüfen kann?
etwa das man nur den Status des Moduls abruft?

HotSystems

Was genau verstehst du unter "extra kleine Spannungsversorgung" ?

Wenn der Strom nicht ausreichend ist, funktionieren die nicht.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

combie

Kein Code kein Schaltplan!
Also: Habe ich "ohne" Chance!
Heute war Gestern Morgen.
Heute ist Morgen Gestern.
Morgen ist Heute Gestern.
Gestern war Heute Morgen

jens_mega

#3
Sep 23, 2020, 09:24 pm Last Edit: Sep 23, 2020, 09:43 pm by jens_mega
MCP1700 3,3 Volt (250mA LPO Regler) und zwei 10uF Kondensatoren davor und dahinter.

Vieleicht sollte ich die gegen einen HT7333 tauschen (auch 250mA Regler, PIN kompatibel), kommen noch aus der Bucht.
Die MCP1700 hatten damals mit dem ESP8266 nicht funktioniert, die HT7333 schon, aber keine mehr da.

Als Script verwende ich Arduino->Beispiele->RF24->GettingStarted von der Library

einzig "RF24 radio(9,10);" geändert, sonst wie im Beispiel Code
auf dem 2. Nano das Gleiche mit "bool radioNumber = 1;"

Die Platine mit dem Nano und RF24 hab ich 2x, 1x mit DS18B20 und 1x ohne
Schaltbild der angefertigten Platine:
(die Kondensatoren sind Throuhole bzw. SMD, deshalb je zwei Footprints, je nach dem was ich gerade aus der Beastelkiste greife ;-)






HotSystems

Und wie versorgst du deinen Nano mit Spannung ?
Bitte auch deinen Sketch (nicht Script) hier in Code-Tags posten.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

jens_mega

#5
Sep 24, 2020, 09:24 am Last Edit: Sep 24, 2020, 09:25 am by jens_mega
Per USB Kabel aus dem USB3.0 Port , darüber auch Serial

jens_mega

#6
Sep 24, 2020, 09:05 pm Last Edit: Sep 24, 2020, 09:07 pm by jens_mega
Also, ich hab jetzt die MCP1700 alle in die Tonne gehauen!!!

Mit dem HT7333 Spannungsregler geht es plötzlich alles!

Hier mein Code:

Code: [Select]

#include <SPI.h> 
#include "RF24.h"
#include <OneWire.h>
#include <DallasTemperature.h>

OneWire oneWire(A5);
DallasTemperature sensors(&oneWire);
RF24 myRadio (9,10);
byte addresses[][6] = {"0"};

//struct package
//{
//  int id=1;
//  float temperature = 18.3;
//  char  text[100] = "Text to be transmitted";
//};


typedef struct package Package;
Package data;


void setup()
{
  Serial.begin(115200);
  delay(1000);
  myRadio.begin(); 
  myRadio.setChannel(10);
  myRadio.setPALevel(RF24_PA_LOW);
  myRadio.setDataRate( RF24_250KBPS ) ;
  myRadio.openWritingPipe( addresses[0]);
  sensors.begin();
  delay(1000);
 
}

void loop()
{
  sensors.requestTemperatures();
     float tempC = sensors.getTempCByIndex(0);
     
    if(  tempC != DEVICE_DISCONNECTED_C)
  {
    Serial.print("Temperature is: ");
    Serial.println(tempC);
     myRadio.write(&tempC, sizeof(tempC));
  }
  else
  {
    Serial.println("Error: Could not read temperature data");
  }
 
  delay(1000);

}


und der Empfänger:

Code: [Select]

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

RF24 myRadio (9,10);
struct package
{
  int id=0;
  float temperature = 0.0;
  char  text[100] ="empty";
};

byte addresses[][6] = {"0"};
float tempC;


typedef struct package Package;
Package data;

void setup()
{
  Serial.begin(115200);
  delay(1000);

  myRadio.begin();
  myRadio.setChannel(10);
  myRadio.setPALevel(RF24_PA_MAX);
  myRadio.setDataRate( RF24_250KBPS ) ;
  myRadio.openReadingPipe(1, addresses[0]);
  myRadio.startListening();
}


void loop() 
{

  if ( myRadio.available())
   {
    while (myRadio.available())
    {
      myRadio.read( &tempC, sizeof(tempC) );
    }
   // Serial.print("\nPackage:");
   // Serial.print(data.id);
   // Serial.print("\n");
    Serial.println(tempC);
    //Serial.println(data.text);
   }

}


Hier abgekupfert:

https://randomnerdtutorials.com/nrf24l01-2-4ghz-rf-transceiver-module-with-arduino/

HotSystems

Gut, dass es jetzt funktioniert und danke für die Rückmeldung.
Warum fliegen die Regler weg. Ich vermute mal, die funktionieren bei dir nicht richtig, weil du dich nicht an die Spezifikationen im Datenblatt gehalten hast. Oder du hast den falsch angeschlossen, es gibt unterschiedliche Gehäuseformen die auch anders beschaltet sind.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

jens_mega

#8
Sep 25, 2020, 10:44 am Last Edit: Sep 25, 2020, 11:16 am by jens_mega
Die MCP1700 sind für 3,3Volt 250mA ausgelegt, die HT7333 auch.

Beide sind Pin kompatibel, also GND, In und Out.

Nur das die MCP1700 bei 251mA zusammen brechen und die HT7333 Strom Peaks über 250mA gut verkraften.
Der MCP bräuchte wohl riesige Kondensatoren um das zu schaffen...

Die Gesamtverlustleistung beim kleinen TO92 Gehäuse liegt gleich.
Der MCP1700 geht bei über 6V In kaputt, also max 5,5Volt in. Der HT7333 darf bis zu 12 Volt in.

Die minimale Dropspannung bei beiden ist sehr sehr klein.

Die MCP1700 waren ein Fehlkauf, der HT7333 ist nicht teuer.

Wenn man den nRF24L01 als reinen Empfänger nutz geht der MCP1700 vieleicht noch,
Als Sender nur mit Power minimal und Kanal 1

Mit dem HT7333 an gleicher Stelle eingelötet gibt es keine Probleme.


Ich seh keinen Grund mich länger mit dem MCP1700 herum zu ärgern....

Hab jetzt gesehen, es gibt auch HT7833, die sind für 500mA ausgelegt, hab mir mal ein Sample bestellt.

Mir fällt kein Fall ein, wo ich unbedingt einen MCP1700 statt HT7333 haben müsste,
der HT7333 von Holtek ersetzt den MCP von Microchip vollkommen

HotSystems

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)


jens_mega

#11
Sep 26, 2020, 11:46 am Last Edit: Sep 26, 2020, 11:47 am by jens_mega
Mitlerweile hat mein Empfänger ein kleines OLED Display bekommen und zeigt die Werte des Senders an.
Der Empfänger hat ja kein DS18B20.
Der Pin A5 für den Temparatursensor war unglücklich, da auf A4 + A5 I2C liegen.

Es ging mir hautsächlich darum die vielen Kabel zum nRF24L01 durch feste Leiterbahnen auf einer Platine zu ersetzten. Dank JLCPCB kosten ein paar Platinen ja kaum etwas.

Jetzt kann ich an beide Batterien anklemmen und Reichweiten test machen.
Der Sender braucht gemessen 2-3mA bei 3V (2xAA)

Vielleicht hol ich die TX/RX Led noch von dem PCB


Go Up