Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: si4432 raw mode
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Rf & Microwave Design
NovOleg
Добрый день.

Решил проапгрейдить свой контроллер умного дома на базе 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мкс) .
На настройку каких регистров стоит обратить внимание в первую очередь?
Aner
Так какая модуляция у датчиков и какие скорости передачи. Сколько байт в преамбуле, что с синхрой? Как пакет заканчивается?
NovOleg
Цитата(Aner @ Feb 6 2015, 18:30) *
Так какая модуляция у датчиков и какие скорости передачи. Сколько байт в преамбуле, что с синхрой? Как пакет заканчивается?


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

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

судя по всему ООК не подходит для разбора сообщения тк импульсы имеет разную длительность, и нужно использовать режим unmodulated?
но для определения преамбулы выбранный режим OOK или unmodulated играть разницы не должен. или я не прав?
Aner
Для si4432 только FSK, GFSK, and OOK никаких ASK нет. OOK вас не устроит тоже, поскольку он переродится в режим модуляции AM, при передаче любых данных.
R_vlad
Цитата(Aner @ Feb 8 2015, 20:33) *
Для si4432 только FSK, GFSK, and OOK никаких ASK нет. OOK вас не устроит тоже, поскольку он переродится в режим модуляции AM, при передаче любых данных.

Отлично подходит ООК. Только надо отключить синхронизацию. А всю обработку полностью провести к контроллере. Делал приемник данных датчиков только на SX1231 и MRF89(49). Не думаю что большая разница.
Aner
Для поигаться может и да, а так нет конечно. Потеря чувствительности, более широкая полоса нужна. SX1231 и MRF89(49) по другому устроены, их чувствительность в ООК ещё хуже. Да и как без синхры?, кривота однако. Температура изменилась, частота уплыла и запросто прием упал на 30dB. Надо это?
Понятно, если использовать только приемный тракт из si4432, можно на порты вывести данные, обойдя внутреннюю пакетную структуру. И обработку делать на контроллере. Этот режим они оставили после тестов чипов на первых ревизиях. Может кому и нужен такой режим для собственного модема, пакета, криптовки. Тут требования более повышенные к темп стаб кварца.
R_vlad
В передатчике Visonic MCT-302 сильно не разбирался, но там что то на 2-х транзисторах. Подозреваю что OOK. Но может конечно ошибаюсь. Полосу ставил 300 кГц. А как сделать синхру, если в исходном сигнале нет преамбулы, сразу начинается полезный сигнал? Вообще эти датчики древние, и формат сообщения наверное делался еще под простые приемники без учета возможностей синхронизации. Смотрел как то cc1101 там вообще нет раздельного выбора ASK или OOK, а есть один выбор ASK/OOK.
Owl_
Цитата(NovOleg @ Feb 6 2015, 17:59) *
Приобрел на замену трансивер si4432. Оказалось что настроить его не так уж просто.

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


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

Цитата(Owl_ @ Feb 9 2015, 10:59) *
Может есть возможность поставить более подходящий в данной ситуации трансивер? Si4432 на сайте производителя стоит как "не рекомендованный к применению", а вот пришедший на смену новый Si446x имеет возможность задать нестандартную преамбулу.

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




Цитата(R_vlad @ Feb 9 2015, 07:45) *
Отлично подходит ООК. Только надо отключить синхронизацию. А всю обработку полностью провести к контроллере. Делал приемник данных датчиков только на SX1231 и MRF89(49). Не думаю что большая разница.

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

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

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


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

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

R_vlad
Я думаю что ручками придется разбирать сигнал с любым приемником. С1101 преимуществ не даст наверное. Если в документации написано OOK или ASK/OOK, то это скорее всего в любом случае OOK. Вот в микреле нет упоминаний про OOK - только ASK. До SX1231 делал с ним. Разницы в чувствительности не заметил.
SergNK
Отсутствие преамбулы значительно ухудшает качество приема трансиверами с автоматами-модемами. даже если перевести в режим raw. Проверено. наилучший выигрыш дают простые приемники, например, серии SYN, клонирующие Micrel. Они иногда даже исправляют микреловские ошибки. И полная обработка контроллером. На скорости 8000 с ООК получали -119дБ инструментальную чувствительность. И это без преамбулы! Причем анализировался код сразу трех протоколов, несовместимых между собой.
NovOleg
Цитата(SergNK @ Mar 3 2015, 22:49) *
простые приемники, например, серии SYN, клонирующие Micrel


а какая модель? не смог найти радиомодулей SYN ни в наших магазинах ни на зарубежных площадках (ebay, aliexpress)?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.