Страница 181 из 326

Re: Arduino Mega Server

Добавлено: Вс ноя 27, 2016 11:53 am
Alex
Эхо всегда правильно отрабатывается. Может дело в каких то задержках ?
Логика очень простая: посылка успешная, а функция возвращает значение false — значит она по каким-то причинам неправильно определяет факт успешной посылки.

Re: Arduino Mega Server

Добавлено: Вс ноя 27, 2016 12:51 pm
Lans
Как я понял, подтверждение удачной отправки выдает NRF24 но для этого ей нужно получить ответ от "приемника". Для этого нужно в код инициализации радиоканала добавить

Код: Выделить всё

  radio.setAutoAck(1);
Проблема в том, что при отправке запроса одному сенсору подтвердят прием все остальные в этой трубе. Но если все сенсоры разведены по разным трубам - все ОК.
Кстати, при включенном автоответе можно было бы отказаться от отправки эхо - контроль радиоканала с подтверждением и CRC защитой от ошибок может обеспечить сам NRF модуль:

Код: Выделить всё

radio.setChannel(76);
radio.setAutoAck(1);
radio.setRetries(15,15);
radio.setCRCLength(RF24_CRC_16);
*** Сообщение запрещено. Сообщение похоже на спам. ***

Re: Arduino Mega Server

Добавлено: Пн ноя 28, 2016 12:58 pm
Alex
Кстати, при включенном автоответе можно было бы отказаться от отправки эхо - контроль радиоканала с подтверждением и CRC защитой от ошибок может обеспечить сам NRF модуль:
Это заблуждение. Сам модуль не в состоянии гарантировать доставку. Об этом много информации в Интернет, в том числе и на русском языке.

Re: Arduino Mega Server

Добавлено: Пн ноя 28, 2016 4:20 pm
serghei
Тут вопрос очень мутный. Вот специально сбросил АМС и сенсор , вывел все в сериал.С Москвой разница -1 час ,еще не поправил часы. Как видно все работает и запросы и ответы идут в обе стороны. То есть в скетче всего достаточно и ничего добавлять не надо. А вот дома другой такой же сервер с таким же кодом выдает ошибки , но цифры передаются.
Для работы с несколькими NRF есть помимо труб еще и каналы передачи. Надо попробовать их использовать.

Код: Выделить всё

  radio.openWritingPipe(addresses[0]);
  radio.openReadingPipe(1, addresses[1]);// первый сенсор

//=====================================================================================
  // radio.openReadingPipe(1, addresses[2]);// второй сенсор
 //==========================================================================================   
  radio.startListening();
  modulNrf24 = MODUL_ENABLE;
  initDone();
}

 

Re: Arduino Mega Server

Добавлено: Пн ноя 28, 2016 4:31 pm
Alex
Тут вопрос очень мутный.
На мой взгляд, сам вопрос кристально ясный: просто программист библиотеки не смог корректно учесть все состояния системы и система выдаёт ложные срабатывания.

Нужно просто залезть в библиотеку и посмотреть что и как формирует флаг false. Другое дело. что для этого нужно стать на время программистом библиотеки (с соответствующей квалификацией).

Re: Arduino Mega Server

Добавлено: Вт ноя 29, 2016 12:05 am
alexsis_76
serghei скинь беспроводную библиотеку,посмотрим что внутри.

Re: Arduino Mega Server

Добавлено: Вт ноя 29, 2016 1:23 am
alexsis_76
вот код
//Similar to the previous write, clears the interrupt flags
bool RF24::write( const void* buf, uint8_t len, const bool multicast )
{
//Start Writing
startFastWrite(buf,len,multicast);

//Wait until complete or failed
#if defined (FAILURE_HANDLING) || defined (RF24_LINUX)
uint32_t timer = millis();
#endif

while( ! ( get_status() & ( _BV(TX_DS) | _BV(MAX_RT) ))) {
#if defined (FAILURE_HANDLING) || defined (RF24_LINUX)
if(millis() - timer > 85){
errNotify();
#if defined (FAILURE_HANDLING)
return 0;
#else
delay(100);
#endif
}
#endif
}

ce(LOW);

uint8_t status = write_register(NRF_STATUS,_BV(RX_DR) | _BV(TX_DS) | _BV(MAX_RT) );

//Max retries exceeded
if( status & _BV(MAX_RT)){
flush_tx(); //Only going to be 1 packet int the FIFO at a time using this method, so just flush
return 0;
}
//TX OK 1 or 0
return 1;
}

bool RF24::write( const void* buf, uint8_t len ){
return write(buf,len,0);
}
если у тебя //#define FAILURE_HANDLING
то вылетаешь сдесь
//Max retries exceeded
if( status & _BV(MAX_RT)){
flush_tx(); //Only going to be 1 packet int the FIFO at a time using this method, so just flush
return 0;
}
надо смотреть что возвращает uint8_t status = write_register(NRF_STATUS,_BV(RX_DR) | _BV(TX_DS) | _BV(MAX_RT) );

Re: Arduino Mega Server

Добавлено: Вт ноя 29, 2016 10:26 pm
Allar
подскажите по датчикам, кто подключал DS18B20 в гильзе?
Изображение
подключаю по инструкции - амс вообще не запускается,
пробую перебирать провода - либо не запускается вообще, либо запускается нл не определяет датчик.
подключил негильзованный - все работает и определяется.
скачал в интернете простенький скетч для ds18b20 по трехпроводной схеме - работает!
подключаю в АМС - не работает!
загадка...

Re: Arduino Mega Server

Добавлено: Вт ноя 29, 2016 10:39 pm
serghei
У меня 5 штук в гильзе. С кодом для сенсора АМС 015 работают все. С ЕСП не хотят - ID определяются правильно , а температуру показывают 127 градусов или 85. По цветам 2 типа - черный корпус ,красный + и белый или желтый сигнал.
Скрин начала работы АМС выложите.

Re: Arduino Mega Server

Добавлено: Вт ноя 29, 2016 10:53 pm
Allar
serghei писал(а):У меня 5 штук в гильзе. С кодом для сенсора АМС 015 работают все. С ЕСП не хотят - ID определяются правильно , а температуру показывают 127 градусов или 85. По цветам 2 типа - черный корпус ,красный + и белый или желтый сигнал.
Скрин начала работы АМС выложите.
у меня черный желтый красный
какой скрин? при подключении датчика ардуино не работает, даже порт в системе не определяется.
с негильзованным так:

AMS Mega (0.16) started...