การใช้งาน เครื่องอ่านบัตรและแท็ก USB RFID Reader บน Raspberry pi ด้วย Node js

 


บทความนี้เราจะมาเรียนรู้กันถึงการใช้งาน Usb RFID Reader เพื่องานระบุตัวต้นเบื้องต้น บน Raspberry pi โดยเขียนโปรแกรมด้วย Node js เช่นเดิม


RFID คืออะไร

RFID (Radio-frequency identification) ใช้สนามแม่เหล็กไฟฟ้าเพื่อระบุและติดตามแท็กที่ติดอยู่กับวัตถุโดยอัตโนมัติ ระบบ RFID ประกอบด้วยช่องสัญญาณวิทยุขนาดเล็ก เครื่องรับวิทยุ และเครื่องส่ง เมื่อถูกกระตุ้นโดยพัลส์การสอบถามทางแม่เหล็กไฟฟ้าจากอุปกรณ์อ่าน RFID ในบริเวณใกล้เคียง แท็กจะส่งข้อมูลดิจิตอล ซึ่งมักจะเป็นหมายเลขระหัสที่ระบุ กลับไปยังเครื่องอ่าน สามารถใช้หมายเลขนี้เพื่อติดตามระบุตัวตนได้ wikipedia


มาเชื่อมต่อเครื่องอ่าน USB RFID กับ Raspberry pi กัน

1. ต่อ Usb RFID Reader เข้ากับ Raspberry pi

2. พิมพ์คำสั่ง lsusb ใน terminal จากนั้นลองแตะบัตรจะได้ชุดตัวเลข จบด้วย enter จะเห็นได้ว่าการรับค่าเหมือน keyboard ตัวหนึ่ง

RFID Reader พร้อมใช้งาน

เขียนโปรแกรมรับค่า RFID

ถ้ายังไม่ลง Node js ดูบทความ 

    1. สร้างโฟลเดอร์ของโปรเจค จากนั้น init โปรเจค
    mkdir rfid-test
    cd rfid-test
    npm init -y
    

    2. ติดตั้ง module input-event
    npm add input-event
    

    3. สร้างไฟล์ app.js เพื่อเขียนโปรแกรม จากนั้นกด Save
    const InputEvent = require('input-event');
     
    const input = new InputEvent('/dev/input/event0');
     
    const keyboard = new InputEvent.Keyboard(input);
    
    // https://github.com/torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h
    const event_codes = [
      {key: '1', code: 2},
      {key: '2', code: 3},
      {key: '3', code: 4},
      {key: '4', code: 5},
      {key: '5', code: 6},
      {key: '6', code: 7},
      {key: '7', code: 8},
      {key: '8', code: 9},
      {key: '9', code: 10},
      {key: '0', code: 11},
    ]
    
    let tag = ''
    
    const users = [
      {tag: '0443770628', name: 'Jone'},
      {tag: '2455178244', name: 'สมหมาย'},
    ]
    
    keyboard.on('keypress', ev => {
      if(ev.code==28) {
        console.log('tag =', tag)
        const user =  users.find((u) => u.tag === tag )
        console.log('Hello ', user.name)
        tag = ''
        return
      } 
      const keyCode = event_codes.find(({code}) => code === ev.code )
      // console.log(ev.code, keyCode.key)
      tag += keyCode.key
    });
    
    


    4. รันโปรแกรม พิมพ์คำสั่ง node app แล้วแตะบัตร RFID ดูบน Tex editor
    node app
    

    สำเร็จแล้ว Raspberry pi ของเราสามารถรับค่า RFID และระบุตัวตนได้แล้ว

    การทำงานของโปรแกรม ระบุตัวตนด้วย RFID

    const InputEvent = require('input-event');
    เรียกใช้งาน Module 'input-event
     
    const input = new InputEvent('/dev/input/event0');
    กำหนดค่า input จาก event0(ไฟล์ hardware) 

    const keyboard = new InputEvent.Keyboard(input);
    เลือก input เป็น keyboard

    // https://github.com/torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h
    const event_codes = [
      {key: '1', code: 2},
       ...
    ]
    ตัวแปร mapping ระหว่าง event code กับ key ของ Linux keyboard 

    let tag = ''
    ตัวแปรเก็บ ID ที่ส่งมา
     
    const users = [
      {tag: '0443770628', name: 'Jone'},
      {tag: '2455178244', name: 'สมหมาย'},
    ]
    ตัวแปร mapping ระหว่าง tag กับ name

    keyboard.on('keypress', ev => { //interrupt รับค่า event เมื่อกดปุ่ม
      if(ev.code==28) { 
        console.log('tag =', tag)
        const user =  users.find((u) => u.tag === tag )
        console.log('Hello ', user.name)
        tag = ''
        return
      }
      // ตรวจสอบเมื่อปุ่ม Enter เข้ามา ให้แสดง tag และ name

      const keyCode = event_codes.find(({code}) => code === ev.code )
      // console.log(ev.code, keyCode.key)
      tag += keyCode.key
      // ถ้าไม่ใช่ ปุ่ม Enter จะเก็บค่า key เ้ข้าไปใน tag
    });

    ฝากกดติดตาม blog นี้ด้วยนะครับ
    สามารถพูดคุยเพิ่มเติมได้ที่ facebook: Bulantech

    การใช้งาน เครื่องอ่านบัตรและแท็ก USB RFID Reader บน Raspberry pi ด้วย Node js การใช้งาน เครื่องอ่านบัตรและแท็ก USB RFID Reader  บน Raspberry pi ด้วย Node js Reviewed by amaloma on ตุลาคม 10, 2564 Rating: 5

    ไม่มีความคิดเห็น

    Advertisement

    Main Ad