Mục lục:
Video: Đầu đọc RFID AVR / Arduino với mã UART trong C: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:37
RFID là cơn sốt, được tìm thấy ở khắp mọi nơi - từ hệ thống kiểm kê đến hệ thống ID huy hiệu. Nếu bạn đã từng đến một cửa hàng bách hóa và đi qua những thứ trông như máy dò kim loại ở các điểm vào / ra, thì bạn đã thấy RFID. Có một số nơi để tìm thông tin hữu ích về cách thiết lập RFID và tài liệu hướng dẫn này tập trung vào việc cài đặt đầu đọc Parallax RFID (TTL nối tiếp) trên AVR, nhấn mạnh vào mã C cần thiết để đọc đầu vào nối tiếp. Mã bằng C và không sử dụng bất kỳ thư viện bên ngoài nào. Trên thực tế, nó nói 2400 baud trực tiếp mà không cần sử dụng UART bằng cách đồng bộ hóa với tốc độ truyền của đầu đọc RFID và đọc chân kỹ thuật số mà nó được kết nối. Bị kích thích? Tôi cũng thế.
Bước 1: Nhận hàng
Bạn sẽ cần danh sách các bộ phận sau:
- Đầu đọc RFID (Thị sai # 28140 $ 39,99)
- Thẻ RFID (Thị sai # 32397 $ 0,99)
- AVR hoặc bản sao Arduino (nếu bạn sử dụng AVR cổ phiếu, bạn cũng sẽ cần một tụ điện max232, 5 x 1uF và đầu nối DE9)
- Breadboard không hàn
Không bắt buộc
- Tiêu đề 4 vị trí
- Dây điện
(và max232, v.v. để truyền thông tin thẻ) Bạn cũng có thể kết nối màn hình LCD yêu thích của mình thay cho việc gửi dữ liệu thẻ qua RS232.
Bước 2: Kết nối các bộ phận
Phần cứng của mọi thứ khá dễ dàng. Thay vì cắm đầu đọc RFID trực tiếp vào bảng mạch của mình, tôi đã chọn tạo một cáp nhanh để có thể di chuyển đầu đọc RFID xung quanh tốt hơn một chút. Đối với điều đó, tôi chỉ cần cắt bỏ 4 vị trí từ dải tiêu đề ổ cắm cái mà tôi đã đặt và hàn trên ba dây. Băng điện đã hoàn thành đầu nối khu ổ chuột. Đầu đọc RFID có 4 kết nối:
- Vcc
- CHO PHÉP
- NGOÀI
- Gnd
Như bạn có thể đoán ra, hãy kết nối Vcc với + 5V và Gnd với mặt đất. Vì đầu đọc RFID tiêu thụ rất nhiều điện năng, bạn có thể nhấn vào chân BẬT để tắt và bật nó trong các khoảng thời gian khác nhau. Tôi chỉ đơn giản là chọn để giữ nó trên. Bởi vì nó bị đảo ngược, bạn kéo nó THẤP để kích hoạt nó. Ngoài ra, bạn có thể kết nối nó với mặt đất. Tôi đã kết nối nó với PIND3 để cung cấp cho tôi các tùy chọn bật / tắt nếu tôi quyết định. Chân OUT là nơi đầu đọc gửi dữ liệu nối tiếp của nó sau khi nó đọc một thẻ. Tôi đã kết nối nó với PIND2. Lưu ý, trong Vũ trụ thị sai, màu đỏ có nghĩa là đi. Đó là, đèn LED màu xanh lá cây có nghĩa là thiết bị không hoạt động và không hoạt động, trong khi đèn LED màu đỏ có nghĩa là thiết bị đang hoạt động. * nhún vai * Đi hình.
Bước 3: Viết mã
Để đọc dữ liệu từ đầu đọc RFID, bạn phải biết khi nào một thẻ đã được gửi, kéo dữ liệu ra khỏi cổng nối tiếp, sau đó gửi nó đi đâu đó.
Định dạng dữ liệu đầu đọc RFID
Đầu đọc Parallax RFID gửi dữ liệu với tốc độ băng giá cố định là 2400 baud. Thẻ RFID là 10 byte. Để cho phép phát hiện / sửa lỗi, vì đầu đọc có thể được thiết lập khỏi nhiễu ngẫu nhiên, RFID 10 byte được giới hạn bởi một trạm giám sát bắt đầu và dừng. Trạm giám sát bắt đầu là nguồn cấp dữ liệu dòng (0x0A) và trạm giám sát dừng là giá trị xuống dòng (0x0D). Nó trông như thế này:
[Start Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Stop Sentinel]Đây là ba bước chính.
Biết khi nào thẻ đã được gửi
Tôi đã sử dụng Ngắt thay đổi mã pin trên AVR để thông báo cho phần sụn rằng một thay đổi đã xảy ra trên một chân được giám sát. Việc định cấu hình AVR cho việc này rất dễ dàng và yêu cầu thiết lập cờ, cho MCU biết bạn muốn theo dõi chân nào và đặt bit ngắt toàn cục. Định cấu hình PCINT
BSET (PCICR, PCIE2); // thanh ghi điều khiển ngắt thay đổi chân pcie2 BSET (PCMSK2, PCINT18); // kích hoạt ngắt thay đổi chân cho PCINT18 (PD2) BSET (SREG, 7); // Đặt SREG I-bitViết quy trình dịch vụ ngắt của bạn Bạn muốn giữ ISR của mình ngắn nên trong vectơ ngắt của tôi, tôi đọc toàn bộ byte, từng chút một và lưu trữ byte trong một mảng ký tự biến động toàn cục. Tôi làm như sau ở mỗi lần ngắt:
- Kiểm tra để đảm bảo tôi đang bắt đầu một chút
- Căn giữa thời gian vào xung giữa ở 2400 baud (tốc độ của đầu đọc RFID)
- Bỏ qua bit bắt đầu và tạm dừng ở giữa bit tiếp theo
- Đọc từng bit thành một số nguyên không dấu
- Khi tôi có 8 bit, hãy đặt byte vào một mảng ký tự
- Khi tôi thu thập được 12 byte, hãy cho MCU biết thẻ đã được đọc để phát hiện lỗi.
Tôi đã sửa đổi mã SoftSerial từ Mikal Hart, người đã sửa đổi mã từ David Mellis vì sự chậm trễ được xác định bằng thực nghiệm trong các quy trình nối tiếp.
Phân tích cú pháp đầu ra RS232
Quy trình PCINT chứa mã để đọc đầu ra RS232 từ đầu đọc RFID. Khi tôi nhận được 12 byte (RFID 10 byte cộng với các khối vệ tinh), tôi đặt bDataReady thành 1 và để vòng lặp chính xử lý dữ liệu và hiển thị nó.
// đây là trình xử lý ngắt. ISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Bit bắt đầu trả về thấp; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // Căn giữa bit start for (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // bỏ qua một chút anh ơi… if (BCHK (PIND, RFID_IN)) BSET (bit, x); khác BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // bỏ qua bit dừng RFID_tag [rxIdx] = bit; ++ rxIdx; if (rxIdx == 12) bDataReady = 1;}
Hiển thị thẻ của bạn
Trong main (), trong suốt vòng lặp for (ever), tôi kiểm tra xem bDataReady đã được thiết lập hay chưa, báo hiệu rằng toàn bộ cấu trúc RFID đã được gửi đi. Sau đó, tôi kiểm tra xem đó có phải là thẻ hợp lệ hay không (nghĩa là các ký tự bắt đầu và dừng tương ứng là 0x0A và 0x0D), và nếu có, tôi gửi nó ra kết nối RS232 của mình.
for (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Byte bắt đầu:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ n Byte dừng:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16)); # endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); for (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); if (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
Bước 4: Mã và chia tay
Trang này chứa một tệp zip với mã có liên quan. Nó được viết trong AVR Studio 4.16. Nếu bạn sử dụng notepad, eclipse hoặc vi của lập trình viên (hoặc thứ gì đó khác), bạn sẽ cần sao chép Makefile đáng tin cậy vào thư mục và thêm các tệp này vào dòng nguồn. Ngoài ra, lưu ý, thời gian cho phần đọc nối tiếp dựa trên MCU 16MHz. Nếu bạn đang chạy ở một tần số xung nhịp khác, bạn sẽ cần phải thực nghiệm xác định độ trễ đã điều chỉnh để căn giữa các xung tốc độ truyền. Nếu bạn có bất kỳ đề xuất nào về cách nó có thể được cải thiện, đừng ngần ngại cho tôi biết!
Đề xuất:
Đầu đọc RFID dựa trên ESP32 với màn hình cảm ứng: 7 bước
Đầu đọc RFID dựa trên ESP32 với màn hình cảm ứng: Trong phần hướng dẫn nhỏ này, tôi sẽ chỉ cách tạo một đầu đọc RFID đơn giản với đầu ra TFT để gắn trên tường bằng cách sử dụng mô-đun ESP32 DEV KIT C, pcb dựa trên RC-522 và bộ AZ-Touch ESP. Bạn có thể sử dụng đầu đọc này để truy cập cửa hoặc cảnh báo kẻ xâm nhập
Khóa cửa điện với máy quét vân tay và đầu đọc RFID: 11 bước (có hình ảnh)
Khóa cửa điện với máy quét vân tay và đầu đọc RFID: Dự án được thiết kế để tránh sự cần thiết của việc sử dụng chìa khóa, để đạt được mục tiêu, chúng tôi đã sử dụng cảm biến vân tay quang học và Arduino. Tuy nhiên, có những cá nhân có dấu vân tay không đọc được và cảm biến sẽ không nhận dạng được. Sau đó, suy nghĩ một
Đầu đọc Arduino RFID với màn hình TFT: 7 bước
Đầu đọc RFID Arduino với màn hình TFT: Trong phần hướng dẫn này, tôi sẽ chỉ cho bạn cách thiết kế một đầu đọc RFID đẹp mắt với màn hình TFT và để treo tường. Rất dễ dàng để tạo một đầu đọc RFID đẹp mắt với đầu ra TFT để gắn tường với Arduino MKR của sự lựa chọn của bạn và Ar
Bản trình diễn 4x4 của Bàn cờ điện tử / Với Arduino Mega + Đầu đọc RFID + Cảm biến hiệu ứng Hall: 7 bước
Bản trình diễn 4x4 Bàn cờ điện tử / Với Arduino Mega + Đầu đọc RFID + Cảm biến hiệu ứng Hall: Xin chào các nhà sản xuất, tôi là Tahir Miriyev, tốt nghiệp năm 2018 tại Đại học Kỹ thuật Trung Đông, Ankara / Thổ Nhĩ Kỳ. Tôi học chuyên ngành Toán ứng dụng, nhưng tôi luôn thích chế tạo đồ đạc, đặc biệt là khi nó liên quan đến một số công việc thủ công với điện tử, thiết kế và lập trình.
Sử dụng đầu đọc RFID MFRC522 với Arduino: 5 bước
Sử dụng đầu đọc RFID MFRC522 với Arduino: Xin chào! Tôi sẽ dạy bạn cách tạo một máy quét thẻ khóa hoặc thẻ khóa dễ dàng, dễ dàng! Nếu bạn có mô-đun RFID MFRC522, đèn led, điện trở, dây dẫn, arduino una, breadboard và pin 9v (tùy chọn), thì bạn nên đi làm mát,