Isi kandungan:
- Langkah 1: Dapatkan Barang
- Langkah 2: Sambungkan Bahagian
- Langkah 3: Tulis Kod
- Langkah 4: Kod dan Perpisahan
Video: Pembaca RFID AVR / Arduino Dengan Kod UART dalam Langkah C: 4
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:13
RFID adalah kegilaan yang terdapat di mana-mana sahaja - dari sistem inventori hingga sistem ID lencana. Sekiranya anda pernah ke gedung membeli-belah dan menelusuri barang-barang yang kelihatan seperti pengesan logam di pintu masuk / pintu keluar, maka anda telah melihat RFID. Terdapat beberapa tempat untuk mendapatkan maklumat yang baik mengenai penyediaan RFID, dan arahan ini difokuskan pada pemasangan pembaca Parallax RFID (Serial TTL) pada AVR, dengan penekanan pada kod C yang diperlukan untuk membaca input bersiri. Kodnya dalam C dan tidak menggunakan perpustakaan luaran. Sebenarnya, ia berbicara 2400 baud secara langsung tanpa menggunakan UART dengan menyegerakkan dengan kadar baud pembaca RFID dan membaca pin digital yang disambungkannya. Teruja? Saya juga.
Langkah 1: Dapatkan Barang
Anda memerlukan senarai bahagian berikut:
- Pembaca RFID (Parallax # 28140 $ 39.99)
- Tanda RFID (Parallax # 32397 $ 0.99)
- Klon AVR atau Arduino (jika anda menggunakan stok AVR, anda juga memerlukan kapasitor max232, 5 x 1uF, dan penyambung DE9)
- Papan roti tanpa solder
Pilihan
- Pengepala 4 kedudukan
- Kawat
(dan max232 dll untuk komunikasi maklumat tag) Anda juga dapat menghubungkan layar LCD kegemaran anda sebagai ganti mengirim data tag melalui RS232.
Langkah 2: Sambungkan Bahagian
Bahagian perkakasan adalah sangat mudah. Daripada memetik pembaca RFID saya terus ke papan roti saya, saya memilih untuk membuat kabel cepat supaya saya dapat memindahkan pembaca RFID sedikit lebih baik. Untuk itu, saya baru sahaja memotong 4 kedudukan dari jalur header soket wanita yang telah saya letakkan dan disolder pada tiga wayar. Pita elektrik melengkapkan penyambung ghetto. Pembaca RFID mempunyai 4 sambungan:
- Vcc
- DIAMALKAN
- KELUAR
- Gnd
Seperti yang anda duga, sambungkan Vcc ke + 5V dan Gnd ke tanah. Oleh kerana pembaca RFID menggunakan begitu banyak tenaga, anda boleh menekan pin ENABLE untuk mematikan dan menghidupkannya pada pelbagai selang waktu. Saya hanya memilih untuk meneruskannya. Oleh kerana ia terbalik, anda menariknya dengan RENDAH untuk mengaktifkannya. Sebagai alternatif, anda boleh menyambungkannya ke tanah. Saya menghubungkannya ke PIND3 untuk memberi saya pilihan untuk mengaktifkan / mematikan jika saya memutuskan untuk melakukannya. Pin OUT adalah tempat pembaca menghantar data bersirinya setelah membaca teg. Saya menghubungkannya ke PIND2. Perhatikan, di Parallax Universe, merah bermaksud pergi. Maksudnya, LED hijau bermaksud unit tidak aktif dan tidak aktif, sementara LED merah bermaksud unit itu aktif. * mengangkat bahu * Pergi angka.
Langkah 3: Tulis Kod
Untuk membaca data dari pembaca RFID, Anda harus tahu kapan teg telah dikirimkan, tarik data dari port bersiri, kemudian kirimkan ke suatu tempat.
Format Data Pembaca RFID
Pembaca Parallax RFID menghantar data pada kadar glasial tetap 2400 baud. Tag RFID ialah 10 bait. Untuk membolehkan pengesanan / pembetulan ralat, kerana pembaca dapat dimatikan dari kebisingan rawak, RFID 10-byte dibatasi oleh sentinel permulaan dan penghentian. Sentinel permulaan adalah feed line (0x0A) dan sentinel stop adalah carriage return (0x0D). Ia kelihatan seperti ini:
[Mula Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Hentikan Sentinel]Ini adalah tiga langkah utama.
Ketahui bila teg telah dihantar
Saya menggunakan Pin Change Interrupt pada AVR yang memberitahu firmware bahawa perubahan telah berlaku pada pin yang dipantau. Mengkonfigurasi AVR untuk ini mudah dan memerlukan menetapkan bendera, memberitahu MCU pin mana yang ingin anda pantau, dan menetapkan bit gangguan global. Konfigurasikan PCINT
BSET (PCICR, PCIE2); // pin tukar interrupt control register pcie2 BSET (PCMSK2, PCINT18); // aktifkan gangguan perubahan pin untuk PCINT18 (PD2) BSET (SREG, 7); // Tetapkan SREG I-bitTulis rutin gangguan perkhidmatan anda Saya melakukan perkara berikut pada setiap gangguan:
- Periksa untuk memastikan saya berada pada tahap permulaan
- Pusatkan masa ke nadi tengah pada 2400 baud (kelajuan pembaca RFID)
- Langkau bit permulaan dan berhenti sebentar ke tengah bit seterusnya
- Baca setiap bit menjadi bilangan bulat yang tidak ditandatangani
- Apabila saya mendapat 8 bit, masukkan bait ke dalam susunan watak
- Apabila saya mengumpulkan 12 bait, beri tahu MCU bahawa tag telah dibaca untuk pengesanan ralat.
Saya mengubah suai kod SoftSerial dari Mikal Hart yang mengubah kod dari David Mellis untuk kelewatan yang ditentukan secara eksperimen dalam rutin siri.
Huraikan Keluaran RS232
Rutin PCINT mengandungi kod untuk membaca output RS232 dari pembaca RFID. Apabila saya mendapat 12 bait (10-byte RFID plus sentinels) saya menetapkan bDataReady ke 1 dan membiarkan gelung utama memproses data dan memaparkannya.
// ini adalah pengendali interruptISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Bit permulaan kembali rendah; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // Pusat bit permulaan untuk (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // langkau sedikit, saudara… jika (BCHK (PIND, RFID_IN)) BSET (bit, x); lain BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // langkau bit berhenti RFID_tag [rxIdx] = bit; ++ rxIdx; jika (rxIdx == 12) bDataReady = 1;}
Paparkan Tag Anda
Di gelung utama (), selama (pernah) gelung, saya memeriksa untuk melihat apakah bDataReady telah ditetapkan, menandakan bahawa seluruh struktur RFID telah dikirim. Saya kemudian memeriksa untuk mengetahui apakah itu teg yang sah (iaitu watak mula dan berhenti masing-masing adalah 0x0A dan 0x0D), dan jika ya, saya menghantarnya melalui sambungan RS232 saya.
untuk (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Start byte:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ nHentikan bait:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16)); # endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); untuk (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); jika (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
Langkah 4: Kod dan Perpisahan
Halaman ini mengandungi fail zip dengan kod yang berkaitan. Ia ditulis di AVR Studio 4.16. Sekiranya anda menggunakan notepad, gerhana, atau vi (atau sesuatu yang lain) pengaturcara, anda perlu menyalin Makefile yang dipercayai ke dalam direktori dan menambahkan fail-fail ini ke baris sumber. Juga perhatikan, masa untuk bahagian bacaan bersiri adalah berdasarkan pada 16MHz MCU. Sekiranya anda berjalan pada frekuensi jam yang berbeza, anda perlu secara eksperimen menentukan kelewatan yang ditala untuk berpusat pada nadi kadar baud. Saya harap arahan ini dapat membantu anda dalam beberapa cara. Sekiranya anda mempunyai cadangan bagaimana ia dapat diperbaiki, jangan ragu untuk memberitahu saya!
Disyorkan:
Arduino Sebagai ISP -- Bakar Fail Hex dalam AVR -- Fius dalam AVR -- Arduino Sebagai Pengaturcara: 10 Langkah
Arduino Sebagai ISP || Bakar Fail Hex dalam AVR || Fius dalam AVR || Arduino Sebagai Pengaturcara: ……………………… Sila Langgani saluran YouTube saya untuk lebih banyak video …….. Artikel ini adalah mengenai arduino sebagai isp. Sekiranya anda ingin memuat naik fail hex atau jika anda ingin menetapkan fius anda di AVR maka anda tidak perlu membeli programmer, anda boleh melakukan
Kunci Pintu Elektrik Dengan Pengimbas Cap Jari dan Pembaca RFID: 11 Langkah (dengan Gambar)
Kunci Pintu Elektrik Dengan Pengimbas Cap Jari dan Pembaca RFID: Projek ini dirancang untuk mengelakkan keperluan menggunakan kunci, untuk mencapai tujuan kami, kami menggunakan sensor cap jari optik dan Arduino. Namun ada individu yang mempunyai cap jari yang tidak terbaca dan sensor tidak akan mengenalinya. Kemudian berfikir
Pembaca RFID Arduino Dengan Paparan TFT: 7 Langkah
Pembaca RFID Arduino Dengan Paparan TFT: Saya akan menunjukkan kepada anda dalam petunjuk ini bagaimana merancang pembaca RFID yang cantik dengan paparan TFT dan untuk pemasangan di dinding. Sangat mudah untuk membuat pembaca RFID yang cantik dengan output TFT untuk pemasangan di dinding dengan Arduino MKR pilihan anda dan Ar kami
Pembaca Kod Bar Raspberry Pi Bercakap: 12 Langkah
Pembaca Kod Bar Raspberry Pi Talking: Gamb.1 Pengimbas Kod Bar dari DX.comOview OverviewUpdate: Demo video pendek tersedia https://youtu.be/b905MLfGTcMM Ibu saya tidak dapat membaca label pada barang runcit lagi, jadi saya terus mencari penyelesaian. Setelah melihat bahawa pembaca kod bar untuk orang buta
Pembaca Kilat Kompak USB . dalam Altoids Tin .: 6 Langkah
USB Compact Flash Reader …. dalam Altoids Tin .: Ya saya tahu timah Altoids telah berubah menjadi segala-galanya kecuali camode pada ketika ini, tetapi ini adalah "projek" pertama saya yang saya cuba. Saya melihat-lihat di sini dan saya melihat mod pengawal NES dan ia mendorong motivasi saya untuk melakukan ini