Охранная сигнализация на основе микроконтроллера Pic16f84 и мобильного телефона

    Усилия уберечь выпавшее на мою долю подсобное помещение и привели к настоящей конструкции. Имевшиеся в сети "охранники" меня не устроивали - хотелось сделать по проще, из подручных средств. Прилагается схема:

    Усилительную часть заимствовал из статьи А. Ознобихина "Индикатор приближения" (Радио,2007,N6,с.57). В качестве нагрузки Т2 подключил регистрирующий вход RB0 микроконтроллера Pic16f84. При увеличении тока в цепи сток - исток Т2 на входе RB0 появится положительный потенциал 4 - 6 вольт. Защиту от перенапряжения обеспечит стабилитрон VD2. Тактовая частота контроллера задается RC цепочкой.

    Управляющая программа довольно проста. Контроллер находится в состоянии SLEEP. "Будит" его прерывание по RB0. Обрабатывающая подпрограмма замыкает контакты реле К1 ("нажимает" клавишу делающую вызов на полутора секунд), снимает сигнал тревоги (реле К3), выдерживает паузу около 40 секунд и "нажимает" красную кнопку (реле К2). Процесс засыпает до следующего прерывания. В устройстве применены реле РМК11105 на 5 вольт. Как подготовить старый телефон указано в [2].

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

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

1. Первоначальный вариант А - одновременное касание выводов 1 и 2 (контакт)

2. Вариант Б - практической пользы не имеет, но интересен тем, что входом можно управлять. 
               Короткое замыкание исток - затвор Т4 инициирует тревогу, 
               а сток - затвор ее снимает. Служит основой для последующих вариантов.  
               
3. Вариант В - касание базы Т3 (статическое электричество). Надо отметить, что вероятно в 
               зависимости от наводок иногда лучше действует обратное включение Т3 -
               коллектором к затвору Т4 (выв. 7).

4. Вариант Г - приближение или прохождение мимо объекта (наводки электромагнитного поля). 
               Эффект достигается включением к выводу 8 индуктивностей L1 (основная) и L2 (связи). 
               С числом и расположением витков надо экспериментировать.
               Количественно они у меня соответственно 30 и 10. 
               L2 намотана поверх L1 проводом меньшего сечения. Этими данными 
               поле действует примерно на расстояние 20 - 30 сантиметров.

4. Вариант Д - устройство реагирует на оптическое излучение если подключить  
               фотоприемник (VD4) указанным способом. Применение 
               ИК лазерных диодов или лазерной указки увеличит "дальнобойность".

    ЛИТЕРАТУРА:
1. Ознобихин А. Индикатор приближения - Радио, 2007, № 6, с. 56, 57
2. Елизаров В. Передача сигнала тревоги с помощью мобильного телефона - Радио, 2007, № 8, с. 53.

           ; Управляющая программа ohrana.asm

           LIST    p=16F84 ; PIC16F844 is the target processor

           #include 
        __CONFIG   _WDT_OFF & _RC_OSC 

        CBLOCK H'C'     ; Определяем переменные
         NaHi
         NaLo
         NbHi
         NbLo
         kolko
         W_TEMP
         STATUS_TEMP
        ENDC

        org 0x0000      ; Вектор сброса
        goto main

        org 4           ; Вектор прерывания
        BCF              INTCON, INTE  ; Запрет прерываний от RB0
        BCF              INTCON, INTF  ; сброс флага по RB0

        clrf  kolko

        bsf PORTA, 0    ; Индикатор тревоги засвечивается

        movlw  02h
        movwf  kolko
        call Delay
        bsf PORTB, 1    ; Нажатие программируемой кнопки делающей вызов
        movlw  06h       
        movwf  kolko
        call Delay
        bcf  PORTB, 1

        bsf PORTB, 3    ; Сброс тревоги
        movlw  04h         
        movwf  kolko
        call Delay
        bcf  PORTB, 3

        movlw  60h      ; Нажатие красной кнопки
        movwf  kolko
        call   Delay
        bsf PORTB, 2
        movlw  06h         
        movwf  kolko
        call Delay
        bcf PORTB, 2     
 
        bcf PORTA, 0    ; Индикатор тревоги гаснет

        movlw  02h      
        movwf  kolko
        call Delay
                        ; Разрешение прерываний
        BSF             INTCON, INTE    ; от RB0
        retfie

init                            ; Инициализация регистров
        movlw b'00000000'       ; all port pins = low
        movwf PORTA
        movlw b'00000000'
        movwf PORTB

        bsf STATUS,RP0          ; set RAM Page 1 for TRIS registers
        movlw b'00000000'       
        movwf TRISA
        movlw b'00000001'       ; RB0 вход
        movwf TRISB
        bcf STATUS,RP0          ; back to RAM page 0
        return

Delay                           ; Подпрограмма временной задержки
        movlw 01h
        movwf NbHi
        movf  kolko, w
        movwf NbLo
        movlw 8Ah
        movwf NaHi
        movlw 5Bh
        movwf NaLo

DeLoop0

        decfsz NaLo,F
        goto DeLoop0
        decfsz NaHi,F
        goto DeLoop0
        decfsz NbLo,F
        goto DeLoop0
        decfsz NbHi,F
        goto DeLoop0
        ;
        return

main
       call init
                        ; Разрешение прерываний
       BSF              INTCON, GIE
       BSF              INTCON, INTE    ; От RB0

LOOP                    ; Основной цикл
       SLEEP
       GOTO             LOOP
       END

Михаил Емилиев (misho@pochta.ru)
г. Шумен
Болгария