Ser60 писал(а):попробуйте радио-модули с модемом по технологии LoRaWAN. Выглядит обещающе, у меня это в ближайших планах, как время позволит.
Не знаю.. пока не думал)) Вообще есть Wi-Fi ...)) Надо изучить подробней... куда это использовать.
Ещё пару тестов nRF24L01+))
4- тест на количество ошибок. Важный момент, потому что для нашего кораблика - недопустимы ложные срабатывания !!!
В самодельном радиомодуле можно посмотреть сигнал на выходе детектора и посмотреть работу дешифратора во всех подробностях)) : отпеределить точно количество и характер ошибок, и даже точно определить источник помех и ошибок. Например вот наш самодельный радиомодуль принял сигнал автосигнализации... Можно посмотреть как на него реагирует наш дешифратор... Во всех подробностях))
- 1.jpg
- (205.25 КБ) 373 скачивания
Как реагирует nRF24L01+ на помехи.. можно только догадываться))
Для того что бы лучше разобраться в работе заводских радиомодулей, мы собрали самодельный, с таким же алгоритмом как в зоводском)) Теперь можно сравнить их работу...))
Наш самодельный модуль работает по стандартному алгоритму:
1- приёмник синхронизируется по преамбуле.
2- затем приёмник ищет синхрослово.
3- если синхрослово совпадает, то приёмник переходит к записи данных в буфер FIFO.
Есть один важный момент: количество ошибок (или проще говоря - вероятность ложных срабатываний) зависит от уровня сигнала (точнее отношение сигнал/шум). Причем, что любопытно, зависимость эта нелинейная. По результатам тестов я тут накидал "на глаз" график зависимости ошибот от уровня сигнала. Получилось так:
- 4.jpg
- (172.12 КБ) 618 скачиваний
Почему зависимость нелинейная? Да очень просто..)) На графике циферками подписал:
1- в первом случае сигнал хороший (отношение сигнал/шум большое), поэтому приёмник четко синхронизируется, чётко находит синхрослово и записывает в буфер все данные без ошибок. Вероятность ошибки крайне мала.
2- во втором случае сигнал слабый (отношение сигнал/шум меньше). Приёмник по прежнему синхронизируется и находит синхрослово, но данные уже содержат ошибки... Возможны ложные срабатывания, причём с высокой вероятностью.
3- в третьем случае (отношение сигнал/шум низкое). Приёмник не может синхронизироваться, а если и может то не может найти синхрослово. В этом случае приёмник ничего не записывает в буфер. Именно поэтому вероятность ложных срабатываний ниже.
4- если вообще выключить передатчик, то приёмник вообще не сможет синхронизироваться... Поэтому вероятность ложных срабатываний при выключенном передатчике крайне мала.
При тестировании самодельного радиомодуля я устанавливаю такой уровень сигнала, при котором количество ошибок на выходе дешифратора максимальное. Именно в таком режиме я тестирую все свои самодельные радиомодули. При этом добиваюсь максимальной надёжности схемы радиоуправления.
Теперь сравним с заводским радиомодулем nRF24L01+)) У nRF24L01+ есть два основных режима:
1- можно
включить так называемый "расширенный" режим с контролем пакетов.
- 2.jpg
- (27.25 КБ) 627 скачиваний
2- можно
выключить так называемый "расширенный" режим с контролем пакетов.
- 3.jpg
- (32.29 КБ) 632 скачивания
Для тестов отключим этот "расширенный" режим )) Это позволит нам включать/отключать проверку контрольной суммы (CRC8 или CRC16).
Именно это нам и надо для тестов))
Отключам проверку контрольной суммы в nRF24L01+ (CRC8 или CRC16) и сравним его работу с самодельным модулем...
1-Включаем первый nRF24L01+ в режим TX, а второй nRF24L01+ в режим RX. Побежали пакеты... ))) Ложных пакетов нет.
2- Относим подальше второй nRF24L01+ в режим RX... Пошла потеря пакетов... )) Во... !!! начали проскакивать ложные пакеты !
Все точно так же, как в нашем самодельном модуле... Максимальное количество ложных пакетов надлюдается при определённом уровне сигнала (примерно когда теряется половина пакетов).
3- Относим ёще дальше второй nRF24L01+ в режим RX... ложные пакеты стали проскакивать намного реже... Точно так же как в нашем самодельном модуле))
4- Ну и последнее... Выключаем первый nRF24L01+ в режиме TX ... и ждём))) Через некоторое время второй nRF24L01+ в режим RX... принял пакет... Что за пакет он принял ? ))) первый nRF24L01+ в режиме TX выключен !!! Поймали помеху... Ну вот...
Получили ложное срабатывание от помехи... Всё ясно. ))
Вывод: Если кратко, то вот:
1- Самое опасное для радиомодуля nRF24L01+ , это когда он работает в зоне неуверенного приёма. При этом наблюдается максимальное количество ложных пакетов. Если хотим сделать действительно надёжную систему передачи данных, то об этом нужно помнить.
2- Использовать радиомодуль nRF24L01+ без проверки контрольной суммы (CRC8 или CRC16) не рекомендую.
3- Контрольную сумму рекомендую выбирать максимально возможную. Для nRF24L01+ это CRC16.
P.S. Для теста самодельных модулей использовал тестовую программку... Почти сутки радиомодули работали в тестовом режиме... Передано... миллионы пакетов...))

Программка вылавливала ложные пакеты (т.е. пакеты с ошибками) при слабом сигнале (т.е. при максимальном количестве ошибок).
-При использовании CRC8 программка выловила несколько ложных пакетов... Детальный анализ показал, что причина была в срыве синхронизации... и CRC8 не смог их распознать и отбросить...
-При использовании CRC16 программка не выловила ни одного ложного пакета... Все ложные пакеты (пакеты с ошибками) программка отбросила...))
-При передачи больших файлов я бы ещё рекомендовал передавать в конце CRC32. Так же как в протоколе TCP/IP. На всякий случай)))
Кратко вот. ))
