Serial problem, static?


I'm trying to get an Innovations ID-12 RFID reader module to communicate serially with an Arduino Mega, I have followed a number of fairly straight forward online tutorials but am having no luck. I have a horrible feeling I have done something dangerously rookie.

I have the ID-12 wired up to the arduino as instructed by this tutorial

and the Arduino is plugged in top my laptop via USB.

My code basically checks if the Serial2 (ID-12) is available, reads it then prints it via Serial0 (USB) to the serial monitor on my laptop. The only signal the serial monitor is receiving is a stream of zeros- unless I hold the wire going into the RX pin, in which case the serial monitor shows a load of random numbers, I'm assuming that's residual static that my wrist-strap is not earthing.

After much faffing I discovered that the serial monitor continues to pick up these zeros even after I remove the wire going into the RX pin. I also noticed that if I pick the Arduino up by the USB cable, the zeros stop, but started again as soon as I put it down. If I touch the Arduino the serial monitor goes crazy.

I'm not sure if this is down to a rookie grounding error... maybe my laptop is providing a dirty power source, or maybe the wrist-strap (which I have attached to a radiator) is not clearing my static properly.

I can't help but wonder if all this static has destroyed my ID-12 reader modules.

Does any one have an insight on this problem?

There should be serial data transmitted only when a tag is read. Any other transmission sounds like a programming error.

If there is no programming error, then there is a hardware problem.

We'd need to see some code to see if it was a programming error, or some pictures of YOUR setup to see if it is a hardware problem.

Here's a little test sketch I wrote to demonstrate the Arduino's peculiar behaviour. I apologise that it's not the full thing I described above, but I believe it demonstrates the issue I'm having.

void setup()
  pinMode(13, OUTPUT);

void loop()
  if (Serial2.available() > 0)
    int data =;
    Serial.println(data, HEX);
    digitalWrite(13, HIGH);
    digitalWrite(13, LOW); 

As for the hardware setup- for this I simply have an LED placed between the 13 & GND pins. The Arduino is plugged into my laptop via the USB cable.

As soon as the code is uploaded and runs the LED switches on and the serial monitor starts printing loads of zeros, even though there is nothing in RX2 (pin-17 on the Mega).

If I poke one end of a wire into the RX2, while holding the other end, the serial monitor starts printing random numbers, which I assume is a result of static from me- although I am wearing a wrist-strap attached to a radiator.

Strangely enough, after being left overnight in an anti-static bag, the Arduino behaved different this morning, showing no zeros at first. They did start coming when I poked a wire in RX2 though, and continued to even after the wire was removed.

Is this normal behaviour?

Quick update...

I tried attaching my wrist-strap to the monitor port on my laptop and found it eliminated the zeros problem.

It's a good demonstration of static electricity. I can hold my hand over the Arduino (not touching it) and the serial monitor will go crazy with zeros, but it stops as soon as my wrist-strap clip touches the laptop monitor port.

So it was indeed an earthing problem. I'm going to try the ID-12 again, hope I haven't damaged anything!