Giao tiếp PN532 với arduino qua I2C

Tiếp theo trong chuổi các ứng dụng hay từ ungdungarduino.com, Arduino Shop xin giới thiệu với các bạn một ứng dụng khá tuyệt vời với arduino và PN532 V3. Shop xin được để nội dung của đề tài là cách sử dụng arduino giao tiếp với PN532 V3 qua I2C. Giờ thì việc đọc thẻ từ NFC không gì xa lạ với mọi người nữa, chúng ta có thể tìm thấy nó trên nhiều diễn đàn tiếng việt và nước ngoài. Tuy nhiên, với lợi ích của ứng dụng mang lại, Shop muốn chia sẽ cách dùng arduino để giao tiếp với PN532 V3 như thế nào? Chúc các bạn có một dự án hay khi đọc xong bài này từ ungdungarduino.com. Nào let's go!

Ngày đăng: 15-09-2016

1,897 lượt xem

 

Giới thiệu công nghệ NFC/RFID


Công nghệ NFC/RFID sử dụng sóng vô tuyến để nhận dạng một cách tự động những đối tượng vật lý từ những vật thể sống đến những vật thể thụ động. Có thể nói, NFC/RFID là một công nghệ nhận dạng tự động( Auto-ID). Một số ví dụ của công nghệ này bạn có thể đã từng thấy như nhận dạng mã vạch, nhận dạng giọng nói...


Hoặc ví dụ dễ hiểu hơn, có 2 thùng dầu A và B giống hệt như nhau, vậy làm sao để nhận dạng được nó? Bằng cách người ta gắng lên thùng A một thẻ từ NFC và thùng B gắng lên một thẻ từ NFC thứ 2. Mỗi thẻ từ này có mã số( ID) khác nhau. Khi đó, bạn chỉ cần 1 cái đầu đọc để nhận dạng ra cái thẻ từ này (như PN 532 V3 và arduino chẳng hạn), là bạn có thể phân biệt được đâu là thùng A, đâu là thùng B. Tất nhiên là không dễ nếu nói như vậy. Chính vì thế, hôm nay Shop sẽ hướng dẫn cho các bạn cách sử dụng arduino giao tiếp với thẻ NFC/RFID và PN532 V3 để các bạn có thể làm ngay tại nhà.


Đầu tiên, để thực hiện việc dùng arduino giao tiếp với PN532 V3 thì bạn cần chuẩn bị cho mình một số phần cứng và phần mềm tối thiểu để thực hiện. Bao gồm:


-  Phần cứng:


  1. Board arduino Uno R3 hoặc board Arduino mega 2560
  2. Board PN532 V3
  3. Thẻ từ NFC. Thông thường, khi bạn mua board PN532 V3 thì có tặng kèm 2 cái thẻ  này rồi, bạn không phải quá lo lắng đâu (liên hệ Arduino shop cheeky)
  4. Một số dây kết nối giữa 2 Board.


- Phần mềm:

Sử dụng phần mêm Arduino IDE và bộ thư viện của PN532 V3 đã cài sẵn. Nếu bạn sử dụng phần mềm Arduino IDE phiên bản mới nhất thì có thể vào mục Sketch -->Include library -->Manager libraries --> Sau đó gõ chữ PN532 V3 vào và chọn phiên bản phù hợp, sau đó nhấn "cài" là xong.
Hình minh họa:

giao-tiep-arduino-voi-pn532

Cách upload thư viện từ phần mềm arduino IDE


Đến đây, bạn đã có đủ công cụ để thực hiện đề tài giao tiếp NFC qua PN532 V3 và arduino

Cách tiến hành:

1. Kết nối

Kết nối mạch arduino uno R3 với Pn532 V3 theo chuẩn I2C như hình bên dưới: Lưu ý, cách kết nối này rất quan trọng, vì việc kết nối ở bước này sẽ ảnh hưởng đến 1 đoạn trong chương trình lập trình.

ket-noi-arduino-voi-pn532

Cách set up cổng giao tiếp I2C trên Pn532


Do kết nối theo chuẩn I2C cho nên, ta thấy trên hình có 2 kênh ( channel 1 và 2) thì ta chọn kênh 1 là mức 1 và kênh 2 là mức 0, để thực hiện trao đổi dữ liệu theo chuẩn I2C.

Nhìn trên hình, ta thấy có 2 bus Pin, một cái dùng cho giao tiếp SPI có 8 pin, và một cái dùng cho chuẩn I2C hoặc UART. Ta sử dụng bus pin này.

Cách đấu dây với arduino theo hình bên dưới:

ket-noi-pn532-arduino

Sơ đồ kết nối dây arduino và Pn532

Ở đây Shop sử dụng arduino Mega 2560 cho nên chọn như hình trên. Bạn nhớ kết nối dây đúng theo thứ tự nhé!

Lưu ý: với board Pn532 V3 điện áp đưa vào là 5V( vì có trường hợp nhỏ hơn 5V nó sẽ không hoạt động).

Bước 2: Lập trình

Đoạn mã lập trình như bên dưới

#include <LiquidCrystal.h>
#if 0
#include <SPI.h>
#include <PN532_SPI.h>
#include <PN532.h>
#include <NfcAdapter.h>

PN532_SPI pn532spi(SPI, 10);
NfcAdapter nfc = NfcAdapter(pn532spi);
#else

#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>

PN532_I2C pn532_i2c(Wire);
NfcAdapter nfc = NfcAdapter(pn532_i2c);
#endif

LiquidCrystal lcd(8,9, 4, 5, 6, 7);
String mang_mathe_suppervisor[12]={"65 0C 04 6D","35 5D EE C5"};
boolean isSame(String x, String y)
{
    for (int i = 0; i < 12; i++)
    {
      if (x[i] != y[i])
      {
        return false;
      }
    }
    return true;
}
//kiem tra ma the cua suppervisor
boolean isAuthorized_S(String chuoikiemtra)
{
    for(int i = 0; i<12; i++)//v�ng l?p t??ng ?ng v?i s? th?.
    {
      if(isSame(chuoikiemtra, mang_mathe_suppervisor[i]))
      {
       return true;
      }
    }
   return false;
}
void setup(void) {
    Serial.begin(9600);
    Serial.println("NDEF Reader");
    lcd.begin(16,2);
    lcd.clear();
    lcd.home();
    lcd.print("NDEF Reader");
    nfc.begin();
    pinMode(22, OUTPUT);
    digitalWrite(22,HIGH);
}

void loop(void) {
    String mathe;
    Serial.println("\nScan a NFC tag\n");
    if (nfc.tagPresent())
    {
        NfcTag tag = nfc.read();
        mathe=tag.getUidString();
        //tag.print();
        lcd.clear();
        lcd.print("NDEF Reader");
        lcd.setCursor(0,2);
        lcd.print(mathe);
        if(isAuthorized_S(mathe))
        {
          if(isSame(mathe,"65 0C 04 6D")) //  trường hop tắt đèn
          {
             digitalWrite(22,HIGH);
             lcd.setCursor(12,2);
             lcd.print("TAT ");
          }
          if(isSame(mathe,"35 5D EE C5")) //  trường hop tắt đèn
          {
             digitalWrite(22,LOW);
           
             lcd.setCursor(12,2);
             lcd.print("SANG");
           }
        }
        else
        {
          lcd.clear();
          lcd.print("NDEF Reader");
          lcd.setCursor(0,2);
          lcd.print(mathe);
          lcd.setCursor(12,2);
          lcd.print("update");
        }
    }
    delay(300);
   
}

Bạn có thể tham khảo video hướng dẫn bên dưới để kiểm nghiệm lại nhé!


Đến đây, bạn nào thực hành thành công thì chia sẽ cho shop biết với nhé, hoặc nếu chưa thành công thì có thể liên hệ với Arduino Shop để được hướng dẫn.

Thì để thực hiện được dự án này, các bạn cũng nên trang bị cho mình các thiết bị ở trên. Nó ứng dụng rất nhiều trong đời sống như chế tạo chìa khóa xe tự động, hệ thống cửa tự động...

Cũng như shop đã nói ở trên, để thực hiện được bài này, bạn cần có một số giải pháp liên quan tới phần cứng. Bạn có thể tham khảo sản phẩm bên dưới tại Arduino Shop để được hỗ trợ cho bạn. Hoặc bạn cũng có thể vào Arduino Shop để xem các sản phẩm arduinoứng dụng arduino hay mà Shop đã thu thập được.

arduino-uno-R3

PN532

 

GỌI NGAY - 0902 37 12 52 (Mr Quốc): Tư vấn KT

ĐỂ ĐƯỢC TƯ VẤN VÀ CUNG CẤP GIẢI PHÁP KỊP THỜI CHO BẠN

ARDUINO SHOP

Địa chỉ: Số 41 Gò Dưa, Phường Tam Bình, Quận Thủ Đức, TP. Hồ Chí Minh
Email: arduinoshophcm@gmail.com

Bình luận (0)

Gửi bình luận của bạn

Captcha
<