Arduinoで作るセキュアなRFIDロック – ステップバイステップガイド
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | メインマイコンボード |
| RFIDリーダー (RC522) | 1 | 13.56MHz対応 |
| OLEDディスプレイ (128×64, I2C) | 1 | SSD1306コントローラー搭載 |
| ブレッドボード (小) | 1 | |
| ジャンパーワイヤー | 多数 | |
| RFIDタグ/カード | 2 | キーチェーン型含む |
| モバイルバッテリー (任意) | 1 | 携帯用電源として |
使用するソフトウェアとオンラインサービス
- Arduino IDE
- MFRC522ライブラリ (RFID用)
- Adafruit SSD1306ライブラリ (OLED用)
- Adafruit GFXライブラリ (グラフィック用)
プロジェクト概要
このチュートリアルでは、ArduinoとRC522 RFIDリーダーを使用して、シンプルなロックシステムを構築します。RFIDタグをリーダーにかざすと、その固有ID (UID) を読み取り、OLEDディスプレイに表示します。事前に登録されたUIDと一致する場合のみ「Unlocked (解錠)」のメッセージを表示し、それ以外は拒否します。総費用は約1,500円程度で実現可能です。

ステップ1: 部品の準備
上記の部品をすべて揃えてください。RFIDリーダーとタグ2枚のセットは約500円、OLEDディスプレイは約300円で入手可能です。
ステップ2: RC522 RFIDリーダーの理解

RFIDタグ内部には小さなチップとコイルがあり、バッテリーは不要です。リーダーから発せられる電磁界によって誘導電流でチップが駆動され、UIDを無線で送信します。読み取り距離は最大約20mmです。各タグは固有のUIDを持ち、最大1KBのデータを格納できます (今回はUIDのみ使用)。
ステップ3: OLEDディスプレイの特徴

128×64ピクセルの小型OLEDで、消費電流は10〜20mAと省電力。I2Cインターフェースのため配線はVCC、GND、SCL、SDAの4線のみ。Adafruitライブラリが充実しており、初心者にも扱いやすいディスプレイです。黄色と青色の2色表示タイプもあります。
ステップ4: 配線方法

⚠️ 重要: RFIDリーダーは必ず3.3Vで動作させてください。5Vに接続すると破損します。
RFIDリーダー (RC522) – Arduino UNO 接続 (SPI接続)
| RC522ピン | Arduinoピン |
|---|---|
| VCC | 3.3V |
| GND | GND |
| RST | デジタルピン 9 |
| IRQ | 未接続 |
| MISO | デジタルピン 12 |
| MOSI | デジタルピン 11 |
| SCK | デジタルピン 13 |
| SDA (SS) | デジタルピン 10 |
OLEDディスプレイ (SSD1306) – Arduino UNO 接続 (I2C接続)
| OLEDピン | Arduinoピン |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SCL | アナログピン 5 (A5) |
| SDA | アナログピン 4 (A4) |
ブレッドボードのプラスレールを3.3Vに、マイナスレールをGNDに接続し、両モジュールの電源を共有させると配線がスッキリします。
ステップ5: プログラムコード

必要なライブラリのインストール
- Arduino IDEで「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」を開く
- 「MFRC522」で検索しインストール
- 「Adafruit SSD1306」と「Adafruit GFX」をインストール
Adafruit SSD1306ライブラリの設定変更
Adafruit_SSD1306.h ファイルを開き、以下を修正:
// 69行目を有効化 (128x64用)
#define SSD1306_128_64
// 70行目をコメントアウト
// #define SSD1306_128_32
メインコードのポイント
// 許可するUIDを登録 (実際のタグのUIDに変更してください)
int code[] = {69, 141, 8, 136}; // ここに登録したいタグのUIDを入力
void setup() {
rfid.PCD_Init(); // RFIDリーダー初期化
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // OLED初期化 (I2Cアドレス0x3C)
}
void loop() {
// 100msごとにタグをチェック
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
// UIDを表示
printUID();
// UIDを比較
bool match = true;
for (int i = 0; i < 4; i++) {
if (rfid.uid.uidByte[i] != code[i]) match = false;
}
if (match) {
Serial.println("\nI know this card!");
printUnlockMessage(); // 「Unlocked」表示
} else {
Serial.println("\nUnknown Card");
}
rfid.PICC_HaltA();
}
delay(100);
}
複数のタグを登録する場合は、code を2次元配列にしてループで比較するように拡張できます。完全なコードはチュートリアルに添付の RFID.ino を参照してください。
ステップ6: まとめと発展アイデア

低コストでRFID認証システムが構築できました。これを発展させて、以下のような応用が可能です:
- ドアロックやボックスロックへの実装 (サーボモーターやソレノイド連動)
- 複数ユーザー管理 (UIDリストをEEPROMに保存)
- 入退室ログの記録 (SDカードやRTCモジュール追加)
- RFIDタグへのデータ書き込み/読み出し (次回チュートリアルで解説予定)
- キッズ向けインタラクティブゲーム (複数のタグでストーリー分岐など)
ご質問やアイデアがあれば、コメント欄でお気軽にシェアしてください!
製造プロセス
- ArduinoとRC522で作るセキュアなRFIDドアロック(MIFARE 13.56MHz)
- Arduino Nanoと指紋センサーで作るバイオメトリクス認証システム – 完全チュートリアル
- Arduino UNOで作るミニピアノ - ステップバイステップチュートリアル
- Arduinoで作るポータブルRFIDドアロック - ステップバイステップガイド
- RFIDとリレーでPCをセキュアに:Arduinoドアロック応用
- HID Prox RFIDリーダーをArduino UNOと連携:ステップバイステップセットアップ
- Arduino、ENC28J60 Ethernet、MFRC522でネットワーク対応RFIDカードリーダーを構築
- Windows PCをRFIDでロック/アンロック: Arduino Pro Microで作る簡易セキュリティ
- Arduinoプロトスレッディング入門:シングルコアで疑似マルチスレッドを実現するステップバイステップガイド
- MPU6050 完全攻略:Arduino で加速度センサー&ジャイロを使いこなすチュートリアル
- Arduino初心者チュートリアル01: 最初のプロジェクトを始めよう