отправка кода с ардуино по Wiegand или Touch memory

yopopolo
Offline
Зарегистрирован: 16.08.2017

Есть желание прикрутить этот контроллер вместо считывателя  к существующему скуд по протоколу wiegand или touch memory.

Собственно ТЗ заключается чтобы приходящие коды с пульта на ардуино ,отправлять в проводную линию ,используя wiegand или touch memory

хранить ключи в ардуино не нужно,просто создать преобразователь одного в другое.



з.ы.  Я вообще не программист и скетч создал в программе Flprog ,по этому без комментариев в скетче.

да,возможно приобрести готовое устройство,но в случае поломки , проще найти новое ардуино.

 

#include <RCSwitch.h>

unsigned long _FLPArray111171288[201] = {11111111111111, 15209608, 15209604, 16520328, 16125832, 3014792, 12259464, 14423176, 12259464, 15338632, 203400, 1510024, 16651400, 100000010000001, 1651869, 16518, 6186948, 646816, 612381, 611, 68, 3516161, 651684, 6616861, 165114, 16116, 61521866, 611, 1516, 4847996, 651, 65169165, 1616484, 16103216, 1684, 618496, 65168, 65168, 651619, 6516, 163699, 69188, 77, 81518, 111111, 22222, 33333, 44444, 55555, 66666, 77777, 88888, 99999, 99988, 777788, 4447, 555888, 666555, 444888, 222111, 555444, 333666, 55598, 818181, 1114844, 2222848484, 333458484, 4449595292, 984, 96959, 849, 615489, 968489494, 1919818, 7871919, 16, 19198, 9619818, 9484911691, 3211616123, 15116811, 16518991, 1651894981, 1.65123e6, 13006, 8988981, 444084, 8484808408, 409984840809, 409884110, 51051, 658009, 1651618, 899044, 9094980984, 904546631, 3210351, 8406, 165180, 516508, 5168, 460846848, 465068406, 8468406, 40684, 606846846904, 68406840, 684064, 6806, 460, 684, 684680, 6480, 9, 66, 5, 64, 648, 46, 498, 84, 98989409, 998498, 49849, 8464656, 88498449, 8909, 449844, 1549494941, 114984849847, 17797998, 9849849841, 819819811, 136131, 61191691, 99846919, 161651681, 6156184, 651616189, 1615196189814, 1651617, 166165196, 61651849, 6519849, 991419884, 168419849, 11131336, 61498414, 651651198, 4984984, 416498787984, 161321616, 4984948, 916516, 9899989, 4941616313, 169648, 44894838, 94949464694, 13515316, 446849, 9498494, 6313164, 1165498441, 165164441, 6131316, 14616547484, 161561651, 48477978, 9798494131, 6849484, 6165168498, 4991561, 6155616516, 69984984, 165151315, 694896191, 56151651489, 4484981, 516794894984, 46546498, 9898984, 16156, 499898984, 44891432187799, 97999797, 94663189181, 4891110080, 8949489, 849844491, 94984898448, 89449840840890, 98489489440, 9494964, 4484904, 894984080894861, 361351561, 641418460, 64684406, 331184800684, 999999999999 };
bool ok_154193242_1;
unsigned long long_out_154193242_1;
RCSwitch mySwitch_154193242_1= RCSwitch();
unsigned long value_154193242_1;
unsigned long _gtv2;
bool _gtv1 = 0;
bool _gtv3 = 0;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
bool _tim1I = 0;
bool _tim1O = 0;
unsigned long _tim1P = 0UL;
void setup()
{
pinMode(48, OUTPUT);


mySwitch_154193242_1.enableReceive( 0 );  // прерывание INT0, INT1, INTx

// Протокол
mySwitch_154193242_1.setProtocol(1); //протокол 2262

// Optional set pulse length.
mySwitch_154193242_1.setPulseLength(450); // 500/1500 мкс
}
void loop()
{




//Плата:1
if (_gtv1) {
_gtv2 = 0UL;
}

//Плата:2

ok_154193242_1 = false;
if (mySwitch_154193242_1.available())  //проверим готов ли прием
{  
	value_154193242_1 = mySwitch_154193242_1.getReceivedValue(); //заберем принятый код
	if (value_154193242_1 != 0) { long_out_154193242_1 =  value_154193242_1; ok_154193242_1 = true; }
}
mySwitch_154193242_1.resetAvailable();

_gtv3 = ok_154193242_1;
_gtv2 = long_out_154193242_1;

//Плата:3
_gtv1 = ((_findElementFromUnsignedLongArray(_FLPArray111171288, 201, (_gtv2))) > -1);

//Плата:4
if (( (_gtv1) && (_gtv3) )) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;}; 
 if(_trgrt1) {_tim1O = 1; _tim1I = 1;} else { if(_tim1I) {_tim1I = 0; _tim1P = millis();} else { if (_tim1O) {if ( _isTimer(_tim1P, 500)) _tim1O = 0;}}}
digitalWrite(48, _tim1O);




}
bool _isTimer(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
  }
int _findElementFromUnsignedLongArray(unsigned long array[], int arraySize, unsigned long value){
for (int i = 0; i < arraySize; i = i + 1) {if(array[i] == value){return i;}}
return -1;
}

 

yopopolo
Offline
Зарегистрирован: 16.08.2017
yopopolo
Offline
Зарегистрирован: 16.08.2017

или еще проще  (наверно):

принимать в com порт числа и передавать их по wiegand или touch memory

нород как то делает эмуляторы ключей TM ,но не могу повторить т.к. не хватает знаний

yopopolo
Offline
Зарегистрирован: 16.08.2017

цена обсуждаема

Green
Offline
Зарегистрирован: 01.10.2015