ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Электроника и Фрикинг > Схемы и программы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Непримитивная сигнализация
  #1  
Старый 02.03.2008, 16:27
Animal
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме:
1260519

Репутация: 298
Отправить сообщение для Animal с помощью ICQ
Cool Непримитивная сигнализация

Подходит ко мне братан и говорит:"Сделай мне сигнализацию для гаража." Ну, я ему, как прожженый конструктор:"Пишите ТЗ, товарищ! Причем по ГОСТ-ам!". Нормальная такая фраза, когда делать чего нибудь не хочется. А он мне:"Не сделаешь - к компьютеру хрен больше подойдешь!" Вот эта фраза меня сильно простимулировала.
Итак, исходные данные:
На двери будет стоять герконовый датчик, а в помещении, так называемый датчик "объема" TEXECOM REFLEX (классная штука кстати, и стоит всего рублей 300).

В рабочем положении оба датчика замкнуты (TEXECOM через сопротивление 18 Ом, кстати). В помещении будет стоять штатный извещатель (какой - не знаю, бирки на нем стерты), в нем пьезоизлучатель с генератором к нему (уши закладывает - мама не горюй! и лампа (из трех светодиодов, каждый - размером с палец). У лампы и излучателя раздельное питание. Будет кнопка "постановка на охрану" на ящике "сейфового типа, в котором все "кишки" спрятаны и потайная кнопка "снять с охраны". Так же на ящике будет светодиод (просто чтобы был .
Схема устройства:


В тексте подробные комментарии, но, на всякий случай, опишу алгоритм работы на "пальцах".
После подачи питания контроллер инициализируется и ждет 10 сек (это надо датчику "объема")
do{ бесконечный цикл
ждем 10 сек перед постановкой на охрану и смотрим кнопку "снять с охраны"
если датчики в норме
{ Ждем срабатывания датчиков
Ждем 10 сек или кнопку "снять с охраны"
Включаем тревогу и смотрим кнопку "снять с охраны"
}
иначе даем сигнал неудачной постановки и ждем кнопку "снять с охраны"
ждем кнопку "постановки на охрану"
}while(true);
 
Ответить с цитированием

  #2  
Старый 02.03.2008, 16:35
Animal
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме:
1260519

Репутация: 298
Отправить сообщение для Animal с помощью ICQ
По умолчанию

Это пипец! Я не могу текст программы оправить! Он мне постоянно выдает
"500 Internal Server Error". Ни с тегами CODE, ни тупо текстом! Че за фигня и как с ней справиться?
 
Ответить с цитированием

  #3  
Старый 02.03.2008, 16:53
iddqd
Banned
Регистрация: 19.12.2007
Сообщений: 924
Провел на форуме:
4192567

Репутация: 2145


По умолчанию

ога, я тоже с этим столкнулся
не могу запостить большой объём текста- приходится разбивать на несколько постов
 
Ответить с цитированием

  #4  
Старый 02.03.2008, 16:56
Animal
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме:
1260519

Репутация: 298
Отправить сообщение для Animal с помощью ICQ
По умолчанию

Текст программы, часть 1:
Код:
#include <16F676.h>           //Выбираем контроллер
#use delay(clock=4000000)     //Частота внутр генератора 4МГц
#use Fast_IO(A)               //Ручная установка регистров TRIS
#use  Fast_IO(C)
#fuses nowdt, nomclr,intrc_IO //отключаем сторожевой таймер, 
                              //отключаем внешний сброс
                              //работа от внутреннего генератора 
                              //без тактовых импульсов на RA4
#define  DAT1        Pin_A5   // первый датчик (объем)
#define  DAT2        Pin_A4   // второй датчик (контакт)
#define  Sec_On      Pin_A3   // кнопка "поставить на охрану"
#define  Sec_Off     Pin_C5   // кнопка "снять с охраны" секретная :)
#define  Out_Siren   Pin_A0   // выход на сирену
#define  Out_Lamp    Pin_A1   // выход на лампу
#define  Out_Led     Pin_A2   // выход на светодиод

 //переменные********************************************************
 Boolean          Stat_Dat1,  //состояние первого датчика
                              //true, если датчик замкнут (на охране)
                  Stat_Dat2,  //состояние второго датчика
                              //true, если датчик замкнут (на охране)
                  Stat_On,    //состояние кнопки "поставить на охрану" true, если была нажата
                  Stat_Off;   //состояние кнопки "снять с охраны" true, если была нажата
Unsigned int16    Time;       //это время, "тикает" с тактом 0.01 секунды
//прерывания**********************************************************
#Int_Timer0                   // обработка прерывания
   void Timer0_Isr()
      {  ++Time;              // добавляем единицу к счетчику времени, 1 счет=0.01 сек
         Delay_us(13);
         Set_Timer0(100); } 
 //функции***********************************************************
void Initial()                               //функция настройки контроллера
 { setup_adc_ports(NO_ANALOGS);           //все выводы "цифровые"
   setup_adc(ADC_OFF);                    // отключаем АЦП
   setup_timer_0(RTCC_Internal|RTCC_Div_64); // настройка таймера 0
   setup_timer_1(T1_DISABLED);            //отключение таймера 1
   setup_comparator(NC_NC);               //отключение компаратора
   setup_vref(FALSE);                     //отключение порогового напряжения компаратора
   Set_Tris_A(0b11111000);                //выводы RA0, RA1, RA2 - выходы
   Set_Tris_C(0b11111111);                //весь порт С настроен на вход
   enable_interrupts(Global);             //Запускаем счетчик времени
   enable_interrupts(Int_Timer0);
   output_low(Out_Siren);                    //Отключаем сирену и индикацию
   output_low(Out_Lamp);
   output_high(Out_Led);
   Stat_On=false;                            //кнопки считаем отключенными
   Stat_Off=false;
   delay_ms(10000);           //пауза при включении питания (для датчика объема)
                                   //при сбросе питания система 
                                 //попытается встать на охрану
   }
 
Ответить с цитированием

  #5  
Старый 02.03.2008, 16:58
Animal
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме:
1260519

Репутация: 298
Отправить сообщение для Animal с помощью ICQ
По умолчанию

Текст программы, часть 2:
Код:
boolean Read_Dat1()            //возвращает true, если датчик 1 замкнут
{   if (input(Dat1))
   {    delay_ms(30);
      if (input(Dat1))
      {   delay_ms(30);
         if(input(Dat1)) 
         {return false;}
         else return true;
      }else return true;
   }else return true;   
} //end Read_Dat1()

boolean Read_Dat2()            //возвращает true, если датчик 2 замкнут
{   if (input(Dat2))
   {    delay_ms(30);
      if (input(Dat2))
      {   delay_ms(30);
         if(input(Dat2)) 
         {return false;}
         else return true;
      }else return true;
   }else return true;   
} //end Read_Dat2()

boolean Read_Sec_On()         //возвращает true, если кнопка постановки на охрану нажата
{   if (!input(Sec_On))
   {    delay_ms(30);
      if (!input(Sec_On))
      {   delay_ms(30);
         if(!input(Sec_On)) 
         {return true;}
         else return false;
      }else return false;
   }else return false;   
} //end Read_Sec_On()

boolean Read_Sec_Off()      //возвращает true, если кнопка снятия с охраны нажата
{   if (!input(Sec_Off))
   {    delay_ms(30);
      if (!input(Sec_Off))
      {   delay_ms(30);
         if(!input(Sec_Off)) 
         {return true;}
         else return false;
      }else return false;
   }else return false;   
} //end Read_Sec_Off()
 
Ответить с цитированием

  #6  
Старый 02.03.2008, 17:00
Animal
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме:
1260519

Репутация: 298
Отправить сообщение для Animal с помощью ICQ
Cool

Текст программы, часть 3:
Код:
//***MAIN*******************************************************
main()
{Initial();
do{   unsigned int16 Temp_Time;                  //начало главного цикла цикла
   Stat_On=false;
   Stat_Off=false;
   Time=0;
   Temp_Time=0;

   // 10 секунд пауза перед постановкой на охрану
   do{   
      Temp_Time=Time;                        //секундный цикл
      do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();   //проверяем кнопку снятия
      }while(Time<(Temp_Time+100));
      output_high(Out_Lamp);                  //5 сек моргаем лампочкой
      if (Time>550) output_high(Out_Siren);      //еще 5 сек - лампой и сиреной
      Temp_Time=Time;                        //0.1секундный цикл
      do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();   //проверяем кнопку снятия
      }while(Time<(Temp_Time+10));
      output_low(Out_Lamp);
      output_low(Out_Siren);
   }while((Time<1000)&&!Stat_Off);               //конец паузы
   // попытка поставиться на охрану
   Stat_Dat1=Read_Dat1();                     //проверяем состояние датчиков
   Stat_Dat2=Read_Dat2();      
   if (Stat_Dat1&&Stat_Dat2&&!Stat_Off)         //если датчики в норме 
   {   do{      if (Stat_dat1) Stat_Dat1=Read_Dat1();   //и кнопку снятия не нажимали
            if (Stat_dat2) Stat_Dat2=Read_Dat2();   //ждем срабатывания датчиков
            delay_ms(900);
            output_high(Out_Led);            //подмигиваем светодиодом
            delay_ms(100);
            output_low(Out_Led);
      }while(Stat_dat1&&Stat_Dat2);            //один из датчиков сработал
      Time=0;
      do{                                 //перед тревогой пауза 10 сек
                                       //для нажатия кнопки "снять"
         Temp_Time=Time;                     //секундный цикл
         do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();   //проверяем кнопку снятия
         }while(Time<(Temp_Time+100));
         output_high(Out_Lamp);
         if (Time>=550) output_high(Out_Siren);
         delay_ms(100);
         output_low(Out_Lamp);
         output_low(Out_Siren);      
      }while((Time<1000)&&!Stat_Off);            
      while(!Stat_Off){                     // ТРЕВОГА
         output_high(Out_Lamp);
         output_High(Out_Siren);
         Temp_Time=Time;
         do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();
         }while(Time<(Temp_Time+50));
         output_low(Out_Lamp);
         output_low(Out_Siren);
         Temp_Time=Time;
         do{   if(!Stat_Off)Stat_Off=Read_Sec_Off();
         }while(Time<(Temp_Time+50));                           
      }//конец тревоги
   }
   else                                 //при попытке установки на охрану
                                       //оказались разомкнуты датчики
                                       //или нажата кнопка "снять с охраны"
      while(!Stat_Off){   if (!Stat_Off) Stat_Off=Read_Sec_Off();
         output_high(Out_Lamp);
         output_high(Out_Siren);               //сигналим о неудавшейся постановке
         delay_ms(100);
         output_low(Out_Lamp);
         output_low(Out_Siren);
         delay_ms(400);                        
         }   
   // ожидание постановки на охрану
      output_high(Out_Led);                  //зажигаем светодиод         
      do{   if(!Stat_On) Stat_On=Read_Sec_On();      //и ждем команду постановки на охрану
      }while(!Stat_On);
      output_low(Out_Led);
}while(1); //главный цикл
}         //main
 
Ответить с цитированием

  #7  
Старый 02.03.2008, 19:11
Animal
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме:
1260519

Репутация: 298
Отправить сообщение для Animal с помощью ICQ
По умолчанию

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

и сама платка




Братан тестировал - сказал, что все работает отлично. Только возможно паузу перед постановкой на охрану придется увеличить до 15 сек - датчик "объема" долго в штатный режим переходит. Вот.
 
Ответить с цитированием

  #8  
Старый 02.03.2008, 20:49
presidentua
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме:
1724067

Репутация: 806
Отправить сообщение для presidentua с помощью ICQ
По умолчанию

На монтажке за час!!!

Вот это скорость сборки. Поделись секретом!

А по сути. То сейчас розбираюсь со схемой и с немного с прогой . Спасибо
 
Ответить с цитированием

  #9  
Старый 02.03.2008, 21:27
Animal
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме:
1260519

Репутация: 298
Отправить сообщение для Animal с помощью ICQ
По умолчанию

Просто рука набита. А секрет,наверное, в оптимальном и продуманном расположении элементов.
 
Ответить с цитированием

  #10  
Старый 02.03.2008, 23:20
presidentua
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме:
1724067

Репутация: 806
Отправить сообщение для presidentua с помощью ICQ
По умолчанию

Везет тебе! вот я всегда сделаю и схему и програму и в протеусе отлично работает, а как доходит до паяния так все лень. Хоть и работы на пару часов, но пока заставлю себя Может когда то поменяется характер )))))))
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Три теоремы об угоне автомобиля «Ана®xист» Электроника и Фрикинг 5 26.05.2009 23:05
Простой Звуковой Генератор или Самая примитивная Сигнализация Dimi4 Схемы и программы 17 23.02.2008 17:05



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ