"Умная штора"

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.04.2016
Размер файла 467,8 K

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

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

Размещено на http://www.allbest.ru/

Иркутск 2016

Министерство образования и науки РФ

Институт математики, экономики и информатики

Кафедра Информационных систем

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Иркутский государственный университет»

Курсовая работа

«Умная штора»

Студентки 4-го курса специальности 351500 -

«Математическое обеспечение и

администрирование информационных систем»

Дубицкой Елены Григорьевны

Научный руководитель:

к.т.н. доцент кафедры Информационных Технологий

Черкашин Евгений Александрович

Содержание

  • Введение

Глава 1. Обзор предметной области и технологий

  • 1.1 Аппаратная часть

1.1.1 Конструктив

  • 1.1.2 Микроконтроллер

1.1.3 Периферия

1.1.4 Некоторые модели микроконтроллерных плат

1.2 Концепция программирования

1.2.1 Язык программирования

1.2.2 Загрузка программы в микроконтроллер

  • 1.3 Команда разработчиков
  • Глава 2. Практическая работа
    • 2.1 Cреда разработки
    • 2.2 Используемые модули
    • 2.3 Код программы контроллера
  • Заключение
  • Список использованных источников
  • Приложение

Введение

Актуальность системы «Умный Дом» для российского рынка трудно переоценить. Использование концепции «интеллектуального здания» позволяет достигнуть 20-30% экономии на потреблении коммунальных услуг. Этот фактор готовы принимать во внимание и строители, которые предусматривают применение технологии «интеллектуального здания» в 30% проектируемых и строящихся домов.

Полезные функции «Умного Дома» делают более устойчивыми и долговечными все системы жизнеобеспечения благодаря оптимизации связей между ними. Если же говорить о новых строениях - то использование «Умного Дома» снимает возможные конфликты между системами, увеличивает срок службы всего здания, снижая риск для строителей и проживающих. Согласно Федеральному закону № 261 от 23.11.2009 года, внедрение инновационных энергоэффективных технологий в строительстве и переоснащении зданий является одной из первоочередных задач и этой принципиальной установке Российского правительства система «Умный дом» отвечает в наибольшей степени.

Мной не было обнаружено доступных по цене каких-либо решений.

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

Для достижения цели были поставлены и решены следующие задачи:

· Выбор аппаратной платформы и модулей для реализации;

· Реализация физического взаимодействия модулей и платформы;

· Разработка ПО для управление модулями в соответствии с переданной командой.

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

Глава 1. Обзор предметной области и технологий

1.1 Аппаратная часть

автоматический штора контроллер программирование

1.1.1 Конструктив

Arduino -- торговая марка аппаратно-программных средств для построения простых систем автоматики и робототехники, ориентированная на непрофессиональных пользователей. Программная часть состоит из бесплатной программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры. Аппаратная часть представляет собой набор смонтированных печатных плат, продающихся как официальным производителем, так и сторонними производителями. Полностью открытая архитектура системы позволяет свободно копировать или дополнять линейку продукции Ардуино.

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

С 2008 года в компании-разработчике начался раскол, выразившийся в существовании двух независимых ветвей развития и продаж под одной торговой маркой: одна на сайте arduino.cc, другая на arduino.org. Докризисные изделия на обоих сайтах продаются под одинаковыми названиями. Набор новых изделий на сайтах различается. Также существует две ветви Arduino IDE, поддерживающие разный набор плат и библиотек. Одинаковые названия и пересекающиеся номера версий IDE вносят путаницу.

Под торговой маркой Ардуино выпускается несколько плат с микроконтроллером (англ. boards) и платы расширения (так называемые шилды -- варваризм от англ. shields). Большинство плат с микроконтроллером снабжены минимально необходимым набором обвязки для нормальной работы микроконтроллера (стабилизатор питания, кварцевый резонатор, цепочки сброса и т. п.).

Ардуино и Ардуино-совместимые платы спроектированы таким образом, чтобы их можно было при необходимости расширять, добавляя в устройство новые компоненты. Эти платы расширений подключаются к Ардуино посредством установленных на них штыревых разъёмов. Существует ряд плат с унифицированным конструктивом, допускающим конструктивно жесткое соединение процессорной платы и плат расширения в стопку через штыревые линейки. Кроме того, выпускаются платы уменьшенных габаритов (например, Nano, Lilypad) и специальных конструктивов для задач робототехники. Независимыми производителями также выпускается большая гамма всевозможных датчиков и исполнительных устройств, в той или иной степени совместимых с базовым конструктивом Ардуино.

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

Миниатюрные клоны Arduino

Помимо стандартных конструктивов Ардуино сторонние разработчики создали множество миниатюрных клонов, сохранив только архитектурную и программную совместимость. Среди этих клонов выделяется линейка продуктов Microduino. Линейка содержит полноценный набор конструктивно совместимых процессорных модулей, модулей связи, сенсоров и исполнительных устройств, практически не уступая ассортименту классических модулей Arduino. Как и Ардуино, сборка плат производится в стопки. Линейка оформлена в двух оригинальных конструктивах:

· Бескорпусной с соединениями на миниатюрных цанговых штыревых линейках (торговая марка «Microduino Upin27 Series»). Габарит плат 25*28 мм.

· В стиле конструкторов Лего с электрическими соединениями на подпружиненных контактах и механической фиксацией, совместимой с конструкторами Лего (торговая марка «Microduino mCookie Series»).

Самый миниатюрный клон был выпущен под торговой маркой Femtoduino. Его размеры всего 15*20 мм, включая разъем micro USB, стабилизатор напряжения и полный комплект ввода-вывода Arduino UNO. Той же компанией выпущен самый нафаршированный миниатюрный клон под торговой маркой IMUduino. Это клон Arduino Leonardo с поддержкой USB Host (клавиатура и мышь), Bluetooth 4 Low Energy, шестиосный гироскоп/акселерометр, трехосный магнитометр (компас), барометр. Размер устройства 16*40 мм.

1.1.2 Микроконтроллер

Микроконтроллеры для Arduino отличаются наличием предварительно прошитого в них загрузчика (bootloader). С помощью этого загрузчика пользователь загружает свою программу в микроконтроллер без использования традиционных отдельных аппаратных программаторов. Загрузчик соединяется с компьютером через интерфейс USB (если он есть на плате) или с помощью отдельного переходника UART-USB. Поддержка загрузчика встроена в Arduino IDE и выполняется в один щелчок мыши.

На случай затирания загрузчика или покупки микроконтроллера без загрузчика разработчики предоставляют возможность прошить загрузчик в микроконтроллер самостоятельно. Для этого в Arduino IDE встроена поддержка нескольких популярных дешевых программаторов, а большинство плат Arduino имеет штыревой разъем для внутрисхемного программирования (ICSP для AVR, JTAG для ARM).

В Arduino IDE от компании, базирующейся на сайте arduino.cc, встроена возможность создания своих программно-аппаратных платформ. Этой возможностью пользуются сторонние компании, добавляющие в Arduino IDE свои наборы плат и компиляторов-загрузчиков к ним. Компания на сайте arduino.org не поддерживает такую возможность.

AVR: В линейке устройств Arduino в основном применяются микроконтроллеры Atmel AVR ATmega328, ATmega168, ATmega2560, ATmega32U4, ATTiny85 с частотой тактирования 16 или 8 МГц. В старых изделиях применялись ATmega8, ATmega1280 и другие.

ARM Cortex M: Есть также платы на процессоре ARM Cortex M.

ESP8266: Сторонние разработчики портировали в Arduino поддержку популярного Wi-Fi микроконтроллера ESP8266. Теперь компилировать и загружать прошивку для ESP8266 со своими скетчами и поддержкой Wi-Fi можно прямо из Arduino IDE, получая одноплатную схему с поддержкой сети Wi-Fi.

Intel x86: В рамках сотрудничества со сторонними производителями в Arduino IDE была включена поддержка некоторых аппаратных средств Intel x86. Intel Galileo (процессор Intel Quark X1000 400 МГц), Intel Edison и Arduino 101 -- Arduino-совместимые платы на Intel x86 архитектуре. Платы механически и электрически совместимы с периферийными платами Ардуино. Платы функционируют под собственной ОС Linux, поверх которой работает приложение, позволяющее загружать и исполнять скетчи Ардуино.

1.1.3 Периферия

Порты ввода-вывода микроконтроллеров оформлены в виде штыревых линеек. Никакого буферизирования, защиты, конвертации уровней или подтяжек, как правило, нет. Микроконтроллеры питаются от 5В или 3,3В, в зависимости от модели платы. Соответственно, порты имеют такой же размах допустимых входных и выходных напряжений. Программисту доступны некоторые специальные возможности портов ввода-вывода микроконтроллеров, например широтно-импульсная модуляция (ШИМ), аналогово-цифровой преобразователь (АЦП), интерфейсы UART, SPI, I2C. Количество и возможности портов ввода-вывода определяются конкретным вариантом микропроцессорной платы.

Помимо портов на платах микроконтроллеров иногда устанавливается периферия в виде интерфейсов USB или Ethernet. Опциональный набор внешней периферии на модулях расширения включает в себя:

· USB Device (чаще всего как виртуальный COM порт через FTDI FT232, имеются также версии с эмуляцией USB HID Class клавиатур и мышек);

· Проводной и беспроводной Ethernet как на основной плате так и на платах расширения;

· Модуль GSM и другие беспроводные интерфейсы;

· USB Host;

· SD card;

· Модуль управления низковольтным мотором на базе L298. Поддерживаются шаговый и коллекторный двигатели с напряжением до 12В и током до 2А на канал. Могут подключаться также реле, электромагниты и т. п. Модуль не имеет гальванической развязки;

· Графический ЖКИ индикатор;

· Модуль с макетным полем.

Сторонние производители выпускают широкую гамму датчиков и исполнительных устройств, подключаемых к Ардуино. Например, гироскопы, компасы, манометры, гигрометры, термометры, релейные модули, индикаторы, клавиатуры и т. п.

1.1.4 Некоторые модели микроконтроллерных плат

1. Serial Arduino, программируется через последовательное соединение (разъём DB-9), используется ATmega8.

2. Arduino Extreme, с USB-интерфейсом для программирования, используется ATmega8.

3. Arduino Mini, миниатюрная версия Arduino, использующая поверхностный монтаж ATmega328. Не содержит конвертера USB-UART.

4. Arduino Nano 3.0, ещё миниатюрнее, с питанием от USB и поверхностным монтажом ATmega328.

5. LilyPad Arduino, минималистичный дизайн для носимых применений с поверхностным монтажом ATmega168 (в новых версиях ATmega328).

6. Arduino NG, с USB-интерфейсом для программирования, используется ATmega8.

7. Arduino NG plus, с USB-интерфейсом для программирования, используется ATmega168.

8. Arduino BT, с Bluetooth-интерфейсом для программирования, используется ATmega168 (в новых версиях ATmega328).

9. Arduino Diecimila, использует USB-интерфейс и Atmega168 в DIP28 корпусе.

10. Arduino Duemilanove («2009»), на основе ATmega168 (в новых версиях ATmega328), с автоматическим выбором питания от USB или внешнего источника.

11. Arduino Mega («2009»), на основе ATmega1280.

12. Arduino Mega2560 R3 («2011»), на основе ATmega2560. Используется конвертер USB-UART на базе ATmega16U2.

13. Arduino Uno R3 (2011), на основе ATmega328. Используется конвертер USB-UART на базе ATmega16U2, в нашей работе используем именно его.

14. Arduino Ethernet (2011), на основе ATmega328. Конвертера USB-UART нет. Ethernet чип -- W5100, также содержит модуль MicroSD.

15. Arduino Mega ADK for Android (2011), на основе ATmega2560. Содержит USB-хост для соединения с телефонами на базе ОС Android (м/с MAX3421e). Конвертер USB-UART на базе ATmega8U2.

1.2 Концепция программирования

Программирование ведется целиком через собственную программную оболочку (IDE), бесплатно доступную на сайте Ардуино. В этой оболочке имеется текстовый редактор, менеджер проектов, препроцессор, компилятор и инструменты для загрузки программы в микроконтроллер. Оболочка написана на Java на основе проекта Processing, работает под Windows, Mac OS X и Linux.

1.2.1 Язык программирования

Язык программирования Ардуино является стандартным C++ (используется компилятор AVR-GCC) с некоторыми особенностями, облегчающими новичкам написание первой работающей программы.

Программы, написанные программистом Ардуино называются наброски (или иногда скетчи - варваризм от англ. sketch) и сохраняются в файлах с расширением ino. Эти файлы перед компиляцией обрабатываются препроцессором Ардуино. Также существует возможность создавать и подключать к проекту стандартные файлы C++.

Обязательную в C++ функцию main() препроцессор Ардуино создает сам, вставляя туда необходимые «черновые» действия.

Программист должен написать две обязательные для Ардуино функции setup() и loop(). Первая вызывается однократно при старте, вторая выполняется в бесконечном цикле.

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

Менеджер проекта Arduino IDE имеет нестандартный механизм добавления библиотек. Библиотеки в виде исходных текстов на стандартном C++ добавляются в специальную папку в рабочем каталоге IDE. При этом название библиотеки добавляется в список библиотек в меню IDE. Программист отмечает нужные библиотеки и они вносятся в список компиляции.

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

Простейшая Ардуино-программа состоит из двух функций:

· setup(): функция вызывается однократно при старте микроконтроллера.

· loop(): функция вызывается после setup () в бесконечном цикле все время работы микроконтроллера.

Так выглядит полный текст простейшей программы (скетча) мигания светодиодом с периодом 2 секунды:

#define LED_PIN 13 //Связывание 13-го выхода платы с переменной LED_PIN

void setup () {

pinMode (LED_PIN, OUTPUT); // Назначение переменной LED_PIN и 13-го выхода на вывод

}

void loop () {

digitalWrite (LED_PIN, HIGH); // Включение светодиода, параметр вызова функции digitalWrite HIGH - признак высокого логического уровня

delay (1000); // Цикл задержки на 1000 мс - 1 секунду

digitalWrite (LED_PIN, LOW); // Выключение светодиода, параметр вызова LOW - признак низкого логического уровня

delay (1000); // Цикл задержки на 1 секунду

}

Все используемые в примере функции являются библиотечными. В комплекте Arduino IDE имеется множество примеров программ. Существует перевод документации по Arduino на русский язык.

1.2.2 Загрузка программы в микроконтроллер

Закачка программы в микроконтроллер Ардуино происходит через предварительно запрограммированный специальный загрузчик (все микроконтроллеры от Ардуино продаются с этим загрузчиком). Загрузчик создан на основе Atmel AVR Application Note AN109. Загрузчик может работать через интерфейсы RS-232, USB или Ethernet в зависимости от состава периферии конкретной процессорной платы. В некоторых вариантах, таких как Arduino Mini или неофициальной Boarduino, для программирования требуется отдельный переходник.

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

1.3 Команда разработчиков

Ядро команды разработчиков Arduino составляют: Массимо Банци (Massimo Banzi), Девид Куартиллье (David Cuartielles), Том Иго (Tom Igoe), Джанлука Мартино (Gianluca Martino), Девид Меллис (David Mellis) и Николас Замбетти (Nicholas Zambetti).

С 2008 года в компании начался раскол. Джанлука Мартино зарегистрировал другую фирму, на которую сумел оформить авторские права на торговую марку Arduino в некоторых странах. Новая компания создала альтернативную ветвь продаж оригинальных продуктов Ардуино на сайте arduino.org. Первоначальная компания контролирует продажи через сайт arduino.cc. Набор новых изделий на сайтах различается. Также существует две ветви Arduino IDE, поддерживающие разный набор плат и библиотек. Одинаковые названия и пересекающиеся номера версий IDE вносят путаницу.

Глава 2. Практическая работа

2.1 Cреда разработки

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

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

Интегрированная среда разработки Arduino -- это кроссплатформенное приложение на Java, включающее в себя редактор кода, компилятор и модуль передачи прошивки в плату.

Среда разработки основана на языке программирования Processing и спроектирована для программирования новичками, не знакомыми близко с разработкой программного обеспечения.

Строго говоря, это C++, дополненный некоторыми библиотеками. Программы обрабатываются с помощью препроцессора, а затем компилируется с помощью AVR-GCC (Рисунок 1).

Рисунок 1

2.2 Используемые модули

В данной работе использовались следующие модули:

· Bluetooth HC-06

· Шаговый двигатель 28BYJ-48

Bluetooth HC-06:

Технические характеристики модуля:

· большинство из модулей оснащены чипом ВС- 417, а также Flash-памятью;

· напряжение для питания - 3,3 В;

· потребляющая способность тока - около 50 мА;

· поддерживаемая скорость обмена - 2400 - 1382400 Мбит;

· установка при помощи АТ - команды ( модули НС-03 и НС-05);

· способность работы в режимах Slave или Master;

· чип поддерживает версию спецификации Bluetooth v2.0, а также EDR;

Основные назначения выводов у модуля HC-06:

· (pin 12) 3,3V - напряжение для питания 3,3В;

· (pin 13) GND - общий вывод;

· (pin 24) PIO11 - индикатор режима работы модуля (при установлении соединения светодиод горит постоянно, а при отсутствии соединения мигает)

В любом случае следует всегда смотреть распиновку Arduino и Bluetooth, поскольку некоторые выводы могут быть поменяны местами. Провода к модулю придется припаивать самостоятельно с помощью паяльника, исключением является только светодиод, который выполняет функции индикатора состояний модуля. Это необходимо сделать, так как шаг между выводами не более 1,5 мм.

Порядок подключения Bluetooth модуля и припаивания проводов (Рисунок 2):

· вывод 3.3В - к pin 12;

· вывод GND - к pin 13;

· вывод (Arduino TX) - к pin 2 модуля RX;

· вывод (Arduino RX) - к pin 1 модуля TX.

Передача данных между Arduino и Bluetooth:

Для передачи сообщений из модуля в компьютер используется несложный скетч. Для скорости порта задается значение 9600, которое при необходимости можно изменить на АТ-команды. При покупке модуля нужно всегда уточнять, какое значение установлено для скорости обмена. Далее следует открыть скетч в Arduino IDE, скомпилировать и прошить модуль. Мигающий светодиод покажет, что соединение установлено.

Этапы подключения модуля:

После подключения адаптера к компьютеру, устанавливаем драйвера. Далее путем щелчка по иконке модуля Bluetooth нужно выбрать кнопку «Добавить устройство».

После добавления устройства нужно задать имя модулю. После нажатия кнопки «Далее» вводится пароль для устройства. На модуле обычно установлен код завода-изготовителя. Нужно выбрать «Введите код образования пары устройства» и вводим установленный код. Программа настраивает и прописывает СОМ-порты. Их может быть, как 2 штуки, так и 1.

После чего нужно щелкнуть кнопкой мыши по значку устройства и выбрать в меню пункт «Свойства», а также «Оборудование». Здесь смотрим и меняем параметры СОМ-порта.

Рисунок 2

Шаговый двигатель 28BYJ-48:

Шаговые двигатели -- основа точной робототехники. В отличие от двигателей постоянного вращения, один оборот «шаговика» состоит из множества микроперемещений, которые и называют шагами. Другими словами, мы можем повернуть вал двигателя ровно на 90 градусов, и зафиксировать его в этом положении. Грубым аналогом шагового двигателя является серводвигатель.

Шаговый двигатель 28BYj-48 - это миниатюрный шаговик, имеет встроенный редуктор, который позволяет совершать очень точные перемещения выходного вала (Рисунок 3).

Так, в 4-шаговом режиме двигатель совершает 2048 шагов за один оборот. В 8-шаговом -- 4096. Напряжение питания -- 5 Вольт. Потребляемый ток -- 160мА.

В качестве драйвера для двигателя используем микросхему ULN2003, которую часто продают в паре с 28BYj-48 (Рисунок 3). На плате есть 4 входа для микроконтроллера: IN1..IN4. Пять выходов на двигатель, и два контакта питания. Также есть перемычка, разрывающая цепь питания двигателя.

Рисунок 3

Подключение:

Кабель двигателя 28BYj-48 уже имеет разъем с ключом, который вставляется в плату только в правильном положении (Рисунок 4).

Рисунок 4

Данный мотор в компоновке с контроллером на стандартной библиотеке работал довольно плохо и «заднего хода не было». Потому используется, специально написанную под данный моторчик библиотеку Arduino Library to Control the 28BYJ-48 Stepper Motor.

2.3 Код программы контроллера

Необходимо написать программу, которая приводит в движение моторчик в зависимости от того, какая команда была передана по Bluetooth. Для этого создаем класс Blinds, который хранит текущее положение штор/жалюзи и приводит в движение мотор, который изменяет данное положение.

class Blinds

{

private:

/**

* Хранит текущее положение штор, изначально закрыты

* */

boolean stateBlinds;

public:

Blinds(boolean stateBlinds) {

this->stateBlinds = stateBlinds;

}

/**

* Открывает шторы

* */

void blindsUp()

{

stepper.move(2048);

stateBlinds = true;

}

/**

* Закрывает шторы

* */

void blindsDown()

{

stepper.move(-2048);

stateBlinds = false;

}

/**

* Возращает true в случае, если состояние возможно изменить

* */

boolean checkPosition(byte message)

{

if ((stateBlinds == false && message == '0') || (stateBlinds == true && message == '1'))

{

return false;

}

return true;

}

};

Для создания объекта blind класса Blinds используется конструктор, который в качестве аргумента принимает текущее положение штор (жалюзи).

Для управления шторам (жалюзи) используются методы blindsUp и blindsDown, которые приводят в движение моторчик и меняют текущее его положение на противоположное.

void blindsUp()

{

stepper.move(2048);

stateBlinds = true;

}

void blindsDown()

{

stepper.move(-2048);

stateBlinds = false;

}

При подключении Arduino к питанию выполняется функция setup. В ней создается новый объект blind для управления положением штор (жалюзи). По умолчанию они закрыты:

void setup() {

blind = new Blinds(false);

Serial.begin(9600);

stepper.setPeriod(5);

}

Далее автоматически выставляется бесконечный цикл, который вызывает не возвращающую значения функцию loop, вызывающую в нашем случае функцию read:

void loop() {

read();

}

Функция read проверяет наличие новых данных от любого приложения с возможностью передачи данных на Bluetooth.

Т.к. у нас команды только «0» и «1», то мы передаем и считываем только 1 символ. Первый if проверяет наличие данных как таковых. Далее, если данные были получены, то в переменную message считывается первый байт полученных данных (наша команда).

Метод checkPosition из класса Blinds проверяет текущее положение моторчика и возвращает true, если это положение можно изменить, после чего выполняет действие, соответствующее переданной команде.

void read() {

if (Serial.available() > 0) {

byte message = Serial.read();

if (blind->checkPosition(message)) {

if (message == '0') {

blind->blindsDown();

}

if (message == '1') {

blind->blindsUp();

}

}

}

}

В нашем случае для проверки работоспособности используется Android-программа Bluetooth Terminal (Рисунок 5).

Рисунок 5

Заключение

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

В ходе выполнения задач с трудностями столкнулась - «спалила» один контроллер форм-фактора Nano, поле чего был произведен переход на Uno.

В настоящее время проект готов к доработке.

Дальнейшие направления развития:

· Разработка Android-приложения для управления платформой через Bluetooth;

· Интеграция датчика света;

· Интеграция часов;

· Физическое присоединение к механизму жалюзи;

· Эстетическое улучшение внешнего вида.

Список использованных источников

1. Майоров В. Г., Гаврилов А. И. Практический курс программирования микропроцессорных систем // Машиностроение. 2009;

2. Фрибель В., Ролоф Х., Шиллер Х. Программирование микропроцессоров // Энергоиздат. 2009;

3. URL: http://www arduino.ru/ (дата обращения 16.12.15);

4. URL: http://www CyberForum.ru/ (дата обращения 21.11.15);

5. URL: http://www cxem.net/ (дата обращения 16.12.15);

6. URL: http://www miniinthebox.com/ (дата обращения 16.12.15);

7. URL: http://www habrahabr.ru/ (дата обращения 21.03.16);

8. URL: http://www freeduino.ru/ (дата обращения 14.02.16);

9. URL: http://www radioparty.ru/ (дата обращения 14.02.16);

10. URL: http://www forum.amperka (дата обращения 21.11.16).

Приложение 1

Полный код программы.

#include <StepperMotor.h>

const int IN1 = 2;

const int IN2 = 3;

const int IN3 = 4;

const int IN4 = 5;

StepperMotor stepper(IN4, IN3, IN2, IN1);

/**

* Используется для управления

*/

class Blinds

{

private:

/**

* Хранит текущее положение штор, изначально закрыты

* */

boolean stateBlinds;

public:

Blinds(boolean stateBlinds) {

this->stateBlinds = stateBlinds;

}

/**

* Открывает шторы

* */

void blindsUp()

{

stepper.move(2048);

stateBlinds = true;

}

/**

* Закрывает шторы

* */

void blindsDown()

{

stepper.move(-2048);

stateBlinds = false;

}

/**

* Возращает true в случае, если состояние возможно изменить

* */

boolean checkPosition(byte message)

{

if ((stateBlinds == false && message == '0') || (stateBlinds == true && message == '1'))

{

return false;

}

return true;

}

};

Blinds *blind;

/**

* Проверяет наличие новых данных из приложения и запускает соответствующие действие

*/

void read() {

if (Serial.available() > 0) {

byte message = Serial.read();

if (blind->checkPosition(message)) {

if (message == '0') {

blind->blindsDown();

}

if (message == '1') {

blind->blindsUp();

}

}

}

}

void setup() {

blind = new Blinds(false);

Serial.begin(9600);

stepper.setPeriod(5);

}

void loop() {

read();

}

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


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

  • Описание функциональной схемы контроллера системы отопления, обеспечивающего многопозиционный контроль температуры и управление ветками отопления и котлом. Разработка принципиальной схемы. Обоснование выбора. Алгоритм работы устройства. Листинг программы.

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

  • Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.

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

  • Классификация систем программирования. Специализированные редакторы, программы-компиляторы и исполнимый код. Разновидности Visual Basic. Версии Паскаля и его использование. Приложения на языке Java. Разработка программы для вычисления предельной ошибки.

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

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

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

  • Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.

    контрольная работа [204,4 K], добавлен 26.01.2013

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

    презентация [90,2 K], добавлен 22.02.2014

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

    курсовая работа [333,5 K], добавлен 21.01.2013

  • Основы программирования на 32-битном Ассемблере, разработка с его помощью программы, демонстрирующей работу одного из разделов ОС Windоws. Описание используемых АРI-функций как интерфейса программирования приложений. Листинг программы, результаты работы.

    курсовая работа [164,5 K], добавлен 18.05.2014

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

    курсовая работа [304,4 K], добавлен 17.08.2013

  • Разработка приложения "Калькулятор с переходом в строковый калькулятор" с применением объектно-ориентированного программирования. Концепция и понятия объектно-ориентированного программирования. Язык программирования Java. Листинг программы "Калькулятор".

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

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