Пояснительная записка - копия (1210426), страница 5
Текст из файла (страница 5)
Величина RSSI измеряется в дБм и определяется по формуле передачи Фрииса (2.3):
, (2.3)
где Gt – коэффициент усиления передающей антенны;
Gr – коэффициент усиления приёмной антенны;
Pt – мощность передающей антенны;
Pr – мощность принимаемая антенной;
R – расстояние между антеннами в метрах;
λ – длина волны в метрах, соответствующая частоте передачи.
В результате измерения уровня сигнала, с помощью математической обработки получается зависимость уровня принятого сигнала от расстояния до источника (рисунок 2.5).
Рисунок 2.5 – Метод позиционирования Received signal
strength indicator
Точность данного метода в большой степени зависит от точности построения модели распространения сигнала.
Простейшей моделью является модель прямого распространения, учитывающая только затухание сигнала (2.4):
, (2.4)
где P(r)дБм – Значение RSS на расстоянии r,
P(r0)дБм – Значение RSS на заданном расстоянии r0,
d – Коэффициент затухания сигнала при распространении в среде, безразмерная величина (для воздуха d=2),
ε – Добавка, обусловленная внешними факторами и имеющая, случайный характер. Как правило, ε предполагается нормально распределенной величиной.
Однако этому методу присущ ряд существенных ограничений, поскольку уровень сигнала является весьма изменчивым параметром из-за влияния следующих факторов:
-
быстрые и медленные замирания сигналов на трассе из-за изменения условий распространения радиоволн;
-
многолучевое распространение вследствие отражений от различных металлических предметов;
-
разброс выходной мощности передатчиков и чувствительности приемников;
-
влияние ориентации антенн из-за неравномерности диаграммы направленности.
Из-за воздействия указанных факторов реальная зависимость мощности от расстояния оказывается нелинейной и непостоянной во времени, вследствие чего точность измерений быстро падает с ростом расстояния.
Одним из методов определения координат объекта в таких сетях является Фингерпринтинг (Fingerprinting) или локализация по шаблону. В данном методе выполняется поиск по шаблону на соответствие текущей силы сигнала c имеющейся в базе данных. Технология подразделяется на два этапа и заключается в следующем: на первом этапе происходит построение карты уровней сигнала. Карта может быть получена как в процессе работы, так и на этапе развертывания сети. Накопленные данные представляют из себя последовательность пар (ssi, ci). Где ssi это множество измерений силы сигнала, а ci – соответствующие координаты. Второй этап включает в себя сравнение полученных данных уровней сигналов после предварительной фильтрации с накопленными, и хранящимися в базе данных. Основная идея данного алгоритма заключается в определении позиции с минимальными отклонениями между измеренным значением RSSI и занесенными базу данных. Минимальное расстояние будет определяться по формуле (2.4):
где N – число узлов;
ri – полученный уровень сигнала, дБм;
dbri – уровень сигнала в базе данных;
p – расстояние Евклида и имеет значение равное 2.
После проведения расчетов выбирается набор с минимальным расстоянием. Данное значение и считается искомым местоположением узла.
В процессе распространения сигнала, его уровень может быть подвержен влиянию внешних факторов. В случаи с методом Фингерпринтинг в чистом виде, это влияние не учитывается, что приводит к увеличению погрешности измерения.
Для уменьшения абсолютной погрешности метод Фингерпрингинга используется с весовыми функциями для ближайших соседей. Это означает, что если данные от одного из узлов являются надежными, т.е. не подвержены влиянию внешних факторов, то вычисляется расстояние между мобильным узлом и стационарным согласно формуле (2.5):
где wi – весовая функция узла i;
di – рассчитанное расстояние от узла i.
Весовая функция wi определяется по формуле (2.6):
где di – расстояние до точки i карты уровней сигналов
k – Общее число точек на карте уровней сигналов.
Экспериментальная проверка методов Фингерпринтинга и Фингерпринтинга с весовыми функциями проводилась в двумерном пространстве. В качестве помещения был выбран коридор (28х2.7м). В результате вычислений по методу Фингерпринтинга абсолютная погрешность составила 3,7м. Абсолютная погрешность по методу Фингерпринтинга с весовыми функциями составила 2,5м. [7].
При выборе наиболее перспективного метода локализации подвижных объектов нужно учитывать их преимущества и недостатки. При использовании методов, основанных на измерении угла прихода сигналов, возникает возможность получить точность порядка нескольких градусов, однако зоны с большим числом перекрытий и препятствий для сигнала, сильно влияют на точность, отражая сигнал.
Методы, завязанные на измерении времени распространения сигнала, становятся все более актуальными, поскольку стали доступными маломощные приемопередатчики с аппаратной функцией высокоточного измерения временных интервалов. Системы с подобным способом позиционирования объектов зарекомендовали себя в морской навигации и авиации.
Методы, которые в качестве параметра, применяемого для расчетов, используют уровень сигнала, как правило, на этапе развертывания сети имеют стадию обучения, которой необходимо много времени и ресурсов для формирования достаточного набора данных.
Необходимо отметить, что для наиболее точного определения местоположения в сенсорных сетях, стараются использовать сочетание алгоритмов. Такой подход призван устранить недостатки одного из методов, дополнив свойствами другого.
2.2 Управляющий микроконтроллер
2.2.1 Плата Arduino Uno R3
В качестве отладочной платы в данном проекте принято решение использовать плату Arduino Uno.
Arduino Uno — это устройство на основе микроконтроллера Atmega328p. В его состав входит все необходимое для удобной работы с микроконтроллером: 14 цифровых входов/выходов (из них 6 могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, кварцевый резонатор на 16 МГц, разъем USB (Type B), разъем питания, разъем для внутрисхемного программирования (ICSP) и кнопка сброса. Для начала работы с устройством достаточно просто подать питание от AC/DC-адаптера или батарейки, либо подключить его к компьютеру посредством USB-кабеля. В качестве преобразователя интерфейсов USB-UART используется микроконтроллер Atmega16U2. Технические характеристики приведены в таблице 2.1.
Таблица 2.1 – Технические характеристики платы Arduino Uno
Микроконтроллер | Atmega 328p |
Рабочее напряжение | 5 В |
Напряжение питания (рекомендуемое) | 7-12 В |
Напряжение питания (предельное) | 6-20 В |
Цифровые входы/выходы | 14 (6 могут использоваться в качестве ШИМ – выходов) |
Аналоговые входы | 6 |
Максимальный ток одного вывода | 40 мА |
Максимальный ток вывода 3.3 В | 50 мА |
Flash – память | 32 КБ |
Продолжение таблицы 2.1
SRAM | 2 КБ |
EEPROM | 1 КБ |
Тактовая частота | 16 МГц |
Arduino Uno может получать питание тремя способами: от USB, от внешнего источника питания через соответствующий разъем, либо через отдельные выводы, расположенные на плате. Способ питания выбирается автоматически.
В качестве внешнего источника питания (не USB) может использоваться сетевой AC/DC-адаптер или аккумулятор/батарея. Штекер адаптера необходимо вставить в соответствующий разъем питания на плате. В случае питания от аккумулятора/батареи, ее провода необходимо подсоединить к выводам Gnd и Vin разъема POWER.
Напряжение внешнего источника питания может быть в пределах от 6 до 20 В. Однако, уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. С учетом этого, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.
Arduino Uno предоставляет ряд возможностей для осуществления связи с ПК, или другими микроконтроллерами. В Atmega328p имеется приемопередатчик UART, позволяющий осуществлять последовательную связь посредством цифровых выводов 0 (RX) и 1 (TX). Микроконтроллер Atmega16U2 на плате обеспечивает связь этого приемопередатчика с USB-портом компьютера, и при подключении к ПК позволяет плате определяться как виртуальный COM-порт. Прошивка микросхемы 16U2 использует стандартные драйвера USB-COM, поэтому установка внешних драйверов не требуется. В пакет программного обеспечения Arduino входит специальная программа, позволяющая считывать и отправлять простые текстовые данные. При передаче данных через микросхему-преобразователь USB-UART во время USB-соединения с компьютером, на плате будут мигать светодиоды RX и TX.
В Arduino Uno есть восстанавливаемые предохранители, защищающие USB-порт компьютера от коротких замыканий и перегрузок. Несмотря на то, что большинство компьютеров имеют собственную защиту, такие предохранители обеспечивают дополнительный уровень защиты. Если от USB-порта потребляется ток более 500 мА, предохранитель автоматически разорвет соединение до устранения причин короткого замыкания или перегрузки.
2.2.2 Микроконтроллер ATmega 328p
Основу платы Arduino Uno составляет микроконтроллер Atmega 328p фирмы Atmel. Микроконтроллер выполнен в TQFP корпусе представлен на рисунке 2.6.
Микроконтроллер является 8-разрядным из семейства AVR. Данный микроконтроллер сочетает в себе 32 Кб Flash-памяти для хранения программ, 1 Кб EEPROM, 2 Кб SRAM, 23 порта ввода/вывода общего назначения.
Рисунок 2.6 – Расположение выводов микроконтроллера Atmega 328
Структурная схема микроконтроллера включает в себя:
-
два 8-битных таймера/счетчика с модулями сравнения и делителями частоты;
-
16-битный таймер/счетчик с модулем сравнения и делителем частоты, а также с режимом записи;
-
счетчик реального времени с отдельным генератором;
-
шесть каналов PWM (аналог ЦАП);
-
6-канальный ЦАП со встроенным датчиком температуры;
-
программируемый последовательный порт USART;
-
последовательный интерфейс SPI;
-
интерфейс TWI (I2C);
-
программируемый сторожевой таймер с отдельным внутренним генератором;
-
внутренняя схема сравнения напряжений;
-
блок обработки прерываний и пробуждения при изменении напряжений на выводах микроконтроллера.
2.2.3 Среда программирования Arduino IDE
Среда программирования Arduino IDE состоит из встроенного текстового редактора программного кода, окна уведомлений, панели быстрого доступа к часто используемым командам и главного меню.
Главное меню включает в себя следующие элементы:
-
«Файл» — отвечает за создание новой программы, сохранения её изменений, а также для загрузки программы в микроконтроллер;
-
«Правка» — содержит команды, связанные с редактирование текста программы;
-
«Скетч» — содержит команды для управления компиляцией программы;
-
«Сервис» — включает в себя вспомогательные функции по работе с самим микроконтроллером;
-
«Справка» — содержит подробное описание всех функций, а также всевозможные команды и приемы работы с платформой Arduino.
Панель быстрого доступа представлена на рисунке 2.7.
Рисунок 2.7 – Панель быстрого доступа