Skip to content

Connecting 125Khz RFID module to arduino – Part 2

In this article we have seen how we can connect a led with arduino.
We will make exactly the same circuit using 1K pull down resistors.
The security line is nothing else but a button that is always pressed (on).
We have seen this circuit in this article.

The hole schematic is below :

AHA Diagram
AHA Diagram

This schematic was made using dia. The original file can be downloaded from here : AHA Diagram

Notice the physical separation between the secure zone and the not secured zone (door).
We need 6 cables between arduino and the RFID box. (+5V,GND,RFID_TX,SECURITY,GREEN,RED).

The only problem left is the RED led. Why ?
Because the RED led can blink in some cases but in the meanwhile arduino must be able to receive signals from the RFID reader.
For example "John" an "Authorized person" of the "house" arms (activates) the house in order to leave (within the "Max_Duration_To_Exit_Home" duration) but immediately remembers that the glasses are still in the house.
So needs to un-arm (deactivate) the alarm since can not exit within "Max_Duration_To_Exit_Home" .
The RED led blinks but John must deactivate the alarm !

As we can understand by this use case we can not applicate the normal blink with the delay command.

We strongly recommend to read this article directly from the arduino web page.

The "BlinkWithoutDelay" example comes bundled with the arduino GUI.
Can be loaded from : File -> Examples -> Digital -> BlinkWithoutDelay.
Based on the "BlinkWithoutDelay" we made our own code :

  ////////////////////////////////////////////////////////////////////////////////////////////////
  //SET LEDS BEGIN

  if (My_House.Is_Alarm_System_OK == true) {
    if (My_House.Is_Alarm_Activated == true) {

      digitalWrite(Green_Led_Pin, LOW);   // turn the GREEN LED off

      /////////////////////////////////////////////////////////////////////////
      //Blink async RED light BEGIN
      Current_Ms = millis();

      Red_Blink_Interval=1000;
      if(Current_Ms - Previous_Ms > Red_Blink_Interval) {
        Previous_Ms = Current_Ms;

        if (Red_Blink_Duration_Ms < My_House.Max_Duration_To_Exit_Home) {  
          if (Red_Led_State == LOW) // if the LED is off turn it on and vice-versa:
            Red_Led_State = HIGH;
          else
            Red_Led_State = LOW;

          digitalWrite(Red_Led_Pin, Red_Led_State); // set the RED LED with the Red_Led_State of the variable
          Red_Blink_Duration_Ms = Red_Blink_Duration_Ms + Red_Blink_Interval;

        } else { //Time to exit passed the limit ! 
          digitalWrite(Red_Led_Pin, HIGH);
          Serial.println( "ALARM ACTIVE ! In this portion of code we will put the sensors to trigger the alarm" ); 
        }

      }
      //Blink async RED light END
      /////////////////////////////////////////////////////////////////////////

    } else { //Alarm is deactivated by authorized person
      digitalWrite(Green_Led_Pin, HIGH);   // turn the GREEN LED on
      digitalWrite(Red_Led_Pin, LOW);      // turn the RED LED off
      Red_Blink_Duration_Ms = 0; //reset the red blinking duration !
    }
  } else { // the alarm is broken 

    digitalWrite(Green_Led_Pin, LOW);   // turn the GREEN LED off

    /////////////////////////////////////////////////////////////////////////
    //Blink async RED light BEGIN
    Current_Ms = millis();
    Red_Blink_Interval=100;
    if(Current_Ms - Previous_Ms > Red_Blink_Interval) {
      Previous_Ms = Current_Ms;   
      if (Red_Led_State == LOW) // if the LED is off turn it on and vice-versa:
        Red_Led_State = HIGH;
      else
       Red_Led_State = LOW;

      digitalWrite(Red_Led_Pin, Red_Led_State); // set the RED LED with the Red_Led_State of the variable

    }
    //Blink async RED light END
    /////////////////////////////////////////////////////////////////////////

  }
  //SET LEDS END
  ////////////////////////////////////////////////////////////////////////////////////////////////

Notice that the blinking duration is 1000 ms in the exit countdown case and 100 ms in the alarm broken case.

In the next page we present the hole code and a video demonstration as always.