Подход к обеспечению безопасности IoT в Enterprise
report_bs
1. Санкт-петербургский государственный политехнический университет
Институт информационных технологий и управления
Кафедра компьютерных систем и программных технологий
Работа допущена к защите
Зав. кафедрой профессор
__________ В. Ф. Мелехин
«___» ____________ 2013 г.
ВЫПУСКНАЯ РАБОТА БАКАЛАВРА
Тема: Разработка и исследование распределенных встраиваемых систем
сбора данных с применением средств глобального позиционировании
Направление: 220200 – Автоматизация и управление
Выполнил, студент гр. 4081/11 _________ Чжан Цзини
Руководитель,к.т.н.,доц. _________А.Е.Васильев
Санкт-Петербург
2013
2. РЕФЕРАТ
стр.90, рис.31, табл.1
РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ СБОРА ДАННЫХ,
МИКРОКОНТРОЛЛЕР, ВСТРАИВАЕМАЯ СИСТЕМА УПРАВЛЕНИЯ,
МОДУЛЬ GPS, МОДУЛЬ GSM, ИНТЕРНЕТ ВЕЩЕЙ
В работе выполнена разработка распределенной программно-
аппаратной системы беспроводного сбора данных, использующей GPS для
локализации местоположения и GSM для передачи данных.
Целью работы является создние эффективных (в разработке и
эксплуатации) средств постороения распределённых беспроводных систем
сбора данных.
Решаемые задачи: изучение существующих решений, выбор
аппаратных средств, разработка программного обеспечения, проведение
испытаний.
2
3. СОДЕРЖАНИЕ
1.ОБЗОР ТЕХНОЛОГИЙ И СРЕДСТВ РАСПРЕДЕЛЕННОГО СБОРА
ДАННЫХ...................................................................................................................5
1.1.Общие положения..........................................................................................5
1.2.Примеры систем распределенного сбора данных.......................................5
1.2.1.Модуль RuggedRouter®...........................................................................5
1.3.Постановка задачи..........................................................................................7
2.РАЗРАБОТКА СТРУКТУРЫ И АППАРАТНОГО ОБЕСПЕЧЕНИЯ
СИСТЕМЫ.................................................................................................................8
2.1.Плата TX-1C....................................................................................................8
2.2.Модуль GPS.....................................................................................................9
2.3.Модуль GSM.................................................................................................10
2.4.Общая схема системы..................................................................................10
3.РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ........................................11
3.1.Программная реализация дополнительного последовательного порта. .11
3.2.Первичная настройка модуля GSM и AT команд.......................................13
3.3.Анализ информации о местоположении GPS............................................14
3.4.Сбор данных при помощи датчика.............................................................15
3.5.Общая структура программы MarDDAS....................................................17
4.ИССЛЕДОВАНИЯ РАЗРАБОТАННОЙ РАБОТЫ.............................................18
4.1.Тестирование программного последовательного порта...........................18
4.2.Тестирование модуля GSM..........................................................................18
4.3.Тестирование датчика температуры DS18B20..........................................18
4.4.Тестирование модуля GPS...........................................................................19
4.5.Комплексные испытания системы..............................................................19
4.6.Анализ точности...........................................................................................21
ЗАКЛЮЧЕНИЕ........................................................................................................21
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ...............................................22
3
4. ПРИЛОЖЕНИЕ 1. Понятие АТ команды..............................................................22
ПРИЛОЖЕНИЕ 2. Структура проекта..................................................................24
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы..........................26
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы..........................29
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы..........................35
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы..........................39
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы..........................50
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы..........................62
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы..........................67
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы..........................71
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы..........................80
4
5. ВВЕДЕНИЕ
Человечество вступает в новую эру глобальных вычислений и
коммуникаций. Огромный поток информации проходит через мобильную
телефонную сеть, а разнообразные устройства стали неотъемлемой частью
повседневной жизни миллионов людей.
Развитие коммуникаций перевело это явление на новый этап, от
приемопередатчиков малого радиуса действия к устройствам с
приемопередатчиками на длинные дистанции. Родилась новая форма
взаимодействия между людьми и устройствами, а также напрямую между
устройствами. В прошлом, обмен информацией мог происходить лишь между
людьми, теперь он происходит между любыми устройствами в любой точке
мира в любое время.
Интенсивность взаимодействия между устройствами будет увеличиваться
и создавать совершенно новую сущность – “Интернет Вещей”. Он построен на
отличительных особенностях сетей будущего, таких как возможность
подключать устройства и предметы первой необходимости к большим базам
данных и сетям, способность обнаружения изменения физического состояния
объектов, способность использовать преимущества миниатюризации.
5
6. Встроенный интеллект объектов сможет повысить производительность
сетей путем выполнения локальной обработки информации.
С помощью объединения в сети обработки информации, промышленные и
бытовые системы будут увеличивать интеллектуальность и
производительность, обнаруживать через датчики изменения в физической
среде. Таким образом, даже малоразмерные частицы могут быть включены в
сеть. Такое развитие может превратить сегодняшние статические объекты в
динамические.
Сенсорные сети могут обнаружить минимальные изменения окружающей
среды и предотвратить катастрофу.
Исследования показывают, что Интернет вещей будет широко
использоваться на местном рынке и в международной торговле.
Исследованию некоторых аспектов глобальных коммуникаций между
устройствами и посвящается данная работа.
Цель работы - создние эффективных (в разработке и эксплуатации) средств
постороения распределённых беспроводных систем сбора данных.
6
7. 1. ОБЗОР ТЕХНОЛОГИЙ И СРЕДСТВ РАСПРЕДЕЛЕННОГО СБОРА
ДАННЫХ
1.1. Общие положения
Автоматизированные системы сбора данных в настоящее время являются
общедоступным средством получения экспериментальной информации, и
связано это, в первую очередь, с широким распространением персональных
компьютеров. Системы сбора данных применяются в научных исследованиях,
управлении производственными процессами, мониторинге в
промышленности, медицине, метеорологии, космонавтике и других областях
человеческой деятельности. Автоматизированный сбор данных предлагает
данные нового качества, которые невозможно получить иными средствами –
это результаты статистической обработки огромного числа измерений,
полученных в цифровой форме; возможность регистрации случайно
появляющихся событий с недостижимой ранее разрешающей способностью
по времени и амплитуде; регистрация быстрых процессов. Благодаря резкому
удешевлению систем сбора данных по сравнению со стоимостью
человеческого труда они нашли применение там, где ранее использовалась
ручная регистрация данных: в теплицах, элеваторах, на метеостанциях, в
процессе приемосдаточных и сертификационных испытаний продукции, на
складах, в промышленных холодильниках, в котельных, при автоматизации
научного эксперимента и т.п1
.
1
7
8. Система сбора данных может быть распределенной, когда устройства ввода
разнесены территориально по объекту сбора данных, а полученные данные
сходятся к единому накопителю и обработчику данных с помощью сетевых
технологий (сети Ethernet, Modbus, Profibus, DCON и др., беспроводные сети
Bluetooth, Wi-Fi, GSM, ZigBee). Распределенные системы сбора данных
допускают практически неограниченное наращивание числа каналов ввода,
однако имеют ограничения на скорость передачи данных по сети.
1.2. Примеры систем распределенного сбора данных
1.2.1. Модуль RuggedRouter®
Семейство устройств RuggedRouter® представляют собой устройства,
интегрирующие брандмауэр, маршрутизатор и VPN сервер, обеспечивающие
сетевую безопасность. RuggedRouter® могут применяться для создания
безопасного периметра у критически важных участков систем во избежание
вмешательства в работу сети вследствие специальных или случайных
воздействий. Устройства идеально подходят для электроподстанций,
промышленности и систем контроля дорожного трафика. Модули
подключения беспроводного сотового модема для устройств RuggedRouter® -
RuggedCell™, позволяют пользователям расширять границы сетей, достигая
удалённых узлов широкополосными каналами с встроенными функциями
балансировки сетевой нагрузки. Маршрутизатор может быть оснащён как
GSM SIM решением, так и CDMA. Устройство приведено на следующем
рисунке (Рисунок 1.1).2
Виктор Денисенко, Рафгат Кильметов. Распределенные системы сбора
данных RealLab/ЭЛЕМЕНТНАЯ БАЗА: система сбора данных
2
8
9. Рисунок 1. 1. Пример использовании RuggedRouter
1.2.2. Модуль ML-Module-Z
ML-Module-Z(на рисунке 1.2) основаны на российской платформе
MeshLogic для разработки беспроводных сенсорных сетей (на рисунке 1.3),
имеющей множество преимуществ относительно других стандартных и
проприетарных технологий, в частности, такие свойства, как:
http://ruggedcom.ru
9
10. полностью многоячейковая топология сети;
самоорганизация и автоматический поиск маршрутов;
устойчивость к соканальной интерференции;
высокая масштабируемость и надежность доставки данных;
все узлы равноправны и являются маршрутизаторами;
возможна работа всех узлов от автономных источников питания
Рисунок 1. 2. Беспроводной модуль ML-Module-Z
Рисунок 1. 3. Беспроводная система сбора информации
1.2.3. Модуль ML-SM-SB
10
11. Беспроводная система мониторинга ML-SM-SB (на рисунке 1.4)
представляет собой аппаратно-программный комплекс для организации
беспроводной сети с целью автоматического сбора данных от распределенных
в пространстве датчиков.
В типовом варианте система ML-SM состоит из множества беспроводных
узлов ML-SM-N, к каждому из которых подключены внешние датчики через
соответствующие модули сопряжения ML-SM-Sx, одного беспроводного
шлюза ML-SM-G и сервера на базе персонального компьютера с прикладным
программным обеспечением.
Основные функции
организация беспроводной распределенной сети с произвольной
топологией;
автоматический сбор по радиоканалу показаний датчиков;
накопление собранной информации в энергонезависимой памяти
(архиве);
чтение информации из архива по запросу от сервера для ее
отображения, обработки и анализа.
Рисунок 1. 4. Внешний вид модуля ML-SM-SB
11
12. 1.3. Постановка задачи
У существующих систем имеется ряд недостатков, а именно:
высокая стоимость системы;
сложность написания программного обеспечения;
высокие энергозатраты.
Необходимо реализовать новую систему сбора данных, обладающую
следующими характеристиками:
низкая стоимость;
мобильность;
возможность получения географических данных;
возможность интеграции с существующими сетями общего
назначения.
12
13. 2. РАЗРАБОТКА СТРУКТУРЫ И АППАРАТНОГО ОБЕСПЕЧЕНИЯ
СИСТЕМЫ
2.1. Плата TX-1C
Для разработки данного проекта была выбрана макетная плата TX-1C,
основанная на микроконтроллере STC89C52RC, имеющая в своем составе
жидкокристаллический дисплей, клавиатуру, датчик температуры, ЦАП, АЦП
и др.
Ниже приведены причины, выбора платы TX-1C:
1) TX-1C была разработана на основе STC89C52RC. По сравнению с
микроконтроллерами других компаний, микроконтроллеры от
компании STC обладает большими набором ресурсов (1280 байт
SRAM, 8-64Кбайт ПЗУ, 2-8 Кбайт ISP кода, встроенный 8-канальный
8-битовый АЦП, внутрикристальный EEPROM, сторожевой таймер,
два указателя данных и т.д.). Кроме того, STC микроконтроллеры
обладают низкой стоимостью, высокой скоростью и надежностью;
2) TX-1C поддерживает два способа загрузки программ (через USB и
через последовательный порт);
3) питание от порта USB;
4) На плате размещены ADC0804, DAC0832, PDIUSBD12, датчик
температуры - DS18B20;
5) TX-1602 поддерживает 1602 и 12864 интерфейсы;
6) большое количество технической документации.
Внешний вид, структурная и принципиальная схемы представлены на
рисунках 2.1, 2.2 и 2.3 соответственно.
13
16. 2.2. Модуль GPS
В качестве GPS модуля был выбран TX-GPS модуль, который объединяет
чип NEO-5Q Швейцарской компании U-Blox и резервный аккумулятор
напряжением 3В для сохранения информации о текущем местоположении в
условиях отсутствия питания. Также модуль TX-GPS поддерживает UART,
USB, IIC, SPI.
Причина выбора этого модуля в том, что он использует новейшую
технологию KickStart компании U-Blox, которая обеспечивает самый быстрый
сбор даже очень слабых спутниковых сигналов GPS. Более того, он
поддерживает выходные контакты уровня TTL (TxD, RxD, Gnd и Vcc) которые
могут быть подключены напрямую к программному последовательному порту
микроконтроллера. Внешний вид и принципиальная схема представлены на
рисунках 2.4 и 2.5.
Рисунок 2.4. Внешний вид модуля GPS
16
17. Рисунок 2.5. Принципиальная схема модуля GPS
2.3. Модуль GSM
Модуль GSM основан на процессоре TC35i компании Siemens, который
работает с сетями GSM 900 МГц и GSM 1800 МГц и имеет хорошие массо-
габаритные показатели. Он специально разработан для задач телеметрии,
телематики и телефонии, таких как: измерение, управление автопарком,
охранные системы, POS-терминалы или торговые автоматы.
Скорость передачи его последовательного порта регулируется и может
быть установлена в пределах от 300b/s до 115kb/s.
Внешний вид и принципиальная схема представлены на рисунках 2.6 и 2.7.
17
19. 2.4. Общая схема системы
TX-1C макетная плата на базе микроконтроллера STC89C52RC
поддерживает только один последовательный порт. Для того, чтобы получать
информацию от модуля GPS и передавать обработанные данные через GSM
сеть, необходимо наличие двух последовательных портов (второй создаётся
программно).
Рассмотрим два варианта реализации: первый это подключить GSM модуль
к программному последовательному порту, а GPS модуль к оригинальному
последовательному порту. Такой вариант требует программного
последовательного порта, способного и передавать, и принимать данные.
Второй вариант состоит в соединении GSM модуля с оригинальным
последовательным портом, а GPS модуля – с программным, что требует
программной поддедржки последовательного порта, способного только
принимать данные.
Система MarDDAS использует второй вариант, поскольку это облегчает
написание программы.
Внешний вид и структурная схема представлены на рисунке 2.8 и 2.9.
Рисунок 2.8. Внешний вид MarDDAS
19
20. Рисунок 2.9. Структурная схема MarDDAS
Микроконтроллер получает данные о местоположении и местного времени
системы посредством спутниковой системы навигации GPS. Затем на
микроконтроллер поступает информация о температуре данной местности с
помощью датчика температуры. Полученные данные отправляются на
указанный в программе телефонный номер с использованием GSM-сети
SMS-сообщением.
20
21. 3. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
3.1. Программная реализация дополнительного последовательного
порта
При использовании микроконтроллеров часто встречается ситуация, когда
последовательный порт необходим как для сбора данных, так и для их
отправки нескольким абонентам, что приводит к необходимости
использования микроконтроллера с несколькими последовательными портами.
В выбранном микроконтроллере он только один. Таким образом, второй
последовательный порт должен быть реализован программно.
Скорость передачи используемого чипа NEO-5Q 9600 бит/cек, он
поддерживает последовательную передачу с 1 стартовым битом, 8 битами
данных и 1 стоповым битом. Таким образом, длительность каждого бита
составляет
1000ms
9600
=0.104ms .
Для обнаружения стартового бита использован канал P3.2 (INT 0). Когда
приходит стартовый бит, будет вызвано внешнее прерывание, что позволит
внешней функции получить остальные биты.
Схема получения одного байта программным последовательным портом
показана ниже (Рисунок 3.1):
21
22. Задержка 0.104ms
Int 0
Определение входной переменной для получения одного байта и присваивание переменной значения 0
Инициализация и запуск Timer0, задержка 0.104ms
Сдивиг входной переменной на 1 бит вправо, получение данных
Уже получено 8 бит ?
Получить стоп-бит
N
Y
Завершить работу T0, Конец
22
Рисунок 3.1. Схема программы получения данных последовательным портом
23. 3.2. Первичная настройка модуля GSM и AT команд
Модули GSM обычно управляются с помощью AT команд. Список
использованных AT-команд приведен в Приложении 1.
Основная идея использования микроконтроллера для управления GSM
модулем заключается в отправке серии AT команд от микроконтроллера на
GSM модуль через последовательный порт на требуемой скорости передачи
(скорость передачи данных между GSM модулем и микроконтроллером 9600
бит/c). Так как обычно на выполнение одной AT команды требуется больше
времени, то, когда мы используем микроконтроллер для управления модулем
GSM, необходимы задержки между каждой AT командой.
Серия AT команд для управления GSM для отправки SMS отражается
следующим образом:
1) сначала программа должна установить номер центра текстовых
сообщений с помощью команды AT + CSCA=+ 79168999100 <CR>. В
работе использовалась SIM-карта российской мобильной сети МТС,
поэтому номер центра текстовых сообщений +79168999100. При
использовании SIM-карты других компаний номер центра текстовых
сообщений будет иным;
2) в системе, далее задаётся текстовый режим отправки SMS-
сообщений. Должна быть отправлена команда: AT+CMGF=1 <CR>
Установка параметров SMS в текстовом режиме:
AT+CSMP=<fo>,<vp>,<pid>,<dcs> <CR>.
3) указывается набор символов терминального оборудования +CSCS.
Используется априори система GSM:
AT+CSCS=GSM;
4) далее производится отсылка сообщений: +CMGS
23
24. Send_SMS
Устаность адресс сервис центра для отправки SMS
Установить текстовый режим SMS
Выбор набора символов терминального оборудования
Отсылка сообщений
Конец
Схема описанных выше шагов показана на рисунке 3.2.
24
Рисунок 3.2. Этапы отправки SMS
25. 3.3. Анализ информации о местоположении GPS
Для анализа информации о местоположении из полученных данных от GPS
модуля, необходимо выделить последовательность байт с искомой
информацией. Так как обмен информацией между модулем GPS и
микроконтроллера происходит через программный последовательный порт
(INT0 P3.2), то основное назначение программы обслуживания прерывания
INT0 состоит в извлечении полезных байтов.
Выходные данные модуля GPS нормируются в NMEA-01183 формате
данных, который всегда начинается с байта "$" например, $GPRMC, $GPGGA,
$GPGSV, $GPVTG, $GPGLL и так далее. Для получения информации о
местоположении и времени, следует проанализировать $ GPRMC сообщения.
Процесс приема $GPRMC сообщения состоит из двух частей: первая часть
состоит в получении символа "$". Поскольку GPS сообщение всегда
начинается с "$", и заканчивается "0ah", необходимо убедиться в том, что
сообщение получено целиком. В программе обслуживания прерывания INT0,
первое, что необходимо сделать, это проверить полученный байт. Если это "$",
то мы устанавливаем битовый флаг и сообщаем микроконтроллеру, что
процесс приема начался. Для следующих входящих байтов, микроконтроллер
будет проверять, является ли он «0ah» (конец сообщения GPS). Если это так,
то микроконтроллер остановит прерывания INT0 и приступит к анализу
полученного сообщения. В этот момент мы подходим ко второй части приема
$GPRMC сообщения. Если это $GPRMC сообщение, то пятый байт будет "C".
Как только микроконтроллер будет уверен, что это $GPRMC сообщение, он
приступит к анализу данных о местоположении и времени из этого сообщения,
в противном случае микроконтроллер очистит буфер, изменит указатель на
буфер и начнет новый процесс приема.
25
26. gps_rmc_parse
Получение информацию о времени и местоположении
Является ли данное сообщение типа $GPRMC
Конец
Отобразить полученные данные на ЖКИ
N
Y
Рассмотрим структуру $GPRMC сообщения, а затем выясним, как
анализировать данные положения и времени из него. Ниже приведен формат
сообщения:
$GPRMC,hhmmss,status,latitude,N,longitude,E,
spd,cog,ddmmyy,mv,mvE,mode*cs<CR><LF>
Далее приведены 6 частей $GPRMC сообщения, необходимые для получения
местоположения и времени:
1) Hhmmss - время UTC;
2) status: V - предупреждение навигационного приемника, status: A
-данные действительны;
3) Latitude - долгота, градусы+минуты;
4) N - индикатор север/юг N=север или S=юг;
5) Longitude - широта, градусы+минуты;
6) E - индикатор положения - запад/восток, E=восток или W=запад.
В соответствии со стандартом NMEA, широта и долгота выводятся в
формате градусы, минуты и (десятичные) доли минут. Иногда составляющие
должны быть преобразованы. Другими словами, если приемник GPS сообщает
4717.112671 северной широты и 00833.914843 восточной долготы, это:
широта 47° 17’, 6.76026’’;
долгота 8°, 33’, 54.89058’’.
В $GPRMC сообщении, каждая область делится символом ",", например, если
мы хотим получить ччммсс, мы должны получить часть между первой "," и
второй ",". Для достижения этой цели, была написана ассемблерная функция
get_comma_string.
Схема алгоритма обнаружения и анализа $GPRMC сообщения показана на
рисунке 3.3.
26
27. 3.4. Сбор данных при помощи датчика
В распределенной системе сбора данных существуют две основных
функции: обмен информацией и сбор данных (с помощью датчика сетей).
В разрабатываемом проекте используется один датчик температуры
DS18B20, который интегрирован на макетной плате TX-1C. В отличие от
других датчиков температуры, DS18B20 поддерживает 1-Wire протокол, это
означает, что DS18B20 требуется всего одну линию для двунаправленной связи
с микроконтроллером.
27
Рисунок 3.3. Схема программы обнаружения и анализа
NMEA-сообщения
28. Можно выявить три основных шага для получения информации о
температуре от датчика:
1) инициализация:
Все операции на шине 1-Wire начинаются с импульса сброса, который
передается по ведущей шине, с последующей передачей импульса по
ведомой шине;
2) запись данных в DS18B20
Поскольку в системе MarDDAS микроконтроллер соединяется с одним
DS18B20, то микроконтроллеру не нужно посылать команды через
вывод данных DS18B20 для чтения и сопоставления специального кода
ROM;
3) чтение данных из DS18B20
Наиболее важной частью управления датчиком является считывание
обработанных данных с одного или нескольких датчиков.
Схема чтения показателей датчика DS18B20 показана на рисунке 3.4.
28
anal_temper
Инициализация
Запись даныых в датчик
Чтение температуры с датчика
end
Рисунок 3.4. Получение температурных данных с датчика
29. 3.5. Общая структура программы MarDDAS
На рисунке 3.5 показана схема работы программы, реализуемом в данной
работе. В начале программы просходит инициализация для всех используемых
составляющих проекта. Затем ожидается получение действительной
информации со спутника через программный последовательный порт. Если
информация является действительной, то будет происходить анализ
полученного сообщения. После анализа сообщения будет получать
информацию о местоположении системы и времени. Затем будет происходить
анализ температуры в заданной местности. Если система получит команду для
отправки сообщения, данные будут отправлены в виду SMS-сообщения:
местоположение и температура.
29
31. 4. ИССЛЕДОВАНИЯ РАЗРАБОТАННОЙ РАБОТЫ
4.1. Тестирование программного последовательного порта
Перед подключением выводных контактов TTL GPS модуля к
микроконтроллеру P3.2 (INT 0) мы должны проверить, работает ли наша
программа обслуживания прерывания. Для этого необходимо установить
соединение между ПК и микроконтроллером.
Для осуществления подключения используется TX конвектор (RS232
TTL, USB RS232, USB TTL), его внешний вид приведен ниже
на рисунке 4.1.
Рисунок 4.6. Внешний вид модуля TX-convert
Схема подключения показана ниже на рисунке 4.2.
Рисунок 4.7.Схема подключения
Скриншот показано на рисунке 4.3.
31
32. Рисунок 4.3.Схема программы серийного помощника
4.2. Тестирование модуля GSM
Поскольку GSM модуль соединяется с микроконтроллером
непосредственно через последовательный порт, то легко проверить его
работоспособность. Необходимо подключить GSM модуль к ПК через
последовательный порт (с помощью TX конвектор), а затем отправить на него
AT команды. В этом случае, GSM модуль производит отправку SMS ("hello
world") на указанный номер мобильного телефона. Результат тестирования
показан ниже:
Рисунок 4.4. Сообщение из GSM модуля
32
33. 4.3. Тестирование датчика температуры DS18B20
Для тестирования датчика температуры DS18B20, было проведено два рода
экспериментов:
1) исследование показаний в комнатной температуре (Рисунок 4.5);
2) исследование показаний в условиях контакта c горячей чашкой
(Рисунок 4.6).
Результаты экспериментов представлены ниже.
Рисунок 4.5. Исследование показаний в комнатной температуре
Рисунок 4.6. Исследование показаний в условиях контакта c горячей чашкой
33
34. 4.4. Тестирование модуля GPS
Тестирование модуля GPS было проведено в программе u-center 5.08.
В ходе тестирования GPS модуля, производилось некоторое движение на
достаточно большое расстояние. Полученные данные были экспортированы в
ПО Google Earth (рисунок 4.7).
Рисунок 4.7. Динамическое движение
Полученные данные с высокой точностью описывают проделанный путь.
34
35. 4.5. Комплексные испытания системы
Система была запущенна на выполнение, полученные результаты подробно
отображаются на ЖК-дисплее TX-1C. (см. рис. 4.8-4.12)
Рисунок 4.8. Процесс инициализации
35
36. Рисунок 4.9. Данные времени в формате UTC
Рисунок 4.8. Данные местоположения
36
38. 4.6. Анализ точности
GPS является спутниковой навигационной системой. В точках рядом с
землей спутниковые сигналы отражаются от высотных зданий и других высот
(многолучевой эффект). Таким образом, GPS-устройство в автомобиле не
может производить точное позиционирование из-за больших задержек,
которые вызывают непрямые пути распространения спутниковых сигналов
(радиоволн). Другие факторы, влияющие на точность определения
местоположения, включают в себя: спутниковую геометрию, сдвиги
спутниковых орбит, ошибки спутниковых часов, различные явления в
тропосфере и ионосфере и ошибки в расчетах.
Карта отклонений очень близка к реальной ситуации, которая показана в
разделе 4.4.2(рисунок 4.7). Минимальное отклонение от реального положения
составляет для широты – 0.000045, для долготы – 0.000062.
Рисунок 4.13. Карта отклонений динамического позиционирования
38
39. ЗАКЛЮЧЕНИЕ
Система MarDDAS (собственная разработка – Martin’s Distributed Data
Acquisition System) предоставляет возможность точно определить
местоположение транспортного средства а так же получить основные
характеристики. MarDDAS относится к категории систем мониторинга
траектории, эти системы реализованы с использованием нескольких
гибридных технологий, которые включают в себя: беспроводную связь,
географическую локализацию и встроенные устройства наблюдения.
Транспортные системы слежения предназначены для оказания помощи
корпорациям с большим количеством автомобилей. Данные системы
позволяют минимизировать затраты и сложность работы обслуживающего
персонала. Кроме того, системы имеют и маршрутное назначение - можно
рассчитать маршрут на основе текущего местоположения автомобиля. Таким
образом, использование транспортных систем слежения имеет важное
значение для крупных предприятий для удовлетворения различных
требований клиентов и повышения производительности.
MarDDAS является средством, подобным транспортной системе
слежения. По сравнению со штатными транспортными системами слежения,
MarDDAS имеет свои преимущества. Благодаря добавлению сети датчиков в
систему, MarDDAS позволяет осуществлять не только поиск текущего
местоположения объекта, но и сбор информации об окружающей среде
текущего местоположения. Это существенно расширяет область применения
системы.
Приведем примеры применения разработанной системы:
На основании концепции системы распределенного сбора данных и
«Интернете вещей», предположим, что есть центральный компьютер в
39
40. городе Санкт-Петербурге, основной целью которого является анализ
входящей экологической информации в различных точках города.
Информационный центр посылает 10 автомобилей, каждый из которых
оснащен MarDDAS системой. Эти 10 автомобилей постоянно получают
экологическую информацию (в настоящее время в MarDDAS
интегрирован только датчик температуры, так что экологической
информацией является температура, при необходимости, в перспективе
будут добавлены иные датчики) каждые 100 метров. После того, как
память МК заполнена полученной информацией, MarDDAS пошлет
всю информацию (местоположение, время и температуру) на
центральный компьютер для обработки. При условии наличия
достаточного количества автомобилей и достаточной вычислительной
мощности центрального компьютера, возможно контролировать
экологическую ситуацию целого города, даже всей страны. В этом
случае, вследствие первичной стоимости, использование GSM-сети
(или GPRS) для обмена данными, вероятно, не является приемлемым.
Россия богата нефтью и природным газом. Транспортировка этих
природных ресурсов из одного места в другое происходит по
трубопроводам. Поскольку транспортировка трубопроводами очень
долгая и иногда проходит через небезопасные экологические зоны, а
также в силу отсутствия надлежащих ремонтных работ, трубопроводы
зачастую подвержены повреждениям. Такие поломки очень трудно
обнаружить. С помощью MarDDAS, можно просто добавить несколько
датчиков для обнаружения утечек нефти или газа. MarDDAS будет
записывать все позиции, где трубопровод поврежден. По завершению
сбора информации система будет отправлять собранные данные в центр
управления через GSM сеть.
Так же, как и в предыдущем примере, обслуживание железных дорог
является большой проблемой. Поскольку они такие же протяженные,
как и газовые/нефтяные трубопроводы. Обычный способ обнаружения
40
41. повреждений полотна недостаточно эффективен. С помощью датчиков
системы MarDDAS можно получить необходимые данные. Все
позиции, где нарушено расстояние между рельсами, будут записаны в
MarDDAS и отправлены в центр управления через GSM сеть.
Экспериментальные результаты показывают, что разработанная система
работает стабильно и надежно. Реализованная технология может быть
применена в различных областях, например, в экологическом мониторинге.
Однако, проблемы сетей передачи данных имеют определенное влияние на
характер реализации работы системы в реальном времени. Например, не
исключены задержки получения или отправки SMS-сообщений, в особенности
при высокой загруженности мобильной сети или в районе с низким качеством
приема сигнала. Для достижения более надежной связи, возможно создание
специального канала для передачи SMS с поставщиком GSM.
41
42. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Васильев А.Е. Микроконтроллеры: разработка встраиваемых приложений.–
СПб.: БХВ-Петербург, 2008.– 304 с
张义和,陈敌北. 例说 8051(第三版), 2009. – 336с
SIEMENS. TC35i Siemens Cellular Engine: AT Command Set, 2003. – 257 с
u-blox 5 Receiver Description including Protocol Specification Public Release,
2009. – 257 с
42
43. ПРИЛОЖЕНИЕ 1. Понятие АТ команды
АТ команды являются набором командного языка или инструкций,
которые направляются в сотовый модуль для выполнения различных действий.
Эти команды или инструкции могут быть отправлены через USB,
последовательный или другой интерфейс к сотовому модулю от основного
приложения контроллера.
Установка параметров SMS в текстовом режиме:
AT+CSMP=<fo>,<vp>,<pid>,<dcs> <CR>.
Таблица 0.1.Состав байта <fo>
b7 b6 b5 b4 b3 b2 b1 b0
H
P
HDH
I
SR
R
VPF R
D
VPF
HP: не используется в текстовом режиме;
UDHI: заголовок для пользовательских данных, b6=1 если
начало поля UserData (пользовательские данные) содержит
заголовок в дополнение к сообщению. Данная опция не
поддерживается командой +CSMP, но может быть
использована в режиме PDU (+CMGS);
SRR: запрос на получение отчета о статусе, b5=1 если отчет о
статусе запрашивается.
VPF: формат сроки действия;
b4=0 и b3=0 → поле <vp> отсутствует;
b4=1 и b3=0 → поле <vp> присутствует в соответствующем
формате;
43
44. другие форматы (абсолютный и расширенный) не
поддерживаются;
RD: отклонять копии сообщений (b2=1);
<mr> и <da>, также как и предыдущее сообщение от того же
<oa>;
MTI: индикатор типа сообщения;
b1=0 и b0=0 → SMS-DELIVER (от SC к MS);
b1=0 и b0=1 → SMS-SUBMIT (от MS к SC);
в текстовом режиме <vp> кодируется только в
«относительный» формат;
значение по умолчанию равно 167 (24 часа). Это значит, что
один байт может описывать разные значения;
<pid> – используется для определения используемого
протокола высшего уровня либо отражает взаимодействие с
определенным типом устройств связи. Например, 0x22 для
группы 3 телефакса, 0х24 для голосовых вызовов, 0х25 для
ERMES (European Radio Messaging System);
<dcs> – используется для определения способа кодировки
информации. Сжатый текст не поддерживается.
Поддерживаются только алфавит GSM установленный по
умолчанию , формат 8-битных данных и алфавит UCS2;
назначить период действия для SMS-сообщений (один день)
AT+CSMP=17, 167, 0, 0.
Указывается набор символов терминального оборудования +CSCS.
Данная команда сообщает мобильному оборудованию, какой набор
символов используется терминальным оборудованием. Мобильное
оборудование может преобразовывать каждый символ введенных или
44
45. отображаемых строк. Эта функция используется для отправки, чтения или
написания коротких сообщений.
Синтаксис команды:
AT+CSCS=<набор символов>
<набор символов>
GSM – алфавит GSM по умолчанию.
PCCP437 – кодовый набора символов PC страница 437.
CUSTOM – пользовательский набор символов.
HEX – шестнадцатеричный режим. Набор символов не используется;
пользователь может считывать или записывать шестнадцатеричные
значения.
Отсылка сообщений: +CMGS
Поле <address> – номер, на который посылается сообщение. Для
отправки сообщения используется комбинация символов <ctrl-Z> (кодировка
ASCII 26). Текст может содержать любые символы, кроме <ctrl-Z> и <ESC>
(ASCII 27). Символ <ESC> отменяет отправку сообщения.
ПРИЛОЖЕНИЕ 2. Структура проекта
45
53. Листинг 3. proj_init.asm
public project_init
public waiting_commands
ss0 segment code
rseg ss0
cxpos equ 21h
cypos equ 22h
str_loca_sms equ 33h
comma_res_start equ 37h
output equ 45h
rev_buffer equ 46h
key_vail bit 20h.0
rev_start bit 20h.3 ;0
rev_stop bit 20h.4 ;1
time_or_locat bit 20h.5
lati_or_longti bit 20h.7
;----------------------------------------------------------------------
;External functions for LCD operations
extrn code(lcd_init)
extrn code(write_com)
extrn code(write_data)
extrn code(delay3ms)
extrn code(put_str)
extrn code(uart_init)
;----------------------------------------------------------------------
dula bit p2.6
wela bit p2.7
project_init:
call environment_init
53
54. call lcd_init
call info_display
call uart_init
ret
environment_init:
clr dula
clr wela
clr key_vail
clr rev_start
clr rev_stop
clr lati_or_longti
clr time_or_locat
mov output,#00h
mov rev_buffer,#50h ;keep buffer starts from 50h
mov comma_res_start,#0a0h ;the beginning address for
keeping result
mov str_loca_sms,#0e0h ;the beginning address for
saving location for sms sending
ret
info_display:
mov cxpos,#00h
mov cypos,#00h
mov dptr,#table0
call put_str
mov cxpos,#00h
mov cypos,#01h
mov dptr,#table1
call put_str
ret
waiting_commands:
mov cxpos,#00h
mov cypos,#00h
54
55. mov dptr,#table9
call put_str
mov cxpos,#00h
mov cypos,#01h
mov dptr,#table10
call put_str
ret
table0: db "Init...",00h
table1: db "BY ZHANG JINGYI",00h
table9: db "Waiting commands",00h
table10: db "you have 5s...",00h
end
55
56. ПРИЛОЖЕНИЕ 3. Программный код разработанной системы
Листинг 4. lcd.asm
public lcd_init
public write_com
public write_data
public put_str
public delay3ms
ss1 segment code
rseg ss1
lcdrs bit p3.5
lcdrw bit p2.1
lcden bit p3.4
cxpos equ 21h
cypos equ 22h
;-------------------------------------------------
;Name of Subprogram: lcd_init
;Function:Initialize LCD control unit
;input:None
;output:None
;Effects: The values of R0 and ACC
;-------------------------------------------------
lcd_init:
mov a,#01h
call write_com
call delay3ms
mov a,#38h
call write_com
call delay3ms
mov a,#0fh
call write_com
call delay3ms
56
57. mov a,#06h
call write_com
call delay3ms
mov a,#80h
call write_com
call delay3ms
ret
;--------------------------------------------------
;-------------------------------------------------
;Name of Subprogram: write_com
;Function:Send command to the control unit of LCD
;input:A
;output:None
;Effects: The value of R0
;-------------------------------------------------
write_com:
clr lcdrs
clr lcdrw
mov p0,a
call delay3ms
setb lcden
call delay3ms
clr lcden
ret
;-------------------------------------------------
;-------------------------------------------------
;Name of Subprogram: write_data
;Function:Send data to the control unit of LCD
;input:A
;output:None
;Effects: The value of R0
;-------------------------------------------------
57
58. write_data:
setb lcdrs
clr lcdrw
mov p0,a
call delay3ms
setb lcden
call delay3ms
clr lcden
ret
;-------------------------------------------------
;-------------------------------------------------
;Name of Subprogram: lcd_read
;Function:Read data from the control unit of LCD
;input:None
;output:A
;Effects: The value of R0
;-------------------------------------------------
lcd_read:
call lcd_wait_idle
mov p0,#0ffh
setb lcdrs
setb lcdrw
setb lcden
nop
nop
mov a,p0
clr lcden
ret
;-------------------------------------------------
;-------------------------------------------------
;Name of Subprogram: lcd_wait_idle
;Function:Busy check of the LCD control unit
;input:None
;output:None
;Effects: The value of R0
;-------------------------------------------------
58
59. lcd_wait_idle:
push acc ;Generally,before
;reading and writing
;operations, the 7 bit
;of SW of LCD control
;unit must be checked.
;only when d7=0,the op
;eration of reading and
;writing would be accepted.
mov p0,#0ffh
clr lcdrs
setb lcdrw
setb lcden
mov r0,#20
wtd_pa: ;D7=0 means that LCD control
nop ;unit is idle, so quit from
nop ;the busy check.
jnb p0.7,wtd_lax
djnz r0,wtd_pa ;D7=1 menas that LCD control
nop ;unit is busy,so keep checking.
nop ;After 100us, if D7 still equals
;to 1 means that the LCD control
;unit works uncorrectlly.Also
;quit from the busy check
wtd_lax:
clr lcden
pop acc
ret
;----------------------------------------------------
;-----------------------------------------------------
;Name of Subprogram: put_str
;Function:At (cxpos,cypos) write string
;input:Dptr
;output:None
;Effects: The values of R0,ACC,DPTR
59
60. ;-----------------------------------------------------
put_str:
clr a
movc a,@a+dptr
jz psr_lax ;0 means the end of the string
call put_char ;write one char
call char_cursor_next ;move the pozision
;to the next
inc dptr ;move the string point to
;the next
jmp put_str ;re-read string
psr_lax:
ret
;------------------------------------------------------
;-----------------------------------------------------
;Name of Subprogram: put_char
;Function:At (cxpos,cypos) write char
;input:None
;output:None
;Effects: None
;-----------------------------------------------------
put_char:
call char_lcd_pos
call write_data
ret
;-----------------------------------------------------
;-----------------------------------------------------
;Name of Subprogram: char_lcd_pos
;Function:Set the DDRAM address of pozision(cxpos,cypos)
;input:None
;output:None
;Effects: None
;-----------------------------------------------------
60
61. char_lcd_pos:
push acc
anl cxpos,#0fh
anl cypos,#01h
mov a,cypos
cjne a,#00h,lps_lay
mov a,cxpos
jmp lps_lax
lps_lay:
mov a,cxpos
add a,#40h
lps_lax:
orl a,#80h
call write_com
pop acc
ret
;------------------------------------------------------
;-----------------------------------------------------
;Name of Subprogram: char_cursor_next
;Function:Set the char to the next avilable pozision
;input:None
;output:None
;Effects: The value of R0
;-----------------------------------------------------
char_cursor_next:
inc cxpos
anl cxpos,#0fh
mov r0,cxpos
cjne r0,#00h,csn_lax
inc cypos
anl cypos,#01h
csn_lax:
ret
;----------------------------------------------------
61
62. ;-------------------------------------------------
;Name of Subprogram: delay3ms
;Function:3 ms delay
;input:None
;output:None
;Effects: The values of R1 and R2
;-------------------------------------------------
delay3ms:
push 1
mov r1,#15
dl3_pa:
mov r2,#100
djnz r2,$
djnz r1,dl3_pa
pop 1
ret
;------------------------------------------------
end
62
71. ret
;---------------------------------------------------------------------------
DEL1S:MOV R7,#10
D1: MOV R6,#200
D2: MOV R5,#250
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1
RET
;---------------------------------------------------------------------------
table2: db "Searching...",00h
table3: db "Waiting response",00h
table4: db "Current time:",00h
end
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы
Листинг 6. gps_string_anal.asm
public status_check
public get_comma_string
ss4 segment code
rseg ss4
time_or_locat bit 20h.5
gps_dat_vaild bit 20h.6
lati_or_longti bit 20h.7
one_lati equ 40h
71
72. mten_lati equ 41h
mone_lati equ 42h
cxpos equ 21h
cypos equ 22h
str_loca_sms equ 33h
comma_start equ 35h
comma_content_size equ 36h
comma_res_start equ 37h
which_comma equ 38h
rev_buffer equ 46h
tmp equ 48h
;------------------------------------------------------------------------
status_check:
push 1
mov comma_start, rev_buffer
mov which_comma,#02h
mov comma_res_start,#0a0h
mov comma_content_size,#00h
call get_comma_string
mov r1,comma_res_start
mov a,@r1
cjne a,#41h,exit_status_check ;41h=A means
data valid
setb gps_dat_vaild
exit_status_check:
pop 1
ret
;------------------------------------------------------------------------
;---------------------------------------------------------------------
;input: which_comma- String gets from which comma
; comma_start-pointer to the beginning of a string
; comma_content_size=0
72
73. ;output:comma_content_size-size of the content between two commas
; comma_res_start the beginning address for keeping result
get_comma_string:
push 1
push 0
mov r0,comma_res_start
mov r2,which_comma
mov r1,comma_start
loop_get_comma_str:
mov a,@r1
cjne a,#2ch,next0_get_comma_str ;2ch equals to ','
djnz r2,next1_get_comma_str
get_num_sat:
inc r1
mov a,@r1
cjne a,#2ch,next2_get_comma_str ;2ch equals to ','
sjmp exit_get_comma_str
next0_get_comma_str:
inc r1
cjne r1,#9fh,loop_get_comma_str ;the end of the string 9fh
(address)
next1_get_comma_str:
inc r1
sjmp loop_get_comma_str
next2_get_comma_str:
mov @r0,a
inc r0
inc comma_content_size
sjmp get_num_sat
exit_get_comma_str:
pop 0
pop 1
73
75. get_second_mul:
mov a,@r1
inc r1
subb a,#30h
swap a
mov tmp,a
mov a,@r1
subb a,#30h
add a,tmp
call bcd_to_hex
mov b,#06h
mul ab
mov r6,b
mov r7,a
call hex2_to_bcd
mov a,r4
add a,#30h
mov r2,a ;write back to r2
mov a,r5
anl a,#0f0h
swap a
add a,#30h
mov r3,a ;write back to r3
mov a,r5
anl a,#0fh
add a,#30h
mov r4,a ;write back to r4
ret
75
76. ;-------------------------
;input:a
;output:a
bcd_to_hex:
mov b,#10H
div ab
mov r4,b
mov b,#10
mul ab
add a,r4
ret
;-------------------------
;-----------------------------------------
;input: R6,R7
;output: R3,R4,R5,change register group
hex2_to_bcd:
clr a
mov r3,a
mov r4,a
mov r5,a
mov r2,#10h
loop0_hex2_to_bcd:
mov a,r7
rlc a
mov r7,a
mov a,r6
rlc a
mov r6,a
mov a,r5
addc a,r5
da a
mov r5,a
mov a,r4
addc a,r4
da a
76
77. mov r4,a
mov a,r3
addc a,r3
mov r3,a
djnz r2,loop0_hex2_to_bcd
exit_loop0_hex2_to_bcd:
ret
;---------------------------------------------
end
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы
Листинг 8. sms.asm
public send_sms
ss6 segment code
rseg ss6
extrn code(serial_send)
str_loca_sms equ 33h
77
78. counter1 equ 49h
bai_c equ 3dh
sh_c equ 3eh
g_c equ 3fh
;-------------------------------------------------
;Name of Subprogram: delay3ms
;Function:3 ms delay
;input:None
;output:None
;Effects: The values of R1 and R2
;-------------------------------------------------
delay3ms:
mov r1,#15
dl3_pa:
mov r2,#100
djnz r2,$
djnz r1,dl3_pa
ret
;------------------------------------------------
;-------------------------------------------------------
;Name of Subprogram: delay105ms
;Function:Delay 105 ms
;input: R3
;output: None
;Effects: R1,R2,R3
;-------------------------------------------------------
delay105ms:
mov r3,#23h
cycle4:
call delay3ms
djnz r3,cycle4
78
82. exit_send_temper:
pop acc
ret
;-----------------------------------------------------
;-----------------------------------------------------
;Name of Subprogram: send
;Function:send string to serial port
;input:DPTR,counter
;output:None
;Effects: R1,R2
;-----------------------------------------------------
send:
cycle7:
mov a,#00h
movc a,@a+dptr
lcall serial_send
lcall delay3ms
inc dptr
djnz counter1,cycle7
ret
;-----------------------------------------------------
table6: db 0ah,"Local T:",00h
table7: db 0ah,"Location:",0ah
table13: db 0ah,"AT",0dh,0ah
table14: db "AT+CMGF=1",0dh,0ah
table15: db "AT+CSCS=GSM",0dh,0ah
table16: db "AT+CSMP=17,167,0,0",0dh,0ah
table17: db "AT+CMGS=89030944159"
table18: db "Hello World!",1ah
82
83. table19: db 0dh,0ah
end
ПРИЛОЖЕНИЕ 3. Программный код разработанной системы
Листинг 9. Sensor_temp.asm
public anal_temper
ss7 segment code
rseg ss7
extrn code(write_com) ;;;
extrn code(write_data) ;;;
extrn code(put_str)
cxpos equ 21h
cypos equ 22h
temper_l equ 3bh
temper_h equ 3ah
temper_d equ 3ch
temper_num equ 4ah
flag1 bit 20h.1
83
90. mov a,#00h
lcall write_1820
mov a,#7fh
lcall write_1820
ret
;------------------
delay:
mov r7,#2h
min:
djnz r7,ys500
ret
ys500:
lcall ys500us
ljmp min
ys500us:
mov r6,#200
djnz r6,$
ret
delay1:
mov r7,#20h
djnz r7,$
ret
temp_tab:
db 00h,01h,02h,03h,04h,05h,06h,07h
db 08h,09h,10h,11h,12h,13h,14h,15h
db 16h,17h,18h,19h,20h,21h,22h,23h
db 24h,25h,26h,27h,28h,29h,30h,31h
db 32h,33h,34h,35h,36h,37h,38h,39h
db 40h,41h,42h,43h,44h,45h,46h,47h
db 48h,49h,50h,51h,52h,53h,54h,55h
db 56h,57h,58h,59h,60h,61h,62h,63h
db 64h,65h,66h,67h,68h,69h,70h,71h
db 72h,73h,74h,75h,76h,77h,78h,79h
db 80h,81h,82h,83h,84h,85h,86h,87h
90