Сигнализация своими руками на микроконтроллере

Добавил пользователь Валентин П.
Обновлено: 05.10.2024

Описание ресурсов микроконтроллера, периферии. Электрическая схема устройства, алгоритм его работы. Изготовка домашней охранной сигнализации. Программирование микроконтроллера, изготовление платы. Характеристики программы "Flowcode V4 for PICmicros".

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

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

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

Институт математики информационных технологий и физики

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

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

Основными целями курсовой работы являются:

? разработать домашнюю охранную сигнализацию на базе микроконтроллера;

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

Сигнализация предназначена для охраны помещений. И хотя в интернете уже не мало подобных устройств, я решил создать своё, которое мне нужно для работы. Принцип работы классический: к двери крепится геркон и магнит. Дверь открылась — геркон разомкнулся — на микроконтроллер поступил сигнал (ноль поменялся на единицу) — после задержки времени сработало реле, которое своими контактами замкнуло на короткое время кнопку быстрого вызова на телефоне. Кнопка быстрого вызова настраивается зарание на нужный номер. Можно использовать любой кнопочный телефон с функцией быстрого вызова абонента. При написании программы ставилась задача сделать задержку на выход и на вход, а так-же после срабатывания сигнализации переводить схему в пассивный режим, что-бы в случае долго открытой двери телефон не делал постоянных вызовов и не действовал на нервы. Принципиальную схему старался сделать, как можно проще.


Алгоритм работы устройства.

При подаче питания:

Отключение охраны производится отключением питания 5V. (выключатель размещается в скрытом месте).

Интервалы могут отличаться на 5сек. в зависимости от конкретного микроконтроллера т.к. кварц для упрощения схемы не использовал.

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

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

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

Signalizatciia-pishem-programmu

Нашей задачей является написать программу для управляющей платки gsm сигнализации. Писать мы ее будем на ассемблере, ибо только ассемблер дает нам полное понимание работы микроконтроллера, ИМХО конечно же.

Что мы имеем

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

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

С составом и устройством платы, все понятно, а вот как написать программу? На этот вопрос нам поможет ответить блок-схема. С блок-схемой мы построим логику работы нашей программы, а там и до программы не далеко.

Логика

Логика нашей программы будет следующей:

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

При обработке кнопки программа выполняет задержку, это программная реализация антидребезга контакта при нажатии кнопки.

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

Если шлейф у нас цел то программа идет на обработку кнопки. И если она не нажата, то рабочая точка также возвращается восвояси, то есть в самое начало. При нажатии кнопки происходит один неприятный момент. Контакт кнопки не может мгновенно замкнуться или разомкнуться. Поэтому возникает контактный дребезг. Серия включений и выключений за короткий промежуток времени, буквально миллисекунды. Для нашей скоростной программы этого может оказаться достаточным чтобы распознать нажатие — отжатие кнопки.

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

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

Так с логикой разобрались, теперь осталось написать управляющую программу.

Пишем программу


Как я и писал выше программа у нас представляет из себя ассемблерный код, написанный для Attiny45-20. Оформление может и так себе но что есть то есть. В тексте встречаются макросы, они конечно же будут расшифрованы. Еще в программе применяются таймеры и прочие штуки. На комментарии прошу не обращать внимания, все подробности будут дальше по тексту. Хочу лишь добавить что в структуру команд и прочие особенности языка асма я не вдаюсь. Это тема слишком обширна и всего рассказать здесь не смогу.

Итак выкладываю программу по кускам:

Строки 1-4. На этом участке кода расположена общая информация о программе. Это позволит нам вспомнить о чем была программа через некоторое время. Кому ассемблер знаком не по наслышке, наверное все это и так понятно, но начинающим думаю будет важна любая информация по теме.

В строке 5 я подключаю библиотеку tn45def.inc. В этом файле расписаны все команды относящиеся к Attiny45. Располагается данный файл в дебрях папок вашего симулятора AVR Studio или какого другого.

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

В этом участке кода первая строка включает листинг. Честно говоря, не знаю для чего он мне нужен, ну да ладно, я его и так не использую. В следующих строчках посредством оператора .def мы привязываем безликим регистрам типа r16, r17 осмысленные имена — повышаем читаемость кода. Регистр temp, будет у нас наиболее эксплуатируемым, заюзаем его под различные промежуточные действия.

Оператор .equ позволяет нам присвоить числовым константам символические метки. И в дальнейшем, применяя эту метку мы можем убивать зайцев в массовом порядке. Так если мы хотим поменять значение константы во всем тексте программы, нам достаточно изменить лишь одну строчку, например .equ kdel=20.

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

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

Инициализируем периферию. В первую очередь отключаем компаратор (строки 2-3), здесь он нам ни к чему. Затем инициализируем порты ввода/вывода. Порты завязанные на обработку кнопки и шлейфного датчика, настраиваем на ввод, остальные послужат нам для вывода информации, будь то светодиод, или вывод на динамик. В строках 16,17 мы инициализируем аппаратный таймер. На таймере будем реализовывать задержки.

С команды rcall opros рабочая точка программы ныряет в подпрограмму обработки шлейфа. В полном соответствии с нашей блок-схемой.

Если событие есть то поднимаем флаг, если нет то нет. Подпрограмму опроса шлейфа мы разместим в конце нашей программы. Там будут и другие подпрограммы.

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

В строке 4 — вызываем подпрограмму опроса шлейфа, где ставится нужный флаг. Затем в строке 5 анализируется состояние флага.
Далее идет обработка кнопки, но это мы тоже проходили,здесь обработчик спрятан в макрос. Нужные телодвижения, будь то временная задержка или опрос датчика выполняются прыжком в подпрограммы командой rcall.

Ладно, на этом я пожалуй закончу описательную часть кода программы. Основные моменты я показал, так что если есть вопросы или замечания, то прошу писать в комментариях. А здесь я оставлю ссылочку на текст программы, скачать ее можно [urlspan] тут. [/urlspan]

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

Также по просьбе читателей размещаю [urlspan] материалы проекта [/urlspan], нарисованные в программе Eagle CAD. В архиве лежит рисунок платы и схема. Рисунок платы немного довел до ума, но пока не изготавливал.

А сейчас я хочу вам показать работу gsm сигнализации в действии, так что смотрим видео…

По-моему получилось не плохо для первого раза, раньше мне видео снимать не приходилось.

Хочу добавить, что данная программа, так же как и проект gsm сигнализации будет постепенно дорабатываться, модернизироваться. Чтобы не пропустить выход новых статей предлагаю подписаться по [urlspan]rss[/urlspan] или по[urlspan] email[/urlspan].

Ну что же дорогие друзья, на этом у меня все. Желаю вам успехов во всем и прекрасного настроения, а всех дам с праздником 8 марта. До встречи.


Это скорее развлечение, нежели что-то, всерьез способное обеспечить безопасность вашего жилища. Для сборки сигнализации использована плата Ардуино, ультразвуковой датчик HC-SRO4, зуммер и несколько диодов.

Шаг 1: Необходимые материалы


  • микроконтроллер Arduino Uno – 1
  • макетная плата — 1
  • ультразвуковой датчик HC-SRO4 – 1
  • зуммер — 1
  • зеленый диод – 1
  • желтый – 1
  • красный – 1
  • 220 Ом резистор – 4
  • соединительные провода — 10

Шаг 2: Схема подключения к плате


На картинке изображена схема подключения компонентов.

Подключения нужно сделать в следующем порядке:

  1. Соедините красный провод от 5В пина контроллера с положительным каналом печатной платы
  2. Соедините черный провод от GND пина (земля) с отрицательным каналом
  3. Зуммер – с пином 3
  • красный – с пином 9
  • желтый – с пином 10
  • зеленый – с пином 11

Зеленые провода должны быть подключены в линию к плюсу диодов, а минус должен быть соединен с отрицательным каналом с помощью резистора 220 Ом.

Шаг 3: Подключаем контроллер к плате


Сначала соедините 5В и GND пины контроллера с печатной платой. Убедитесь, что при подключении полярность была соблюдена.

Шаг 4: Подключаем ультразвуковой датчик измерения расстояния


Постарайтесь расположить датчик при подключении как можно ближе к правой стороне печатной платы, сенсоры должны смотреть наружу. В соответствии со схемой подключения, соедините GND пин датчика с отрицательным каналом. Затем соедините сигнальный пин (Trig) датчика с пином 6 Arduino и соедините пин Echo датчика с пином 7 Arduino. Теперь соедините выход питания VCC датчика с положительным каналом печатной платы. Если что-то не получается, еще раз сверьтесь со схемой подключения.

Шаг 5: Подключаем диоды


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

Точно так же подключите желтый и красный диоды, аноды к 10 и 9 пинам Arduino соответственно. Подключенные диоды должны выглядеть как на фото.
Резисторы использовать не обязательно, но я бы рекомендовал ими воспользоваться.

Шаг 6: Подключаем зуммер


В последнюю очередь подключаем к плате и контроллеру зуммер. Для этого нужно соединить длинную ножку зуммера с пином 3 Arduino с помощью зеленого соединительного провода, а короткую ножку с отрицательным каналом печатной платы с помощью резистора 220 Ом.

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

Шаг 7: Код


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

После этого подключите ваш Arduino к своему компьютеру и загрузите код. Если вы следовали инструкциям, при приближении руки к датчикам диоды будут загораться по очереди, пока не сработает зуммер.

Шаг 8: Работа Arduino

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

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Читайте также: