I want to use ESSL F_12 to collect rfid data and fingerprint .It is one the readers i found in my office it showed communication using RS484 protocol .Is there any way to retrieve the data from it . I tried to collect data using weigand which has same wire as this .But i couldn't fetch any data . Tried to fetch data using software serial didnt get any result either .Asked chat gpt it given me code with commands .Its kind of confusing for do i need any external device to convert the data .Or can i do it with nodemcu the voltage getting from the reader is about 1.5v to 2.5v (485 communication Voltage ) .The device operates at 12v .So any one have any idea how to collect data from the essl F-12 reader
If You post a link to the datasheet of the device the odds for help would be better.
I ll given the link of the device i have .Unfortunately i couldn't find any datasheet of it.I have the device with me
Then wait and hope for somebody that has worked with that device.
This was on the website:
If you don't know or understand how this product is used and to get Great Discounts on the products on Amazon from Navkar Systems Please contact 9996635607, 9416135607
Have you contacted them?
This device commonly used for essl attendence devices .I earlier used essl weigand rfid reader which uses same wiring as this .But you can get the rfid data from it .I want to collect rfid and fingerprint data using this reader .Do you know how to collect the data from the device
No.
Okay
I ll try it with using and RS485 transceiver Module and provide the results
Ok i bought the MAX485 but i dont know how to use .I searched through web but didn't get any result by connecting the device as they instructed .I am not even getting any output from the module . I am using esp8266 to get data from ESSL F12 reader and modbus485 to convert RS485 data from the reader but iam not getting any results i share my connection details
#include <Arduino.h>
#define DE_RE_PIN D0 // Control pin for DE and RE
#define RX_PIN D2 // RX pin (RO from MAX485)
#define TX_PIN D1 // TX pin (DI from MAX485)
void setup() {
Serial.begin(9600); // Initialize Serial Monitor
Serial1.begin(9600); // Initialize Serial1 for MAX485 (default baud rate, change if needed)
pinMode(DE_RE_PIN, OUTPUT);
digitalWrite(DE_RE_PIN, LOW); // Set to receive mode initially
}
void loop() {
// Switch to transmit mode
digitalWrite(DE_RE_PIN, HIGH);
// You can send a command if needed; for now, we'll just switch back to receive
delay(10);
digitalWrite(DE_RE_PIN, LOW); // Set to receive mode
// Check for available data
if (Serial1.available()) {
String receivedData = "";
while (Serial1.available()) {
char c = Serial1.read();
receivedData += c;
}
Serial.println("Received Data: " + receivedData); // Print received data
}
delay(1000); // Adjust the delay as needed
}
For pins
NodeMCU MAX485
-----------------------------
D1 (DI) ------> DI
D2 (RO) ------> RO
D0 (DE/RE) ---> DE/RE
3.3V ---------> VCC
GND ----------> GND
A ----------> A (from ESSLF12)
B ----------> B (from ESSLF12)
Is this fingerprint connected to a working environment? Try sniffing the traffic and understanding how it works ( not easy ).
It is not connected to a working environment? You can try a modbus scanner to see what registers are present and no more, you won't be able to use it.
You need to ask the manufacturer the 'programming manual'.
Was now i have the whole module
I'll see what can i do
I tried with this code and the i am receving some output but is not in readable format
#define MAX485_DE_RE D3 // Control pin for MAX485
// Half-second wait for a reply
const uint32_t TIMEOUT = 1000; // Increased timeout for response
// Canned message to your RS485 device
uint8_t msg[] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x03, 0x05, 0xCB};
void setup() {
Serial.begin(57600); // Initialize Serial for RS485 communication
pinMode(MAX485_DE_RE, OUTPUT);
digitalWrite(MAX485_DE_RE, LOW); // Set to receive mode
delay(1000);
}
void loop() {
Serial.print("TX: ");
printHexMessage(msg, sizeof(msg));
// Send the command
digitalWrite(MAX485_DE_RE, HIGH); // Set to transmit mode
delay(10);
Serial.write(msg, sizeof(msg)); // Use Serial for sending
Serial.flush();
digitalWrite(MAX485_DE_RE, LOW); // Set to receive mode
// Added delay to ensure the device has time to respond
delay(200);
Serial.print("RX: ");
// Read any data received and print it out
uint32_t startTime = millis();
while (millis() - startTime <= TIMEOUT) {
if (Serial.available()) {
byte b = Serial.read();
Serial.print("Byte: ");
Serial.print(b, DEC); // Print in decimal
Serial.print(" Hex: ");
Serial.print(b, HEX); // Print in hex
Serial.print(" Char: ");
if (b >= 32 && b <= 126) {
Serial.print((char)b); // Print the character if printable
} else {
Serial.print("."); // Indicate non-printable characters
}
Serial.println();
}
}
Serial.println();
delay(2000); // Delay before sending the next command
}
void printHexMessage(uint8_t values[], uint8_t sz) {
for (uint8_t i = 0; i < sz; i++) {
printHexByte(values[i]);
}
Serial.println();
}
void printHexByte(byte b) {
Serial.print((b >> 4) & 0x0F, HEX); // Print high nibble
Serial.print(b & 0x0F, HEX); // Print low nibble
Serial.print(' ');
}
Output
˅���������������
�ޥ��������������
������������������
������������������
������������������
˥��������������
�
There is reset button in the f12 reader when i press it .It shows the output like this
NAND Secondary Program Loader
REG_EMC_DMCR = :819A090E
Load UCOS image from NAND into RAM
����������������
��Starting UCOS 800A0000
...
EXTAL_CLK = 12M
PLL = 324000000 iclk = 324��TX: 01 03 00 00 00 03 05 CB
�TX: 01 03 00 00 00 03 05 CB
Does this help .I dont have any device to connect the device to pc to use modbus scanner i dont know i can use max485 for that. I havent communicated with manufactures yet .I dont know they are willing to share the details .