Перейти к содержанию
    

si4432 raw mode

Добрый день.

 

Решил проапгрейдить свой контроллер умного дома на базе raspberry, сейчас для чтения данных rf датчиков используется дешевый приемник 433mHz, чувствительность которого не устраивает.

Приобрел на замену трансивер si4432. Оказалось что настроить его не так уж просто.

 

Т.к. имеющиеся датчики генерят сигнал с нестандартной для si4432 преамбулой (0000001 вместо 01010101) требуется настроить единственный режим в котором si4432 будет с ними работать - raw mode.

За основу взял настройки из AN463, GPIO0 прописал как RX_DATA, модуляция OOK.

 

Импульсы пытаюсь обработать следующим незамысловатым кодом:

 

while(true){
  uint8_t rssi=si4432_rr(0x26);
  if(rssi>0x34){
      if(digitalRead(RPI_GPIO_PIN)==HIGH){
         printf("1");
      } else {
         printf("0");
      }
  }

 

И вроде как импульсы считываются при наличии сигнала, но при этом не удается выцепить преамбулу определенной длительности (низкий уровень ~4200мкс) .

На настройку каких регистров стоит обратить внимание в первую очередь?

Изменено пользователем NovOleg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так какая модуляция у датчиков и какие скорости передачи. Сколько байт в преамбуле, что с синхрой? Как пакет заканчивается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так какая модуляция у датчиков и какие скорости передачи. Сколько байт в преамбуле, что с синхрой? Как пакет заканчивается?

 

в качестве подопытного взял сенсор Visonic MCT-302: в спецификации указано что модуляция 100% ASK, про скорость ничего не сказано

 

опытным путем выяснил:

- преамбула состоит из низкого уровня длительностью ~4000мкс и одного верхнего уровня ~320мкс

- сообщение содержит 36 бит

 

судя по всему ООК не подходит для разбора сообщения тк импульсы имеет разную длительность, и нужно использовать режим unmodulated?

но для определения преамбулы выбранный режим OOK или unmodulated играть разницы не должен. или я не прав?

post-78191-1423264432_thumb.png

post-78191-1423264468_thumb.png

post-78191-1423264483.png

Изменено пользователем NovOleg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для si4432 только FSK, GFSK, and OOK никаких ASK нет. OOK вас не устроит тоже, поскольку он переродится в режим модуляции AM, при передаче любых данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для si4432 только FSK, GFSK, and OOK никаких ASK нет. OOK вас не устроит тоже, поскольку он переродится в режим модуляции AM, при передаче любых данных.

Отлично подходит ООК. Только надо отключить синхронизацию. А всю обработку полностью провести к контроллере. Делал приемник данных датчиков только на SX1231 и MRF89(49). Не думаю что большая разница.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для поигаться может и да, а так нет конечно. Потеря чувствительности, более широкая полоса нужна. SX1231 и MRF89(49) по другому устроены, их чувствительность в ООК ещё хуже. Да и как без синхры?, кривота однако. Температура изменилась, частота уплыла и запросто прием упал на 30dB. Надо это?

Понятно, если использовать только приемный тракт из si4432, можно на порты вывести данные, обойдя внутреннюю пакетную структуру. И обработку делать на контроллере. Этот режим они оставили после тестов чипов на первых ревизиях. Может кому и нужен такой режим для собственного модема, пакета, криптовки. Тут требования более повышенные к темп стаб кварца.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В передатчике Visonic MCT-302 сильно не разбирался, но там что то на 2-х транзисторах. Подозреваю что OOK. Но может конечно ошибаюсь. Полосу ставил 300 кГц. А как сделать синхру, если в исходном сигнале нет преамбулы, сразу начинается полезный сигнал? Вообще эти датчики древние, и формат сообщения наверное делался еще под простые приемники без учета возможностей синхронизации. Смотрел как то cc1101 там вообще нет раздельного выбора ASK или OOK, а есть один выбор ASK/OOK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приобрел на замену трансивер si4432. Оказалось что настроить его не так уж просто.

 

Т.к. имеющиеся датчики генерят сигнал с нестандартной для si4432 преамбулой (0000001 вместо 01010101) требуется настроить единственный режим в котором si4432 будет с ними работать - raw mode.

 

Может есть возможность поставить более подходящий в данной ситуации трансивер? Si4432 на сайте производителя стоит как "не рекомендованный к применению", а вот пришедший на смену новый Si446x имеет возможность задать нестандартную преамбулу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще то у данных датчиков нет преамбулы 00000001 . Есть просто включение несущьки на 4000 мкс. что видим на выходе приемника как низкий уровень. Каждый бит передается за 1000...1700 мкс. Длительность зависит от напряжения батарейки (320 мкс у автора это как раз примерно 1/3 от 1000 при макс. напряжении 3В). Поэтому никакая синхронизация в принципе не возможна. ASK это более широкое понятие оно включает в себя OOK и M-ASK (см. вики). Если нужен приемник ASK/OOK применяйте например СС1101 или Micrel MICRF211.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

большое спасибо за комментарии

 

Может есть возможность поставить более подходящий в данной ситуации трансивер? Si4432 на сайте производителя стоит как "не рекомендованный к применению", а вот пришедший на смену новый Si446x имеет возможность задать нестандартную преамбулу.

на сколько я понял, si446x имеет примерно те же возможности что и si443x. и для моих конкретных задачи так же мало подходит

 

 

 

 

Отлично подходит ООК. Только надо отключить синхронизацию. А всю обработку полностью провести к контроллере. Делал приемник данных датчиков только на SX1231 и MRF89(49). Не думаю что большая разница.

Т.е. все таки в raw mode при OOK модуляции есть возможность получить на выходе si4432 ожидаемые импульсы?

 

В передатчике Visonic MCT-302 сильно не разбирался, но там что то на 2-х транзисторах. Подозреваю что OOK. Но может конечно ошибаюсь. Полосу ставил 300 кГц. А как сделать синхру, если в исходном сигнале нет преамбулы, сразу начинается полезный сигнал? Вообще эти датчики древние, и формат сообщения наверное делался еще под простые приемники без учета возможностей синхронизации. Смотрел как то cc1101 там вообще нет раздельного выбора ASK или OOK, а есть один выбор ASK/OOK.

я полосу пробовал от узкой до максимально широкой (620Khz) особой разницы вы выводе не заметил.

датчик собран на базе pic16f716

 

 

Вообще то у данных датчиков нет преамбулы 00000001 . Есть просто включение несущьки на 4000 мкс. что видим на выходе приемника как низкий уровень. Каждый бит передается за 1000...1700 мкс. Длительность зависит от напряжения батарейки (320 мкс у автора это как раз примерно 1/3 от 1000 при макс. напряжении 3В). Поэтому никакая синхронизация в принципе не возможна. ASK это более широкое понятие оно включает в себя OOK и M-ASK (см. вики). Если нужен приемник ASK/OOK применяйте например СС1101 или Micrel MICRF211.

полученный сигнал все же в OOK и можно разбирать сигнал по кол-ву 0 и 1, или все же для каждого уровня считать свою длительность?

есть ли смысл дальше биться за результат с этим трансивером? я заказал уже cc1101, пока дойдет еще есть время помучить si4432

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю что ручками придется разбирать сигнал с любым приемником. С1101 преимуществ не даст наверное. Если в документации написано OOK или ASK/OOK, то это скорее всего в любом случае OOK. Вот в микреле нет упоминаний про OOK - только ASK. До SX1231 делал с ним. Разницы в чувствительности не заметил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отсутствие преамбулы значительно ухудшает качество приема трансиверами с автоматами-модемами. даже если перевести в режим raw. Проверено. наилучший выигрыш дают простые приемники, например, серии SYN, клонирующие Micrel. Они иногда даже исправляют микреловские ошибки. И полная обработка контроллером. На скорости 8000 с ООК получали -119дБ инструментальную чувствительность. И это без преамбулы! Причем анализировался код сразу трех протоколов, несовместимых между собой.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

простые приемники, например, серии SYN, клонирующие Micrel

 

а какая модель? не смог найти радиомодулей SYN ни в наших магазинах ни на зарубежных площадках (ebay, aliexpress)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...