Форум
 

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

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

Ответ
 
Опции темы Опции просмотра
Старый 29.01.2014, 10:32   #1
russo_turisto Меню Пользователя
Резидент клуба
 
Аватар для russo_turisto
 
Регистрация: 21.08.2011
Сообщений: 1,204
По умолчанию Эмулятор брелка

Вы наверно сталкивались с ситуацией, когда вам нужно заехать на парковку или дворовую территорию зарытую шлагбаумом? И заезжать приходиться постоянно, например двор вашей девушки или место вашей работы. Шлагбаумов становиться все больше, установка которых не всегда, мягко говоря, законна. Например, двор моего друга перегородили шлагбаумом Dorhan. Брелки раздали жильцам, но на всех брелков не хватило, и установщики объяснили это ограниченным кол-вом запрограмированых брелков в памяти шлагбаума. Якобы больше брелков прописать нельзя. И что делать? На ночь машину на дороге оставлять?

И друг попросил сделать ему брелок для открытия шлагбаума. Был взят прописанный рабочий брелок и анализатором прочитан код. Также оказалось, что этот шлагбаум открывается двумя посылками с брелка, присутствует так называемый «баг синхронизации». Т.е. можно записать две посылки с брелка и пользоваться ими постоянно. Далее была написана программка для 8-ми ногого PIC12F629 на хайтековском компиляторе, просимулирована в протеусе. И запаян в брелок тамагавка. При запайке были перезаны дорожки идущие к трансиверу от свитча (включение передачика) и данных передатчика. Тоненькими проводочками соединены с контролером и подключены кнопки, дорожки от них можно не перерезать. В моем брелке на кнопках висел минус, при нажатии появлялся плюс. Контролер находиться в спящем режиме, просыпается по прерыванию от нажатия кнопок. Т.е. батарейки брелка хватит на долго. Шлагбаум друга однокнопочный и работает на кейлоге. Можно прописать четыре кнопки для четырех разных шлагбаумов, в коде есть инструкции для Каме12-24 , кейлога и найс. Можете добавить свои.
В программе подробные комментарии, поэтому даже если вы не знакомы с Си, разберетесь, программа простейшая. Исходный код прилагается. Схема подключения в протеусе. В двумерном массиве bufer_data[][10] прописываете свой код от вашего шлагбаума, в первом (он же нулевой bufer_data[paket][0]) байте каждой строки пишем тип пакета. Если кейлог то 0x01, если каме12 то 0x02, и т.д., смотреть по коду. В программе отсутствует подпрограмма обработки прерывания.

HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.83
MPLAB v8.87
Вложения
Тип файла: rar brel.rar (103.9 Кб, 702 просмотров)
russo_turisto вне форума   Ответить с цитированием
Старый 29.01.2014, 15:44   #2
ZooRG Меню Пользователя
Вступил в клуб
 
Аватар для ZooRG
 
Регистрация: 06.05.2012
Сообщений: 78
По умолчанию Re: Эмулятор брелка

Всем Привет!!! ПРИКОЛЬНАЯ штучка! Просто спасибо за интересный девайс!!! И подробные коменты в исходнике!!
ZooRG вне форума   Ответить с цитированием
Старый 29.01.2014, 19:43   #3
russo_turisto Меню Пользователя
Резидент клуба
 
Аватар для russo_turisto
 
Регистрация: 21.08.2011
Сообщений: 1,204
По умолчанию Re: Эмулятор брелка

В моем брелке трансивер с паралельным расположением контактных площадок, и передатчик этого трансивера имеет инверсный вход передачи данных. Код я выложил для "нормального" трансивера без инверсии в передатчике. Если вам попадется такой же трансивер как у меня, то менять нужно дефайны
#define RT_HI GPIO|=(1<<RT) //для инверсного передатчика RT_LO GPIO|=(1<<RT)
#define RT_LO GPIO&=~(1<<RT) //для инверсного передатчика RT_HI GPIO&=~(1<<RT)

вот фото моего брела
Изображения
Тип файла: jpg brelok.JPG (18.0 Кб, 337 просмотров)
russo_turisto вне форума   Ответить с цитированием
Старый 12.10.2014, 17:25   #4
Lucifern Меню Пользователя
Член клуба
 
Аватар для Lucifern
 
Регистрация: 21.07.2013
Сообщений: 107
По умолчанию Re: Эмулятор брелка

Добрый вечер!
я так понимаю,для того чтобы сделать копию брелка от шлагбаума,нужно взять оригинальный брелок и с него считать код,а потом его записать в код программы?
У меня такой брелок от "Топора". Похож на ваш. Где в нем что перерезать и куда подключать пик? Можете схематично показать? Не нашел от него распиновку
Изображения
Тип файла: jpg 20141012221150.jpg (542.3 Кб, 223 просмотров)
Тип файла: jpg 20141012221212.jpg (514.7 Кб, 132 просмотров)
Lucifern вне форума   Ответить с цитированием
Старый 12.10.2014, 18:21   #5
russo_turisto Меню Пользователя
Резидент клуба
 
Аватар для russo_turisto
 
Регистрация: 21.08.2011
Сообщений: 1,204
По умолчанию Re: Эмулятор брелка

Желательно проверить открываются ли ваши шлаги двумя посылками, например с пом этого http://phreakerclub.com/forum/showthread.php?t=187

Распиновка в брелке вызванивается, лучше с пом осцилографа. Находите свитч включения передатчика, перерезается дорожка, подпаивается от пика. Также перерезается дорожка на Тх (данные) и заводиться от пика. Вызваниваются кнопки, от них дорожки можно не перерезать.

Добавлено через 1 минуту
Сравните фото, ваш топор вроде бы такой же.
russo_turisto вне форума   Ответить с цитированием
Старый 12.10.2014, 20:46   #6
DIVER_SANT Меню Пользователя
Модератор
 
Аватар для DIVER_SANT
 
Регистрация: 27.03.2011
Сообщений: 2,193
По умолчанию Re: Эмулятор брелка

Зачем брел на это переводить...Не пойму..
__________________
Правильно поставленный вопрос-на половину полученный ответ;)
++++++++++++++++++++++++++++++++++++++
[url]http://www.youtube.com/watch?v=ktnn-s3ebzw[/url]
DIVER_SANT вне форума   Ответить с цитированием
Старый 12.10.2014, 23:10   #7
Lucifern Меню Пользователя
Член клуба
 
Аватар для Lucifern
 
Регистрация: 21.07.2013
Сообщений: 107
По умолчанию Re: Эмулятор брелка

чтоб без дела не валялся
Lucifern вне форума   Ответить с цитированием
Старый 13.10.2014, 02:09   #8
DIVER_SANT Меню Пользователя
Модератор
 
Аватар для DIVER_SANT
 
Регистрация: 27.03.2011
Сообщений: 2,193
По умолчанию Re: Эмулятор брелка

Камень выпаять и граб тахона на цаме впаять тиньку
__________________
Правильно поставленный вопрос-на половину полученный ответ;)
++++++++++++++++++++++++++++++++++++++
[url]http://www.youtube.com/watch?v=ktnn-s3ebzw[/url]
DIVER_SANT вне форума   Ответить с цитированием
Старый 10.02.2016, 16:23   #9
ra9ftm Меню Пользователя
Гость клуба
 
Регистрация: 09.05.2013
Сообщений: 5
По умолчанию Re: Эмулятор брелка

Под attiny2313 немног поправил
... фьюзы clksel, clkdiv установить для 1 Mhz или поменять F_CPU
компилил в atmel studio 7

Код:
#include <avr/io.h>

#define F_CPU 1000000UL  // 1 MHz
//#define F_CPU 14.7456E6
#include <util/delay.h>


#define RT 1					//выход на передатчик
#define RT_HI PORTD|=(1<<RT) //sbi(PORTD,PA0) //GPIO|=(1<<RT)		//для инверсного передатчика RT_LO GPIO|=(1<<RT)
#define RT_LO PORTD&=~(1<<RT) //GPIO&=~(1<<RT)	//для инверсного передатчика RT_HI GPIO&=~(1<<RT)
#define RT_TOGGLE PORTD^=(1<<RT) //GPIO^=(1<<RT)

#define SW 2					//выход на свитч, при 1 включается передача
#define SW_HI PORTD|=(1<<SW)		//
#define SW_LO PORTD&=~(1<<SW)	//

#define BUT_1 2
#define BUT_1_STATE !(PINB&(1<<BUT_1)) //кнопка 1

#define BUT_2 3
#define BUT_2_STATE !(PINB&(1<<BUT_2)) //кнопка 2

#define BUT_3 4
#define BUT_3_STATE !(PINB&(1<<BUT_3)) //кнопка 3

#define BUT_4 5
#define BUT_4_STATE !(PINB&(1<<BUT_4)) //кнопка 4


unsigned char came_lcd, nice_lcd;
unsigned char counter;			//для задержек
volatile char paket; 			//
volatile char ports;			//

static const char bufer_data[][10] =	//первый байт в строке это тип формата пакета, 0х01 кейлог, 0х02 каме
{
	{ 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0xFF },   // 0 paket  кейлог
	{ 0x01, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0xFF },   // 1 paket  кейлог
	
	{ 0x01, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x00 },   // 2 paket  кейлог
	{ 0x01, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x00 },   // 3 paket  кейлог

	{ 0x02, 0x12, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },	 // 4 paket  каме12
	
	{ 0x03, 0x12, 0x34, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }	 // 5 paket  каме24
	
};

//Функция передачи кейлог
//задаем константы - длину TE в микросекундах, длительность Guard Time (паузы между посылками),
//число импульсов преамбулы и длину хедера (в единицах ТЕ).
//#define TE 400
//#define TG 39*TE
//#define PRE_COUNT 23
//#define HDR_COUNT 10

void data_send()	   			//КЕЙЛОГ выброс
{
	unsigned char a, b, j, mask=0x01;
	switch(bufer_data[paket][0])
	{
		case 1:     //КЕЙЛОГ
		for (int j=0;j<3;j++) // посылку посылаем 3 раз подр**
		{
			mask=0x80;
			//передаем преамбулу
			for(a=0; a<24; a++)
			{
				RT_TOGGLE;
				_delay_us(400);
			}
			
			//передаем хедер - выставляем низкий уровень и ждем HDR_COUNT мкс
			RT_LO;
			_delay_us(4000);  //10*400
			
			//собствено передача битов данных. а - счетчик битов.
			for(a=0; a<66; a++)
			{
				//проверяем состояние бита a в массиве packet. для этого накладываем битовую маску,
				//которую циклически сдвигаем каждый раз.
				b = mask & bufer_data[paket][a/8+1];
				mask>>=1;
				if(!mask) mask=0x80;
				
				//передача бита. сначала 1ТЕ высого уровня, потом - в зависимости от передаваемого бита,
				//1ТЕ высокого или низкого, и затем - 1ТЕ низкого уровня.
				RT_HI;
				_delay_us(400);
				if(b) RT_LO;
				_delay_us(400);
				RT_LO;
				_delay_us(400);
			}
			//ждем Guard Time (минимальное время между посылками)
			_delay_us(15600);  //400*39
		}
		break;

		#define CAME_TE 320   //320 мксек
		#define NICE_TE 700   //700 мксек
		#define COUNT 5       //кол-во пакетов

		case 2: // came 12
		for(b=0; b<COUNT; b++)
		{
			RT_HI;
			_delay_us(CAME_TE);
			RT_LO;
			//
			for(a=0; a<12; a++)
			{
				_delay_us(CAME_TE);
				if(!(bufer_data[paket][a/8+1]&(0x80>>(a%8)))) RT_HI;
				_delay_us(CAME_TE);
				RT_HI;
				_delay_us(CAME_TE);
				RT_LO;
			}
			_delay_us(11520);  //11520 мксек
		}
		break;
		
		case 3: //came24
		for(b=0; b<COUNT; b++)
		{
			//стартовый импульс
			RT_HI;
			_delay_us(CAME_TE);
			RT_LO;
			//
			for(a=0; a<24; a++)
			{
				_delay_us(CAME_TE);
				if(!(bufer_data[paket][a/8+1]&(0x80>>(a%8)))) RT_HI;
				_delay_us(CAME_TE);
				RT_HI;
				_delay_us(CAME_TE);
				RT_LO;
			}
			_delay_us(11520);  //11520 мксек
		}
		break;

		case 4: //nice 12
		for(b=0; b<COUNT; b++)
		{
			//стартовый импульс
			RT_HI;
			_delay_us(NICE_TE);
			RT_LO;
			//
			for(a=0; a<12; a++)
			{
				_delay_us(NICE_TE);
				if(!(bufer_data[paket][a/8+1]&(0x80>>(a%8)))) RT_HI;
				_delay_us(NICE_TE);
				RT_HI;
				_delay_us(NICE_TE);
				RT_LO;
			}
			_delay_us(25200);  //25200 микросек
		}
		RT_LO;
		break;
	}
	RT_LO;
}


void main(void)
{
	DDRD=0xFF;
	DDRB=0;
	PORTB=0xFF;
	
	#ifdef test
	while(1)
	{
				SW_HI;
				paket = 0;
				data_send();
				_delay_us(500000);
				paket = 1;
				data_send();
				SW_LO;
				_delay_us(500000);		
		
	}
	#endif
	
	while(1)
	{

			if(BUT_1_STATE)
			{
				SW_HI;
				paket = 0;
				data_send();
				_delay_us(500000);
				paket = 1;
				data_send();
				SW_LO;
				_delay_us(500000);
			}
			
			if(BUT_2_STATE)
			{
				SW_HI;
				paket = 2;
				data_send();
				_delay_us(500000);
				paket = 3;
				data_send();
				SW_LO;
				_delay_us(500000);
			}
			
			if(BUT_3_STATE)
			{
				SW_HI;
				paket = 4;
				data_send();
				SW_LO;
				_delay_us(500000);
			}

			if(BUT_4_STATE)
			{
				SW_HI;
				paket = 5;
				data_send();
				SW_LO;
				_delay_us(500000);
			}


	}

}
ra9ftm вне форума   Ответить с цитированием
Старый 09.03.2016, 22:54   #10
gendos76 Меню Пользователя
Вступил в клуб
 
Аватар для gendos76
 
Регистрация: 11.01.2015
Сообщений: 66
По умолчанию Re: Эмулятор брелка

Привет всем.
Тема супер.
Спасибо russo_turisto.
Вшил в обычные брелки пантера.Ничего переделывать,перепаивать даже не пришлось.
gendos76 вне форума   Ответить с цитированием
Ответ

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

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

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



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


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