Arduinoで作るポータブルRFIDドアロック - ステップバイステップガイド
必要な部品と材料
| 部品名 | 数量 |
|---|---|
| Arduino UNO | 1 |
| RFIDリーダー/ライターモジュール (RC522 / MFRC522) | 1 |
| ジャンパーワイヤー | 1セット |
| USB-A - Micro-USBケーブル | 1 |
| 4チャネルI2Cリレーコントローラー (ControlEverything.com) | 1 |
使用するソフトウェアとオンラインサービス
- Arduino IDE
プロジェクト概要
このチュートリアルでは、Arduino UNOとRC522 RFIDモジュールを使用して、ポータブルなRFIDドアロックシステムを構築する方法を解説します。認証されたRFIDカードまたはキーフォブをかざすとリレーが作動し、ドアロックを解除できます。非常にシンプルで低コストなプロジェクトです。
RFIDリーダーの基礎知識
RFID(Radio Frequency Identification)は、電磁場を利用して短距離でデータをやり取りする識別システムです。タグ(カードやキーフォブ)には固有のUID(識別番号)が記録されており、リーダーがこれを読み取ります。MFRC522チップを搭載したRC522モジュールは安価(数ドル程度)で入手でき、1KBメモリ付きのカードタグとキーフォブタグが付属していることが多いです。また、タグへの書き込みも可能です。
ハードウェア接続 (Arduino UNO - RC522)
| RC522ピン | Arduinoピン |
|---|---|
| SDA (SS) | Digital 10 |
| SCK | Digital 13 |
| MOSI | Digital 11 |
| MISO | Digital 12 |
| IRQ | 未接続 |
| GND | GND |
| RST | Digital 9 |
| 3.3V | 3.3V (5Vには接続しないこと) |
ライブラリのインストールとUIDの取得
- Arduino IDEで「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」から「MFRC522」を検索しインストールします。
- 「ファイル」→「スケッチ例」→「MFRC522」→「DumpInfo」を開き、ボードに書き込みます。
- シリアルモニタを開き(ボーレート9600)、RFIDカード/キーフォブをリーダーにかざします。
- 表示されるUID(例:
89 18 79 63)をメモしておきます。
メインスケッチの書き込みと動作確認
以下のスケッチを書き込み、content.substring(1) == "89 18 79 63" の部分を先ほどメモしたUIDに変更してください。認証済みのカードをかざすと「Authorized access」と表示され、リレーが1秒間ON(LOW)になります。未登録のカードでは「Access denied」と表示されリレーはOFF(HIGH)のままです。
#include <SPI.h>
#include <MFRC522.h>
#define RELAY 8
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
pinMode(RELAY, OUTPUT);
digitalWrite(RELAY, HIGH); // 初期状態:リレーOFF
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println(F("カードをリーダーにかざしてください..."));
Serial.println();
}
void loop() {
// 新しいカードを検出
if (!mfrc522.PICC_IsNewCardPresent()) return;
if (!mfrc522.PICC_ReadCardSerial()) return;
// UIDを文字列に変換
String content = "";
Serial.print(F("UID tag: "));
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
content.toUpperCase();
// 認証判定
if (content.substring(1) == "89 18 79 63") { // ★ここに自分のUIDを設定
Serial.println(F("Authorized access"));
Serial.println(F("Relay ON"));
digitalWrite(RELAY, LOW); // リレーON(アクティブLOWの場合)
delay(1000);
digitalWrite(RELAY, HIGH); // リレーOFF
} else {
Serial.println(F("Access denied"));
Serial.println(F("Relay OFF"));
}
delay(500); // 連続読み取り防止
}
回路図


参考情報
- RC522モジュールの動作電圧は3.3Vです。5Vに接続すると破損する恐れがあります。
- リレーモジュールがアクティブHIGHの場合は、
digitalWrite(RELAY, HIGH)でON、LOWでOFFになるようコードを調整してください。 - 複数のカードを登録する場合は、UIDを配列で管理しループで比較するように拡張できます。
製造プロセス
- Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
- ArduinoとRC522で作るセキュアなRFIDドアロック(MIFARE 13.56MHz)
- Arduinoで作るセキュアなRFIDロック – ステップバイステップガイド
- Python連携で信頼性向上: Arduino RFID勤怠管理システム
- スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
- Arduino Nanoとロータリーエンコーダーで作る高精度測定ホイール
- シャープGP2Y1010AU0Fセンサーで作る高精度空気質モニター
- Arduino UNOとEthernetシールドで太陽放射を測定する自作ピラノメーター
- Arduino NanoとWS2812 LEDストリップで作る1次元ポンゲーム - 完全DIYガイド