Как стать автором
Обновить

Открытый проект беспроводной системы сбора данных на модулях 433 МГЦ

Время на прочтение 18 мин
Количество просмотров 14K

Недавно наткнулся на эту статью. Речь идет об экстремально дешевых радио модулях. В целом все правильно. И захотелось дальше развить эту тему добавив некий самодостаточный, практичный, без магических библиотек и неявных зависимостей, как говорится, аппноут.

Данный проект или его части был успешно применен в авторефрижераторах, в системе диагностики и тайминга на соревнованиях по гребле, в сети холодильников супермаркетов, пультах дистанционного управления и других местах. Часто из-за своей простоты он паялся на макетных платах поэтому микроконтроллер в DIP корпусе и приложены усилия для минимизации количества деталей.

Состав, назначение и характеристики системы

Радиосеть сбора данных физически состоит из некоторого числа радио сенсоров с подключенными к ним внешними датчиками и одного центрального приемника. Радио сенсоры периодически высылают пакеты данных, которые принимаются приемником. Приемник может выдавать управляющие сигналы на внешние исполнительные устройства в соответствии с сигналами от радио сенсоров или передавать накопленную с радио сенсоров информацию по проводному последовательному интерфейсу с протоколом MODBUS по запросу с других устройств или компьютеров.

Описание радио сенсора

Схема радио сенсора
Схема радио сенсора

Микроконтроллер DD1 программируется на плате через разъем X2. К разъему X3 может непосредственно подключаться PC через интерфейс RS232. Большинство настольных компьютеров будет работоспособно с такой схемой. Кнопки BT1 и BT2 подают сигнал на цифровые входы радио сенсора. Контакты 23...28 микроконтроллера DD1 служат аналоговыми входами. Перемычками J1...J3 задаётся номер радио сенсора в сети. Для корректной работы все радио сенсоры в сети должны иметь разные номера. Светодиод VD4 зажигается в моменты передачи радио пакетов. В режиме настройки параметров светодиод непрерывно мигает. Радио сенсор работает от кварцевого резонатора частотой 16 МГц. Такая частота выбрана для технологического удобства. Для улучшения энергетических параметров радио сенсора частота кварцевого резонатора должна быть уменьшена. Этого можно добиться небольшими изменениями в программе. Без значительных трудностей с профайлингом программы на C можно уменьшить частоту до 4 МГц.

Принцип работы радио сенсора

Радио сенсор построен на основе микроконтроллера ATMEGA8 и модуля передатчика TX433N.  К радио сенсору может быть подключена локальная проводная сеть датчиков с интерфейсом 1-Wire. В данной версии радио сенсора на 1-Wire шину подключаются температурные датчики DS18S20. Это цифровые датчики с точностью ±0.5°C и диапазоном измерения -55°C to +125°C, производимые фирмой Maxim Integrated Products, Inc. Шина 1-Wire может объединять множество датчиков, образуя сеть. Программа радио сенсора в момент его включения способна идентифицировать все 1-Wire устройства, подключенные в эту шину.  Но в текущей версии обрабатываются данные только c температурных датчиков. В общем случае для 1-Wire шины разработано большое количество разнообразных устройств, включающих: аналогово-цифровые преобразователи, цифровые потенциометры, часы реального временя, различные типы памяти и известные под маркой iButton® электронные ключи.

Радио сенсор способен также измерять и передавать значение напряжения со встроенных аналоговых входов. Аналоговые входы рассчитаны на диапазон входного напряжения 0...10 В и входное сопротивление не менее 10 КОм. Аналоговые входы имеют разрешение 10 бит и могут использоваться для подключения датчиков с аналоговыми и цифровыми выходами по напряжению. Для обеспечения точности измерения радио сенсор снабжен функцией калибровки аналоговых входов.  

Для универсальности приложений радио сенсоры выполнены так, что могут питаться от внешнего источника напряжения или от автономного источника напряжением 3.6...5 В с очень малым потреблением энергии.

Радио сенсоры считывают информацию с температурных датчиков и аналоговых входов в течение короткого периода через определенные промежутки времени, а все остальное время находятся в выключенном состоянии с целью экономии энергии автономного источника напряжения. Время выхода из выключенного состояния определяется работой внутреннего сторожевого таймера микроконтроллера радио сенсора.

Поскольку в радиосети может работать одновременно несколько передатчиков, то во избежание конфликтов связанных с одновременной синхронной передачей пакетов разными радио сенсорами применен способ случайного генерирования длительности пауз между периодами активности в радио сенсорах. Для этого в радио сенсорах применяется программный генератор случайных чисел (ГСЧ). Разное время включения радио сенсоров обеспечивает достаточно хорошую рандомизацию ГСЧ, но для усиления рандомизации применен способ формирования начальной комбинации ГСЧ на основе уникального кода первого обнаруженного датчика DS18S20 в сети 1-Wire.

Для сосуществования сети радио сенсоров вблизи других аналогичных сетей (например, в многоквартирном доме) реализовано кодирование передаваемых пакетов на основе 4-байтного ключа с помощью криптоалгоритма RC4. Приемник другой радиосети, не зная ключа не может случайно или намерено принять и расшифровать пакеты выдаваемые радио сенсорами соседней сети.

Целостность передаваемых пакетов контролируется с помощью контрольной суммы, а для уменьшения вероятности ложного приема пакетов применено специальное кодирование преамбулы пакета. 

Радио сенсоры в сети идентифицируются по своим номерам, которые передаются в каждом пакете. Номер задаётся перемычками на плате радио сенсора. В сети может быть до 8-и радио сенсоров.

Для мгновенной активизации в ответ на некоторые события радио сенсоры снабжены двумя цифровыми входными линиями. При спаде сигнала на какой-либо из цифровых линий ниже 1.5 В радио сенсоры входят в рабочее состояние и сразу же начинают передачу сигнала с информацией о состоянии этих линий. Центральный приемник в ответ на принятое сообщение без задержек способен дать соответствующий сигнал внешнему исполнительному устройству. Используя эту возможность, можно построить, например, удобную систему управления освещением на беспроводных автономных выключателях.

У радио сенсора ряд параметров может быть изменен с компьютера или другого устройства через встроенный последовательный интерфейс. Параметры можно изменить временно только в ОЗУ микроконтроллера радио сенсора до следующего включения, либо сделать новые параметры постоянными с сохранением их в EEPROM микроконтроллера.

При редактировании параметров применяется простой протокол командной строки поддерживаемый всеми программами для PC типа HyperTerminal. 

При включении радио сенсора программа микроконтроллера проверяет целостность данных в EEPROM с помощью механизма контрольной суммы и в случае сбоя возвращает параметры в состояние по умолчанию.

Технические характеристики радио сенсора версии 1.0:

  • Напряжение питания номинальное: 5 В

  • Ток потребления в активном режиме: 27 мА

  • Ток потребления в пассивном режиме: 64 мкА

  • Выходная мощность радиопередатчика: 10 мВт

  • Частота работы радиопередатчика: 433.92 МГц

  • Пределы регулировки скорости передачи: 100...2000 бит/с

  • Тип кодирования при передаче радио пакетов: Манчестер

  • Длина пакетов (фиксированная): 11 байт

  • Длина преамбулы: 2 байта

  • Максимальное количество устройств на шине 1-Wire: 4

  • Количество аналоговых входов: 6

  • Диапазон напряжения на аналоговых входах: 0...10 В

  • Входное сопротивление аналоговых входов: 10 кОм

  • Скорость работы последовательного интерфейса: 115200 бит/с

  • Формат данных последовательного интерфейса:8, n,1

  • Диапазон номеров радио сенсоров: 0...7

  • Температура эксплуатации (оценочно): -20...+50 °C

Регулируемые параметры радио сенсора и их значения по умолчанию

Мнемоника в протоколе

Значение по умолчанию

Описание

WDTPER

7

Установка пред-делителя сторожевого таймера (WDT) микроконтроллера ATMEGA8. Определяет с какой частотой происходит активизация микроконтроллера.
Возможные значения задания периода активизации:
0: 16 мс,1: 32 мс, 2: 65 мс, 3: 0.13 с, 4: 0.26 с, 5: 0.52 с, 6: 1 с, 7: 2.1 с

WDTDVC

2

Определяет какая по счету активизация сторожевого таймера вызовет процедуру считывания датчиков и посылки радио пакета. После выполнения процедуры считывания-отправки счет начинается заново. Допускаются значения от 0 до 255.

WDTDVV

0

Максимальная величина вариации. Вариация — это случайное целое число, добавляемое к WDTDVC после каждой активизации процедуры считывания-отправки при расчете реального числа активизаций WDT до следующей процедуры считывания-отправки. Допускаются значения от 0 до 255.

BTRATE

16000

Величина, определяющая скорость передачи радио пакетов. Равна числу тактов осциллятора, формирующих интервал в половину бита. В версии 1.0 частота осциллятора равна 16 МГц. Допускаются значения от 4000 до 65535. Величина 16000 означает скорость передачи 500 бит/с.

SFLAGS

0

Системные флаги. При представлении в двоичном виде начиная счет справа налево:
0-й бит – единица означает отключение посылки информации о состоянии аналоговых входов
1-й бит – единица означает отключение посылки информации с температурных датчиков
3-й бит – единица означает отключение реакции на цифровые входы
4-й бит – указывает, что вместо кода состояния 1-го аналогового канала будет передаваться калибровочная константа АЦП

PREAMB

0xD9C2

Код преамбулы. Изменением кода преамбулы можно усилить защиту от влияния соседних сетей. Изменять можно только на специальные рассчитанные значения

REFCOD

999

Калибровочная константа АЦП

KEYCOD

999

Ключ шифрования для алгоритма RC4. Должен быть идентичен ключу приемника

При редактировании параметров радио сенсора через терминал компьютера можно использовать следующие команды (Все команды должны заканчиваться нажатием клавиши “ENTER”):

Символы команды

Описание действия

[Мнемоника]= [новое значение]

Редактирование параметра. Новое значение может быть введено в десятичном или шестнадцатеричном виде (с префиксом 0x)

“?”

Вызов значений всех рабочих параметров из RAM

“+”

Сохранить параметры в EEPROM из RAM

“-“

Восстановить параметры из EEPROM в RAM

“*”

Восстановить параметры по умолчанию в RAM

“#”

Показать номер радио сенсора

“.”

Выйти из режима редактирования

“^”

Показать результаты измерения всех аналоговых каналов

Калибровка АЦП радио сенсора заключается в том, что в его специальный параметр REFCOD записывается код преобразования АЦП для известного входного напряжения.

Например, можно подать на аналоговый вход 1 радио сенсора напряжение 2.5 В. Определить код АЦП можно по команде “^”. Код первого входа будет в первой строчке списка. Необходимо этот код записать в параметр REFCOD.  Далее этот код может быть передан в пакете с данными на центральный приемник. (см. параметр SFLAGS). Таким образом устройства принимающие данные от радио сенсоров могут провести корректировку полученных значений в соответствии с калибровочным кодом каждого радио сенсора.

Оптимизация энергопотребления радио сенсора.

Для энергосбережения микроконтроллер радио сенсора использует возможность выхода из выключенного состояния по сигналу от сторожевого таймера (WDT).

После подачи питания микроконтроллер выполнив начальные инициализации и отправив первые пакеты с данными входит в режим Power-down. В этом режиме прекращается работа кварцевого генератора и останавливается тактирование внутреннего процессора и периферии, но продолжает работать внутренний RC генератор WDT. Генератор WDT потребляет некоторый ток, который является доминирующим током в потреблении радио сенсора в выключенном состоянии.

Результат измерений тока потребления радио сенсора в выключенном состоянии
Результат измерений тока потребления радио сенсора в выключенном состоянии

Через некоторое время WDT выдает сигнал включающий кварцевый генератор и активизирующий процессор. Для стабилизации генератора схемой микроконтроллера делается задержка около 5 мс. В это время ток потребления радио сенсора значительно увеличивается.

Результат измерений тока потребления радио сенсора в момент активизации WDT
Результат измерений тока потребления радио сенсора в момент активизации WDT

Чаще всего радио сенсор должен находиться в выключенном режиме гораздо дольше чем период следования сигналов активизации от WDT. Для этого в программе реализован счетчик включений по достижении определенного значения, которого программа инициирует рабочий цикл радио сенсора, а иначе программа сразу же переводит микроконтроллер опять в режим Power-down. Контрольное значение счетчика пересчитывается программой по определенному алгоритму после каждого рабочего цикла.

Результат измерений тока потребления радио сенсора в рабочем цикле
Результат измерений тока потребления радио сенсора в рабочем цикле

Длительность рабочего цикла радио сенсора, в течение которого он считывает информацию с температурных датчиков, аналоговых входов и посылает радио пакеты в основном зависит от количества и скорости передачи радио пакетов. Весь радио пакет имеет длину 104 бита. Для каждого температурного датчика посылается отдельный пакет, также отдельный пакет посылается с информацией об аналоговых входах.

Установкой рабочих параметров можно увеличить скорость передачи пакетов и уменьшить их количество. Но увеличивать скорость выше 1000 бит/с не рекомендуется из-за возможного ухудшения качества связи. По экспериментальным данным при скорости 500 бит/с и отправке одного пакета длительность рабочего цикла равнялась 0.215 сек.

Вклад температурных датчиков DS18S20 в ток потребления в выключенном состоянии составляет не более 2 мкА, а в активном режиме не более 2 мА в течение незначительной доли времени рабочего цикла.

Модуль передатчика в выключенном состоянии практически не вносит никакого влияния, а в режиме передачи потребляет 5...8 мА при напряжении питания 3.6..5 В соответственно. Опираясь на представленные данные, можно легко вычислить необходимую емкость элемента питания для автономной работы радио сенсора заданное время. Так, например, при напряжении питания 3.6 В и активизации радио сенсора каждые 30 сек. на 0.215 сек емкости литиевой батарей фирмы Tadiran размера AA будет достаточно для непрерывной работы радио сенсора в течение 555 дней.

Еще лучшие энергетические параметры может дать снижение частоты кварцевого резонатора до 4 МГц. Снижение частоты ниже 4 МГц не приведет к существенной экономии потребления поскольку здесь уже будет доминировать ток радио передатчика

Описание центрального приемника

Схема центрального приемника
Схема центрального приемника

Центральный приемник построен на основе приемного модуля RX433. Модуль RX433 построен по 2-х транзисторной сверхрегенеративной схеме с компараторам на основе операционного усилителя LM358. Чувствительность модуля равна -106 dBm, это равно приблизительно 1 мкВ при 50 Ом антенне.  Полоса захвата сигнала равна 1 МГц. Экспериментальные измерения показали, что модуль способен принимать данные со скоростью до 10 кбит/c.

Широкая полоса захвата и работа на частоте сигнала широко используемой различными системами охраны и телеуправления приводит к тому, что на выходе приемного модуля постоянно присутствует непрерывно изменяющийся цифровой сигнал.

Микроконтроллер DD1 выполняет задачу анализа цифрового сигнала с приемного модуля, обнаружение в нем радио пакетов от радио сенсоров, декодирование радио пакетов и сохранение информации из них во внутренней памяти.

В случае прихода радио пакетов с информацией от цифровых входов радио сенсоров микроконтроллер переключает состояние ключей VT2, VT3 в случае, если в радио пакете выставлен в единицу бит первого и второго входов соответственно (соответствует нажатию кнопок BT1 и BT2 на макете радио сенсора).

Светодиод VD1 зажигается в момент приема и обработки принятого радио пакета. 

К разъему X3 подключается внешнее устройство через интерфейс RS232 для съема данных с центрального приемника по протоколу MODBUS в режиме ASCII. Также к нему может подключаться компьютер для настройки рабочих параметров.

Микроконтроллер центрального приемника так же, как и микроконтроллер радио сенсора программируется на плате через разъем X2

Принцип работы центарального приемника

Задача центрального приемника (ЦП) - непрерывно вести прием поступающих по эфиру от удаленных радио сенсоров пакетов, размещение информационного содержания из них в своей внутренней памяти и по запросу от внешних устройств выдача накопленной информации по последовательному интерфейсу. В случае поступления пакетов с информацией о состоянии цифровых входов радио сенсоров ЦП немедленно переключает состояние своих двух соответствующих цифровых выходов.

ЦП снабжен алфавитно-цифровым ЖК-индикатором. В данной версии приемника индикатор используется для тестирования.  

ЦП взаимодействует с внешними устройствами по сокращенной версии протокола MODBUS в качестве подчиненного устройства в режиме ASCII.

Как и радио сенсор ЦП позволяет модифицировать некоторые свои рабочие параметры через последовательный интерфейс с компьютера. Рабочие параметры также имеют значения по умолчанию, восстанавливаемые в случае сбоев во внутренней памяти EEPROM микроконтроллера.

При нормальной работе ЦП по последовательному интерфейсу обрабатывает пакеты MODBUS, в случае поступления символа ESC (шестнадцатеричное число 0x1B), например, из программы HyperTerminal, ЦП переходит в режим редактирования параметров. Выход из режима также по приходу символа ESC.

ЦП обрабатывает только одну функцию протокола – 03 (чтение 2-байтных регистров).

Структура принимаемого ЦП пакета по протоколу MODBUS в режиме ASCII
Структура принимаемого ЦП пакета по протоколу MODBUS в режиме ASCII
Интерпретация полей блока данных функции 3
Интерпретация полей блока данных функции 3

При запросе данных из ЦП внешнее устройство должно использовать функцию 3 протокола MODBUS. С помощью этой функции устройство может прочитать содержимое 3-х массивов: массива идентификаторов температурных датчиков DS18S20, массива значений температуры с температурных датчиков, массива состояний аналоговых входов с радио сенсоров.

Интерпретация полей блока данных при запросе выполнения функции 3 внешним устройством показана на рисунке выше. Первые два символа кодируют тип данных, т. е. элемент какого из 3-х массивов требуется прочитать. Символы 3-й и 4-й задают 1-й и 2-й индексы двумерного массива с данными. 1-й индекс задает номер радио сенсора, 2-й – номер температурного датчика или номер аналогового входа. Индексация начинается с нуля.

Принята следующая кодировка поля типа данных:

  • 1 - идентификаторы температурных датчиков

  • 2 - значения температуры с температурных датчиков

  • 3 - значения с аналоговых входов (АЦП) удаленных датчиков

Поле “количество читаемых регистров” должно иметь значение 1 при чтении температуры и значений АЦП поскольку они выражаются 2-байтными величинами значение 3 при чтении идентификаторов так как они состоят из 6-и байт.

Температура представляется в оригинальном формате, в таком, в каком она передается температурными датчиками с младшим байтом впереди.

Значения АЦП представляются также в формате с младшим байтом впереди.

Идентификаторы представлены 6-ю байтами вместо 8-и, которые обычно выдаются 1-Wire устройствами. Отбрасываются кода семейства устройств и контрольная сумма. 

  Пример команды запроса чтения внешним устройством значения 1-го аналогового входа 0-го радио сенсора:

:010303000001B8

Регулируемые параметры ЦП и их значения по умолчанию:

Мнемоника в протоколе

Значение по умолчанию

Описание

BTRATE

16000

Величина, определяющая скорость передачи радио пакетов. Равна числу тактов осциллятора, формирующих интервал в половину бита. В версии 1.0 частота осциллятора равна 16 МГц
Допускаются значения от 4000 до 65535. Величина 16000 означает скорость передачи 500 бит/с

PREAMB

0xD9C2

Код преамбулы. Изменением кода преамбулы можно усилить защиту от влияния соседних сетей. Изменять можно только на специальные рассчитанные значения

KEYCOD

999

Ключ шифрования для алгоритма RC4. Должен быть идентичен ключу приемника

DEVADR

1

Адрес устройства в протоколе MODBUS

При редактировании параметров центрального приемника через терминал компьютера можно использовать следующие команды (Все команды должны заканчиваться нажатием клавиши “ENTER”):

Символы команды

Описание действия

[Мнемоника]= [новое значение]

Редактирование параметра. Новое значение может быть введено в десятичном или шестнадцатеричном виде (с префиксом 0x)

“?”

Вызов значений всех рабочих параметров из RAM

“+”

Сохранить параметры в EEPROM из RAM

“-“

Восстановить параметры из EEPROM в RAM

“*”

Восстановить параметры по умолчанию в RAM

“.”

Выйти из режима редактирования

Программное обеспечение и программирование микроконтроллеров

Проекты программ радио сенсора и центрального приемника, находящиеся в репозитарии, написаны на С для среды разработки IAR Embedded Workbench.

Для бесплатного скачивания на сайте фирмы IAR помимо прочих доступна 30-дневная оценочная версия среды разработки IAR Embedded Workbench для AVR. Ее возможностей хватает чтобы скомпилировать приведенные проекты

В среде разработки IAR используются файлы рабочего пространства проектов с расширением eww при загрузке проектов. Для радио сенсора и центрального приемника используются разные файлы рабочего пространства, но в свойствах проекта у них одинаково должны быть выставлены следующие опции:

  • General options
    o   Processor configuration = ATmega8
    o   Memory model = small
    o   System configuration = no use dialog
    o   Library Configuration = CLIB
    o   Printf formatter = medium
    o   Scanf formatter = medium

  • C/C++ compiler: o   Optimization = Size, High, all optimizations enabled

  • Linker
    o   Output format = Other, Intel Standart
    o   Linker command file = [текущая директория проекта] \lnkm8s.xcl

После компиляции в поддиректории проекта debug\exe\ появляется HEX-файл Proj.a90 с образом исполняемой программы для загрузки в микроконтроллер.

Для программирования микроконтроллеров используется программа и очень простое аппаратное приспособление с сайта http://www.LancOS.com.

При программировании необходимо внимательно следить за установкой конфигурационных бит микроконтроллера. Они должны быть установлены так как показано на скриншоте. Иначе микроконтроллер в схеме может оказаться неработоспособным. Биты секретности BootLock12...BootLock01 и Lock2, Lock1 могут выставляться по усмотрению. Установки конфигурационных бит в данной версии радио сенсора и центрального приемника одинаковые.

Внешний вид программы PonyProg и панель установки конфигурационных бит
Внешний вид программы PonyProg и панель установки конфигурационных бит

Как устроено декодиривание радио протокола

Не сложно догадаться что ценой за простоту модулей передатчика и приемника  (TX433N, RX433) является сильная зашумленность принимаемого сигнала. Специальный радио протокол разработанный для этого проекта позволяет ослабить влияние некоторых неприятностей сопутствующих приему такого сигнала.

Структура радио протокола базируется на нескольких основных идеях:

  • пакетная передача с фиксированной длиной.

  • обнаружение пакетов и синхронизация на основе кодированной преамбулы.

  • манчестерское кодирование информационных битов.

  • дополнительная выборка (oversampling).

  • точно известная скорость передачи данных.

Фиксированная длина пакетов и известная скорость передачи упрощают структуру декодера и повышают вероятность декодирования данных.

Манчестерское кодирование удаляет из сигнала постоянную составляющую, что улучшает работу компаратора  приемного модуля. При таком кодировании единица представляется спадом сигнала, а ноль подъемом. Спад или подъем располагаются по середине интервала передачи бита, а в начале интервала производиться переключение уровня сигнала так чтобы через пол бита можно было выполнить спад или подъем.

 Кодированная преамбула позволяет синхронизировать прием и повышает вероятность обнаружения пакетов данных искаженных помехами одновременно снижая вероятность ложного обнаружения пакетов при их отсутствии в условиях непрерывного шумового потока. Преамбула использует NRZ кодировку и передается с вдвое большей скоростью чем информационные биты. Она специально вычислена на основе ряда критериев один из которых - это минимальные побочные максимумы автокорреляционной функции, а другой - это минимальный максимум кросс корреляции на всем множестве возможных двоичных кодов с манчестерским кодированием. Вычисления для 16-битной преамбулы легко выполнить прямым перебором ввиду короткой битовой длины. Здесь дан пример такой утилиты

Дополнительная выборка означает, что декодер принимает отсчеты с гораздо большей частотой чем передаются биты информации. Это позволяет применить корреляционные методы при декодировании битов, таким образом повышая помехоустойчивость приема.

Диаграмма поясняющая принцип действия декодера радио протокола
Диаграмма поясняющая принцип действия декодера радио протокола

На рисунке выше изображена диаграмма, поясняющая принцип действия декодера радио протокола. Зеленым цветом обозначен цифровой поток исходящий из модуля приемника RX433. Микроконтроллер ЦП выполняет выборку двоичного сигнала из этого потока со скоростью в 8 раз превышающую скорость передачи битов. Таким образом в течении передачи одного бита микроконтроллер принимает 8 отсчетов сигнала, а в течении времени передачи преамбулы микроконтроллер принимает 64 отсчета.

На начальном этапе в микроконтроллере ЦП непрерывно выполняется процедура корреляции входного потока отсчетов с 64-битным шаблоном преамбулы. Для двоичного сигнала это сумма значений битов получившихся после побитной операции сложения по модулю 2 текущего буфера входных отсчетов и битов шаблона.

В момент, когда значение корреляции достигает некоторой контрольной границы микроконтроллер принимает решение о начале приема битов данных и запускает процедуру вычисления корреляции с шаблоном бита равного 1. В качестве привязки для отсчета битовых интервалов берется точка максимума на корреляционной функции преамбулы после того как она превысила контрольную границу. В конце каждого битового интервала, через каждые 8-мь отсчетов  микроконтроллер принимает решение о значении принятого бита. Корреляция больше  3 означает прием единицы, в обратном случае – нуля. 

Как видно при приеме бита возможно искажение значений до 3 отсчетов из 8 без возникновения ошибки. Относительная доля искаженных значений отсчетов при приеме преамбуле должна быть меньше поскольку она служит еще и  источником синхронизации. В связи с этим оправдано выбирать граничное значение детектирования преамбулы на 5-6 единиц меньше значения ее пика автокорреляции т.е. в данном случае 58-59.  

Моделирование декодера радио протокола

Для количественной оценки преимуществ, которые дает описанный выше алгоритм работы декодера, была разработана модель в пакете моделирования SIMULINK для среды MATLAB.  Файлы модели можно найти в репозитарии.

Модель состоит из трех основных составляющих: модели передатчика, модели канала передачи и модели приемника.

Модель передатчика формирует поток двоичных данных по формату повторяющий поток излучаемый реальным передатчиком. Модель передатчика позволяет легко варьировать такие параметры как количество байт в пакете, количество формируемых пакетов до завершения работы модели, скорость передачи, код преамбулы. Перечисленные параметры можно редактировать в рабочем пространстве (Workspace) MATLAB.  Модель может выдавать пакеты как со случайными данными так и с определенными данными заданными в ручную в подсистеме генератора пакетов.

Поток данных модели передатчика вместе со служебными сигналами и контрольными данными организуется в две шины и передаётся к приемнику проходя модель канала передачи.

Канал передачи имитирует шум наблюдающийся на выходе приемника в паузах и во время приема данных.

Модель приемника восстанавливает из входного двоичного потока пакет данных и выводит его на дисплей рядом с панелью отображающей контрольный пакет. Попутно в модели приемника производиться сравнение декодированных и контрольных данных и выводиться на дисплей статистика процесса декодирования. Наиболее важными параметрами в статистике являться количество пропущенных пакетов и количество поврежденных пакетов при заданном общем количестве переданных пакетов.

В модели приемника самым интересным регулируемым параметром является коэффициент дополнительной выборки (oversampling), обозначаемый как переменная k в рабочем пространстве MATLAB. Этот коэффициент означает количество отсчетов  в приемнике приходящихся на один бит данных. От его величины в наибольшей степени  зависит помехоустойчивость приемника. Поскольку от этого коэффициента зависят вектора (в терминологии MATLAB) шаблонов преамбулы и бита данных а также границы принятия решений, то его непосредственно менять в рабочем пространстве MATLAB нежелательно, для этого нужно поменять соответствующее значение в файле “initmod.m” в директории файлов модели. Указанный файл выполняется всегда при загрузке модели. Он создает в рабочем пространстве MATLAB переменные, и рассчитывает зависимые параметры. После изменении в нем коэффициента дополнительной выборки в командной строке MATLAB нужно выполнить команду initmod.

Структура модели приемника не повторяет структуру программы в микроконтроллере центрального модуля. Модель приемника воспроизводит только алгоритм обработки данных в реальном приемнике, и при этом дает очень важные результаты, влияющие на принятие решений по выбору того или иного варианта радио протокола.

Для запуска модели нужно сделать текущей директорию с файлами модели и в командной строке MATLAB ввести команду “model”.

Модель в работе
Модель в работе

Репозитарий проекта находится здесь - https://github.com/Indemsys/Radio_sensors_network_433Mhz

Дополнительные источники информации:

Теги:
Хабы:
+22
Комментарии 17
Комментарии Комментарии 17

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн