Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Watchdog
2020-01-20 21:11:43
Alexander пише:

... Может подкинете ещё какие-нибудь идеи?

Купите хорошую батарейку. smile

Alexander
2020-01-20 19:57:57

Тоже схожая проблема! Кондеры припаял и всё заработало. Однако обнаружилась другая проблема... Система работает как радиоуправление самолётом, одна ардуинка стоит в самом самолёте и питается от регулятора оборотов безколлекторного двигателя и с ней проблем нет, а вот другая стоит в пульте и питается от кроны, она тоже работала нормально, но вот я решил заменить уже изрядно подсевшую батарейку на новую и обнаружил, что радиомодуль с ней не запускается... От подсевшей или от usb полет нормальный а с новой нет. Замер напряжения показал, что при напряжении питания Ардуино Уно выше 8 Вольт радиомодуль не запускается, хотя на самом модуле ровно 3.3 Вольта (модуль подключен через переходник, который питается от 5 Вольт и имеет на борту стабилизатор на 3.3 Вольта). Запускается радиомодуль при напряжении питания самого модуля 3.2 - 3.27 Вольта. Смена номиналов конденсаторов результата не дало, замена модулей местами тоже... Может подкинете ещё какие-нибудь идеи?

Nefreemen
2016-07-20 00:15:06

Посмотрите. Может поможет. Я долго ковырялся. Туеву кучу примеров перепробовал. У меня задача была передать данные датчика DHT22 из подвала. Оказалось жилище чукчи фигвам называется  lol (проблема с сигналом).

сенсор:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <stdint.h>
#include <DHT.h>
#include <Wire.h>

#define DHTPIN_out 3   
#define DHTPIN_base 4   o
#define DHTTYPE DHT22   // DHT 22  (AM2302)

DHT dht_out(DHTPIN_out, DHTTYPE);
DHT dht_base(DHTPIN_base, DHTTYPE);


const uint64_t readingPipe = 0xE8E8F0F0ABLL;
//const uint64_t writingPipe = 0xE8E8F0F0ACLL;
RF24 radio(9, 10); // Для Pro mini
//RF24 radio(48,53);// Для Меги

struct MESSAGE {
  float h_out;
  float t_out;
  float h_base;
  float t_base;
};
struct MESSAGE message;
int n = 0;

void setup() {

  pinMode(2, OUTPUT);
    digitalWrite(2, LOW);
    SPI.begin();
    Serial.begin(9600);

    /*************************                Модуль NRF24                **********************/
    delay(2000);                            // Пусть зарядится конденсатор
    radio.begin();                          // Включение модуля;
    radio.setChannel(03);                   // Установка канала вещания;
    radio.setRetries(15,15);                // Установка интервала и количества попыток "дозвона" до приемника;
    radio.setDataRate(RF24_250KBPS);        // Установка минимальной скорости;
    radio.setPALevel(RF24_PA_MAX);          // Установка максимальной мощности;
    radio.enableAckPayload();               // Включение буфера автоответа
    radio.setAutoAck(1);                    // Установка режима подтверждения приема;
    //radio.openWritingPipe(writingPipe);     // Активация данных для отправки
    radio.openReadingPipe(1,readingPipe);   // Активация данных для чтения
    radio.startListening();                 // Слушаем эфир.
}
void loop() {
int dataIn;
//digitalWrite(2, LOW);
delay(1000);
Serial.println(n);
n = ++n;
if (n >= 30) {
  n = 11;
}
message.h_out = dht_out.readHumidity();
message.t_out = dht_out.readTemperature();
message.h_base = dht_base.readHumidity();
message.t_base = dht_base.readTemperature();

Serial.print(message.h_out,2);
Serial.print("  ");
Serial.println(message.t_out,2);
Serial.print(message.h_base,2);
Serial.print("  ");
Serial.println(message.t_base,2);

//Serial.println(h_out,2);

radio.writeAckPayload( 1,&message, sizeof(message));

if (radio.available())
  { bool done =false;
  while (!done){
      done = radio.read(&dataIn, sizeof(dataIn));
      Serial.println(dataIn);
      if (dataIn == 555){
        digitalWrite(2, HIGH);
        n = 0;
        }
      else {
        digitalWrite(2, LOW);
      }
      //radio.stopListening();                 // Слушаем эфир.
      //radio.startListening();                // Слушаем эфир.
    }
      //digitalWrite(2, LOW);
  }
if (n >= 10) {
  digitalWrite(2, LOW);
  }   
}

ресивер

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


//const uint64_t readingPipe = 0xE8E8F0F0ABLL;
const uint64_t writingPipe = 0xE8E8F0F0ABLL;


//RF24 radio(9, 10); // Для Pro mini
RF24 radio(48,53);// Для Меги

struct MESSAGE {
  float h_out;
  float t_out;
};
struct MESSAGE message;

void setup() {
    //pinMode(13, OUTPUT);
    //digitalWrite(13, LOW);
    SPI.begin();
    Serial.begin(9600);

    /*************************                Модуль NRF24                **********************/
    delay(2000);                            // Пусть зарядится конденсатор
    radio.begin();                          // Включение модуля;
    radio.setChannel(79);                   // Установка канала вещания;
    radio.setRetries(15,15);                // Установка интервала и количества попыток "дозвона" до приемника;
    radio.setDataRate(RF24_250KBPS);        // Установка минимальной скорости;
    radio.setPALevel(RF24_PA_MAX);          // Установка максимальной мощности;
    radio.enableAckPayload();               // Включение буфера автоответа
    radio.setAutoAck(1);                    // Установка режима подтверждения приема;
    radio.openWritingPipe(writingPipe);     // Активация данных для отправки
    //radio.openReadingPipe(1,readingPipe);   // Активация данных для чтения
    //radio.startListening();                 // Слушаем эфир.
}
void loop() {
radio.startListening();                 // Слушаем эфир.
radio.stopListening();                 // Слушаем эфир.
delay(2000);
int command = 555;
//float message;
radio.write(&command, sizeof(message));
if (radio.isAckPayloadAvailable())
    {radio.read(&message, sizeof(message));
    }
    //Serial.println(message,2);
    Serial.print(" Temperature: ");
    Serial.print(message.t_out,2);
    Serial.print("   Hinidity: ");
    Serial.println(message.h_out,2);
 
}

Если не ошибаюсь помнится прилепил на датчик светодиод наличия связи с базой (ресивером). Надо вникнуть в эти трубы lol .
Давно это было roll

Nefreemen
2016-07-19 23:56:45
PepsDD пише:

так в том то и прикол, пример кода сканера  эфир сканирует все работает, а вот пример где один модуль посылает, второй принимает не работает. Говорят что надо куда то припаять емкость но куда?

Конденсатор 10 мкф прямо на модуле на пины питания.
Пробовал в работе этот модуль. Плох. Растояние 3 м через стену в полтора кирпича капец.

NoName
2016-07-19 14:18:38

сканировать - не ет pair
сделайте прием и передачу
а в вашем примере где серво , я  не увидел заголовка, если рассинхронизация то может и неправильно работать
для начала пошлите привет и словите его на другой стороне
мне помогает если что то сложное не запускается сразу, т.е. я с привета, как обычно начинаю работу над новой железякой )

PepsDD
2016-07-19 13:42:38

так в том то и прикол, пример кода сканера  эфир сканирует все работает, а вот пример где один модуль посылает, второй принимает не работает. Говорят что надо куда то припаять емкость но куда?

NoName
2016-07-19 13:27:49

такого чипа у меня не было
но если не запускается пример,   я бы  сделал простейший клиент - сервер

https://github.com/stanleyseow/RF24
и проверял бы терминалкой

PepsDD
2016-07-19 07:58:42

Всем привет

Два дня воюю и все не удается подружиться с  радио. Думал сделать RC систему используя данные модули. Имеем два модуля две nano (CH340). Питание на модули подаю через AMS1117-3.3, использую стандартную библиотеку
nrf24master. Подключено , как я думаю, все правильно т.к. пример из библиотеки nrf24scan, эфир  сканирует, а вот дальше  ни чего не выходит. Пример GettingStarted пишет, что пакеты не доставлены. Пробовал пример
http://arduinoprojects.ru/2014/04/%D0%B … %BE%D0%B4/
та же фигня. Подскажите, что делаю не так?

Підвал форуму