Личный опыт: конденсатор на 1мф впаяный между ногами питания не позволяет переключить режимы RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH - постоянно включен (а может и не включается) 0-й, то есть RF24_PA_MIN. Очень редко (читай 1 раз из 30) включается нужный. Качество связи - соответствующее. Конденсатор >= 10мф решает данную проблему.
P.S. не претендую на правоту, просто только что часа 2 промучался с данной проблемой. И кондеров перепробовал штук 5, пока не додумался побольше впаять ))))
-безбожно нестабилен: средняя точка (которую сам принимает если отпустить джойстик) измеренная через analogRead гуляет по Y от 380 до 480. зависит в какую сторону до этого отводили джойсик. если вверх то покажет потом в центре 380, если вниз то покажет 480. это ориентировочно. числа каждый раз разные. по оси Х тоже самое. не берите, замучаетесь программу писать чтобы хоть к какому то линейному виду привести. кстати значения в центре и по краям разные для каждой оси. каждую ось нужно настраивать по отдельности. максимумы тоже гуляют. обычно по Х максимум около 880 плюс минус, но иногда значение максимума вырастает до 900 с лишним
повторяю не берите намучаетесь. может хотя оригинальные хорошие, но дорогие
загадка ( мне не удалось ни разу увидеть true. буду копать
axill, удалось разобраться?
У меня похожая проблема с testRPD(). Вы его используете? Какое значение он чаще возвращает?
Я понимаю, что должно быть так:
1. Мощность принятого сигнала относительно хорошая- testRPD возвращает true
2. Мощность принятого сигнала относительно слабая- testRPD возвращает false
3. в ардуино true равно 1, а false равно 0. *
я правильно понимаю?
*-суммирую значения. Как-то так
{
long totalRPD=0;
...
{
bool lastRPD=testRPD();
totalRPD+=lastRPD;
..
}
..
}
Независимо от мощности передатчика (setPAlevel) и расстояния до приёмника получаю false. Носил по всей квартире, накрывал кастрюлькой, добивался потери связи, всегда false. Целый день модули лежали рядом, пинговались, больше 300 тыс. раундтрипов и, однако, 6 штук true.
Помещал testRDP в разные места скетча
- после if(radio.available())
- после radio.read()
- после обработки принятого пакета (~8 мс)
- после stopListening
не помогает.
nordic пишет:
...
6.1.4 RX mode
...
In RX mode a Received Power Detector (RPD) signal is available. The RPD is a signal that is set high
when a RF signal higher than -64 dBm is detected inside the receiving frequency channel. The internal
RPD signal is filtered before presented to the RPD register. The RF signal must be present for at least 40us
before the RPD is set high. How to use the RPD is described in Section 6.4 on page 25.
...
...
6.4 Received Power Detector measurements
Received Power Detector (RPD), located in register 09, bit 0, triggers at received power levels above -64
dBm that are present in the RF channel you receive on. If the received power is less than -64 dBm,
RDP = 0.
The RPD can be read out at any time while nRF24L01+ is in receive mode. This offers a snapshot of the
current received power level in the channel. The RPD status is latched when a valid packet is received
which then indicates signal strength from your own transmitter. If no packets are received the RPD is
latched at the end of a receive period as a result of host MCU setting CE low or RX time out controlled by
Enhanced ShockBurst™.
The status of RPD is correct when RX mode is enabled and after a wait time of Tstby2a +Tdelay_AGC=
130us + 40us. The RX gain varies over temperature which means that the RPD threshold also varies over
temperature. The RPD threshold value is reduced by - 5dB at T = -40°C and increased by + 5dB at 85°C.
...
Мои пакеты имеют длину 16 байт (payload). Сколько времени передаётся такой пакет(250KBPS)?
axill, лично у меня с network.write (речь о библиотеке RF24Network) (да и в RF24 тоже точно все будет ок - из нее ж этот bool и приходит) все в порядке. Когда доходит - приходит true. Хотя, честно говоря, я так до конца и не понял radio.write( frame_buffer, frame_size ) возвращает true когда frame_buffer отправлен, или когда приходит ответ об успешном получении пакета на стороне приемника? Поясните, пожлуйста, непонятливому )))
radio.write в библиотеке RF24 возвращает true тогда когда получатель получил сообщение, отчитался об этом обратной посылкой и эта посывлка дошла до отправителя. В моем случае при реальной установке устроуств часто бывает, что сообщение дошло до адресата, но "отчет" обратно не дошел и возвращается false не смотря на то, что сообщение все-таки дошло
Личный опыт: конденсатор на 1мф впаяный между ногами питания не позволяет переключить режимы RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH - постоянно включен (а может и не включается) 0-й, то есть RF24_PA_MIN. Очень редко (читай 1 раз из 30) включается нужный. Качество связи - соответствующее. Конденсатор >= 10мф решает данную проблему.
P.S. не претендую на правоту, просто только что часа 2 промучался с данной проблемой. И кондеров перепробовал штук 5, пока не додумался побольше впаять ))))
Личный опыт: конденсатор на 1мф впаяный между ногами питания не позволяет переключить режимы RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH - постоянно включен (а может и не включается) 0-й, то есть RF24_PA_MIN. Очень редко (читай 1 раз из 30) включается нужный. Качество связи - соответствующее. Конденсатор >= 10мф решает данную проблему.
P.S. не претендую на правоту, просто только что часа 2 промучался с данной проблемой. И кондеров перепробовал штук 5, пока не додумался побольше впаять ))))
Интересно. "мф" это микро?
впаивали между ног nrf или дуины?
в данной ветке этот вопрос уже 3 раз обсуждается.. там даже фото где то было... но это я так понимаю не предел... :)
mitekg, мф - это микрофарады. Впаивал, конечно же между ног nrf. 3,3 беру не от дуины, а от AMS1117 - у нее по выходам тоже (на всякий случай) стоит танталовый на 0,1 mF и электролит на 10 mF.
true из функции write мне удалось получить, но только при тестировании двух устройств "на столе"
в реальных условиях сообщение доходит, но write возвращает false
Я заметил, что если нужно отправить с одного модуля более одного сообщения и желательно получить от write "истину", то надо сделать startListening и stopListening.
axill пишет:
RPD не тестировал, исходя из описания имеет смысл тестировать RPD на разных каналах, оно должно харрактеризовать наличие помех
Hаличие помех от соседей нужно тестировать методом testCarier - это проверка наличия несущей частоты в эфире.
A testRPD как раз для проверки своего канала, ибо
nordic пишет:
6.4 Received Power Detector measurements
...
The RPD status is latched when a valid packet is received which then indicates signal strength from your own transmitter.
Вопрос ко всем: есть модули с отдельным чипом-усилителем, sma антенной и декларируемой дальностью 1000 метров. Метод setPaLevel для них применять бесполезно? Где-то в даташите читал, что в таких модулях сигнал на усилитель подаётся с другой ножки чипа, до встроенного в nrf24l01+ усилителя, вроде.
Спасибо, а для стабильности будет лучше поставит скорость radio.setDataRate(RF24_250KBPS); Так правильно или нет?
nordic пишет:
6.2 Air data rate
The air data rate is the modulated signaling rate the nRF24L01+ uses when transmitting and receiving data. It can be 250kbps, 1Mbps or 2Mbps. Using lower air data rate gives better receiver sensitivity than higher air data rate. But, high air data rate gives lower average current consumption and reduced probabil- ity of on-air collisions.
6.2 Скорость радиообмена
Скорость радиообмена, это скорость сигнала модулированного несущей частотой, используемая чипом NRF24L01+ при передачи и при получении данных. Она может быть 250 килобит в секунду, 1 мегабит в секунду или 2 мегабита в секунду. Использование низкой скорости радиообмена даёт лучшую чувствительность приёмника, чем при высокой скорости. Однако, при высокой скорости радиообмена, уменьшается среднее энергопотребление, а также уменьшается вероятность возникновения коллизий в радиоэфире.
Casper17, всё правильно.
Можно использовать и те каналы, где есть помехи. Просто на таких каналах вероятность того, что помехи могут вам помешать чуть выше, чем на других каналах.
По поводу сканера, тот что со звездочками...это из модифицированной библиотеки maniacbug. Сделал её товарищ Greg Copeland и скачать её можно вот тут https://github.com/gcopeland/RF24
А какое количество устройст(nrf24lo1+) можно использовать в библиотеке nrf24network
Если строить сеть "звездой", то до 6 узлов на одном канале. Если как в примере meshping.pde, по древовидной структуре с адресацией 00-01-011-0111 и т.п., то до 781 узла на одном канале.
Возможно, если только сами организуете. NRF24L01+ позволяет передавать на 4 уровнях мощности. То есть на приемнике можете сделать 4 "палки" уровня сигнала, переодически отправляя с передатчика пакеты, в которых информация с какой мощностью был отправлен каждый из пакетов.
спасибо. когда нибудь мне эта информация обязательно пригодится
Личный опыт: конденсатор на 1мф впаяный между ногами питания не позволяет переключить режимы RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH - постоянно включен (а может и не включается) 0-й, то есть RF24_PA_MIN. Очень редко (читай 1 раз из 30) включается нужный. Качество связи - соответствующее. Конденсатор >= 10мф решает данную проблему.
P.S. не претендую на правоту, просто только что часа 2 промучался с данной проблемой. И кондеров перепробовал штук 5, пока не додумался побольше впаять ))))
что вы думаете по этому поводу?
То что вам для начала нужно ознакомиться с разделом Программирование
массив (array)
все заработало)))
хотел использовать джойстик от PSP2000 вроде этого
http://www.ebay.com/itm/Analog-Joystick-Control-For-Sony-PSP-2000-Slim-Replacement-Repair-Part-DR-/300913688167?pt=LH_DefaultDomain_0&var=&hash=item460fda7e67
плюсы:
-компактный
-выводы под пайку 4 шт: + - 2 выхода
минусы:
-безбожно нестабилен: средняя точка (которую сам принимает если отпустить джойстик) измеренная через analogRead гуляет по Y от 380 до 480. зависит в какую сторону до этого отводили джойсик. если вверх то покажет потом в центре 380, если вниз то покажет 480. это ориентировочно. числа каждый раз разные. по оси Х тоже самое. не берите, замучаетесь программу писать чтобы хоть к какому то линейному виду привести. кстати значения в центре и по краям разные для каждой оси. каждую ось нужно настраивать по отдельности. максимумы тоже гуляют. обычно по Х максимум около 880 плюс минус, но иногда значение максимума вырастает до 900 с лишним
повторяю не берите намучаетесь. может хотя оригинальные хорошие, но дорогие
jeka_tm, здесь обсуждам радио модуль. Не джойстики.
китайское овно, оригинал работает идеально.
jeka_tm, здесь обсуждам радио модуль. Не джойстики.
сори.больше не буду. просто передавал данные с джойстика через Nrf24l01 на другую ардуину и вылезла такая бяка
у вас write что возвращает?
Иногда false, чаще true.
загадка ( мне не удалось ни разу увидеть true. буду копать
axill, удалось разобраться?
У меня похожая проблема с testRPD(). Вы его используете? Какое значение он чаще возвращает?
Я понимаю, что должно быть так:
1. Мощность принятого сигнала относительно хорошая- testRPD возвращает true
2. Мощность принятого сигнала относительно слабая- testRPD возвращает false
3. в ардуино true равно 1, а false равно 0. *
я правильно понимаю?
*-суммирую значения. Как-то так
{
long totalRPD=0;
...
{
bool lastRPD=testRPD();
totalRPD+=lastRPD;
..
}
..
}
Независимо от мощности передатчика (setPAlevel) и расстояния до приёмника получаю false. Носил по всей квартире, накрывал кастрюлькой, добивался потери связи, всегда false. Целый день модули лежали рядом, пинговались, больше 300 тыс. раундтрипов и, однако, 6 штук true.
Помещал testRDP в разные места скетча
- после if(radio.available())
- после radio.read()
- после обработки принятого пакета (~8 мс)
- после stopListening
не помогает.
...
6.1.4 RX mode
...
In RX mode a Received Power Detector (RPD) signal is available. The RPD is a signal that is set high
when a RF signal higher than -64 dBm is detected inside the receiving frequency channel. The internal
RPD signal is filtered before presented to the RPD register. The RF signal must be present for at least 40us
before the RPD is set high. How to use the RPD is described in Section 6.4 on page 25.
...
...
6.4 Received Power Detector measurements
Received Power Detector (RPD), located in register 09, bit 0, triggers at received power levels above -64
dBm that are present in the RF channel you receive on. If the received power is less than -64 dBm,
RDP = 0.
The RPD can be read out at any time while nRF24L01+ is in receive mode. This offers a snapshot of the
current received power level in the channel. The RPD status is latched when a valid packet is received
which then indicates signal strength from your own transmitter. If no packets are received the RPD is
latched at the end of a receive period as a result of host MCU setting CE low or RX time out controlled by
Enhanced ShockBurst™.
The status of RPD is correct when RX mode is enabled and after a wait time of Tstby2a +Tdelay_AGC=
130us + 40us. The RX gain varies over temperature which means that the RPD threshold also varies over
temperature. The RPD threshold value is reduced by - 5dB at T = -40°C and increased by + 5dB at 85°C.
...
Мои пакеты имеют длину 16 байт (payload). Сколько времени передаётся такой пакет(250KBPS)?
true из функции write мне удалось получить, но только при тестировании двух устройств "на столе"
в реальных условиях сообщение доходит, но write возвращает false
RPD не тестировал, исходя из описания имеет смысл тестировать RPD на разных каналах, оно должно харрактеризовать наличие помех
axill, лично у меня с network.write (речь о библиотеке RF24Network) (да и в RF24 тоже точно все будет ок - из нее ж этот bool и приходит) все в порядке. Когда доходит - приходит true. Хотя, честно говоря, я так до конца и не понял radio.write( frame_buffer, frame_size ) возвращает true когда frame_buffer отправлен, или когда приходит ответ об успешном получении пакета на стороне приемника? Поясните, пожлуйста, непонятливому )))
radio.write в библиотеке RF24 возвращает true тогда когда получатель получил сообщение, отчитался об этом обратной посылкой и эта посывлка дошла до отправителя. В моем случае при реальной установке устроуств часто бывает, что сообщение дошло до адресата, но "отчет" обратно не дошел и возвращается false не смотря на то, что сообщение все-таки дошло
Личный опыт: конденсатор на 1мф впаяный между ногами питания не позволяет переключить режимы RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH - постоянно включен (а может и не включается) 0-й, то есть RF24_PA_MIN. Очень редко (читай 1 раз из 30) включается нужный. Качество связи - соответствующее. Конденсатор >= 10мф решает данную проблему.
P.S. не претендую на правоту, просто только что часа 2 промучался с данной проблемой. И кондеров перепробовал штук 5, пока не додумался побольше впаять ))))
Интересно. "мф" это микро?
впаивали между ног nrf или дуины?
Личный опыт: конденсатор на 1мф впаяный между ногами питания не позволяет переключить режимы RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH - постоянно включен (а может и не включается) 0-й, то есть RF24_PA_MIN. Очень редко (читай 1 раз из 30) включается нужный. Качество связи - соответствующее. Конденсатор >= 10мф решает данную проблему.
P.S. не претендую на правоту, просто только что часа 2 промучался с данной проблемой. И кондеров перепробовал штук 5, пока не додумался побольше впаять ))))
Интересно. "мф" это микро?
впаивали между ног nrf или дуины?
в данной ветке этот вопрос уже 3 раз обсуждается.. там даже фото где то было... но это я так понимаю не предел... :)
ага, тут куча убогих)
и всеж можно ответы на вопросы. Пожалуйста
mitekg, мф - это микрофарады. Впаивал, конечно же между ног nrf. 3,3 беру не от дуины, а от AMS1117 - у нее по выходам тоже (на всякий случай) стоит танталовый на 0,1 mF и электролит на 10 mF.
ага, тут куча убогих)
и всеж можно ответы на вопросы. Пожалуйста
специально по просьба наших особо убогих читателей. повторим нашу програму полугодовой давности...
Подскажите пожалуйста, как в библиотеки RF24Network настроить скорость передачи и мощность если это возможно...
Точно так же как и без нее.
Спасибо, а для стабильности будет лучше поставит скорость radio.setDataRate(RF24_250KBPS); Так правильно или нет?
true из функции write мне удалось получить, но только при тестировании двух устройств "на столе"
в реальных условиях сообщение доходит, но write возвращает false
Я заметил, что если нужно отправить с одного модуля более одного сообщения и желательно получить от write "истину", то надо сделать startListening и stopListening.
Hаличие помех от соседей нужно тестировать методом testCarier - это проверка наличия несущей частоты в эфире.
A testRPD как раз для проверки своего канала, ибо
Спасибо, а для стабильности будет лучше поставит скорость radio.setDataRate(RF24_250KBPS); Так правильно или нет?
Пожскажите как правидьно пользоваться scanner из библиотеки RF24.
Я так понимаю что в длину это 128 каналов, где нули там нет помех и эти каналы можно использовать, да?
Casper17, всё правильно.
Можно использовать и те каналы, где есть помехи. Просто на таких каналах вероятность того, что помехи могут вам помешать чуть выше, чем на других каналах.
у меня по другому выглядит результат сканера, почитал скетч так и не понял - много звездочек это хорошо или плохо?
и что странно в результате есть не все каналы хотя в скетче явно идет цикл от 0 до 127
с пропусками разобрался - там выше есть переменная activeOnly. Если ей присвоить false то будет показывать все 128 каналов.
Но все-таки звездочки показывают засореннось канала или наоборот? лучше выбирать канал с нулем или со звездочками?
у меня по другому выглядит результат сканера, почитал скетч так и не понял - много звездочек это хорошо или плохо?
А это у Вас из какой библиотеки сканер?
Это из RF24, видимо разные версии
Это из RF24, видимо разные версии
А дайте ссылку пожалуйста, или текст скетча. Интересно у себя этот сканер посмотреть
http://code.mios.com/trac/mios_arduino-sensor/browser/trunk/Arduino/libr...
axill, родной сканер, в отличие от вашего, использует метод testCarrier. Вот https://github.com/maniacbug/RF24/blob/master/examples/scanner/scanner.pde
Toc знаю, смотрел. Hek где то надыбал эту версию)
но кстати даже в оригинале библиотеки по вашей ссылке сказано, что для чипа с плюсом (nrf24l01+ - а сейчас все такие) лучше использовать rdp
http://code.mios.com/trac/mios_arduino-sensor/browser/trunk/Arduino/libr...
Спасибо!
с пропусками разобрался - там выше есть переменная activeOnly. Если ей присвоить false то будет показывать все 128 каналов.
Но все-таки звездочки показывают засореннось канала или наоборот? лучше выбирать канал с нулем или со звездочками?
Чем меньше звездочек - чище канал
отлично! у меня первые 50 каналов получается забиты до отказа, а дальше тишь да благодать ))
видимо wifi вест в первой полусотне
что вы думаете по этому поводу?
То что вам для начала нужно ознакомиться с разделом Программирование
массив (array)
Передаю данные с трёх потенциометров
Как теперь правильно прочитать массив
А почему у вас массив размером 3 элемента, а при передаче длинну вы указали 6 ?
Планирую ещё три переменных отправлять.
maksim, не могли бы вы объяснить запись
int
analog1 val[0];
Знак равно пропушен.
А почему
int
analog1 а не допустим int x.
Это имя переменной,может быть любым не занятым и не зарезервированным
По поводу сканера, тот что со звездочками...это из модифицированной библиотеки maniacbug. Сделал её товарищ Greg Copeland и скачать её можно вот тут https://github.com/gcopeland/RF24
А какое количество устройст(nrf24lo1+) можно использовать в библиотеке nrf24network?
Если строить сеть "звездой", то до 6 узлов на одном канале. Если как в примере meshping.pde, по древовидной структуре с адресацией 00-01-011-0111 и т.п., то до 781 узла на одном канале.
Здравствуйте, возможно ли получить данные уровня сигнала(численное) со стороны приемника ? Если да то как ?
Идея в том, что ведомое устройство передаёт уровень сигнала на передатчик.
Возможно, если только сами организуете. NRF24L01+ позволяет передавать на 4 уровнях мощности. То есть на приемнике можете сделать 4 "палки" уровня сигнала, переодически отправляя с передатчика пакеты, в которых информация с какой мощностью был отправлен каждый из пакетов.
подскажите можно как нибудь снять инфу с модуля что два модуля соединились и инфа будет передаваться?
гугление успеха не принесло
Ну отправьте что нибудь, если пакет дошел значит "соединились".
Если setAck(true) то write возвращает статус доставки
это встроеный в чип механизм подтверждения доставки, если пришла true то сообщение точно доставлено.
на практике правда false не всегда означает, что сообщение не было доставлено