Daftar Isi:
- Langkah 1: Dapatkan Barang
- Langkah 2: Hubungkan Bagian
- Langkah 3: Tulis Kode
- Langkah 4: Kode dan Perpisahan
Video: Pembaca RFID AVR/Arduino Dengan Kode UART di C: 4 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:59
RFID adalah kegemaran, ditemukan di mana-mana - dari sistem inventaris hingga sistem ID lencana. Jika Anda pernah ke department store dan berjalan melalui benda-benda yang tampak seperti detektor logam di titik masuk/keluar, maka Anda telah melihat RFID. Ada beberapa tempat untuk menemukan informasi yang baik tentang pengaturan RFID, dan instruksi ini berfokus pada pemasangan pembaca Parallax RFID (Serial TTL) pada AVR, dengan penekanan pada kode C yang diperlukan untuk membaca input serial. Kode dalam C dan tidak menggunakan perpustakaan eksternal apa pun. Bahkan, ia berbicara 2400 baud secara langsung tanpa menggunakan UART dengan menyinkronkan ke baud rate pembaca RFID dan membaca pin digital yang terhubung dengannya. Bergairah? Gerakan mengungkap kekerasan seksual demi menghapuskannya.
Langkah 1: Dapatkan Barang
Anda memerlukan daftar suku cadang berikut:
- Pembaca RFID (Paralaks #28140 $39.99)
- Tag RFID (Paralaks #32397 $0,99)
- AVR atau klon Arduino (jika Anda menggunakan AVR stok, Anda juga memerlukan kapasitor max232, 5 x 1uF, dan konektor DE9)
- Papan tempat memotong roti tanpa solder
Opsional
- 4 posisi tajuk
- Kabel
(dan max232 dll untuk komunikasi informasi tag) Anda juga dapat menghubungkan layar LCD favorit Anda sebagai pengganti pengiriman data tag melalui RS232.
Langkah 2: Hubungkan Bagian
Sisi perangkat kerasnya cukup mudah. Alih-alih memasang pembaca RFID saya langsung ke papan tempat memotong roti, saya memilih untuk membuat kabel cepat sehingga saya bisa memindahkan pembaca RFID sedikit lebih baik. Untuk itu, saya baru saja memotong 4 posisi dari strip header soket perempuan yang saya letakkan dan disolder pada tiga kabel. Pita listrik melengkapi konektor ghetto. Pembaca RFID memiliki 4 koneksi:
- Vcc
- MEMUNGKINKAN
- KELUAR
- Gnd
Seperti yang mungkin sudah Anda duga, sambungkan Vcc ke +5V dan Gnd ke ground. Karena pembaca RFID menghabiskan begitu banyak daya, Anda dapat menekan pin ENABLE untuk mematikan dan menghidupkannya pada berbagai interval. Saya hanya memilih untuk tetap menggunakannya. Karena terbalik, Anda tarik LOW untuk mengaktifkannya. Atau, Anda dapat menghubungkannya ke ground. Saya menghubungkannya ke PIND3 untuk memberi saya opsi untuk mengaktifkan/menonaktifkan jika saya memutuskan untuk melakukannya. Pin OUT adalah tempat reader mengirimkan data serialnya setelah membaca sebuah tag. Saya menghubungkannya ke PIND2. Note, di Parallax Universe, merah berarti pergi. Artinya, LED hijau berarti unit tidak aktif dan idle, sedangkan LED merah berarti unit aktif. *mengangkat bahu* Pergi mencari.
Langkah 3: Tulis Kode
Untuk membaca data dari pembaca RFID, Anda harus mengetahui kapan tag telah dikirimkan, menarik data dari port serial, lalu mengirimkannya ke suatu tempat.
Format Data Pembaca RFID
Pembaca RFID Parallax mengirimkan data dengan kecepatan glasial tetap 2400 baud. Sebuah tag RFID adalah 10 byte. Untuk memungkinkan deteksi/koreksi kesalahan, karena pembaca dapat disetel dari kebisingan acak, RFID 10-byte dibatasi oleh sentinel start dan stop. Sentinel start adalah line feed (0x0A) dan stop sentinel adalah carriage return (0x0D). Ini terlihat seperti ini:
[Mulai Sentinel |Byte 1|Byte 2|Byte 3|Byte 4|Byte 5|Byte 6|Byte 7|Byte 8|Byte 9|Byte 10| Hentikan Penjaga]Ini adalah tiga langkah utama.
Ketahui kapan tag telah dikirimkan
Saya menggunakan Pin Change Interrupt pada AVR yang memberi tahu firmware bahwa telah terjadi perubahan pada pin yang dipantau. Mengkonfigurasi AVR untuk ini mudah dan memerlukan pengaturan flag, memberi tahu MCU pin mana yang ingin Anda pantau, dan mengatur bit interupsi global. Konfigurasikan PCINT
BSET(PCICR, PCIE2); // perubahan pin register kontrol interupsi pcie2 BSET(PCMSK2, PCINT18); // aktifkan interupsi perubahan pin untuk PCINT18 (PD2) BSET(SREG, 7); // Setel SREG I-bitTulis rutin layanan interupsi Anda Anda ingin menjaga agar ISR Anda tetap pendek sehingga dalam vektor interupsi saya, saya membaca seluruh byte, sedikit demi sedikit, dan menyimpan byte tersebut dalam array karakter volatil global. Saya melakukan hal berikut di setiap interupsi:
- Periksa untuk memastikan saya mulai sedikit
- Pusatkan waktu ke pulsa tengah pada 2400 baud (kecepatan pembaca RFID)
- Lewati bit awal dan jeda ke tengah bit berikutnya
- Baca setiap bit menjadi bilangan bulat yang tidak ditandatangani
- Ketika saya punya 8 bit, masukkan byte ke dalam array karakter
- Ketika saya telah mengumpulkan 12 byte, beri tahu MCU bahwa tag telah dibaca untuk deteksi kesalahan.
Saya memodifikasi kode SoftSerial dari Mikal Hart yang memodifikasi kode dari David Mellis untuk penundaan yang ditentukan secara eksperimental dalam rutinitas serial.
Mengurai Keluaran RS232
Rutinitas PCINT berisi kode untuk membaca keluaran RS232 dari pembaca RFID. Ketika saya mendapatkan 12 byte (10-byte RFID plus sentinel), saya menyetel bDataReady ke 1 dan membiarkan loop utama memproses data dan menampilkannya.
// ini adalah interupsi handlerISR(PCINT2_vect){ if (BCHK(PIND, RFID_IN)) // Bit awal menjadi low return; uint8_t bit = 0; TunedDelay(CENTER_DELAY); // Pusatkan pada bit awal untuk (uint8_t x = 0; x < 8; x++) { TunedDelay(INTRABIT_DELAY); // lewati sedikit bro… if (BCHK(PIND, RFID_IN)) BSET(bit, x); lain BCLR(bit, x); } TunedDelay(INTRABIT_DELAY); // lewati stop bit RFID_tag[rxIdx] = bit; ++rxIdx; if (rxIdx == 12) bDataReady = 1;}
Tampilkan Tag Anda
Di main(), selama loop for(ever), saya memeriksa untuk melihat apakah bDataReady telah disetel, menandakan bahwa seluruh struktur RFID telah dikirim. Saya kemudian memeriksa untuk melihat apakah itu tag yang valid (yaitu karakter awal dan akhir adalah 0x0A dan 0x0D, masing-masing), dan jika demikian, saya mengirimkannya ke koneksi RS232 saya.
for (;;){ if (bDataReady) {#ifdef _DEBUG_ USART_tx_S("Mulai byte: "); USART_tx_S(itoa(RFID_tag[0], &ibuff[0], 16)); ibuff[0] = 0; ibuff[1] = 0; USART_tx_S("\nStop byte: "); USART_tx_S(itoa(RFID_tag[11], &ibuff[0], 16));#endif if (ValidTag()) { USART_tx_S("\nTagRFID: "); 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; bDataSiap = 0; }}
Langkah 4: Kode dan Perpisahan
Halaman ini berisi file zip dengan kode yang relevan. Itu ditulis di AVR Studio 4.16. Jika Anda menggunakan notepad programmer, Eclipse, atau vi (atau yang lainnya), Anda harus menyalin Makefile yang tepercaya ke dalam direktori dan menambahkan file-file ini ke baris sumber. Perhatikan juga, waktu untuk bagian pembacaan serial didasarkan pada 16MHz MCU. Jika Anda menjalankan pada frekuensi jam yang berbeda, Anda perlu menentukan penundaan yang disetel secara eksperimental untuk memusatkan pada pulsa laju baud. Saya harap instruksi ini membantu Anda dalam beberapa cara. Jika Anda memiliki saran tentang bagaimana hal itu dapat ditingkatkan, jangan ragu untuk memberi tahu saya!
Direkomendasikan:
Kunci Pintu Listrik Dengan Pemindai Sidik Jari dan Pembaca RFID: 11 Langkah (dengan Gambar)
Kunci Pintu Listrik Dengan Pemindai Sidik Jari dan Pembaca RFID: Proyek ini dirancang untuk menghindari keharusan menggunakan kunci, untuk mencapai tujuan kami, kami menggunakan sensor sidik jari optik dan Arduino. Namun ada individu yang memiliki sidik jari yang tidak terbaca dan sensor tidak akan mengenalinya. Kemudian berpikir
Pembaca RFID Arduino Dengan Tampilan TFT: 7 Langkah
Pembaca RFID Arduino Dengan Tampilan TFT: Saya akan menunjukkan kepada Anda dalam instruksi ini bagaimana merancang pembaca RFID yang tampak bagus dengan tampilan TFT dan untuk pemasangan di dinding. Sangat mudah untuk membuat pembaca RFID yang tampak bagus dengan keluaran TFT untuk pemasangan di dinding dengan Arduino MKR pilihan Anda dan Ar
Demo 4x4 Papan Catur Elektronik/ Dengan Arduino Mega + Pembaca RFID + Sensor Efek Hall: 7 Langkah
Demo 4x4 Papan Catur Elektronik/ Dengan Arduino Mega + Pembaca RFID + Sensor Efek Hall: Hai pembuat, Saya Tahir Miriyev, lulusan 2018 dari Universitas Teknik Timur Tengah, Ankara/ Turki. Saya mengambil jurusan Matematika Terapan, tetapi saya selalu suka membuat sesuatu, terutama ketika itu melibatkan beberapa pekerjaan tangan dengan elektronik, desain dan pemrograman
Gunakan Pembaca RFID MFRC522 Dengan Arduino: 5 Langkah
Gunakan Pembaca RFID MFRC522 Dengan Arduino: Halo! Saya akan mengajari Anda cara membuat pemindai kartu kunci atau key fob yang keren dan mudah dibuat! Jika Anda memiliki modul RFID MFRC522, led, resistor, kabel, arduino uno, papan tempat memotong roti, dan baterai 9v (opsional), maka Anda siap untuk membuat pendingin
Pembaca Kode Batang Berbicara Raspberry Pi: 12 Langkah
Pembaca Kode Batang Berbicara Raspberry Pi: Pemindai Kode Batang Fig.1 dari DX.comOverviewUpdate: Demo video singkat tersedia https://youtu.be/b905MLfGTcMMy ibu tidak dapat membaca label pada barang belanjaan lagi, jadi saya mencari solusi. Setelah melihat pembaca kode batang untuk orang buta