Having a very mysterious issue with an Ethernet RFID system.

Good evening everybody,
I have been working on an networked RFID access control system, but have an issue I absolutely cannot diagnose, after spending days on it.
First, let me describe the system.
The system contains an Arduino Uno, Ethernet shield (with Wiznet chip), an electronic strike (connected via a relay) and an EM-18 RFID reader module (and an RGB LED).
When a tag is scanned, the reader sends the tag number to the Arduino (at 57600 baud, using the AltSoftSerial library) and the Arduino sends a GET request to a server with the tag number as a paramater.
The server looks up then number in a database and then returns a value if it is accepted and triggers a relay to open an electronic strike (opening the door), or other values for different functions.

The average ‘response time’ from the tag number being received, to the door opening is around 300ms (without server table lookup it’s around 160ms).

However, I have been having a major issue. After placing the Arduino close in an enclosure next to the strike’s transformer, the Arduino freezes for 30 seconds when trying to connect to the server after around 3 successful scans, at the following piece of code: client.connect("10.19.0.100", 80);.
This happens forever after one ‘fail’. Pressing the Reset button solves the issue.
The first few scans are ALWAYS successful in receiving and processing the response. When the strike transformer is turned off, and scanning ~200 times in 20 minutes, there were no issues.

I then put the Arduino and transformer/relay module in separate boxes (50cm separation), only wires going between them are the power, ground and signal wire for the relay module (the module has a built in transistor). After turning on the transformer and letting the system work, all is well. After a few hours, the system gets into the same state as before, freezing when a tag is scanned.
I have connected the Arduino reset line to one of the I/O pins with a few components as mentioned in a hack somewhere, and have the Arduino reboot when it detects the 30 second freeze. When it reboots, all is well again, then after a couple of hours it freezes.
Scanning 100 times rapidly works fine, time seems to cause the problem.

I think the problem would now probably be with the code, or maybe in the Ethernet library itself.
I have commented every line and have attached the code to this post. If anyone would please be willing to help, I would GREATLY appreciate it. Thanks in advance for anyone willing to give me advice or knows how to fix the problem,

  • Joseph Rautenbach.

RFID_125Khz_Install_final.ino (7.59 KB)

Hi,

Divide to try to find the culprit.

Transformers and big solenoids (Door Strike) can generate a lot of EMI (ElectroMagnetic Interference).

Set this up so the striker output just goes to a LED. Shut off the transformer. Is it reliable? If so, you have an EMI problem.

If so, some hints are here on the http://ArduinoInfo.Info WIKI:
http://arduino-info.wikispaces.com/RelayIsolation

Optically isolating the relay is a first suggestion.

Damping EMI from the Strike solenoid by adding a MOV (Metal Oxide Varistor) across it may also help.

Let us know how it goes...

terryking228:
Hi,

Divide to try to find the culprit.

Transformers and big solenoids (Door Strike) can generate a lot of EMI (ElectroMagnetic Interference).

Set this up so the striker output just goes to a LED. Shut off the transformer. Is it reliable? If so, you have an EMI problem.

If so, some hints are here on the http://ArduinoInfo.Info WIKI:
http://arduino-info.wikispaces.com/RelayIsolation

Optically isolating the relay is a first suggestion.

Damping EMI from the Strike solenoid by adding a MOV (Metal Oxide Varistor) across it may also help.

Let us know how it goes…

Thanks Terry, I will try your ‘LED suggestion’ and see if that helps find the problem.
However, I just remembered something that could be important - the Arduino’s 9V Switching mode power supply is located next to the strike transformer. Although I initially did not consider this to be a major issue, would you think this could affect it?