Skocz do zawartości

Niedziałający moduł NRF24l01+ po zwiększeniu wzmocnienia


Pomocna odpowiedź

Napisano

Kupiłem dwa moduły  nRF24L01 + (te z antenką) wgrałem jakiś prosty kod i na ustawieniu radio.setPALevel(RF24_PA_MIN) wszystko śmiga, lecz zasięg jest lekko mówiąc słaby, więc zamiast MIN dałem najpierw MAX i przestało działać. Próbowałem też dawać LOW i HIGH ale to samo lipa. Jedyne na jakim poziomie wzmocnienia działa to MIN.

Między 3.3V i GND dałem kondensator 10uF , a moduły po zwiększeniu mocy wzmacniacza oddaliłem o jakieś 10m ( większe odległości też nie działają , tak samo jak moduły są obok siebie). Ktoś ma jakiś pomysł?

 

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

struct SensorData {
  float temperature;
  float pressure;
  float light;
};

RF24 radio(9, 10); // CE, CSN

const byte address[6] = "12345";

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.setPALevel(RF24_PA_MAX);
  radio.openReadingPipe(0, address);
  radio.startListening();
}

void loop() {
  if (radio.available()) {
    SensorData receivedData;
    radio.read(&receivedData, sizeof(SensorData));

    Serial.print("Temperatura: ");
    Serial.print(receivedData.temperature);
    Serial.print(" *C, Ciśnienie: ");
    Serial.print(receivedData.pressure);
    Serial.print(" Pa");
    Serial.print(" Swiatlo: ");
    Serial.println(receivedData.light);
  }
}
//NADAJNIK
#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

struct SensorData {
  float temperature;
  float pressure;
  float light;
};

Adafruit_BMP085 bmp;
RF24 radio(9, 10); // CE, CSN

const byte address[6] = "12345";

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.setPALevel(RF24_PA_MAX);
  radio.openWritingPipe(address);
  radio.stopListening();
  if (!bmp.begin()) {
    Serial.println("Nie odnaleziono czujnika BMP085 / BMP180");
    while (1) {}
  }
}

void loop() {
  float lightval = analogRead(A3);
  SensorData data;
  data.temperature = bmp.readTemperature();
  data.pressure = bmp.readPressure();
  float lightmap = map(lightval, 0,20,0,1023);
  data.light = lightmap;

  radio.write(&data, sizeof(SensorData));

  delay(1000);
}

image.thumb.png.35a38c9b68db760e221f9ca9d6771a55.png

(edytowany)
51 minut temu, Lolheadshootpl napisał:

Może zaszkodzić jeżeli zasila się jeden z nrf'ów z pinu arduino i tak właśnie spaliłem dosyć że regulator 3.3v na arduino to nrfa ... 

 

No to tyle się tłucze w kółko że nrf'a trzeba zasilać z czegoś dobrego a nie z pinów Arduino...Uno co prawda chodziło u mnie z pinu 3.3v ale tylko z kondensatorem 1000uF...bez kondensatora nie odpalał...trochę nie chce mi się wierzyć że to akurat kondensator Ci spalił stabilizator...co prawda jakiś tam prąd "udarowy" jest jak się kondensator zaczyna ładować, no ale nie pali przy tym elektroniki, bo to tylko ułamek sekundy...

A już że spaliło Ci nrf'a przez "za duży" kondensator to już w ogóle nie chce mi się wierzyć...😉 Obstawiam że poszło jakieś zwarcie którego mogłeś nie zauważyć...😕

Edytowano przez farmaceuta

Elektrolit tam nie wystarczy choćby nie wiem jaki. Ja wlutowuję 100nF bezpośrednio do pinów nrf-a na module (idealnie pasuje jakiś 0805). Bez tego z reguły nie ma zamiaru działać... poza tym wolę tam dać oddzielny stabilizator (chociaż w testach działał z Uno i Nano).

A teoretycznie można coś sfajczyć takim elektrolitem. Za duży prąd na stabilizatorze, stabilizator dostaje zwarcia i daje z siebie 5V, 5V zabija nrf-a... no ale to takie teoretyczne rozważania, raczej wątpię aby coś takiego się stało.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...