Одноканальный шлюз обнаруживает только первое сообщение
Мой шлюз использует конфигурацию Raspi и RFM95 и работает на частоте 915 МГц. Я использую одноканальный код пересылки пакетов от tfelkamp ( https://github.com/tftelkamp/single_chan_pkt_fwd).
Мой шлюз только обнаруживает первое полученное сообщение и впоследствии игнорирует все сообщения. Он все еще подключен к серверу TTN, но больше не получает сообщений.
Кто-нибудь может объяснить, что может быть причиной этого? Возможно, потому что RFM95 спит или код больше не пересылает сообщение от трансивера.
Спасибо
3 ответа
У меня возникла похожая проблема. Обратите внимание, что ваш отправитель использует разные каналы, но начинается с канала (0). Это первое успешное сообщение, которое вы получите. Ваш одноканальный приемник просто способен принимать канал (0). Здесь есть обходной путь для вашего отправителя, объясненный здесь
Похоже, ваш передатчик отправляет сообщения с использованием скачкообразной перестройки частоты, в то время как ваш приемник не обрабатывает это правильно (или наоборот).
Определение скачкообразной перестройки частоты, приведенное в главе 4.1.1.8 таблицы технических характеристик Semtech SX1272:
Расширяемый спектр со скачкообразной перестройкой частоты (FHSS) обычно используется, когда длительность одного пакета может превышать нормативные требования, касающиеся максимально допустимого времени задержки канала. Это особенно заметно в случае работы в США, где диапазон ISM от 902 до 928 МГц обеспечивает работу со скачкообразной перестройкой частоты. [...]
Если вы используете библиотеку LMIC-Arduino для своего узла, то да, по умолчанию она передает в диапазоне, а шлюз single_chan_pkt_fwd принимает только на той частоте, которую вы указали в источнике global_conf.json или.cpp (в зависимости от вашего выбранная библиотека).
Предполагая, что вы используете библиотеку arduino-lmic, внесите изменения / дополнения, упомянутые в этом сообщении на форуме TTN, связанном с Райнером, и я тоже столкнулся с ним.
Кроме того... вы найдете это дальше в теме: в src > lmic > lmic.c
отредактируйте следующее:
void LMIC_disableChannel (u1_t channel) {
if( channel < 72+MAX_XCHANNELS )
//LMIC.channelMap[channel>>4] &= ~(1<<(channel&0xF)); // comment this one
LMIC.channelMap[channel/16] &= ~(1<<(channel&0xF)); // add this one
}
Затем выберите частоту на канале 0 и установите ее для узла и перенаправителя пакетов. Вот отрывок таблицы с этой страницы. Я пошел с 902300000, и он работает нормально.
"freq": 902300000,
"spread_factor": 7,