отправка кода с ардуино по Wiegand или Touch memory
- Войдите на сайт для отправки комментариев
Ср, 16/08/2017 - 21:12
Есть желание прикрутить этот контроллер вместо считывателя к существующему скуд по протоколу 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; }
jo81@mail.ru
или еще проще (наверно):
принимать в com порт числа и передавать их по wiegand или touch memory
нород как то делает эмуляторы ключей TM ,но не могу повторить т.к. не хватает знаний
цена обсуждаема
htpicc@gmail.com