はじめに
鍵を持ち歩かずにスマートにドアを開けたいと思ったことはありませんか?本記事では、ArduinoとRFIDを活用して、カードやICタグで施錠・解錠ができるドアロックシステムの作り方を解説します。
このシステムを導入すれば、家やオフィスのドアをカードやタグで簡単に解錠でき、さらに拡張すればスマホ連携やWi-Fi制御も可能になります。
1. RFIDドアロックシステムの概要
🔹 RFIDドアロックの仕組み
このシステムは、RFIDリーダーでICカードやタグのIDを読み取り、登録されたIDと一致すれば電気錠を解錠するという仕組みです。
✅ RFIDリーダーがカードのIDを取得
✅ ArduinoがIDをチェックし、一致すれば電磁ロックを解除
✅ 指定時間後に自動で再施錠
2. 必要な部品
部品名 | 用途 |
---|---|
Arduino Uno / Nano | 制御用マイコン |
MFRC522 RFIDモジュール | RFIDカードリーダー |
RFIDタグ / ICカード | 鍵として使用 |
サーボモーター(SG90) | ドアロックの開閉用 |
リレー(電磁ロックを使用する場合) | ロックの制御 |
5V 電磁ロック(オプション) | 強固なロックを実現 |
ジャンパーワイヤー | 配線接続用 |
ブレッドボード | 回路テスト用 |
3. 配線と回路図
🔹 RFIDリーダー(MFRC522)の接続
RFID ピン | Arduino ピン |
SDA | D10 |
SCK | D13 |
MOSI | D11 |
MISO | D12 |
RST | D9 |
GND | GND |
3.3V | 3.3V |
🔹 サーボモーターの接続
サーボ ピン | Arduino ピン |
VCC | 5V |
GND | GND |
信号 | D6 |
4. プログラムの実装
以下のコードをArduinoに書き込むことで、RFIDカードを使ったドアロックシステムを構築できます。
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define SERVO_PIN 6
MFRC522 rfid(SS_PIN, RST_PIN);
Servo lockServo;
const char* authorizedUID = "A1 B2 C3 D4"; // 許可されたID
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
lockServo.attach(SERVO_PIN);
lockServo.write(0); // 初期状態はロック
Serial.println("RFIDドアロックシステム起動中...");
}
void loop() {
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
return;
}
String uid = "";
for (byte i = 0; i < rfid.uid.size; i++) {
uid += String(rfid.uid.uidByte[i], HEX) + " ";
}
uid.trim();
Serial.println("カードID: " + uid);
if (uid.equals(authorizedUID)) {
Serial.println("認証成功!ドアを開けます。");
lockServo.write(90); // サーボを回して解錠
delay(5000); // 5秒後にロック
lockServo.write(0);
} else {
Serial.println("認証失敗!アクセス拒否。");
}
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}
💡 登録されたカードIDを使えば、特定のユーザーのみがドアを開けられます。
5. 応用機能の追加
🔹 スマートフォン連携(Wi-Fi制御)
ESP32を活用すれば、スマホアプリやWebインターフェースからドアを解錠することも可能です。
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
AsyncWebServer server(80);
Servo lockServo;
void setup() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
lockServo.attach(6);
server.on("/unlock", HTTP_GET, [](AsyncWebServerRequest *request){
lockServo.write(90);
request->send(200, "text/plain", "Door Unlocked");
});
server.begin();
}
🔹 IFTTTやLINE通知を活用
RFIDカードの使用履歴を記録し、LINEやスマホ通知でログを確認できます。
🔹 指紋認証・暗証番号入力の追加
さらに高度なセキュリティを求める場合、指紋センサーやキーパッドを追加し、二段階認証を導入することも可能です。
6. よくあるトラブルと解決策
🔹 RFIDが読み取れない
- 配線ミスがないか確認
- RFIDカードのUIDをシリアルモニタで確認
- 電圧(3.3V)が適切に供給されているかチェック
🔹 サーボが動かない
Servo.attach()
のピン指定を確認- 電源が不足していないか確認(外部電源推奨)
🔹 スマホ連携ができない(Wi-Fiモデル)
- ルーターが2.4GHz帯を使用しているか確認(ESP32は5GHz未対応)
- WebサーバーのIPアドレスをチェック
7. まとめ
本記事では、ArduinoとRFIDを使ったドアロックシステムの作り方を解説しました。
💡 今回のポイント
✅ RFIDカードでドアを解錠
✅ サーボモーターで物理的にロックを開閉
✅ ESP32を使えばスマホで解錠も可能!
✅ 二段階認証やログ記録の拡張もOK
このシステムを導入して、鍵を持ち歩かないスマートな生活を実現しましょう!
コメント