Форум
 

Вернуться   Форум "Фрикер Клуб" - кодграббер своими руками > Основной раздел > Песочница

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 13.06.2018, 14:28   #1
hoha24 Меню Пользователя
Гость клуба
 
Регистрация: 11.02.2018
Сообщений: 5
По умолчанию Глушилка.

Добрый день.

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

Собрал схему : sim800l ,Передатчик + приемник XY-MK-5V 433Mhz
Постоянная помеха работает и блокирует сигнализации.
Но выяснилось что блокируются и другие устройства работающие на этой частоте. Например метеостанции.
Вычитав на форуме что про умную глушилку, решил такую сделать.
Чтобы помеха шла при включении брелка сигнализации.
Данный код реагирует на брелоки ,дает помеху.
Но машина ставится и снимается с охраны как не в чем не бывало.
Что я делаю не так ?
Ниже часть кода. Без отключения по телефону.

Код:
#define rxd     2    // rx data pin

#define delta   100  // max time delta
#define mintime 100  // min time pulse
int led = 9; // Выход на передатчик 
int n;
unsigned int time,oldtime,count,log0,log1;
byte data[8];
void setup(){
  pinMode(rxd,INPUT);
  
  attachInterrupt(0,pinint,CHANGE);
  Serial.begin(57600);
  Serial.println("Starline 64 bit receiver started");
  interrupts();
}
void pinint(){
  if(digitalRead(rxd)==HIGH)oldtime=micros();
  else{
    time=micros()-oldtime;
    if(time<mintime)return;
    if(constrain(time,log0-delta,log0+delta)==time)savebit(false);
    else if(constrain(time,log1-delta,log1+delta)==time)savebit(true);
    else{
      log0=time/2;
      log1=time/4;
      count=0;
    }
  }
}
void savebit(boolean val){
  for(int i=1;i<=8;i++){
    data[i]=data[i]<<1;
    if(i<8)if(bitRead(data[i+1],7))bitSet(data[i],0);
  }
  if(val)bitSet(data[8],0);
  count++;
  if(count>20){
    Serial.print("STARLINE ");
    for(int i=1;i<=8;i++)printhex(data[i]);
    Serial.println("");
  n=1;
  }
}
void printhex(byte val){
  if(val<=0x0F)Serial.print("0");
  Serial.print(val,HEX);
//n=1;
}
void loop(){
  
 if (n==1)
 { analogWrite(led,127);// //переменная помеха вкл
   digitalWrite(LED_BUILTIN, HIGH); 
    delay(1000);  // время работы помехи
    n=2;
 }
   
    if (n==2)
    {analogWrite(led,0);
     digitalWrite(LED_BUILTIN, LOW);
     }
     
     }

Последний раз редактировалось DIVER_SANT; 18.06.2018 в 19:24.
hoha24 вне форума   Ответить с цитированием
Старый 14.06.2018, 07:25   #2
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,176
По умолчанию Re: Глушилка.

>> что я делаю не так?
Надо учитывать то, что существуют различные виды автосигнализации, которые можно поделить на следующие группы:
1) вид модуляции
2) несущая частота (так же может меняться)
3) кодировка
4) схема шифрования
Вот пример:

Tomahawk SL-950
Радиоканал: 433,92 МГц, АМ
Кодировка: PWM Keeeloq
Схема шифрования: Keeloq, simple learning

Starline A6
Радиоканал: 433,92 МГц, АМ
Кодировка: PWM Starline
Схема шифрования: Keeloq, simple learning


Scher-Khan 3,4,5,6,7
Радиоканал: 433,92 МГц, ЧМ
Кодировка: Magic Code, 51 бит
Схема шифрования: Отсутствует

Alligator Defender D-1100RSG
Радиоканал: 868,35 МГц, АМ
Кодировка: X2-CODE
Схема шифрования: BACS

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

Добавлено через 37 минут
Следует добавить к вышесказанному надо почитать о таких понятиях: помехозащищенность, мощность радиосигнала ( зависимость питания на сигнал P=(U^2) * I ) и т.д.
И Наверное легчее отлавливать сигнал метеостанции-его пропускать-а остальное глушить.
Думаю это исчерпывающий ответ.

Последний раз редактировалось EPA; 14.06.2018 в 07:28.
EPA вне форума   Ответить с цитированием
Старый 14.06.2018, 10:13   #3
geekus Меню Пользователя
Вступил в клуб
 
Регистрация: 10.10.2016
Сообщений: 21
По умолчанию Re: Глушилка.

>> Что я делаю не так ?

1) НИКОГДА, не делай вывод в последовательный порт внутри обработчика прерывания.
2) сначала действие - ставим помеху, только потом отчет - можем позволить себе что нибудь напечатать.

дальше думай сам. удачи.
geekus вне форума   Ответить с цитированием
Старый 14.06.2018, 10:43   #4
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,176
По умолчанию Re: Глушилка.

Если hoha24 выведет serial из прерывания, вообще ничего не измениться в плане глушилки, как не глушила определенную сигу, так и не будет.
А в плане организации кода лучше вывести serial из прерывания.

Последний раз редактировалось EPA; 14.06.2018 в 10:50.
EPA вне форума   Ответить с цитированием
Старый 14.06.2018, 10:44   #5
hoha24 Меню Пользователя
Гость клуба
 
Регистрация: 11.02.2018
Сообщений: 5
По умолчанию Re: Глушилка.

Спасибо. Буду думать.
hoha24 вне форума   Ответить с цитированием
Старый 18.06.2018, 16:21   #6
hoha24 Меню Пользователя
Гость клуба
 
Регистрация: 11.02.2018
Сообщений: 5
По умолчанию Re: Глушилка.

Вот относительно рабочий код. Глушит 433 МГц. Использовал sim 800l ,Комплект из супергетеродинного приемника WL101-341 и передатчика WL102-341, 433 МГц. , Arduino Nano V3, Понижающий DC-DC преобразователь GW1584. Как подключить sim 800 в инете полно. Не забывайте при подключении , сим модуля и передатчика, про делители напряжений.
Схема работы : На время вызова помеха выключается. СМС 1 переменная помеха реагирует
на брелки. СМС 2 постоянная помеха. СМС 0 помеха выкл. Так как трубка не снимается деньги не списываются. Антенна штерь из медной проволоки 17 см. Сильно не пинайте я только учусь.



Код:
#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(10, 11); 

#define rxd     2    // rx приемник
#define delta   100  // max time delta
#define mintime 1  // min time pulse
int led = 9; // Выход на передатчик 
#define PIN_PIR 12 // сигнал со звонка телефона 

int n;
int f;
unsigned int time,oldtime,count,log0,log1;
byte data[8];

void setup()
{
  pinMode(rxd,INPUT);
   attachInterrupt(0,pinint,CHANGE);
   interrupts();
 gprsSerial.begin(4800);
 pinMode(LED_BUILTIN, OUTPUT);
 
 // настройка приема сообщений
 
 gprsSerial.print("AT+CMGF=1\r");
 delay(500); 
 gprsSerial.print("AT+IFC=1, 1\r");
 delay(500);
 gprsSerial.print("AT+CPBS=\"SM\"\r");
 delay(500); 
 gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
 delay(500);
 gprsSerial.print("AT+CMGDA=DEL ALL");
 delay(500);
}
 
String currStr = "";
// если эта строка сообщение, то переменная примет значение True
boolean isStringMessage = false;

void pinint(){
  if(digitalRead(rxd)==HIGH)oldtime=micros();
  else{
    time=micros()-oldtime;
    if(time<mintime)return;
    if(constrain(time,log0-delta,log0+delta)==time)savebit(false);
    else if(constrain(time,log1-delta,log1+delta)==time)savebit(true);
    else{
      log0=time/2;
      log1=time/4;
      count=3;
    }
  }
}

 void savebit(boolean val){
  count++;
  if(count>4) // Настройка фильтра(3 - 40)
  {f=1;}
}

void loop()

{
 //---------------------------------------------------------------------
  int val = digitalRead(PIN_PIR); // Считываем сигнал со звонка телефона 
  
   if (val == HIGH&&n==1&&f==1)// звонка нет , смс 1 и сигнал с брелка
  {analogWrite(led,127);// //переменная помеха вкл
   digitalWrite(LED_BUILTIN, HIGH); 
    delay(2000);  // время работы помехи
    f=2; 
    }  
   

 if (val==HIGH&&n==3)// звонка нет и смс 2 
  { analogWrite(led,127);// //постоянная помеха вкл
   digitalWrite(LED_BUILTIN, HIGH); 
   }
 
   if (val == LOW||n==2||f==2)//звонок  или смс 0
 {analogWrite(led,0);// помеха выкл
 digitalWrite(LED_BUILTIN, LOW);}

  //-------------------------------------------------------------------------

  
 if (!gprsSerial.available())
 return;
  
 char currSymb = gprsSerial.read();
  Serial.println(currSymb); 
 if ('\r' == currSymb) {
 if (isStringMessage) {
 if (!currStr.compareTo("2")) {n=3; } //постоянная помеха вкл смс "2"
 if (!currStr.compareTo("1")) {n=1;}  //переменная помеха вкл смс "1"
 if (!currStr.compareTo("0")) {n=2;} //помеха выкл смс "0"
 
  gprsSerial.print("AT+CMGDA=DEL ALL"); // удалить все смс

 isStringMessage = false;
 } else {
 if (currStr.startsWith("+CMT")) {
 // если текущая строка начинается с "+CMT", то следующая сообщение
 isStringMessage = true;
 }
 }
 currStr = "";
 } else if ('\n' != currSymb) {
 currStr += String(currSymb);
 }
}

Последний раз редактировалось DIVER_SANT; 18.06.2018 в 19:23.
hoha24 вне форума   Ответить с цитированием
Старый 18.06.2018, 19:28   #7
DIVER_SANT Меню Пользователя
Модератор
 
Аватар для DIVER_SANT
 
Регистрация: 27.03.2011
Сообщений: 2,222
По умолчанию Re: Глушилка.

Я так понимаю только со Старами будет работать и то со старыми.Логичнее брать код анализатора и по результатам приема анализатора запускать глушилку ,опять же ,а есть ли смысл ,если управляется через жсм ?
__________________
Правильно поставленный вопрос-на половину полученный ответ;)
++++++++++++++++++++++++++++++++++++++
[url]http://www.youtube.com/watch?v=ktnn-s3ebzw[/url]
DIVER_SANT вне форума   Ответить с цитированием
Старый 18.06.2018, 19:43   #8
hoha24 Меню Пользователя
Гость клуба
 
Регистрация: 11.02.2018
Сообщений: 5
По умолчанию Re: Глушилка.

В теории все красиво. А вы на практике напишите. Глушилка реагирует на брелки 433. ей пофиг на кодировку. Глушит в зависимости от мощности передатчика. Эта глушилка проверена на практике. Минус - небольшой радиус действия.
hoha24 вне форума   Ответить с цитированием
Старый 18.06.2018, 20:52   #9
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,176
По умолчанию Re: Глушилка.

Цитата:
Сообщение от hoha24
В теории все красиво. А вы на практике напишите. Глушилка реагирует на брелки 433. ей пофиг на кодировку. Глушит в зависимости от мощности передатчика. Эта глушилка проверена на практике. Минус - небольшой радиус действия.

~11dbm WL102 - ясен пень это мало для глушилки, т.е. это чтоб не соврать где-то 10-13mW.
ТО: поражающая мощность глушилки 20 метров.
советую прикрути лучше si4463 ( приёмопередатчик в одном флаконе) - это где-то 20dbm ~100mW т.е. +100метров ( причём можно регулировать мощность )
А DIVER_SANT хотел сказать, что она будет глушить старые стары , топоры и т.д.. Если смотреть статистику то народная автосигналка конечно же starline, но не старого типа. Ща starline просто так хрен заглушишь. Частота передатчика брелка не только 433, 92 Мгц , а прыгает ~433 до ~434 по 512 каналам, и ХЗ по какому алгоритму. т.е. глушанешь ты 433,92МГц, а передатчик брелка передаст сигнал на другой частоте например 433,04МГц. вот из-за этого ты иногда не можешь заглушить корыто соседа
К тому же много систем работающих на FM -это тоже не зубам WL102, опять же лучше si4463 - он умеет работать в FM .
Короче, если начал делать глушилку, то сделай её достойной, а WL102 - в топку!!!!

Последний раз редактировалось EPA; 18.06.2018 в 20:56.
EPA вне форума   Ответить с цитированием
Старый 18.06.2018, 21:41   #10
hoha24 Меню Пользователя
Гость клуба
 
Регистрация: 11.02.2018
Сообщений: 5
По умолчанию Re: Глушилка.

si4463 это hc-12 ? Такая штукаовина куплена и ждет своего часа.
ПЛЮС •Частота: от 433.4 до 473 мГц. Доступно 100 независимых каналов , •Мощность приема: -112дБц ~ -95дБц
•Мощность передачи: 20дБц
МИНУС- UART
hoha24 вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 14:21. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com
Яндекс.Метрика