134.2Khz RFID Long Distance Animal Tag Reader Module FDX ISO11784/85 compatible Arduino
922 in stock
$19.90 $38.40
922 in stock
Notice:Not support HDX Tag
Model:WL-134
Protocol:FDX-B
Read-able Chip:EM4305 HTAG256 EM1001 TK4100
Dimension:35 x 36mm
Frequency:134.2K
Voltage:5~9V battery or LDO power supply. Using DC-DC or switching power supply will affect the reading distance
Working current:120mA,9V
Working temperature:-40~ +80C
Antenna inductance:580uH
Pin definitions are as follows:
| 1 | +5V to +9V power supply |
| 2 | RST reset,Low Level effective |
| 3 | TX serial port number output, TTL 5V level |
| 4 | GND |
| L1 | Antena 1 |
| L2 | Antena 2(360V vpp) |
Read card distancereference list:
| Use length 97x 97mm square antenna reading card distance are as follows |
| 2x12mm glass tube is about 18CM |
| The diameter of 3CM ear tag reading distance is about 36CM |
TX Data format: ( ASCII):
Baud rate 9600,8N2
1:02 start number(fixed)
2:10 bit HEX format ASCII card number,LSB first.
3:4 bit HEX format ASCII country number,LSB first:
4:Data flag, 0 or 1
5: Aninal flag,0 or 1
6,7 reseved.
8:Checksum,all 26bit ACSII HEX XOR
9:Checksum Bitwise invert.
10:03 end number(fixed)
For example:on the tag shows: “900250000023921”(Dec format 900 in the front,then card number 250000023921)
Module output:
0231 37 31 41 39 32 35 33 41 33 34 38 33 30 30 31 30 30 30 30 30 30 30 30 30 3007 F8 03
Equal ASCII:[1]171A9253A34830010000000000?
We can find card nuber is 171A9253A3,country number is 483(LSB First)
We can translate these number to Dec format,card number equal: 250000023921 ,
Country number equal 900
And “31 37 31 41 39 32 35 33 41 33 34 38 33 30 30 31 30 30 30 30 30 30 30 30 30 30” made all XOR caculate,we got the answer is 07 (check sum result) . F8 is 07’s bitwise invert result.
https://github.com/SensorsIot/Animal-RFID-Reader/blob/master/Animal_RFID_Reader/Animal_RFID_Reader.ino
char message[35];
unsigned long lastSignal = 0;
bool transmission = false;
byte state = 1;
int pos;
#define GREENPIN 10
#define REDPIN 9
unsigned long dishka = 8;
unsigned long dishkaFake = 1532661448;
void setup() {
Serial.begin(9600);
Serial2.begin(9600);
pinMode(GREENPIN, OUTPUT);
digitalWrite(GREENPIN, HIGH);
pinMode(REDPIN, OUTPUT);
digitalWrite(REDPIN, HIGH);
Serial.println(“Start”);
lastSignal = millis();
}
void loop() {
switch (state) {
case 1: {
if (Serial2.available() > 0) {
lastSignal = millis();
pos = 0;
state = 2;
}
break;
}
case 2: {
// Reading of message
if (Serial2.available() > 0 && pos 100) state = 3;
if (pos >= 35) {
delay(300);
state = 1;
}
}
break;
case 3: {
// checksum
Serial.println();
byte check = message[1];
for (int i = 2; i < 27; i++) {
check = check ^ message[i];
}
Serial.println();
// Serial.print(check);
// Serial.print(",");
// Serial.println(message[27], HEX);
if (check == message[27]) {
// Serial.println("Check OK");
// Decodung
unsigned long id = hexInDec(message, 1, 10);
int countryNbr = hexInDec(message, 11, 4);
Serial.print("CardNumber=");
Serial.println(id);
Serial.print("Country=");
Serial.println(countryNbr);
if (id == dishka || id == dishkaFake) {
digitalWrite(GREENPIN, LOW);
digitalWrite(REDPIN, HIGH);
Serial.println("It is Dishka!");
} else {
digitalWrite(GREENPIN, HIGH);
digitalWrite(REDPIN, LOW);
Serial.println("It is not Dishka!");
}
state = 4;
}
break;
}
case 4: {
delay(2000);
digitalWrite(GREENPIN, HIGH);
digitalWrite(REDPIN, HIGH);
state = 1;
break;
}
} //switch
}
unsigned long hexInDec(char message[], int beg , int len) {
unsigned long mult = 1;
unsigned long nbr = 0;
byte nextInt;
for (int i = beg; i = 48 && nextInt = 65 && nextInt = 97 && nextInt <= 102) nextInt = map(nextInt, 97, 102, 10, 15);
nextInt = constrain(nextInt, 0, 15);
nbr = nbr + (mult * nextInt);
mult = mult * 16;
}
return nbr;
}










There are no reviews yet.