Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Софт:обсуждение программного обеспечения для умного дома

ТЕМА: Конструктор беспроводного клиента на nRF24LE1

Конструктор беспроводного клиента на nRF24LE1 11 Сен 2015 20:57 #6141

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7197
  • Спасибо получено: 1114
  • Репутация: 194
Не добрался я еще до проверки..
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Конструктор беспроводного клиента на nRF24LE1 11 Сен 2015 21:49 #6146

  • motoped
  • motoped аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Сообщений: 36
  • Спасибо получено: 12
  • Репутация: 2
Ясно буду ждать.
Администратор запретил публиковать записи гостям.

Конструктор беспроводного клиента на nRF24LE1 14 Сен 2015 14:02 #6199

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7197
  • Спасибо получено: 1114
  • Репутация: 194
Из состояния по умолчанию сейчас собрал прошивку с такими данными:

Поставил галку "Без float"
Поставил тычку "Memory retention"
Поставил тычку "DS18B20"

Сообщение компилятора:
8-bit Checksum = 82
Размер прошивки: 5624 байт
Строка структуры для ESP8266: LT
Размер пакета 7 байт.


- работает все отлично !

Собранная прошивка для 1 клиента designer.homes-smart.ru/le1/out/test.bin
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Конструктор беспроводного клиента на nRF24LE1 22 Нояб 2015 21:34 #7733

  • victoru
  • victoru аватар
  • Не в сети
  • Новый участник
  • Сообщений: 1
  • Репутация: 0
Доброго времени суток!

Помогите разобраться. Несколько дней пытаюсь оживить NRF24LE1. Прошивку делаю сам с помощью вашего SDK. Схема такая: NRF24LE1 выступает в качестве передатчика. В качестве приемника: RaspberryPi + NRF24L01.
Проблема в том, что передатчик зависает на передаче если включено автоквитирование setAutoAck(true) пакетов. То есть, при старте NRF24LE1 с тем кодом, который показан ниже - моргает светодиодом 4 раза, и замолкает.
Как только ставлю setAutoAck(false) - основной цикл работает нормально, светодиод моргает постоянно.

Исходный код передатчика (NRF24LE1):

#define LED GPIO_PIN_ID_P0_0 // пин, к которому подключен светодиод.

#include "libs.h"
#include "nRFLE.c"

unsigned char tx_msg[32];
unsigned char rx_msg[32];


void led_500ms_signal( unsigned int cnt )
{
int i;
for (i=0; i<cnt; i++) {
gpio_pin_val_set(LED);
delay_ms(500);
gpio_pin_val_clear(LED);
delay_ms(500);
}
}


void rf_init()
{
radiobegin();
openAllPipe();

setChannel(1);
setDataRate(2); // 1 - 250кб , 2 - 1 мб , 3 -2 мб.
setAutoAck(true);
//setAutoAck(false);
setCRCLength(2); // 0 - crc off ,1 - 8bit ,2 - 16bit
setPALevel(3) ; // мощность 0..3
}


//====================main========================

void main()
{
int state=0;

unsigned int count=0; //counter for loop
uint8_t st=0,countpause=0,rewers=0; // for key
unsigned long statesend=0,radiosend=0;

// мигаем портом P0_0
gpio_pin_configure(GPIO_PIN_ID_P0_0, // укажем необходимые параметры
GPIO_PIN_CONFIG_OPTION_DIR_OUTPUT |
GPIO_PIN_CONFIG_OPTION_OUTPUT_VAL_CLEAR |
GPIO_PIN_CONFIG_OPTION_PIN_MODE_OUTPUT_BUFFER_NORMAL_DRIVE_STRENGTH);


// Тестовое мигание при запуске -->
#if 1
led_500ms_signal(3);
#endif
//<-- Тестовое мигание при запуске

//инициализация радио-канала
rf_init();

rf_power_up(1);

//main program loop
while(1)
{
led_500ms_signal(1);

rf_set_as_tx();
rf_write_tx_payload((const uint8_t*)&tx_msg, 32, true); //transmit received char over RF

//wait until the packet has been sent or the maximum number of retries has been reached
while(!(rf_irq_pin_active() && rf_irq_tx_ds_active()));

rf_irq_clear_all(); //clear all interrupts in the 24L01
rf_set_as_rx(true); //change the device to an RX to get the character back from the other 24L01
// argument (should be loop maximum - 1) to lengthen or shorten this time frame

rf_read_rx_payload((const uint8_t*)&rx_msg, 32);

rf_irq_clear_all(); //clear interrupts again

}
}

На приемной стороне (RPi) принимаемые пакеты пока тоже не удалось прочитать, но используя пример scanner из библиотеки /RF24 (tmrh20.github.io/RF24/RPi.html) - несущая на первой посылке детектируется.
Основной вопрос - почему NRF24LE1 замирает если включено квитирование? Пробовал устанавливать разное количество попыток передать пакет и таймауты между попытками - не помогает.

Извините, что сообщение в тему. Более подходящей темы не нашел.
Администратор запретил публиковать записи гостям.

Конструктор беспроводного клиента на nRF24LE1 23 Нояб 2015 22:30 #7773

  • pistoletov
  • pistoletov аватар
  • Не в сети
  • Давно я тут
  • Нам никогда не будет 60 а лишь 4 раза по 15.
  • Сообщений: 127
  • Спасибо получено: 34
  • Репутация: 1
СОбрал прошивку в конструкторе. Ведет себя немного странно. Пакет приемник получает только при подаче питания. Грешу возможно на приемную часть cubieboard. Связка esp+ nrf24l01+ хорошо ли работает? Надо какое-то железо эталонное то так тяжело искать проблему. МОжет куда-то положите так сказать эталонную сборку клиента и сервера (на базе esp)? я уж скоро и регистры nrf24l01 на память выучу а оно все не работает...пробовал и с auto_acknoledge И без..разницы нет..

STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xf0f0f0f0e1 0xf0f0f0f0d2
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xf0f0f0f0e1
RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x00
EN_RXADDR = 0x03
RF_CH = 0x64
RF_SETUP = 0x07
CONFIG = 0x0f
DYNPD/FEATURE = 0x3f 0x04
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_HIGH
response timed out.
response timed out.
GOT RESPONCE
Got response size=32 client=5 count =15740096 temperature=0.000000
Странно почему размер DYNAMIC payload 32 байта, функция библиотеки librf24 getDynamicPayloadSize реально он 15 байт. Значения счетчика странное какое-то. Оно как-то сохраняется при пропадании питания? номер клиента верный.
Последнее редактирование: 24 Нояб 2015 00:37 от pistoletov.
Администратор запретил публиковать записи гостям.

Конструктор беспроводного клиента на nRF24LE1 24 Нояб 2015 08:08 #7784

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7197
  • Спасибо получено: 1114
  • Репутация: 194
victoru , Я в последних проектах беспроводных датчиков AutoAck не включал. Изучал и испытывал эту функцию давно и сейчас уже не помню все хитрости этой опции. Нужно читать даташит. Тема про ЛЕ1 отдельно тут есть, если поискать..

pistoletov, Эталоны находятся в конструкторах прошивок. Все неоднократно проверено. Прием с датчиков LE1 на ESP8266 работает. У меня так гоняется один модуль. Другие пользователи так же пользуются этой опцией. Главное верно выбрать опции - чтобы они соответствовали и клиенту и серверу.
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.
Спасибо сказали: pistoletov
Модераторы: FlyRouter, Dolfik
Время создания страницы: 0.128 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.