Anda di halaman 1dari 17

Membuat Pembaca RFID

RFID (Radio Frequency Identification) pembaca cukup umum hari ini.


Mereka adalah metode pilihan untuk mengontrol akses di blok kantor dan untuk
sistem entri untuk angkutan umum. tag RFID kecil yang disuntikkan ke hewan
untuk identifikasi jika mereka tersesat. Kendaraan memiliki tag pada mereka
untuk pengumpulan tol. Mereka bahkan digunakan di rumah sakit untuk menandai
peralatan sekali pakai di kamar operasi untuk memastikan bahwa tidak ada benda
asing yang tertinggal di dalam pasien. Biaya teknologi yang telah turun drastis
selama bertahun-tahun ke titik di mana pembaca sekarang dapat dibeli untuk
kurang dari $ 10. Mereka mudah untuk terhubung ke Arduino dan mudah
digunakan. Akibatnya, semua jenis proyek keren bisa diciptakan dari mereka.

Anda akan menggunakan mudah didapat dan murah ID-12 pembaca dari
Inovasi. pembaca ini menggunakan teknologi 125KHz untuk membaca tag dan
kartu hingga 180mm menjauh dari pembaca. Ada pembaca lainnya dalam kisaran
yang sama yang memberikan rentang yang lebih besar, dan dengan penambahan
antena eksternal Anda dapat meningkatkan kisaran lanjut masih.

Anda akan memulai dengan menghubungkan satu dan belajar bagaimana


mudahnya untuk mendapatkan data serial dari itu. Anda kemudian akan membuat
sistem kontrol akses sederhana.

Project 44 Simple RFID Reader


Pin pada pembaca ID12 adalah non-standar jarak sehingga mereka tidak
akan masuk ke dalam papan tempat memotong roti. Anda akan perlu untuk
mendapatkan papan breakout dari pemasok seperti Sparkfun. Kartu atau tag dapat
dibeli dari semua jenis sumber dan sangat murah; Aku punya tas kecil gaya
keyfob tag di eBay untuk beberapa dolar. Pastikan tag atau kartu adalah teknologi
125kHz, jika tidak maka tidak akan bekerja dengan pembaca ini.

Bagian di perlukan

ID-12 RFID Reader

ID-12 Breakout Board*

Current Limiting Resistor


5mm LED

125KHz RFID tags


or cards* (At least
4)

Hubungkan It Up
Menghubungkan segala sesuatu seperti yang ditunjukkan pada Gambar 16-1.

Gambar 16-1. Sirkuit untuk Proyek 44 - Pembaca RFID sederhana (lihat insert
untuk versi warna)

Hubungkan LED melalui resistor yang membatasi arus ke Pin 10 (BZ) pada
pembaca.

Masukkan Kode

Masukkan kode pada Listing 16-1.

Listing 16-1. Kode untuk Proyek 44

// Project 44
char val = 0; // Nilai membaca untuk port serial

void setup() {
Serial mulai (9600);
}
void loop () {
if(Serial yang tersedia ( ) > 0) {

val = Serial membaca (); // dibaca dari port serial

Serial cetak (val, BYTE); // dan mencetaknya ke monitor

Menjalankan kode, membuka monitor serial, dan tahan tag RFID atau
kartu hingga pembaca. LED akan berkedip untuk menunjukkan telah membaca
kartu, dan jendela Monitor seri akan menampilkan nomor 12 digit yang
membentuk ID unik dari kartu. Membuat catatan dari ID tag Anda karena Anda
akan membutuhkan mereka dalam proyek berikutnya.

Kode ini tidak lebih dari membaca sederhana dari sekarang data pada
port serial. Sekarang, Anda harus tahu cukup untuk mengetahui bagaimana
program ini bekerja. Karena itu saya akan melewatkan kode ikhtisar dan
melihat hardware sebaliknya.

Jenis yang Anda gunakan adalah tipe pasif yang tidak memiliki baterai.
Mereka mendapatkan kekuasaan mereka dari medan magnet dikirimkan oleh
pembaca. Sebagai tag melewati ke dalam medan magnet, itu inducts arus di
kawat di dalam tag. saat ini digunakan untuk bangun chip kecil, yang
mentransmisikan nomor urut tag. Pembaca kemudian mengirimkan data dalam
format serial ke PC atau mikrokontroler terhubung. Format data yang dikirim
dari pembaca ID12 adalah sebagai berikut:

STX DATA (10 CHECKSUM (2 CR LF ETX (03H)


(02h) ASCII) ASCII)

Sebuah STX atau karakter transmisi mulai dikirim pertama (ASCII 02),
diikuti oleh 10 byte yang membentuk HEX individu (Heksadesimal) digit nomor.
Dua digit HEX berikutnya adalah checksum dari jumlah (ini akan dijelaskan
dalam proyek berikutnya), maka ada memiliki Carriage Return (CR) dan Jalur
Umpan (LF), diikuti dengan ETX atau transmisi kode akhir.

Hanya 12 digit ASCII akan muncul pada monitor seri sebagai sisa karakter
non-printable. Dalam proyek berikutnya, Anda akan menggunakan checksum
untuk memastikan string yang diterima adalah benar dan kode STX untuk
memberitahu Anda bahwa string sedang dikirim.
Gambar 16-2. tag RFID dan kartu datang dalam segala bentuk dan ukuran
(image courtesy of Timo Arnall)

Project 45 Sistem Kontrol Akses

Anda sekarang akan membuat sistem kontrol akses. Anda akan membaca
tag menggunakan RFID reader dan memvalidasi pilih tag untuk memungkinkan
mereka untuk membuka pintu. Arduino, melalui transistor, maka akan
mengoperasikan sebuah kunci pemogokan listrik.

Bagian Diperlukan

ID-12 RFID Reader

ID-12 Breakout
Board*

Current
membatasi Resistor

5mm LED

125KHz
RFID tags
or cards*
(Paling
sedikit 4)
1N4001 Diode

TIP-120 NPN Transistor

2.1mm Power Jack

12v DC Power Supply

8 ohm Speaker or a piezo sounder

12v Electric Strike Lock

*image courtesy of
Sparkfun

Hubungkan It Up

Menghubungkan segala sesuatu seperti yang ditunjukkan pada Gambar16-3.


Gambar 16-3. Sirkuit untuk Proyek 45 - Access Control System (lihat insert untuk versi warna)

Jika Anda tidak menggunakan TIP120, pastikan Anda membaca datasheet untuk
transistor Anda untuk memastikan Anda memiliki pin kabel dengan benar. Dari kiri ke kanan
pada TIP120, Anda memiliki basis, kolektor, dan emitor. dasar pergi ke Digital Pin 7, kolektor
pergi ke Ground melalui dioda dan juga ke terminal negatif dari piezo atau speaker. emitor
pergi ke Ground. 8 ohm speaker membuat suara lebih bagus dan lebih keras dari piezo jika
Anda bisa mendapatkan satu.
Kekuatan untuk kunci harus berasal dari power supply DC eksternal 12v dengan rating
minimal 500mA.

Masukkan Kode

Masukkan kode pada Listing 16-2.

Listing 16-2. Kode untuk Proyek 45

// Project 45
#define lockPin 7
#define speakerPin 9
#define tx 3
#define rx 2
#define unlockLength 2000
#include <SoftwareSerial.h>
SoftwareSerial rfidReader = SoftwareSerial(rx, tx);
int users = 3;
char* cards[] = { // kartu valid
"3D00768B
53",
"3D00251C
27",
"3D0029E6
BF",
};
char* names[] = { // nama pemegang kartu
"Tom
Smith",
"Dick
Jones",
"Harry
Roberts"
};
void setup() {
pinMode (lockPin,
OUTPUT); pinMode
(speakerPin, OUTPUT);
digitalWrite(lockPin,
LOW);
Serial.begin(9600);
rfidReader.begin(9600
);
}
void loop() {
char cardNum[10]; // array untuk memegang nomor kartu
byte cardBytes[6]; // Versi byte nomor kartu +
checksum
int index=0; // digit saat ini
byte byteIn=0; // byte membaca dari RFID
byte lastByte=0; // byte terakhir baca
byte checksum = 0; // Hasil checksum disimpan di sini
if (rfidReader.read()==2) { // read the
RFID reader while(index<12) { // 12 digit
nomor seri yang unikbyteIn =
rfidReader.read(); // store value in
byteIn
if ((byteIn==1) || (byteIn==2) || (byteIn==10) || (byteIn==13))
{return;}
// if STX, ETX, CR or LF break
if (index<10) {cardNum[index]=byteIn;} // store first 10 HEX digits
only
(last 2 are checksum)
// convert ascii hex to integer
hex value if ((byteIn>='0') &&
(byteIn<='9')) { byteIn -= '0';
}
else if ((byteIn>='A') && (byteIn<='F')) {
byteIn = (byteIn+10)-'A';
}

if ((index & 1) == 1) { // if odd number merge 2 4 bit digits


into 8 bit byte cardBytes[index/2]= (byteIn |
(lastByte<<4)); // memindahkan angka terakhir 4 bit
kiri dan menambahkan digit baru
if (index<10) {checksum ^= cardBytes[index/2];} // tot up the
checksum value
}
lastByte=byteIn; // menyimpan
byte terakhir baca index++; //
increment the index
if (index==12) {cardNum[10] = '\0';} // jika kita telah
mencapai akhir dari semua digits menambahkan
null terminator}
Serial.println(cardNum); // mencetak nomor kartu
int cardIndex =checkCard(cardNum); // memeriksa apakah kartu valid dan
kembali nomor indeks if(cardIndex>=0 && (cardBytes[5]==checksum)) {
// jika nomor kartu dan checksum yang valid
Serial.println("Card
Validated");
Serial.print("User: ");
Serial.println(names[cardIndex]); //
mencetak nama unlock yang relevan
(); // unlock the door
Serial.println();
}
else {
Serial.println("Card
INVALID");
tone(speakerPin, 250,
250); delay(250);
tone(speakerPin, 150,
250);
Serial.println();
}
}
}
int checkCard(char cardNum[10]) {
for (int x=0; x<=users; x++) { // periksa semua kartu yang valid
if(strcmp(cardNum, cards[x])==0) { // bandingkan dengan
nomor kartu terakhir dibaca return (x); // kembali
indeks nomor kartu}
}
return (-1); // nilai negatif menunjukkan tidak cocok}
void unlock() {
tone(speakerPin, 1000,
500);
digitalWrite(lockPin,
HIGH);
delay(unlockLength);
digitalWrite(lockPin,
LOW);
}

Pastikan bahwa nomor kode untuk tiga tag Anda dimasukkan ke dalam kartu [] array
pada awal program. Gunakan Project 44 untuk mengetahui nomor kode, jika perlu
(menjalankan kode dan membuka monitor serial). Sekarang, menyajikan empat kartu Anda
untuk pembaca. pembaca akan berkedip LED untuk menunjukkan telah membaca kartu dan
Anda kemudian akan mendapatkan output seperti ini:
3D00251C27
kartu Divalidasi
Pengguna: Dick Jones
3D0029E6BF
kartu Divalidasi
Pengguna: Harry Roberts
3D002A7C6C Card INVALID
3D00768B53
kartu Divalidasi
Pengguna: Tom Smith

Nomor kartu akan ditampilkan dan kemudian "Kartu INVALID" atau "Kartu Divalidasi",
diikuti dengan nama pengguna. Jika kartu tersebut valid, nada bernada tinggi akan berbunyi
dan kunci akan terbuka selama dua detik. Jika kartu tersebut tidak valid, dua-nada bip bernada
rendah akan terdengar dan pintu tidak akan membuka.
Pemogokan listrik 12v dinyalakan menggunakan transistor untuk daya tegangan tinggi
dan arus dari
Arduino dapat memberikan. Anda menggunakan prinsip yang sama ini dalam Bab 5 ketika
Anda mengendarai Motor DC. Mari kita lihat bagaimana proyek ini bekerja.
Project 45 Sistem Kontrol Akses Ikhtisar kode

Pertama, Anda memiliki beberapa definisi untuk pin yang akan Anda gunakan untuk kunci
dan pembicara. Juga, Anda menggunakan perpustakaan SoftwareSerial.h bukan serial pin
normal pada Digital Pins 0 dan 1, sehingga Anda harus menentukan rx dan tx pin. Anda juga
memiliki panjang, dalam mikrodetik, bahwa kunci akan terbuka untuk.

#define lockPin 7
#define speakerPin 9
#define tx 3
#define rx 2
#define unlockLength 2000

Anda menggunakan perpustakaan SoftwareSerial.h (sekarang menjadi bagian inti dari


Arduino IDE) untuk kenyamanan. Jika Anda menggunakan rx standar dan pin tx, Anda harus
memutuskan apa pun yang terhubung ke orang-pin setiap kali Anda ingin meng-upload kode
apapun ke Arduino. Dengan menggunakan perpustakaan SoftwareSerial.h, Anda dapat
menggunakan pin yang Anda inginkan.

#include <SoftwareSerial.h>

Berikutnya, Anda membuat sebuah instance dari objek SoftwareSerial dan menyebutnya
rfidReader. Anda lulus untuk itu pin rx dan tx yang telah Anda tetapkan.

SoftwareSerial rfidReader = SoftwareSerial(rx, tx);

Berikutnya datang variabel untuk menahan jumlah pengguna dalam database:

int users = 3;

Berikutnya adalah dua array untuk memegang kartu ID nomor dan nama-nama pemegang
kartu. Mengubah nomor kartu yang Anda sendiri (pertama 10 digit saja).

char* cards[] = { // kartu valid


"3D00768B
53",
"3D00251C
27",
"3D0029E6BF",
};
char* names[] = { // nama pemegang kartu
"Tom Smith",
"Dick
Jones",
"Harry
Roberts"
};

Setup rutin set kunci dan speaker pin sebagai output

pinMode (lockPin, OUTPUT);


pinMode (speakerPin, OUTPUT);

kemudian menetapkan pin kunci untuk LOW untuk memastikan kunci tidak membuka di awal

digitalWrite(lockPin, LOW);

Kemudian Anda mulai komunikasi serial di port serial dan port SoftwareSerial:

Serial.begin(9600);
rfidReader.begin(9600);
Berikutnya adalah loop utama. Anda memulai dengan mendefinisikan variabel yang akan Anda
gunakan dalam lingkaran:
char cardNum[10]; // array untuk memegang nomor kartu
byte cardBytes[6]; // Versi byte dari nomor kartu + checksum Indeks int =0; //
digit saat ini
byte byteIn=0; // byte membaca dari RFID
byte lastByte=0; // byte terakhir baca
byte checksum = 0; // Hasil checksum disimpan di sini

Berikutnya, Anda memeriksa apakah ada data yang masuk ke pembaca RFID port serial.
Jika demikian, dan karakter pertama adalah ASCII karakter 2, yang merupakan kode transmisi
awal, maka Anda tahu ID string akan segera dikirim dan dapat mulai membaca di digit.
if (rfidReader.read()==2) { // read the RFID reader
Kemudian datang beberapa saat loop yang akan berjalan sementara indeks kurang dari
12:

while(index<12) { // 12 digit nomor seri yang unik


Variabel indeks akan memegang nilai tempat Anda saat ini dalam digit Anda baca di. Ketika
Anda membaca dalam digit dari 12 karakter, Anda hanya akan membaca dalam 12 digit
pertama.
Selanjutnya, nilai dari port serial dibaca dan disimpan di byteIn:
byteIn = rfidReader.read(); // store value in byteIn
Hanya dalam kasus beberapa karakter telah terlewatkan untuk alasan apapun, Anda
berikutnya cek untuk terjadinya awal transmisi, akhir transmisi, carriage return, atau kode line
feed. Jika mereka terdeteksi, loop keluar.
if ((byteIn==1) || (byteIn==2) || (byteIn==10) || (byteIn==13)) {return;}
// if STX, ETX,
CR or LF break

Dua digit terakhir dari 12 digit string yang merupakan checksum. Anda tidak ingin
menyimpan ini dalam array cardNum sehingga Anda hanya menyimpan pertama 10 digit:
if (index<10) {cardNum[index]=byteIn;} // store first 10 HEX digits only
(last 2 are
checksum)

Selanjutnya, Anda perlu mengkonversi karakter ASCII Anda membaca ke angka


heksadesimal setara mereka, sehingga Anda menjalankan pernyataan jika-lain untuk
menentukan apakah karakter adalah antara 0 dan 9 dan A dan Z. Jika demikian, mereka akan
dikonversi ke heksadesimal mereka setara.
if ((byteIn>='0') && (byteIn<='9')) {
byteIn -= '0';
}
else if ((byteIn>='A') && (byteIn<='F')) {
byteIn =
(byteIn+10)-'A';
}
Logical AND (&&) operator yang digunakan untuk memastikan karakter jatuh antara 0 dan 9
atau antara A dan Z. Selanjutnya, Anda mengkonversi dua digit heksadesimal terakhir ke byte.
Sebuah digit heksadesimal adalah enam belas dasar. Sistem nomor kami biasanya
menggunakan basis sepuluh, dengan angka mulai dari 0 sampai 9. Dalam heksadesimal, angka
pergi dari 0 sampai 15. huruf A sampai F digunakan untuk nomor 10 sampai 15. Jadi, jumlah
FF di hex 255 dalam desimal:
F = 15
(F * 16) + F = (15 * 16) + 15 = 255
Oleh karena itu Anda perlu mengkonversi dua digit ASCII terakhir menjadi satu byte dan
setara desimal. Anda telah mendeklarasikan variabel yang disebut lastByte yang menyimpan
digit terakhir Anda diproses di jalankan terakhir dari loop sementara. Ini awalnya diatur ke nol.
Anda hanya perlu melakukan ini untuk setiap digit kedua karena setiap
dari dua digit HEX membuat satu byte. Jadi Anda memeriksa bahwa indeks adalah angka
ganjil dengan melakukan bitwise DAN (&) operasi pada nilai yang tersimpan dalam indeks
dengan 1 dan melihat apakah hasilnya juga 1. Ingat indeks yang dimulai sebagai nol, sehingga
digit kedua memiliki indeks 1.
if ((index & 1) == 1) { // if odd number merge 2 4 bit digits into 8 bit
byte

Apa ganjil ANDed dengan 1 akan menghasilkan 1 dan bahkan setiap nomor akan
menghasilkan 0:
12 (even) & 1 = 0
00001100
00000001 &
= 00000000

11 (odd) & 1 = 1
0000101
1
00000001
&
= 00000001
Jika hasilnya menentukan Anda berada di kedua, keempat, keenam, kedelapan, atau digit
kedua belas, maka Anda simpan di cardBytes hasil perhitungan sebagai berikut:
cardBytes[index/2]= (byteIn | (lastByte<<4)); // memindahkan angka
terakhir 4 bit kiri dan digit baru

Anda menggunakan index / 2 untuk menentukan jumlah indeks. Sebagai indeks integer,
hanya nilai sebelum titik desimal akan dipertahankan. Jadi untuk setiap dua digit bahwa indeks
akan menambahkan indeks untuk, array cardBytes akan meningkat per satu.
Perhitungan mengambil nilai byte terakhir dan bitshifts empat tempat ke kiri. Ia kemudian
mengambil nomor ini dan melakukan bitwise OR (|) operasi di atasnya dengan nilai saat
membaca. Ini memiliki efek
mengambil nilai HEX pertama, yang membuat empat bit pertama dari jumlah dan sedikit
pergeseran empat tempat
Lastbyte = 9 = 00001001
00001001 << 4 = 10010000
E = 14 = 00001110
10010000 OR
= 10011110
checksum adalah nomor yang Anda gunakan untuk memastikan bahwa seluruh string
dibacakan dengan benar. Checksum yang digunakan banyak dalam transmisi data; mereka
hanya hasil dari masing-masing byte seluruh data string XOR bersama-sama.
if (index<10) {checksum ^= cardBytes[index/2];} // tot up the checksum
value
ID jumlah kartu pertama Anda adalah:
3D00768B53
Oleh karena itu, checksum yang akan:
3D XOR 00 XOR 76 XOR 8B XOR 53
3D = 00111101
00 = 00000000
76 = 01110110
8B = 10001011
53 = 01010011
Jika Anda XOR (Exclusive OR) masing-masing angka tersebut satu sama lain, Anda berakhir
dengan 93. Jadi 93 adalah checksum untuk ID nomor. Jika salah satu angka yang
ditransmisikan secara tidak benar karena gangguan, checksum akan keluar sebagai nilai yang
berbeda dari 93, sehingga Anda tahu bahwa kartu itu tidak membaca dengan benar dan Anda
diskon itu.
Di luar lingkaran itu, Anda mengatur lastByte untuk nilai saat ini sehingga waktu berikutnya
di sekitar Anda memiliki salinan itu:
lastByte=byteIn; // menyimpan byte terakhir baca
Nomor indeks bertambah:
index++; // kenaikan indeks
Jika Anda telah mencapai akhir dari string, Anda harus memastikan bahwa digit kesepuluh
dalam cardNum
Array diatur untuk kode ASCII untuk \ 0 atau null terminator. Hal ini diperlukan untuk nanti
pada saat Anda perlu untuk menentukan apakah akhir dari string telah tercapai atau tidak. Null
terminator menunjukkan bahwa Anda berada di akhir string.
if (index==12) {cardNum[10] = '\0';}
Jika Anda telah mencapai akhir dari string, Anda harus memastikan bahwa digit kesepuluh
dalam cardNum
Array diatur untuk kode ASCII untuk \ 0 atau null terminator. Hal ini diperlukan untuk nanti
pada saat Anda perlu untuk menentukan apakah akhir dari string telah tercapai atau tidak. Null
terminator menunjukkan bahwa Anda berada di akhir string.
Kemudian Anda mencetak nomor kartu yang telah Anda baca di dari reader RFID:
Serial.println(cardNum); // print the card number
Berikutnya, integer disebut cardIndex dibuat dan diatur ke nilai kembali dari fungsi
checkCard () (dijelaskan kemudian). The checkCard () fungsi akan mengembalikan nilai
positif jika jumlah kartu adalah valid dari database dan angka negatif jika tidak.

int cardIndex =checkCard(cardNum); // memeriksa apakah kartu valid dan kembali


nomor indeksAnda kemudian memeriksa bahwa jumlah kembali positif dan juga bahwa
checksum yang benar. Jika demikian, kartu itu dibaca dengan benar dan valid, sehingga Anda
dapat membuka pintu.
if(cardIndex>=0 && (cardBytes[5]==checksum)) { // jika nomor kartu
dan checksum yang valid
Serial.println("Card Validated"); Serial.print("User: ");
Serial.println(names[cardIndex]); // mencetak nama yang
relevan membuka kunci (); // membuka pintu
Serial.println();
}

Jika kartu tidak valid atau checksum tidak benar, kartu tersebut dipastikan tidak valid
dan pengguna diinformasikan:
else {
Serial.println("Card
INVALID"); tone(speakerPin, 250, 250);
delay(250);
tone(speakerPin, 150, 250);
Serial.println();
}
Berikutnya adalah checkCard () fungsi. Ini akan kembali integer jadi ini adalah jenis dan
parameter adalah nomor kartu Anda lulus untuk itu.
int checkCard(char cardNum[10]) {
Berikutnya, Anda siklus melalui masing-masing kartu dalam database untuk melihat apakah
itu cocok dengan nomor kartu yang telah Anda baca di:
for (int x=0; x<=users; x++) { // periksa semua kartu yang valid
Anda menggunakan strcmp, atau String Bandingkan fungsi, untuk memastikan apakah nomor
kartu diteruskan ke fungsi checkCard () dan nomor kartu di lokasi saat database cocok satu
sama lain. Inilah sebabnya mengapa Anda membutuhkan terminator nol pada akhir nomor
kartu Anda sebagai fungsi strcmp memerlukan itu.
if(strcmp(cardNum, cards[x])==0) { // bandingkan dengan nomor kartu terakhir
dibaca
Fungsi strcmp membutuhkan dua parameter. Ini adalah dua string Anda ingin
membandingkan. Jumlah kembali dari fungsi adalah nol jika kedua string adalah identik.
Sejumlah non-nol menunjukkan mereka tidak cocok. Jika mereka cocok, Anda kembali nilai x,
yang akan menjadi indeks dalam kartu dan nama database dari kartu yang valid.
return (x); // kembali indeks nomor kartu
Jika kartu tidak cocok, Anda kembali -1 a.
return (-1); // nilai negatif menunjukkan tidak cocok
}
Fungsi terakhir adalah unlock () yang memainkan nada bernada tinggi, membuka pintu,
menunggu panjang waktu tertentu, dan kemudian berarti mengunci kembali pintu:
void unlock() {
tone(speakerPin, 1000,
500);
digitalWrite(lockPin,
HIGH);
delay(unlockLength);
digitalWrite(lockPin,
LOW);
}
Langkah berikutnya dari proyek ini akan menambahkan lebih banyak pembaca dan kunci
untuk mengamankan seluruh rumah Anda. pengguna resmi akan membawa kartu atau tag
untuk memungkinkan mereka ke kamar yang relevan.
hak akses individu dapat diberikan kepada setiap pengguna sehingga mereka memiliki akses
yang berbeda ke berbagai bagian bangunan, hanya mengizinkan pengguna yang valid ke
wilayah yang terpisah.
Sekarang ke bab terakhir buku ini di mana Anda menghubungkan Arduino Anda ke Internet!
Ringkasan
Dalam bab ini Anda telah melihat betapa mudahnya untuk membaca data dari kartu RFID
atau tag dan kemudian menggunakan data tersebut untuk membuka kunci pemogokan listrik
atau untuk mengambil jenis lain dari tindakan. Saya telah melihat proyek-proyek mana keyfob
RFID melekat sekelompok kunci. RFID reader adalah dalam mangkuk dan ketika pengguna
mendapatkan rumah mereka melemparkan kunci mereka ke dalam mangkuk. Rumah bereaksi
terhadap orang yang datang ke rumah, misalnya pengaturan tingkat suhu dan cahaya yang
dipilih mereka, bermain musik favorit mereka, menyalakan mandi di, dll Ketika datang untuk
menggunakan RFID reader, Anda hanya dibatasi oleh imajinasi Anda sendiri.
Subyek dan Konsep tercakup dalam Bab 16
Bagaimana teknologi RFID karya
Bagaimana menghubungkan pembaca ID12 RFID untuk Arduino
Membaca data serial dari RFID reader
Menggunakan transistor untuk mengontrol perangkat bertenaga tinggi
Menggunakan perpustakaan SoftwareSerial
Konversi ASCII ke nilai-nilai heksadesimal
Menggunakan bitwise DAN untuk memastikan apakah nomor ganjil atau bahkan
Penggabungan dua digit HEX menggunakan bitshifts dan bitwise OR untuk
menciptakan byte
Membuat checksum menggunakan XOR (Exclusive OR)
Menggunakan strcmp untuk membandingkan dua string