- •1 Интеллектуальный дом
- •1.1 Почему появилась необходимость в интеллектуальном здании
- •1.2. Основные составляющиейцуйцуйцуйцуйцуйцуйцуйцуйцуйцуйцуйцу интеллектуального дома
- •2 Компьютерные сети
- •2.1. Общие понятия
- •2.2. Проводные сети (Ethenet)
- •2.2.1. Топологии
- •Топология сети типа звезда представлена на рисунке 2.3.
- •2.2.2. Компоненты сети
- •2.3. Беспроводные сети
- •Чем привлекательна эта технология.
- •Передача данных: gprs и gsm.
- •Технология gprs.
- •Принципы построения системы gprs
- •Терминальное оборудование gprs
- •Скорости передачи в системе gprs
- •2.3.4. Применение различных технологий в интеллектуальном здании
- •3 Програмная реализация
3 Програмная реализация
Существует большое количество всевозможных приложений для написания управляющих программ для МК фирмы Atmel - это среды разработки и отладки на языках низкого уровня (например, бесплатный пакет AVR Studio для разработки программ на языке AVR Assembler), среды разработки на языках высокого уровня (такие как среда WinAVR для разработки программ на С-подобном языке) и есть даже графическая среда разработки и отладки программного обеспечения под названием "Algorithm Builder".
Algorithm Builder стоит особняком среди всех других сред и именно на нем мы и остановимся. Изюминка этого приложения даже не в том, что оно бесплатно, а в том, что код в нем даже не пишется, а рисуется в виде блок-схем алгоритмов, что значительно сокращает время на разработку приложения. Данная среда обеспечивает полный цикл разработки, начиная от ввода алгоритма, включая отладку, и заканчивая внутрисхемным программированием кристалла. В результате вся логическая структура программы становится полностью наглядной.
Разработка программного обеспечения в среде Algorithm Builder сводится к формированию таких блоков задач, размещению их на плоскости и установлению между ними связей из условных и безусловных переходов.
Для начала необходимо выбрать тип кристалла (в нашем случае Atmega8) в меню Опции/Опции проекта и там же задать тактовую частоту 8000000 Гц (8 МГц). Далее выполняем сброс кристалла при запуске (Элементы/Прерывания/Reset). После чего инициализируем стек, выбрав Элементы/Настройщик…/Stack Pointer (SP), откроется окошко с которым нужно будет просто согласиться, нажав "ОК" (рисунок 3.1).

Рисунок 3.1 – Настройшик стека
Следующим этапом следует инициализировать приемопередатчик USART (не стоит удивляться появлению буквы «S» в аббревиатуре – это более современный вариант UART, отличающийся от него возможностью передавать/принимать данные не только в асинхронном режиме, но и в синхронном) путем выбора меню Элементы/Настройщик…/USART. В открывшемся окошке (рис. 3) в разделе Receiver ставим галочки напротив Enable (включаем приемник данных) и Complete interrupt enable (разрешаем прерывания по окончании приема данных), далее ставим галочку напротив Double Speed, задаем размер символа Character Size: 8 – bit и выставляем скорость передачи данных Baud Rate = 9615 bps (когда нажмете на выбор скорости передачи данных в меню следует выбирать 9600 bps, 9615 bps получается в связи с пересчетом тактовой частоты на 8 МГц).

Рисунок 3.2 - Настройщик USART
Далее следует разрешить глобальные прерывания записав "1" во флаг глобальных прерываний I.
Основное тело программы будет состоять из последовательности проверок управляющих кодов (листинг №1). Идея в том, что ПК будет присылать по UART код операции, а МК принимать его и вырабатывать соответствующие управляющие воздействия на привод лопастей вентилятора и сервопривод. Всего таких кодов будет три (сами коды можно придумать абсолютно любые):
- $31 - включить привод лопастей вентилятора;
- $20 - выключить привод лопастей вентилятора;
- $A1 - обращение к сервоприводу.
Если с первыми двумя кодами все понятно, то с третьим не все так просто - $A1 - это только команда обращения к сервоприводу, далее необходимо получить еще код угла поворота. Экспериментальным путем было установлено, что он колеблется в приделах от $05AF до $154F. При чем отсылать с ПК и соответственно принимать со стороны МК будем начиная с младшего байта. Так же будем запрещать прерывания по приему данных по USART на время исполнения команды - иначе может получиться "каша" из данных.

Рисунок 3.3 – Основное тело программы
На рисунке 3.4 приведен код подпрограммы задержки (Delay). Временная задержка необходима для точной и полной отработки команды и формируется путем зацикливания программы на N циклов (методом проб и ошибок мы подсчитали, что в нашем случае наиболее удачное число циклов 84FF в 16-тиричной системе счисления).

Рисунок 3.4 - Подпрограмма задержки
Окончание приема данных по UART вызывает прерывание USART_Receive_Complete (если оно в данный момент не запрещено в основном теле программы), которое в коде можно задать через меню Элементы/Прерывания/ USART_Receive_Complete. В теле обработчика следует сохранить все используемые в нем регистры в стек, а в конце обработчика обратно их восстановить из стека. Так же в этом обработчике можно получить байт статуса (регистр UCSRA) для проверки данных на ошибки и, естественно, сами данные из регистра UDR (рисунок 3.5).

Рисунок 3.5 - Обработчик прерывания
Угол поворота сервопривода зависит от ширины подаваемого на него импульса при сохранении периода постоянным (период 20 мс, а длительность управляющего импульса от 0,8 до 2,2 мс, хотя для разных сервоприводов эти значения могут немного отличаться) для этого нам и понадобится подпрограмма отработки угла поворота сервопривода (рисунок 3.6). Время управляющего импульса и время паузы будем задавать аналогично подпрограмме задержки. Как мы уже писали выше, экспериментальным путем для частоты кристалла 8 МГц мы определили, что время импульса задается кодом в приделах от $05AF до $154F. Таким образом, зная время всего периода – $9E3C (определили так же экспериментально), можно рассчитать время паузы как разницу между длительностью периода и длительностью импульса. Остается только аналогично подпрограмме задержки отработать последовательно время импульса и время паузы, а затем повторить такой сигнал несколько раз (в нашем случае мы повторили сигнал $10 раз, т.е. 16 раз в десятичной системе счисления).

Рисунок 3.6 - Подпрограмма отработки угла поворота
После написания кода (прорисовки алгоритма) управляющей программы необходимо ее откомпилировать и прошить в микроконтроллер. Компиляцию программы можно произвести нажатием Ctrl+F9 либо через меню Программа/Компилировать. В случае успешной компиляции появится информационное окно в котором будет указан объем занятой памяти МК. Далее необходимо прошить результат компиляции (файл с расширением *.hex без приписки «EE_» вначале, лежащий в той же папке, что и исходник программы) в контроллер.

Рисунок 3.1 – Схема управления вентилятором в PROTEUS
На данном рисунке показано схему управления вентилятором, в место вентилятора взят 12 V двигатель, также взят микроконтроллер ATMEGA8 для управления этим двигателем.
ВЫВОДЫ
В данном курсовом проекте была разработана и описана локальная компьютерная сеть для интеллектуального дома, предназначенной для прохождения тестирования, при приеме на роботу, кандидатами для обслуживания систем «Человек-Техника-Среда».
В курсовом проекте были приведены возможные варианты решения задачи и описаны все возможные программные и аппаратные средства для построения и обслуживания локальной компьютерной сети интеллектуального дома. Была собрана схема управления вентилятором в программе Proteus, и написана программа для микроконтроллера ATMEGA8.
Список литературы:
-
Штефан Науманн, Хендрик Верю, «Компьютерная сеть. Проектирование, создание, обслуживание».– 2000г., Изд: Вильямс, 336 стр.
-
Дебра Литтлджон Шиндер,«Основы компьютерных сетей».– 2002г., Изд: Вильямс, 656 стр.
-
Гук М. «Аппаратные средства локальных сетей. Энциклопедия».– С. П-б, 2000г., Изд: Питер, 576 стр.
-
Хант К. «TCP/IP. Сетевое администрирование». – 2000г., Изд: Вильямс, 816 стр.
-
Борисенко А.А. «Локальная сеть. Просто как дважды два. 2-е изд».– С. П-б, 2000г., Изд: Питер, 192 стр.
