Реализация переносного портативного измерительного модуля для сбора данных о положении объекта и их отображения на персональном компьютере

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

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид дипломная работа
Язык русский
Дата добавления 30.06.2017
Размер файла 4,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Модуль трехосного акселерометра GY-291 на базе чипа ADXL345, результаты цифрового измерения которого представляются в виде 16-битных чисел в дополнительном коде и доступны через цифровые интерфейсы SPI или I2C. Высокое разрешение ADXL345 (4*10-3 г/LSB) позволяет измерять отклонения менее чем на 1.0 °. Обладает следующими характеристиками: напряжение питания 3-5 В, диапазон измерений ± 2 g, ± 16 g.

9-осевой датчик положения, в который встроены гироскоп ITG3205, акселерометр ADXL345 и трехосный компас HMC5883L обладает следующими характеристиками:

- Напряжение питания 3-5 В,

- Интерфейс передачи данных I2C,

- Диапазон измерений акселерометра: ± 2 g, ±4 g, ±8 g, ± 16 g,

- Диапазон измерений гироскопа: ±250 dps, ±500 dps, ±1000 dps, ±2000 dps,

- Диапазон измерений магнитометра: ±4800 uF,

- Буфер FIFO 512 байт.

MPU9250 - цифровой гироскоп и акселерометр MPU-6500 и модуль трехосного компаса AK8963. За обработку данных отвечает интегрированный цифровой процессор движения (DMP). Имеет характеристики:

- Электропитание: 3-5 В,

- Интерфейс: I2C (400 кГц) / SPI (1 МГц),

- Диапазон измерения акселерометра: ± 2 g, ±4 g, ±8 g, ± 16 g,

- Диапазон измерения гироскопа: ±250 dps, ±500 dps, ±1000 dps, ±2000 dps,

- Диапазон измерения Компас Магнитометр: ±4800uF

- Буфер FIFO 512 байт.

3-осевой гироскоп и 3-осевой акселерометр GY-521 на чипе MPU-6050 позволяет определить положение и движение объекта в пространстве, угловую скорость во время вращения. Также имеет встроенный датчик температуры. Он используется в различных коптерах и моделях самолетов, также на основе этих датчиков можно собрать систему захвата движения. Характеристики MPU6050:

- Питание: от 2,375 В до 3,46 В (DC),

- Потребляемый ток до 4 мА,

- Диапазон гироскопа: ±250 dps, ±500 dps, ±1000 dps, ±2000 dps,

- Диапазон акселерометра: ± 2 g, ±4 g, ±8 g, ± 16 g,

- Интерфейс связи: I2C (400 кГц),

- Внутренний генератор на 8 МГц.

Опираясь на описания этих модулей был выбран МГА MPU6050 (рис. 9), так как он оказался самым доступным, почти самым дешевым и с нужной функциональностью для реализации поставленной задачи.

Рис. 9. MPU6050.

4.3 Wi-Fi модуль

используется для передачи данных с МГА беспроводным путем в приложение-клиент на ПК. Выбор этого модуля происходил аналогичным способом при выборе МГА.

EMW3162 - модуль от студии Seeedstudio, состоящий из модуля Wi-Fi с низким энергопотреблением - 7мА в режиме ожидания и 120МГц Cortex-M3 микроконтроллера STM32F205RG, имеющего 1Мб Flash, 128Кб SRAM). Для работы с модулем используется библиотека MxchipWNet. Данный модуль имеет следующие характеристики:

- Контроллер: 120 МГц STM32F205RG, с 1 Мб Flash и 128 Кб оперативной памяти,

- Поддерживаемый протокол: Easy Link (поддержка APP),

- Напряжение питания: 3.3 В,

- Typical power consumption,

- Потребление при передаче: 20 Кбс (длительность передачи 100мс) 24 мА,

- Потребление при ожидании: 7 мА,

- Поддержка протоколов: IEEE 802.11 b/g/n, WiFi частотный диапазон 1-13,

- Излучаемая мощность: 8 dBm - 11b, 15 dBm - 11g, 14.5 dBm - 11n,

- Чувствительность приемника: -96 dBm,

- WPS 2.0,

- Алгоритм защиты: WEP, WPA/WPA2 PSK/Enterprise.

Wi-Fi модуль ESP-07 - один из линейки модулей на чипе ESP8266. Отличается от других модификаций керамической антенной и разъемом для внешней антенны. Имеет характеристики:

- WI-FI: 802.11 b/g/n с WEP, WPA, WPA2,

- Режимы работы: Клиент (STA), Точка доступа (AP), Клиент+Точка доступа (STA+AP),

- Напряжение питания: от 1.7 В до 3.6 В,

- Потребляемый ток: до 215 мА,

- GPIO: 16,

- Flash: 512 кб.

- RAM данных: 80 кб

- RAM инструкций: 32 кб.

Wi-Fi модуль ESP-07S - обновленная версия модуля ESP-07, на базе чипа ESP8266. Обновленный модуль отличается уменьшенным размером, за счет убранной керамической антенны. Главное отличие - это работа при "индустриальных" значениях температуры, за счет оптимизированной схемы модуля. Краткосрочно (до 10 сек) модуль способен выдерживать температуру до 260 С.

Wi-Fi модуль ESP-12F на чипе ESP8266 фирмы Espressif. Благодаря встроенному в чип микроконтроллеру класса 8051, может работать без дополнительного управления, может прошиваться, как и любой микроконтроллер. Кроме микроконтроллера, в чип встроен и датчик температуры. Сам модуль имеет разведенную на плату PCB антенну и светодиод для индикации питания. Модуль имеет характеристики:

- Протоколы Wi-Fi: 802.11 b/g/n,

- Рабочая частота: 2.4 ГГц-2.5 ГГц,

- Интерфейсы: UART/HSPI/I2C/I2S/Ir Remote Control,

- Сетевые протоколы: IPv4, TCP/UDP/HTTP/FTP,

- Защита: WPA/WPA2,

- Шифрование: WEP/TKIP/AES,

- Рабочая температура: от -40 °С до 125 °С,

- Напряжение I/O: от 3 В до 3.6 В,

- Потребление в режиме передачи: 80 мА,

- ОЗУ: 80 Кб,

- Flash память: 4 Мб.

Wi-Fi модуль ESP-01 самый популярный модуль серии ESP8266. Управляющее устройство общается с ESP8266 через UART (Serial-порт) с помощью набора AT_команд. Работа над приёмом и передачей данных выглядит, как взаимодействие с сырым TCP-сокетом или с serial-портом компьютера. Более того, модуль можно перепрошивать. Программировать и загружать прошивки можно через Arduino IDE, точно так же, как при работе с Arduino. Реакция на AT-команды -- это просто функция штатной прошивки, устанавливаемой на заводе. Так как на плате имеются 2 порта ввода/вывода, то после прошивки можно обойтись без дополнительного контроллера, подключая периферию непосредственно к модулю. Для прошивки модуля понадобится обычный программатор, как и для некоторых плат Arduino. PCB антенна модуля обеспечивает дальность связи до 400м на открытом пространстве. Имеет следующие характеристики:

- Беспроводной интерфейс: Wi-Fi 802.11 b/g/n 2,4 ГГц,

- Режимы: P2P (клиент), soft-AP (точка доступа),

- Максимальная выходная мощность: 19,5 дБ*мВт (89 мВт),

- Номинальное напряжение: 3,3 В,

- Максимальный потребляемый ток: 220 мА,

- Портов ввода-вывода свободного назначения: 2,

- Частота процессора: 80 МГц,

- Объём памяти для кода: 64 Кб,

- Объём оперативной памяти: 96 Кб.

Так как Wi-Fi модуль ESP8266 (ESP-01) (рис. 10) является самым распространённым и в то же время одним из самых дешевых, выбор пал именно на него. Кроме этого данный модуль обеспечивает достаточную дальность связи для использования устройства контроля положения объекта в пределах одного здания, что позволяет наблюдать за системой удаленно (в пределах допустимости).

Рис. 10. Wi-Fi модуль ESP8266.

4.4 Аккумулятор

также является не менее важной частью автономного беспроводного устройства. Для обеспечения устройства питанием была выбрана аккумуляторная батарея российского производства Robiton в корпусе с типоразмером 18650. Robiton LiFe18650 - это литиевый аккумулятор, который был сделан по технологии Nanophosphate®. Данный аккумулятор имеет повышенную мощность, продолжительный срок службы и хранения и достаточно хорошую устойчивость к внешним воздействиям. Диапазон рабочих температур варьируется в пределах от _20 °С до +60 °С, хранится он в пределах от _20 °С до +45 °С. Выдерживает разряд током до 30 А. Обладает способностью заряжаться высоким током до 4 А за 12 минут. Данный аккумулятор прошел проверку на термическую и химическую стабильность и является безопасным. Основные параметры аккумуляторной батареи Robiton LiFe 18650:

- Номинальная емкость: 1100 мАч,

- Минимальная емкость: 1050 мАч,

- Номинальное напряжение: 3,2 В,

- Максимальное напряжение при заряде: 4,365 В,

- Минимальное напряжение при разряде: 2,25 В,

- Максимальный ток заряда: 5,5 А,

- Внутреннее сопротивление: <15 мОм,

- Срок службы: >1500 циклов с сохранением емкости >80% от номинальной.

5. Разработка электрической принципиальной схемы модуля

Принципиальная электрическая схема устройства (рис. 11) была разработана в программе для черчения электронных схем sPlan 7.0.

Рис. 11. Принципиальная электрическая схема.

К выводу микроконтроллера 1 (reset/PC6) подсоединена тактовая кнопка и подтягивающий резистор на 10 кОм, чтобы по нажатии кнопки происходил сброс микроконтроллера. Подтягивающий резистор большого сопротивления нужен, чтобы не произошел непреднамеренный сброс системы от внешних помех. Несмотря на то, что в данном микроконтроллере предусмотрен подтягивающий резистор, что защищает МК в лабораторных условиях, дополнительная мера предосторожности от внешних воздействий не будет лишней.

Выводы МК 2 (RX/PD0) и 3 (TX/PD1) соединены с выводами на Wi-Fi модуле 1 (TX) и 5 (RX) соответственно. По этим двум линиям осуществляется передача данных, полученных МГА и обработанным МК на модуль беспроводной связи. Также по этим линиям при старте системы МК передает настройки Wi-Fi модулю.

К выводам микроконтроллера 7 (Vcc) и 8 (Gnd) подведено питание - плюс и минус аккумулятора соответственно.

Вывод под номером 14 (PB0) используется для индикации начала отправки данных Wi-Fi модулем приложению-клиенту на ПК. Индикация происходит при помощи светодиода с включенным последовательно резистором на 241 Ом.

27 (SDA) и 28 (SCL) выводы МК соединены с выводами SDA и SCL МГА соответственно. На этих линиях реализована шина связи I2C, по которой МК осуществляет передачу начальных настроек на МГА, и, по которой передаются данные о пространственном положении микроконтроллеру.

Чтобы обеспечить рабочее состояние МГА MPU6050, нужно соединить вывод 1 (Vcc) с плюсом аккумуляторной батареи, а выводы 2 (Gnd) и 3 (AD0) с минусом.

Также подаем питание и на Wi-Fi модуль: выводы 2 (CH_PD) и 4 (Vcc) соединены с плюсом источника питания и вывод 8 (Gnd) с минусом.

Измерительный модуль состоит из компонентов, представленных в таблице 1.

Таблица 1. Список радиоэлементов

Обозначение

Тип

Номинал

ATmega8

МК AVR 8-бит

MPU6050

Модуль

ESP8266

WiFi модуль

R1

Резистор

10000 Ом

R2

Резистор

241 Ом

HL1

Светодиод

S1

Тактовая кнопка

6. Макетирование модуля

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

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

Рис. 12. Макет устройства.

Программирование микроконтроллера происходило при помощи программатора USBASP, который имитирует последовательные порт компьютера. Чтобы прошить микроконтроллер, нужно соединить выводы 1 (reset), 7 (Vcc), 8 (Gnd), 17 (MOSI), 18 (MISO), 19 (SCK) на микроконтроллере с соответствующими выводами программатора.

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

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

Рис. 13. Принципиальная схема в EasyEDA.

После того как принципиальная схема была готова, переходим в редактор PCB (printed circuit board) (рис. 14).

Рис. 14. Редактор PCB.

Расставляем элементы и делаем границы платы так как нужно нам (рис. 15).

Рис. 15.Компоновка элементов.

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

Рис. 16. Макет платы в редакторе.

Рисунок платы зеркальный, потому что, после перевода его на саму основу, он развернется. Дальше нужно распечатать рисунок на лазерном принтере, для этого нужно его подготовить (рис. 17).

Рис. 17. Макет платы.

Печать происходила на лазерном принтере на бумаге для факса, так как она тонкая и немного глянцевая, что позволит качественнее перенести тонер на медную поверхность (рис. 18).

Рис. 18. Распечантанный макет платы.

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

Рис. 19 а. Стеклотекстолит.

Рис. 19 б. Заготовка.

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

Рис. 20. Прогретая заготовка.

Когда заготовка остыла снимаем бумагу под небольшой струей воды и получаем рисунок на медной поверхности, который будет защищать медь от травления (рис. 21).

Рис. 21. Рисунок на заготовке.

Дальше нужно протравить лишнюю медь в растворе. Раствор приготовлен из 100 мл. перекеси водорода, 30 г. лимонной кислоты и 5 г. соли. В него погружается плата, медной стороной вниз для более эффективного результата (рис. 22).

Рис. 22. Процесс травления.

Химическая реакция описывается следующими уравнениями:

Суммарная реакция: Cu+ H3Cit +H2O2> H[CuCit] +2H2O

Электрохимия:

Первая реакция: Cu +Cit3-> [CuCit]-+2e -0,083 В

Cit - здесь означает остаток лимонной кислоты [(CH2)2C(OH)(COO)3]

Это значение ОВП своим минусом показывает, что медь должна растворяется в лимонной кислоте с выделением водорода, уходя в комплекс.

Вторая реакция: H2O2+2e+2H+ > 2H2O +1,67. [10]

Полученная печатная плата после травления в растворе выглядит следующим образом (рис. 23):

Рис. 23. Плата после травления.

После сверления отверстий для крепления элементов печатная плата выглядит следующим обрадом (рис. 24):

Рис. 24. Плата с отверстиями.

Далее, чтобы предотвратить окисление меди, нужно залудить дорожки (покрыть слоем припоя) (рис. 25).

Рис. 25. Плата с залуженными дорожками.

Размещаем и припаиваем SMD резисторы и ножки разъемов PBS (рис. 26, рис. 27).

Рис. 26. Готовая печатная плата с нижней стороны.

Рис. 27. Печатная плата с лицевой стороны.

PBS разъемы позволяют крепить элементы на плате (рис. 28) и, если это необходимо, удалять их от туда. Например, микроконтроллеру может понадобиться перепрошивка и данный разъем позволяет без лишних движений снять МК и установить его на плату.

Рис. 28. Готовый макет.

На этом макетирование разрабатываемого устройства закончено.

7. Выбор среды разработки для программного обеспечения

При разработке любого программного обеспечения (далее ПО) необходимо определиться со средой разработки приложения. Среда разработки должна обладать функционалом для решения всех поставленных задач при программировании. Для начала нужно определить среду разработки для программного обеспечения микроконтроллера Atmega8. Для семейства AVR микроконтроллеров в наше время существует большое количество сред разработки ввиду его популярности.

Требования к среде разработки для микроконтроллера:

- Поддержка AVR архитектуры,

- ОС Windows,

- Включает в себя реализации основных функций Atmega8,

- Язык программирования С или Assembler,

- Удобство.

Чтобы определиться какую среду разработки выбрать, проанализируем самые известные из них.

WinAVR - среда разработки, которая отлично подходит для написания программ под МК серии AVR. Имеет открытый исходный код и простой интерфейс.

BASCOM-AVR - среда разработки от компании Atmel, в которой используется язык, который очень похож на Бэйзик.

CodeVisionAVR - еще одна среда разработки для AVR микроконтроллеров, но уже другой компании. Главным достоинстов является, что это программ отлично подходит для новичков, которые только учатся писать программы для микроконтроллеров, благодаря своему интерфейсу.

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

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

Atmel Studio - интегрированная среда разработки от компании Atmel. Имеет огромный набор функционала нужный для разработки приложений на языке си, ассемблер.

Для написания программного обеспечения для микроконтроллера будет использоваться Atmel studio на языке программирования С, так как она больше всего подходит под наши требования. Также стоит выбрать приложение для прошивки микроконтроллера. Их также сейчас огромное множество, однако в отличии от сред разработки эти приложения обладают одинаковым функционалом, поэтому практически нет разницы какое выбрать. Для прошивки использовалась программа Khazama avr programmer, так как она содержит в себе очень простой и понятный интерфейс.

Теперь перейдем к выбору среды разработки для ПК. Как и для микроконтроллеров выявим основные требования к среде разработки.

Требования к среде разработки для ПК:

- ОС Windows

- Поддержка desktop приложений

- Язык программирования C/C++

- Поддержка стандартных библиотек С/С++

- Графические библиотеки

- Поддержка opengl

- Поддержка сетевого TCP протокола

- Удобство

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

Microsoft Visual Studio - одна из самых известных сред разработок приложений от компании Microsoft. Благодаря данной среде можно разрабатывать как консольные приложения, приложения с графическим интерфейсом, а также веб-сайты, веб-приложения и веб-службы для всех поддерживаемых платформ: Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone, .NET Compact Framework и Silverlight. Однако даже у такой среды разработки есть минусы. Самый известный из них это кроссплатформенность, что не позволяет разрабатывать приложения на ОС отличных от Windows.

Eclipse CDT -- очень популярная среда разработки среди разработчиков на языке Java, однако данная среда имеет возможность написания программ и на языках С/С++. Имеет при себе отличный функционал для разработки приложений, а также подходит для всех известных операционных систем.

NetBeans -- бесплатная среда разработки, в которой есть возможность писать программы на языках программирования Java, Python, PHP, JavaScript, C, C++ и ряде других. NetBeans очень просто устанавливается на любую систему, а также иммет возможность самостоятельной сборки из исходников.

CodeLite. Еще одна бесплатная среда разработки, которая доступна для огромного множества операционных систем: Windows 7/8/8.1/10, Debian, Ubuntu, Fedora, OpenSUSE, ArchLinux и даже Mac OS X версии 10.8 и выше. Внешний интерфейс программы прост и понятен, что отлично подходит для новичков, однако имеет ограниченный функционал.

QT Creator - Кроссплатформенная свободная среда разработки на С, С++ и QML. Имеет хороший графический интерфейс и визуальные средства, что позволяет облегчить программирование графических приложений.

8. Разработка ПО для микроконтроллера

Для успешной разработки программного обеспечения для микроконтроллера необходимо разобраться в основных задачах, которые должен выполнять микроконтроллер. Во-первых, он должен сообщать датчику гироскопа-акселерометра, чтобы тот отправлял данные, затем которые он бы принимал и обрабатывал. Во-вторых, мк должен хранить эти значения у себя в памяти. В-третьих, он должен сообщать wifi модулю, чтобы тот создавал tcp сервер и как только подключиться клиент он бы начал отправлять данные клиенту, которые хранит мк. Все это необходимо для правильной работы ПО для микроконтроллера. Теперь разберем подробнее каждый пункт на примере кода.

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

Рис. 29. Инициализация I2C.

На данном рисунке (рис. 29) показана инициализация портов для передачи по шине I2C.

Рис. 30. Прототипы функций I2C.

На рисунке 30 изображены прототипы всех функций для успешной работы шины I2C. Разберем самые важные из них это i2c_send_byte и i2c_get_byte для отправки байта и принятия его соответственно.

Рис. 31. Функция отправки байта по I2C.

Функция отправки байта (рис. 31) заключается в том, что мы циклом по одному биту считываем байт, который хотим отправить, в SDA, затем с помощью SCL отправляем его. Если передача была успешной ack будет равен 0.

Рис. 32. Функция принятия байта по I2C.

Функция противоположная отправке (рис. 32). Также с помощью цикла считываем по 1 биту теперь SDA и записываем его в переменную. В конце возвращаем полное значение байта.

При помощи I2C мы передаем начальные настройки mpu-6050 модуля и принимаем значения акселерометра и гироскопа.

Рис. 33. Функции принятия значений датчика по I2C.

Однако стоит помнить, что принятые значения -- это не показания углов. Гироскоп выдает значения мгновенной угловой скорости с разрешением, заданным в настройках. Скорость мы получаем в градусах в секунду, а это значит, что линейные скорости не влияют на эти показания. Из этих данных можно просто получить ориентацию объекта в пространстве. Для этого нужно мгновенное значение угловой скорости умножить на промежуток времени между опросами датчика гироскопа. Далее каждое полученное значение нужно сложить с предыдущим. (рис. 33).

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

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

Теперь разберемся как устроена передача данных по wifi модулю. Для начала необходимо, чтобы микроконтроллер задал начальные настройки wifi модулю для создания tcp-сервера. Общаться микроконтроллер с модулем будет с помощью интерфейса UART.

Рис. 34. Инициализация UART.

Формат 9600/8-N-1 означает, что скорость интерфейса составляет 9600 бит/сек, 8 бит данных и 1 стоп-бит (рис. 34).

Рис. 35. Функции отправки UART.

Две самые важные функции для отправки данных и настроек wifi модуля (рис. 35). Так как использовался ESP-8266 в его стандартной прошивки, он понимает специальные AT команды.

Рис. 36. Настройка ESP-8266.

Символы 13 и 10 кода нужны, чтобы wifi модуль понимал конец команд. Задержки используются для того, чтобы ESP-8266 успевал применять данные настройки. После применения настроек можно начать передавать данные об углах. Передача будет осуществляться с помощью прерываний, чтобы увеличить скорость передачи и избежать возможных ошибок (рис. 36). Также стоит учитывать, что можно отправлять только строки и нужно точно знать, сколько бит надо отправлять. Для решения этих проблем использовался следующий код:

Рис. 37. Перевод чисел в строки.

Функция ltoa позволяет перевести число в строку, а приведенные условия помогают определить сколько бит нужно передавать по беспроводной сети (рис. 37).

Рис. 38. Отправка данных ESP-8266.

На рисунке 38 представлена функция прерывания, которая будет выполняться как только wifi модуль будет принимать данные. Функция FlushBuf используется для очистки строки. Как только клиент на ПК будет подключаться к tcp серверу, он будет отправлять специальные символы, которые микроконтроллер будет принимать и обрабатывать с помощью прерывания. это позволит обеспечить непрерывную и быструю отправку данных об углах объекта. Также к значениям градусов добавляем в конец специальные символы, которые помогут избежать возможных ошибок при неправильном распределении значений на ПК.

9. Разработка ПО для ПК

Теперь разберем код написанный для ПК приложения.

Рис. 39. Заголовочный файл geometryengine.h.

Класс GeometryEngine унаследован QopenGLFunctions и служит для определения и рисования геометрии фигуры (рис. 39). Разберем на примере функции initCubeGeometry() как строится геометрия нашей фигуры.

Рис. 40. Функция initCubeGeometry.

В QVector3D задаются точки по осям для каждой из 6 граней. Точки бдут повторяться, однако это нужно для правильного наложения текстуры, которые задаются в QVector2D (рис. 40). После реализации геометрии разберем отрисовку opengl.

Рис. 41. Основные функции opengl.

Любая отрисовка в opengl существует благодаря трем основным функциям: initializeGL, resizeGL, paintGL. В первой задаются основные параметры opengl. Вторая отвечает за перерисовку при изменении окна приложения (рис. 41). Последняя отвечает за само рисование фигуры. Для рисования цветной 3 д фигуры необходимо задать шейдеры и текстуры (рис. 42).

Рис. 42. Инициализация шейдеров и текстур.

После инициализации шейдеров и текстур разберем самую важную функцию отрисовки.

Рис. 43. Функция paintGL.

Стоит заметить matrix здесь используется для отображения фигуры (масштаб, вращение). Здесь рисуется геометрия фигуры и на нее накладывается текстура (рис. 43).

Рис. 44. Конструктор класса MainWidget.

После отображения фигуры необходимо разобраться с сетевой составляющей (рис. 44). Для подключения к tcp серверу, который создает wifi модуль, нужен tcp клиент. Благодаря сетевым библиотекам qt это сделать очень просто. Необходимо создать объект класса QTcpSocket, и при помощи метода connectToHost подключиться к tcp серверу, задав соответствующий ip адрес и порт. Благодаря сигналу readyRead мы можем понять, когда надо считать сообщение, отправленное wifi модулем.

Рис. 45. Функция GetMessage.

Функция считывает и смотрит конец принятого сообщения (рис. 45). Благодаря последнему символу, программа точно понимает, значения какой оси надо изменять. После изменения значения используется функция update(), чтобы обновить картинку и затем отправляет сообщение wifi модулю, что он готов принимать следующие сообщение.

10. Тестирование разработанной подсистемы контроля положения объекта

Подключаем питание к нашему устройству. Wi-Fi модуль моргает 5 раз, что свидетельствует об успешных применениях начальных настроек и открытия tcp_сервера. При помощи Wi-Fi адаптера находим сеть нашего устройства. Подключившись к нашей сети, можно использовать нашу программу для просмотра вращений, основанных на данных, которые отправляет разработанная система (рис. 46).

Рис. 46.Скриншот программы.

Изменяя положение устройства, регистрируем изменение положения графического объекта в программе по трем осям. Тестируем ось Х (рис. 47), ось У (рис. 48), ось Z (рис. 49).

Рис. 47. Тест по оси X.

Рис. 48. Тест по оси Y.

Рис. 49. Тест по оси Z.

При подключении питания никаких неполадок не обнаружено. Wi-Fi модуль работает исправно. В программе направление вращения объекта по осям совпадает с вращением устройства. Разработанное устройство работает исправно.

В итоге была разработан универсальный и автономный измерительный модуль для контроля пространственного положения объекта. Был проведен анализ существующих технических решений контроля положения объекта. Также была Разработана структурная схема и алгоритм работы устройства. Выбран протокол связи для беспроводного соединения с ПК. Также был проведен выбор основных составных частей устройства для контроля положения объекта. Разработана электрическая принципиальная схема модуля. Был Проведен выбор среды разработки для программного обеспечения и разработано программное обеспечение для микроконтроллера и ПК. В конце было проведено тестирование разработанной подсистемы контроля положения объекта.

11. Вклад в работу каждого из участников проекта

Студент Семаков Евгений Владимирович провел анализ существующих методов определения пространственного положения объектов, на основе которого был выбран более приемлемый метод для решения поставленной задачи. Была разработана структурная и принципиальная схема устройства, выбраны комплектующие для будущего устройства и реализация макета устройства, включающая в себя создание печатной платы и монтаж на ней выбранных компонентов. Также была создана текстура устройства в приложении на ПК. Результатом работы стало готовое измерительное устройство, состоящие из выбранных компонентов, расположенных на печатной плате.

Студент Буглак Валерий Александрович провел обзор сред для разработки программного обеспечения для микроконтроллера и персонального компьютера и выбрал те, в которых им были реализованы алгоритмы работы программ для разработанного устройства и для приложения на ПК. Результатом работы стали работающие программы на измерительном устройстве и на ПК, где отображается вращение данного устройства.

Совместно был проведен выбор способа связи для передачи данных от устройства в программу на ПК. Также совместно проводились тесты разработанной подсистемы контроля пространственного положения объекта и разработанного приложения на ПК. Итогом совместной работы стала выполненная задача, включающая в себя измерительное устройство и приложения на ПК, в котором происходит контроль над системой.

Список литературы

1. Семаков Е. В. Attitude control subsystem development. М.: МИЭМ НИУ ВШЭ, 2017. 3 с.

2. Жунисбеков Б.Ш. «Символ науки». Анализ методов контроля положения. URL: http://cyberleninka.ru/article/n/analiz-metodov-kontrolya-polozheniya (дата обращения 28.01.2017).

3. Преснухин Л.Н. и др. Фотоэлектрические преобразователи информации. - М.: Машиностроение, 1974.

4. Носова М.Д., Иванов А.Н. Интерференционные способы контроля положения объектов с использованием точек инверсии фазы оптического сигнала. // Глобальный научный потенциал. Машиностроение. - 2014. - №9.

5. Иванов А.Н. Дифракционные методы контроля геометрических параметров объектов и их пространственного положения. // Вестник II межвузовской конференции молодых ученых. Сборник научных трудов. СПб. -2102. - Т. З.

6. Датчики линейных и угловых перемещений. Полезная информация. Статьи специалистов ОАО «СКБ ИС» -- российского производителя датчиков перемещений. URL: http://www.skbis.ru/index.php?p=7 (дата обращения 17.02.2017).

7. Шимаров А.И. «Альманах современной науки и образования». Светолучевой метод определения углового положения и координат объекта. URL: http://www.gramota.net/materials/1/2015/7/40.html (дата обращения 12.03.2017).

8. Патент № 2004113172/28, 28.04.2004. Иващенко В.А. Способ измерения углов отклонения заданного направления от вертикали и поперечных ускорений посредством гидродинамических гироскопов, способ подвеса чувствительного элемента гидродинамического гироскопа с аксиальным смещением центра масс и способ определения его плавучести // Патент России № 2269097. 27.01.2006. Бюл. №3.

9. Сысоева С. Мобильные МЭМС-датчики с девятью и боле степенями свободы // Встраиваемые системы. 2010. С. 68-72.

10. Murlock. «Радио кот». Безопасный общедоступный состав для травления меди в домашних условиях. URL: http://radiokot.ru/lab/hardwork/62/ (дата обращения: 10.04.2017).

Размещено на Allbest.ru


Подобные документы

  • Разработка модуля для решения задач управления и обмена информацией с удаленными объектами. Принцип работы интерфейсного модуля RS2-4.5x и разработка его конструкции. Выбор и описание элементной базы, поверочный конструкторский расчет устройства.

    курсовая работа [1,3 M], добавлен 06.11.2012

  • Блок-схема алгоритма программы управления микроконтроллером. Требования к печатным платам и их разработка. Структурная схема измерительного устройства Ретом-30КА. Выбор микроконтроллера как одно из самых важных решений при разработке управляющего модуля.

    дипломная работа [1,9 M], добавлен 18.06.2010

  • Методы реализации цифровых фильтров сжатия и их сравнение. Разработка модуля сжатия сложных сигналов. Разработка структурной схемы модуля и выбор элементной базы. Анализ работы и оценка быстродействия. Программирование и конфигурирование микросхем.

    дипломная работа [5,7 M], добавлен 07.07.2012

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

    курсовая работа [955,0 K], добавлен 04.05.2014

  • Технологическая характеристика модуля сопряжения как объекта автоматизированной сборки и монтажа. Расчет показателей технологичности конструкции. Выбор оборудования для производства модуля и расчет технико-экономических показателей поточной линии сборки.

    контрольная работа [58,6 K], добавлен 25.08.2010

  • Разработка технологического процесса ремонтных работ для модуля кадровой развертки МК-41. Конструкция и электрическая принципиальная схема модуля. Выбор элементной базы микросхемы и измерительных приборов для проведения регулировочных работ изделия.

    курсовая работа [869,2 K], добавлен 03.03.2012

  • Выбор регулятора для объекта управления с заданной передаточной функцией. Анализ объекта управления и системы автоматического регулирования. Оценка переходной и импульсной функций объекта управления. Принципиальные схемы регулятора и устройства сравнения.

    курсовая работа [2,5 M], добавлен 03.09.2012

  • Функциональная спецификация, описание объекта, структура системы и ресурсов микроконтроллера. Ассемблирование, программирование микроконтроллера и разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы.

    курсовая работа [2,2 M], добавлен 02.01.2010

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

    курсовая работа [387,9 K], добавлен 24.12.2012

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

    курсовая работа [362,6 K], добавлен 02.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.