Raspberry Pi、Arduino、RFIDで部品を効率的に整理・検索するシステム
必要な部品と材料
| Raspberry Pi 2 Model B | ×1 |
| Arduino UNO | ×1 |
| JT2850 RFIDモジュール(UHF帯) | ×1 |
| JT606 RFIDアンテナ | ×1 |
必要な工具と機械
- Windows 10 + Visual Studio 2015搭載PC
- Androidスマートフォン
使用アプリとオンラインサービス
- Microsoft Windows 10 IoT Core
- Microsoft Azure
- Microsoft Visual Studio 2015
プロジェクト概要
背景
探し物に時間をかけても見つからない経験はありませんか?RFID技術を活用し、RFIDリーダーと複数のRFIDタグでアイテムを管理。新しいアイテム購入時にタグを貼りシステム登録すれば、スマホアプリで検索するだけで「どの部屋にあるか」が即座にわかります。
システム全体像
構成要素:
- UHF RFIDリーダーモジュール(複数部屋に配置)
- UHF RFIDアンテナ
- Arduino UNO(各リーダーに接続)
- Raspberry Pi 2(Windows 10 IoT Core稼働、全Arduinoを統括)
- モバイルアプリ(検索UI)
- Azure Web API + SQL Database(データ保存)
動作フロー
- ユーザーがモバイルアプリでアイテム検索
- 検索リクエストがWi-Fi経由でRaspberry Pi 2へ
- Raspberry Pi 2から全Arduino UNOへ読み取りコマンド送信
- 各ArduinoがRFIDモジュールに読み取り指示
- 目的のRFIDタグを検出したリーダーが位置情報を返却
- Raspberry Pi 2が結果を集約し、アプリに返却
開発環境の構築
Raspberry Pi 2のIPアドレス確認
PCとRaspberry Pi 2をLANケーブルで接続し、「Windows IoT Core Watcher」でIPアドレスを確認。
Visual Studio 2015でバックグラウンドアプリ作成
- File → New → Project
- Visual C# → 「Background Application (IoT)」選択
- プロジェクトプロパティ → Debugタブで設定:
- Platform: ARM
- Target Device: Remote Machine
- Remote Machine:
- 「Use authentication」のチェックを外す
StartupTask.csにコード記述
デバッグ方法
ブレークポイント設定 → 「Remote Machine」ボタンでデバッグ開始。変数のウォッチ、ステップ実行などが可能。
Azure Web APIの構築
ASP.NET Web Applicationプロジェクト作成
- ASP.NET Web Applicationプロジェクト作成、MVCテンプレート選択
- 認証: 「No authentication」
- 「Host in the cloud」チェックでAzure Web Appに直接デプロイ可能
Entity Frameworkでデータベース構築
- NuGet Package Manager Consoleで
Install-Package EntityFramework - Modelクラス作成(
DataAnnotations、DataAnnotations.Schema使用) - Controllersフォルダ右クリック → Add → New Scaffolded Item →「Web API 2 Controller with actions, using Entity Framework」
- Data Contextクラス新規作成
- Package Manager Consoleでマイグレーション実行:
Enable-Migrations Add-Migration <Name> Update-Database
Web API発行
Build → Publish → Microsoft Azure Web Apps選択 → 設定確認 → Publish。発行後、Chrome拡張「Advanced REST Client」等でREST APIテスト可能。
Windowsユニバーサルアプリ(クライアント)作成
Universal Appでタブレット/モバイル/PC共通コード。GitHubのMyThingAppを置き換えて使用。
通知ハブとUWPプッシュ通知の設定
- Windows Dev Centerでアプリ名予約
- プロジェクト右クリック → Store → Associate App with the Store
- Notification Hubsチュートリアルに従いハブ作成
App.xaml.csに通知登録コード追加、MainPage.csでNavigationCacheMode.Required設定- Web APIの
MyThingControllerでレコード作成時にトースト通知送信スレッド起動
コード
Arduino RFIDリーダー用コード
/* RFIDモジュールに読み取りコマンド送信、タグ読み取り時にシリアルポートへ返却 */
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
Serial.begin(9600);
while (!Serial) { ; }
mySerial.begin(9600);
}
void loop() {
if (mySerial.available()) {
byte message[] = {0xA0,0x06,0x80,0x00,0x01,0x02,0x01,0xD6};
mySerial.write(message, sizeof(message));
if(Serial.available()) Serial.write(mySerial.read());
}
}
GitHubリポジトリ: https://github.com/seeyouu87/where-is-my-thing
カスタムパーツ
- UHF RFIDリーダーモジュール (uhf_reader_jt2850.svg)
回路図
Fritzing回路図: Arduino-UHF RFIDモジュール接続図
製造プロセス
- QR・RFID・体温検知統合アクセス制御システム(Raspberry Piベース)
- 適切な開発拠点の選び方:メイカースペース、アクセラレーター、生産パートナー
- 鋸挽き概念の起源:古代ツールから現代機械へ
- FDM 3Dプリンティングの現在:マイルストーンと将来展望
- インダストリー4.0の現在:2017年展望と現状
- 圧縮空気が支える日常プロセス:身近な用途を紹介
- Microsoft Azureチートシート2020 – Azureサービスとアーキテクチャの決定版ガイド
- エッジの定義:エッジコンピューティングが真に起こる場所
- パッシブRFIDの代替:正確な資産追跡のための4つの先進技術
- アクティブRFID:包括的概要と実用ユースケース
- 金属の起源:星から産業へ