Первая тема в блоге и она посвящается модулю что завалялся у меня. Это считыватель проксимити карт от компании Параллакс. Очень долго не мог разобраться с кодом, но спустя 4 месяца после поднятия проблемы на форуме, один хороший человек прислал мне свой вариант кода. После адаптации по мою плату (Arduino Mega 1280) наконец-то получил позитивный результат, ни что иное как ид карты! Заказал я с небезызвестного сайта ebay 5 карт 125 kHZ и такое же количество брелоков на той же частоте! Для вывода результата я решил использовать LCD Keypad Shield. Коммуникация осуществляется через "Serial2" (только в Arduino Mega). Пины "SIN" и "SOUT"на модуле подключаются к пинам 16 и 17 (Serial2) на ардуино соответственно. Далее приводятся пару фото и видео (HD) для наглядного примера. Ну и в конце концов исходный код!
// more info at: http://prototypeit.blogspot.com/
// (c) DIXIS [Arduino Mega 1280]
#include <LCD4Bit_mod.h>
LCD4Bit_mod lcd = LCD4Bit_mod(2);
int val = 0;
char code[12];
int bytesread = 0;
char tag1[12] = {'1', 'C', '0', '0', 'A', '8', '8', 'E', '7', '9'}; //the tags id
char tag2[12] = {'1', 'B', '0', '0', 'F', '0', '7', 'F', '2', 'F'};
char tag3[12] = {'1', 'B', '0', '0', 'E', 'B', '4', '1', 'C' ,'3'};
char tag4[12] = {'1', 'C', '0', '0', 'A', '5', '4', 'F', '5', '3'};
char tag5[12] = {'3', 'F', '0', '0', '3', 'E', '3', 'E', '7', '6'};
char tag6[12] = {'3', 'F', '0', '0', '3', 'F', '0', 'A', 'C', '6'};
char tag7[12] = {'3', 'F', '0', '0', '3', 'E', '8', '6', '1', 'C'};
char tag8[12] = {'3', 'F', '0', '0', '3', 'F', '2', '0', '2', '3'};
void establishContact() {
while (Serial2.available() <= 0) {
Serial2.print("!RW"); // send an initial string
Serial2.print(0x0F,BYTE);
Serial2.flush();
delay(300);
}
}
void setup(){
Serial.begin(9600);
Serial2.begin(9600);
Serial.println("RFID Read/Write Test");
establishContact();
lcd.init();
lcd.clear();
lcd.printIn(" PrototypeIt");
lcd.cursorTo(2, 2); lcd.printIn(".blogspot.com");
}
void loop(){
char statusCode;
//Read RFID Tag data
boolean startByte=false;
boolean endByte=false;
bytesread=0;
if (Serial2.available()>0) {
while (Serial2.available()>0 && bytesread<10) {
val=Serial2.read();
if((val == 10)||(val == 13)) { // if header or stop bytes before the 10 digit reading
break; } // stop reading
code[bytesread] = val; // add the digit
bytesread++;}
if (bytesread == 10 ) {
Serial.println(code); }
} else {
establishContact();
}
{
if(strcmp(code,tag1) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 5); lcd.printIn("CARD 1");}
if(strcmp(code,tag2) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 5); lcd.printIn("CARD 2"); }
if(strcmp(code,tag3) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 5); lcd.printIn("CARD 3"); }
if(strcmp(code,tag4) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 5); lcd.printIn("CARD 4"); }
if(strcmp(code,tag5) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 0); lcd.printIn("Key = 0004079222"); }
if(strcmp(code,tag6) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 0); lcd.printIn("Key = 0004131526"); }
if(strcmp(code,tag7) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 0); lcd.printIn("Key = 0004097564"); }
if(strcmp(code,tag8) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 0); lcd.printIn("Key = 0004136995"); }
}
}
// more info at: http://prototypeit.blogspot.com/
// (c) DIXIS [Arduino Mega 1280]
#include <LCD4Bit_mod.h>
LCD4Bit_mod lcd = LCD4Bit_mod(2);
int val = 0;
char code[12];
int bytesread = 0;
char tag1[12] = {'1', 'C', '0', '0', 'A', '8', '8', 'E', '7', '9'}; //the tags id
char tag2[12] = {'1', 'B', '0', '0', 'F', '0', '7', 'F', '2', 'F'};
char tag3[12] = {'1', 'B', '0', '0', 'E', 'B', '4', '1', 'C' ,'3'};
char tag4[12] = {'1', 'C', '0', '0', 'A', '5', '4', 'F', '5', '3'};
char tag5[12] = {'3', 'F', '0', '0', '3', 'E', '3', 'E', '7', '6'};
char tag6[12] = {'3', 'F', '0', '0', '3', 'F', '0', 'A', 'C', '6'};
char tag7[12] = {'3', 'F', '0', '0', '3', 'E', '8', '6', '1', 'C'};
char tag8[12] = {'3', 'F', '0', '0', '3', 'F', '2', '0', '2', '3'};
void establishContact() {
while (Serial2.available() <= 0) {
Serial2.print("!RW"); // send an initial string
Serial2.print(0x0F,BYTE);
Serial2.flush();
delay(300);
}
}
void setup(){
Serial.begin(9600);
Serial2.begin(9600);
Serial.println("RFID Read/Write Test");
establishContact();
lcd.init();
lcd.clear();
lcd.printIn(" PrototypeIt");
lcd.cursorTo(2, 2); lcd.printIn(".blogspot.com");
}
void loop(){
char statusCode;
//Read RFID Tag data
boolean startByte=false;
boolean endByte=false;
bytesread=0;
if (Serial2.available()>0) {
while (Serial2.available()>0 && bytesread<10) {
val=Serial2.read();
if((val == 10)||(val == 13)) { // if header or stop bytes before the 10 digit reading
break; } // stop reading
code[bytesread] = val; // add the digit
bytesread++;}
if (bytesread == 10 ) {
Serial.println(code); }
} else {
establishContact();
}
{
if(strcmp(code,tag1) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 5); lcd.printIn("CARD 1");}
if(strcmp(code,tag2) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 5); lcd.printIn("CARD 2"); }
if(strcmp(code,tag3) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 5); lcd.printIn("CARD 3"); }
if(strcmp(code,tag4) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 5); lcd.printIn("CARD 4"); }
if(strcmp(code,tag5) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 0); lcd.printIn("Key = 0004079222"); }
if(strcmp(code,tag6) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 0); lcd.printIn("Key = 0004131526"); }
if(strcmp(code,tag7) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 0); lcd.printIn("Key = 0004097564"); }
if(strcmp(code,tag8) == 0) {lcd.clear(); lcd.cursorTo(1, 2); lcd.printIn("PrototypeIt");
lcd.cursorTo(2, 0); lcd.printIn("Key = 0004136995"); }
}
}