![]() |
![]() |
||||||||||||
Охрана частной собственности, или 1-Wire против сил зла!.
Автор: Bullet
Приведенное ниже устройство представляет собой небольшой охранный прибор, предназначенный для охраны квартиры или другого объекта недвижимости. Разработан и установлен он был около 3-х лет назад и до сих пор работает, без каких бы то ни было нареканий. Для начала немного предыстории. Началось все с того, что в очередной раз наступило лето, и большая часть города разъехалась в отпуска. Мне отпуск летом не грозил, зато родители уже поковали чемоданы. Во время очередного инструктажа, по поводу того, как мне стоит себя вести в их отсутствии, отец сказал, чтобы я закрывал все имеющиеся на дверях замки, т.к. он утром видел подозрительных личностей во дворе и подъезде нашего дома. Ну замки то замками, а профессионального домушника ни один замок не остановит, зато в квартиру с сигнализацией он и не сунется (если там конечно Рембрандт в подлиннике не висит, да и это уже немного другая специализация криминального мира). Сам я работаю в охране, и прекрасно осведомлен практически обо всех охранных системах и приборах, но лицензия нашей организации не позволяет брать на охрану квартиры. Да и покупать готовый приемо-контрольный прибор, пусть и самый дешевый, не очень то и хотелось. Кроме того, в тот момент я как раз осваивал микроконтроллеры, вот и решил, что сам соберу такой прибор, во-первых денег сэкономлю, а во-вторых опыта наберусь.
![]() Собственно схема простая до безобразия и в особых комментариях не нуждается. Контроллер был взят Atmega16, только по тому, что он у меня был под рукой. На самом деле для подобного рода устройств есть более простые контроллеры, но с другой стороны, есть простор для модернизации: ЖК-дисплей на схеме присутствует только для отладки, в реальном устройстве его установка даже не планировалась. Хотя, если у вас есть желание, можете подключить, на него будет выводиться номер прикладываемого ключа, а также сообщения о записи ключа, остальные функции вывода информации на дисплей из прошивки удалены. Контроллер работает от внутреннего тактового генератора настроенного на частоту 8МГц. Кнопки "IN", "PROG" и "ERISE" так же установлены для отладки, в реальном приборе вместо "PROG" и "ERISE" установлены перемычки (jumper), а вместо "IN" клемные колодки под отвертку, для подключения проводов охранного шлейфа. Такие же колодки установлены на плате для подключения питания, считывателя, сирены и выносного светодиода. Для тех кто не в курсе, выглядят они так: ![]()
Устройство работает в 4 режимах: режим "Охрана", "Снят с охраны", "Тревога" и режим "Программирование".
![]() Питание осуществляется от 12-вольтового (в моем случае бесперебойного) источника питания. Сирена взята от авто-сигнализации. Датчик на открытие дверей ИО-102-16(СМК). ![]()
(для тех кто не в курсе, обычный геркон с магнитом).
![]() Поэтому, я рекомендую использовать вот такой считыватель: ![]() Схема собирается на односторонней печатной плате размерами 90*90мм. Рисунок печатной платы ниже ![]()
Что касается используемых компонентов, то тут тоже все просто, транзисторы любые NPN типа (я использовал КТ315, правда под них нужно слегка раздвинуть установочные отверстия на плате), реле 5-вольтовое (ставил 12-вольтовое, работать отказывается, то ли транзистор не вытягивает, толи х.з.).
![]() Вторая функция - функция сравнения ключа (свой-чужой) CompKey. В этой функции по мимо индексных переменных циклов, которые в некоторых средах программирования даже не нужно объявлять, нам потребуется локальная переменная s, которую мы будем использовать как счетчик, для подсчета совпавших байт из номера ключа и памяти устройства. Так же в этой функции применена конструкция цикл в цикле, т.к. для удобства, память хранения номеров ключей представлена в виде двумерного массива (таблицы) 8*8, где каждая строка - ключ. Т.к. адресация EPROM происходит по номеру ячейки памяти, то для определения нужного нам номера, применена следующая формула 8*i+j, где i - номер строки, а j - номер столбца. Чтобы это было проще понять, ниже приведена таблица адресов. ![]() ![]() Далее у нас идет процедура записи номера ключа в память прибора. Тут в принципе все просто. Объясню только один момент, при определении свободного места в памяти, проверяется только первый байт из восьми, предназначенных для номера ключа. Сделано это по тому, что первый байт, будет равен коду семейства и иметь значение 0х01 в большинстве случаев, свободная же ячейка, всегда будет иметь значение 0хFF. Соответственно проверять оставшиеся семь байт нет смысла. ![]() И последняя процедура - процедура обработки прерывания таймера. Собственно в данном устройстве она нужна только для равномерного мигания светодиода в режиме охраны и для отсчета времени работы сирены при тревоге. Т.к. Счетчик использован один, а считать нужно 2 интервала, то в качестве второго счетчика введена глобальная переменная alarm, которая инкрементируется при тревоге. ![]()
Так же в проект включена процедура подсчета контрольной суммы Do_CRC из упомянутой выше статьи. Кому интересно, тот прочтет, по этому описывать ее здесь я не буду.
![]() На этом пожалуй и все. Скажу только, что это устройство можно модернизировать под конкретные нужды и задачи, например добавить GSM-модем и дописать соответствующие процедуры. Лично я разработал еще несколько устройств на его основе, но о них возможно в другой раз.
Файлы: Вопросы, как обычно, складываем тут.
|
|
||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |