Uncategorized

RFIDLock

Raspberry Pi , RFID , Relay Module and Magnetic Door

Ask QuestionAsked yesterdayActive todayViewed 36 times1

I have used the code from github and in that code i am implementing the raspberry pi and the RFID and relay module with magnetic door unlock. Everything is working Okay , the RFID , the Relay module and the button. When the Card is scanned the relay module light turn on and i can hear the tick sound of the relay as well (with no current being passed in the 12 V Magnetic Door ) and the Button as well , when i click to unlock via button it works perfectly as well without the Magnetic Door. The issue comes when 12 V power is passed to the Magnetic module, in this case the RFID scans the card for the first time and the relay light is on and the module is working correctly but as soon as the relay module goes off the RFID card stops working. But the Button keeps working. I can unlock via button many times but the RFID cards works only for the first time and again to make it work i have to restart the Raspberry. I have checked the whole code and the whole connection and everything is right , everything is working perfectly until 12 V current is passed in the relay. Just for the information , i have ordered different relays and tested with them as well but still same.

I am attaching the picture for reference relayrfidShareEditFollowClose 2Flagasked yesterdayAhtisham Ashraf1122 bronze badges New contributor

  • Ah let me see. Let us make things as simple as possible, but not simpler. So your RFID function works only for the first time, then you need to reset Rpi. I remember when I tested my RFID module, I wrote 3 functions: (1) A function to read RFID card, (2) Another function to print what is read from the RFID card. (3) A main function to loop the first two functions. If you write a minimal program to just test the above three functions, then it should be much easier to debug. You might search my RFID demos in the following forums: (a) SO, (b) EE SE, (c) Rpi SE. – tlfong01 yesterday   
  • So I have these demos in SO: (1) stackoverflow.com/questions/61165652/… (2) stackoverflow.com/questions/61165652/… (3) stackoverflow.com/questions/60819793/… – tlfong01 yesterday   
  • This is another demo. You can find more references in those answers. (4) Can RFID read stacked cards? electronics.stackexchange.com/questions/519993/…. Cheers. – tlfong01 yesterday    
  • The last demo has the functions I suggested: def main(): #testRc522(); #writeRfidCard(‘Diamond Ace’); #readRfidCard(); #writeRfidCard(‘Heart Ace’); #readRfidCard(); #writeRfidCard(‘Club Ace’); #readRfidCard(); #writeRfidCard(‘Spade Ace’); #readRfidCard(); readRfidCard(); return; – tlfong01 yesterday   
  • 1The RFID works all okay until i power up the 12 V Electromagnetic Lock. The Relay is working Okay as well until the 12 V Lock is not given the power. It scans the RFID and then the light on relay turn on and i can hear the tick of relay. It works perfectly but as soon as the Electromagnetic Door is powered on the RFID works for the first time and then it kinda stop working but the button to unlock works like a charm. – Ahtisham Ashraf yesterday 
  • Can you give us the link to (1) the code, (2) tutorial how to use it. Cheers. – tlfong01 yesterday   
  • (1) So before 12V power on, you can (a) use RFID to unlock (note 1) or (b) press the button. (Note 1sort of, because 12V power is not yet on.), (2) Now 12V power on, (a) you can use RFID but only for the first time, (b) manual button works as before, as many times as you like. (3) After RFID has worked for the first time, it won’t work again, unless Rpi is reset. – tlfong01 yesterday   
  • (4) I guess the button is designed to click/unlock as many times as you like, and it has no memory. But for the RFID, there is memory, once it remember that door is unlocked, it won’t click the relay again. But only while guess. It would be nice you has the user manual. – tlfong01 yesterday   
  • 1I have implemented it exactly like mentioned in the code github.com/lesp/LXF230-RFID-Door-Lock , the issue that the RFID works as well and it works as many times as we want until the 12 V power is supplied to the relay. As soon as power is turned on the RFID stops working. If i turn off the power now it still doesn’t work until the raspberry is restarted – Ahtisham Ashraf 15 hours ago
  • 1now let me explain in bit detail 1. Turn on the Raspberry with the python code. 2. Scan the RFID Card, it is working perfectly with no limit to scan, i can scan it 1000 times without any issue. Relay light is on and relay is tripping 3. Press the button to unlock working Perfectly. Relay is on and relay is tripping. Now Let’s turn on the 12 V Electromagnetic Door Power 4. RFID Scans the card, Relay light is on , Relay is tripped. Relay is closed again , light in relay goes off. Now i when scanning the card it is not working again. 5. Button unlock works all the time – Ahtisham Ashraf 15 hours ago 
  • 1There is an issue between the relay and the reverse voltage i guess that relay passes to the board which disable the RFID as per me but i am not sure. The code is not having any issue until i turn on the 12 V power to relay – Ahtisham Ashraf 15 hours ago
  • Ha, You did say a couple of times, even with emphasis, that “The code is not having any issue until i turn on the 12 V power to relay“. But I do have a strong excuse that I missed this very important sentence. The reason is that your question is some 12 sentences long, and I cannot count more than seven! 🙂 / to continue, … – tlfong01 14 hours ago   
  • You see, I break a long comment into two short comments! 🙂 Anyway, my first brainstorming wild guess the this: “Switching on 12V power might cause some abrupt current and generate EMF (Electronmagnet Wave), or Back EMF which might cause trouble (I don’t know what sort of trouble). / to continue, … – tlfong01 14 hours ago   
  • Now what I don’t understand is why you don’t do this: Also switch on 12V power BEFORE testing anything!. Of course you should have a good reason not to switch on 12V power, say until you leave home. But this is a troubleshooting trick to investigate further. So you might like try it. Cheers. – tlfong01 14 hours ago    
  • Let us continue this discussion in chat. – tlfong01 14 hours ago   

Please avoid extended discussions in comments. Would you like to automatically move this discussion to chat?Add a comment

1 Answer

ActiveOldestVotes0

Question


rfid lock

  1. The OP has a Rpi based electric door lock system which can be operated by either manual push button or RRFID card.
  2. In normal operation the relay controls the electric lock power by 12VDC. When testing before 12V power in on, everything goes well: both push button and RFID card can activate and deactivate the 5V relay (hearing relay clicks).
  3. However, when 12V lock power is switched on, only push button can activate and deactivate relay as before, this time also lock is activate and deactivate.
  4. The big problem is this: RFID can perform the activate/deactivate only once. After the only one off operation, Rpi need to reset to do RFID operation again.

The OP wishes to know why the Rpi should be reset after every RFID operation, and of course how to avoid this silly unnecessarily Rpi resetting.

Update 2021apr25hkt2227

The OP confirms that even the 12V power is switched on before any test, the RFID’s only one operation problem does not go away.


Answer

This is a troubleshooting question. I think we need to first study the Rpi python program to see how it works.

/ to continue, …


References

(1) LXF230 RFID Controlled Magnetic Door Lock Introduction – lesp, GitHub

(2) 12VDC 60kG Electromagnetic door lock, – Kmoon, AliExpress, US$23

(3) RFID Lock Program Penzu Reading Log v0.1

(4) YouTube Video on KawaMall RFID Door Lock Access Control System Installation Demo – 2010jan16 418,761 views

(5) 5V Dual-Channel Relay Module (with optical coupler and JD-Vcc jumper) – Coimponents 101, 2021jan05

(6) 5V Dual-channel Relay Module (with optical coupler and JD-Vcc jumper) – OsoYoo 2017may27


Appendices

Appendix A – LX230 RFID Rpi python program listing

The main test program, without the RFID library, is only 80 something lines long. So it is worth our time studying carefully the complete listing.

(3) RFID Lock Program Study Notes v0.1 Penzu Link


LXF230-RFID-Door-Lock/SimpleMFRC522.py - lesp 2021apr25hkt2156
https://github.com/lesp/LXF230-RFID-Door-Lock/blob/master/SimpleMFRC522.py

import MFRC522
import RPi.GPIO as GPIO
  
class SimpleMFRC522:

  READER = None;
  
  KEY = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]
  BLOCK_ADDRS = [8, 9, 10]
  
  def __init__(self):
    self.READER = MFRC522.MFRC522()
  
  def read(self):
      id, text = self.read_no_block()        
      while not id:
          id, text = self.read_no_block()  
      return id, text

  def read_id(self):
    id, text = self.read_no_block()        
    while not id:
      id, text = self.read_no_block()  
    return id

  def read_id_no_block(self):
    id, text = self.read_no_block()
    return id
  
  def read_no_block(self):
    (status, TagType) = self.READER.MFRC522_Request(self.READER.PICC_REQIDL)
    if status != self.READER.MI_OK:
        return None, None
    (status, uid) = self.READER.MFRC522_Anticoll()
    if status != self.READER.MI_OK:
        return None, None
    id = self.uid_to_num(uid)
    self.READER.MFRC522_SelectTag(uid)
    status = self.READER.MFRC522_Auth(self.READER.PICC_AUTHENT1A, 11, self.KEY, uid)
    data = []
    text_read = ''
    if status == self.READER.MI_OK:
        for block_num in self.BLOCK_ADDRS:
            block = self.READER.MFRC522_Read(block_num) 
            if block:
                    data += block
        if data:
             text_read = ''.join(chr(i) for i in data)
    self.READER.MFRC522_StopCrypto1()
    return id, text_read
    

    
  def write(self, text):
      id, text_in = self.write_no_block(text)        
      while not id:
          id, text_in = self.write_no_block(text)  
      return id, text_in


  def write_no_block(self, text):
      (status, TagType) = self.READER.MFRC522_Request(self.READER.PICC_REQIDL)
      if status != self.READER.MI_OK:
          return None, None
      (status, uid) = self.READER.MFRC522_Anticoll()
      if status != self.READER.MI_OK:
          return None, None
      id = self.uid_to_num(uid)
      self.READER.MFRC522_SelectTag(uid)
      status = self.READER.MFRC522_Auth(self.READER.PICC_AUTHENT1A, 11, self.KEY, uid)
      self.READER.MFRC522_Read(11)
      if status == self.READER.MI_OK:
          data = bytearray()
          data.extend(bytearray(text.ljust(len(self.BLOCK_ADDRS) * 16).encode('ascii')))
          i = 0
          for block_num in self.BLOCK_ADDRS:
            self.READER.MFRC522_Write(block_num, data[(i*16):(i+1)*16])
            i += 1
      self.READER.MFRC522_StopCrypto1()
      return id, text[0:(len(self.BLOCK_ADDRS) * 16)]
      
  def uid_to_num(self, uid):
      n = 0
      for i in range(0, 5):
          n = n * 256 + uid[i]
      return n


Appendix C – Wiring Diagram


wiring diagram

Appendix D – JD-Vcc Jumper Relay Wiring Diagram


jdvcc wiring

/ to continue, …


ShareEditDeleteFlagedited just nowanswered 12 hours agotlfong013,67633 gold badges88 silver badges2222 bronze badges

  • 1If we turn it on before then it’s still the same issue , it’ll scan the RFID card once only and later on it’ll not scan the RFID. The RFID and coding is okay and is not having any issue with anything. Like I explained it works perfect with the relay but as soon as the current is passed from the relay things are changed. So there must be something related to hardware and the relay that I am missing. – Ahtisham Ashraf 12 hours ago 
  • Thank you for your confirmation and clarification. (1) I agree that the python program has not problem. I skimmed it once and concluded that it should be written by an expert. I just want to get a rough idea of how the main program works, and see if I insert any debugging statement somewhere. (2) I also agree that we (you!) might be doing something silly. or doing something we should not do and we don’t know that. (3) I now guess this might be a tricky problem, so I it might take us sometime before an eureka. 🙂 – tlfong01 12 hours ago   
  • Just to make sure: (1) Your relay wiring seems a bit weird to me. Usually the +12V line should go to the COM terminal, and go out at the NO (Normally Open) terminal. But you go out at the NC (Normally Connect). (2) Do you have any wiring diagram, or schematic to check out? SORRY – Ignore my question. I found the wiring diagram in the doc. – tlfong01 11 hours ago    
  • One more question. Do you know that there are two basic types of relays (1) High logical level trigger, (2) Low logical level trigger. Are you sure that you are using the exact trigger type of relay as specified? – tlfong01 11 hours ago   
  • I checked the doc and found that they seem to use a relay with the JD-Vcc jumper and this type of relay is usually Low logical level trigger. If you randomly use a High level trigger, then the relay’s on/off operation would be reversed. And if your lock is not yet mounted, then you might not notice the lock/unlock operation is opposite of what you expected. Can you give me the link to the exact real relay you are really using? – tlfong01 11 hours ago    
  • Ha, I just found out that it was me who has made the silly careless mistake. So I had the eureka! I will write up a short answer later. Stay tuned. – tlfong01 4 hours ago   

Add a commentAdd Another Answer

Categories: Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.