PR

【電子工作でスマートホーム化】ArduinoとRFIDで作るドアロックシステム

手がデジタル ドア ロックの近くに青い RFID キー フォブを持っています。日本語と英語で「ArduinoとRFIDでドアロックシステムを作る」と書かれており、直訳すると「ArduinoとRFIDでドアロックシステムを作ろう」という意味になります。. arduino

はじめに

鍵を持ち歩かずにスマートにドアを開けたいと思ったことはありませんか?本記事では、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 ピン
SDAD10
SCKD13
MOSID11
MISOD12
RSTD9
GNDGND
3.3V3.3V

🔹 サーボモーターの接続

サーボ ピンArduino ピン
VCC5V
GNDGND
信号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

このシステムを導入して、鍵を持ち歩かないスマートな生活を実現しましょう!

コメント

タイトルとURLをコピーしました