SafeGear Check:職場の安全基準遵守のためのNicla VisionによるAI搭載PPE検出

画像出典: Ahmad Soleh/Stock.adobe.com; AIにより生成
執筆:Venesha Arockiasamy(マウザー・エレクトロニクス)
2025年12月4日公開
米国労働省労働安全衛生局(OSHA)の調査によると、深刻な手の怪我を負った労働者の70%は、当時手袋を着用していませんでした。 [1]これは、労働者が個人用保護具(PPE)を着用していれば、職場での怪我を防ぐことができたであろう例の1つにすぎません。
本プロジェクトでは、作業エリアへの入室時に個人をスキャンし、必要な個人用保護具(PPE)を着用していることを確認する安全装備検出システム「SafeGear Check」を紹介します。このシステムは、Arduino Nicla Vision人工知能(AI)カメラモジュールと、Edge Impulseで学習させたAIモデルを採用しています。検出結果に基づいて視覚的および音声的なフィードバックを行うためのライトとスピーカーも備えています。
このプロジェクトでは、SafeGear Checkシステムの構築方法を学びます。これには、システムの効率を向上させるために、Nicla Visionの出力をWebインターフェイスに接続する方法も含まれます。
プロジェクト資料およびリソース
プロジェクトハードウェア
- Arduino Nicla Vision
- Adafruit タワーライト
- 12V外部電源
- DFRobot DFPlayer mini MP3プレーヤー
- Same Sky CMS-235-18L152スピーカ
- Raspberry Pi A2クラスmicroSDカード
- はんだ付け抵抗器キット
- EPCOS 1000 µF ラジアルコンデンサ
- Central Semiconductor社製バイポーラNPNトランジスタ(3)
- Diotec Semiconductor社製整流ダイオード、DO-41、1000V、1A (3個)
- BusBoard Prototype Systems BB830Tブレッドボード
- Grayhill社製タクタイルスイッチ(4)
- Micro USBケーブル
プロジェクトコード/ソフトウェア
その他のリソース
プロジェクトハードウェアの概要
Arduino Nicla Vision(図1 )は、画像解析と処理用に設計されたAI統合型カメラモジュールです。このモジュールは、距離を測定するためにSTMicroelectronics VL53LIXタイムオブフライト(ToF)センサーをベースとした近接センサーを備えています。Nicla Visionは、物体認識や資産追跡に適しています。モジュールの6軸慣性計測ユニット(IMU)により、3D加速度計データを取得でき、物体認識のための機械学習が可能になります。

図1: Arduino Nicla Visionモジュール(出典:マウザー・エレクトロニクス)
プロジェクトソフトウェアの概要
本プロジェクトでは、以下のソフトウェアアプリケーションを使用します。
- Edge Impulseは、既存のデータセットから各個人用保護具(PPE)の画像を複数入力することで、PPEを識別するAIモデルをトレーニングします。
- OpenMV IDEは、エッジインパルスモデルをNicla Visionにアップロードしてテストします。また、検出結果に基づいてライトやスピーカーを制御するなど、Nicla Visionが実行する必要のあるすべての操作のコードも含まれています。
- Visual Studio Code(VS Code)は、雇用主が必要な個人用保護具(PPE)を設定し、従業員がログインしてスキャンを受けるためのWebインターフェイス(フロントエンドとバックエンド)です。
プロジェクトの開発
このプロジェクトの目標は、特定の種類の個人用保護具(PPE)を識別するようにAIモデルを訓練し、そのモデルをNicla Visionモジュールにアップロードし、モジュールをプログラムして、視覚的および音声によるフィードバックのためにライト、近接センサ、スピーカを制御することです。また、このプロジェクトには、雇用主が必要なPPEを指定し、従業員がサインインしてPPEを着用していることを示すことができるWebインターフェイスの開発も含まれています。
まず、Edge ImpulseでAIモデルのトレーニングを行い、その後、ハードウェアとソフトウェアのコンポーネントについて説明します。
エッジインパルスモデルのトレーニング
Edge Impulseは、モデルのトレーニングと、Nicla Visionなどのエッジコンピューティングデバイスへの展開を行うためのAIプラットフォームです。複数の個人用保護具(PPE)の画像データセットをアップロードすることで、作業員が着用しているPPEを識別するAIモデルをトレーニングできます。
モデルのトレーニングを開始するには、まず、各PPE(ヘルメット、ベスト、マスクなど)を着用した作業員の画像が必要です。これらの画像は、 Roboflow Universeなどで入手できる既存のデータセットから取得できます。モデルがPPEを正しく識別できるようにするには、各PPEについて、異なる角度からの画像や着用者の画像を含め、少なくとも100枚の画像を収集してください。これにより、モデルはPPE自体ではなく、PPEを着用した作業員を識別できるようになります。これが主な目標です。
- Edge Impulseを開き、 「新規プロジェクトの作成」をクリックします。
- 左側のナビゲーションペインで「データ取得」をクリックします。
- 「アップロード」をクリックして、収集したすべての画像をアップロードしてください。
- 「ラベル付けキュー」をクリックすると、先ほどアップロードした画像が表示されます。
- 各画像について、サンプル名をクリックし(図2 )、PPEの周囲に境界ボックスを描画してラベルを付けます。

図2:ラベル貼付キュー(出典:マウザー・エレクトロニクス)
注: PPEにラベルを付ける際は、PPEを着用している人を含めてバウンディングボックスを描画してください(図3 )。例えば、ヘルメットにラベルを付ける場合は、ヘルメットをかぶった作業員の頭部を囲むようにバウンディングボックスを描画します。これにより、モデルはヘルメット自体ではなく、作業員がヘルメットを着用していることを正しく認識します。

図3:境界ボックスの描画とラベル付け(出典:マウザー・エレクトロニクス)
- 「インパルスの作成」をクリックして、インパルス設定を構成します(図4 )。
- 画像データブロックで、幅と高さの両方に72を入力します。サイズ変更モードのドロップダウンメニューで、 「最短軸を固定」を選択します。
- 画像ブロックで、 「名前」フィールドに「画像」と入力し、ドロップダウンメニューから「画像」を選択します。
- オブジェクト検出(画像)ブロックで、名前に「オブジェクト検出(バウンディングボックス)」と入力します。ブロックの名前が「オブジェクト検出(バウンディングボックス)」に変更されます。
- 出力機能で「画像」を選択し、PPEラベルの番号と名前を入力します。
- 「Impulseを保存」をクリックしてください。

図4:パルス設定(出典:マウザー・エレクトロニクス)
- クリックオブジェクト検出(バウンディングボックス)
- 開いたニューラルネットワーク設定ウィンドウで、次のパラメータを入力します(図5 )。
- トレーニングサイクル数:100
- 学習済みオプティマイザを使用する: チェックボックスの選択を解除する
- 学習率:0.001
- トレーニングプロセッサ: CPU
- データ拡張:チェックボックスを選択してください
- 検証セットのサイズ:20%
- プロファイル int8 モデル: チェックボックスを選択してください

図5:ニューラルネットワークの設定(出典:マウザー・エレクトロニクス)
- ニューラルネットワークアーキテクチャ(図6 )で、 FOMO(Faster Objects, More Objects)MobileNetV2 0.35を選択します。
- 「保存してトレーニング」をクリックしてください。

図6:ニューラルネットワークのアーキテクチャ設定(出典:マウザー・エレクトロニクス)
このツールは、アップロードした画像に基づいてモデルのトレーニングパフォーマンスを表示します(図7 )。

図7:モデルテストの性能(出典:マウザー・エレクトロニクス)
注:特定の個人用保護具(PPE)の識別率が低い場合は、画像を追加でアップロードしてモデルを再学習させてください。 「ライブ分類」をクリックすると、他の画像でモデルをテストし、PPEを正確に識別できるかどうかを判断できます。
- モデルを完成させてテストしたら、左側のナビゲーションにある「デプロイ」をクリックしてください。
- デプロイメントオプションとしてOpenMVライブラリを検索して選択し、次にビルドをクリックします(図8 )。

図8: OpenMVライブラリの展開(出典:マウザー・エレクトロニクス)
このツールは、学習済みモデル、ラベル、および物体認識モデルのコードを含むPythonファイルを含むZIPフォルダを作成します。これらのファイルをすべて解凍してください。
OpenMV IDEでモデルを実行する
Edge Impulseを使用してモデルのトレーニングが完了したら、それをNicla Visionにアップロードし、OpenMV IDEで再度テストしてください。
- マイクロUSBケーブルを使用して、Nicla Visionをコンピュータに接続してください。
- 抽出したtrained.tfliteファイルとlabels.txtファイルを、自動的に開くNicla Visionのストレージフォルダにアップロードしてください。
- OpenMV IDEを開きます。
- ウィンドウ左下隅にある白い接続アイコンをクリックして、Nicla VisionをOpenMV IDEに接続してください。
- ウィンドウの左下隅にある緑色の再生ボタンをクリックして、 object_detection.pyを実行します(図9 )。
- カメラは窓の右側で起動するはずです。様々な個人用保護具(PPE)の画像をカメラに映し出して、モデルの動作を確認してください。
- ウィンドウの左下隅にある「シリアルターミナル」タブをクリックします。これにより、カメラの出力が表示されます。たとえば、ヘルメットをかぶった作業員をカメラに映すと、シリアルターミナルには「ヘルメット」と表示されます(図9 )。

図9:学習済みのエッジインパルスモデルをOpenMV IDE上で実行するNicla Vision(出典:マウザー・エレクトロニクス)
ハードウェアの接続
図10の回路図は、システムが正しく動作するために必要なハードウェア接続を示しています。コードにもこれらの具体的な接続が含まれているため、ピン番号との接続を正確に確認してください。


図10: SafeGear Checkのハードウェア概略図(出典:マウザー・エレクトロニクス)
図11は、ブレッドボード上に完成した回路を示している。

図11:完成したSafeGearチェック回路(出典:マウザー・エレクトロニクス)
回路を作成するには、以下の手順に従ってください。
- 押しボタンを接続してください。
- 各プッシュボタンについて、対角線上の2つの端子(つまり、対角線上の端子)を見つけます。対角線上の端子の1つをVCCに接続します。
- もう一方の対角線上の端子を10KΩ抵抗器の一方の端に接続し、抵抗器のもう一方の端をGNDに接続します。
- 抵抗器と同じ端子から、Nicla Visionの該当ボタンに割り当てられたピンにワイヤを接続します。ヘルメットボタンはPE13、ベストボタンはPE14、マスクボタンはPE11、グローブボタンはPF3です。
- 各プッシュボタンについて、手順1~3を繰り返してください。
- タワーライトを接続してください。
- 3つのNPNバイポーラトランジスタ(各色チャンネルに1つずつ)のエミッタをそれぞれGNDに接続します。
- 各トランジスタのベースを470Ω抵抗器の一方の端に接続します。
- 各抵抗器のもう一方の端を、それぞれ対応するNicla Visionの出力ピン(PG12、D2、D3)に接続します。
- 各コレクターを、対応するタワーライトの色付きの配線に接続してください。
- 緑色のライトワイヤ:PG12トランジスタのコレクタ
- 赤色の配線:D2トランジスタのコレクタ
- 黄色の配線:D3トランジスタのコレクタ
- トランジスタとLEDを逆電圧状態から保護するため、各コレクタをダイオードを介して+12Vラインに接続してください。(注:+12Vはタワーライト専用です。グランドは共通にする必要がありますが、電圧レールは絶縁する必要があります。)
デバッグのヒント:トランジスタでタワーライトを制御できない場合は、マルチメータをダイオードモードにして、各トランジスタが正しく機能していることを確認してください。ベース・エミッタ接合部とベース・コレクタ接合部の順方向電圧降下が適切かどうか(通常0.6V~0.7V)を確認してください。
- DFPlayerを接続します。
- 1KΩの抵抗器の一方の端をDFPlayerのRX端子に接続し、もう一方の端をNicla Visionのピン(D1)に接続します。
- 1000μFコンデンサの正極端子をDFPlayerのVCCに、負極端子をDFPlayerのGNDに接続してください。
- すべてのアース線をブレッドボードのアースレールに接続してください。
- 電源アダプタを壁のコンセントに差し込み、Nicla Visionをコンピュータに接続してください。
OpenMVコードへの追加
必要な個人用保護具(PPE)をすべて正しく識別できる動作モデルができたので、OpenMVでライブラリをインポートしたり、ハードウェアを初期化したり、ロジックステートメントをコードに追加したりできます。
ライブラリのインポート
必要なライブラリをインポートするには、以下のコードを使用してください。
import sensor, image, time, ml, math, uos, gc, pyb
マシンからピン、I2Cをインポート
from vl53l1x import VL53L1X
from pyb import UART
- センサと画像ライブラリにより、Nicla Visionカメラは目の前に立っている人物をスキャンし、必要な個人用保護具(PPE)を着用しているかどうかを判断することができます。
- 時間ライブラリは、Nicla Vision自体の検出期間を定義します。
- mlライブラリには機械学習モデルが含まれています。
- 数学ライブラリは、モデルで使用されるすべての計算を可能にします。
- uosライブラリは、microSDカード上のファイルを含むファイルシステム操作を処理します。
- ガベージコレクション(GC)ライブラリは、未使用のメモリを解放します。
- pybライブラリは、Nicla Visionからのすべてのハードウェア入力と、PCとNicla Vision間の通信を制御します。
- PinライブラリとI²Cライブラリを使用することで、Nicla Visionはタワーライトやスピーカなどのハードウェアを制御できるようになります。
- VL53L1Xライブラリを使用すると、近接センサを使用できます。
- UARTライブラリは、音声フィードバックのためにDFPlayerおよびスピーカーとの通信を可能にします。
ハードウェアの初期化
3つのステータスランプと4つのプッシュボタンをNicla Visionに接続するには、それらを初期化する必要があります。図10の回路図を参照し、物理的な接続がコードで指定されているものと一致していることを確認してください。
green_led = Pin("PG12",Pin.OUT)
yellow_led = Pin("D3",Pin.OUT)
red_led = Pin("D2",Pin.OUT)
button_helmet = Pin("PE13",Pin.IN)
button_vest = Pin("PE14",Pin.IN)
button_mask = Pin("PE11",Pin.IN)
button_gloves = Pin("PF3",Pin.IN)
ログファイルの初期化
作業者情報と検出結果を保存するには、まず system_log.txt という名前のテキストファイルを作成する必要があります。次に、そのファイル名をコードに含めます(例:LOG_FILE = “system_log.txt”)。これにより、システムは日付、作業者名、および検出結果を含むタイムスタンプ付きのレコードを作成します。
def log_event(username, message):
試す:
dt = rtc.datetime()
タイムスタンプ = "{:04d}-{:02d}-{:02d} {:02d}:{:02d}:{:02d}".format(dt[0], dt[1], dt[2], dt[4], dt[5], dt[6])
log_entry = f"{timestamp},{username},{message}\n"
with open(LOG_FILE, "a") as f:
f.write(log_entry)
except Exception as e:
print(f"エラー: ログファイルへの書き込みに失敗しました: {e}")
DFPlayerとスピーカーを初期化しています
以下のコードは、検出結果に基づいて音声出力を行うために、UARTがDFPlayer Miniと通信するように構成されていることを示しています。DFPlayerに送信される各コマンドは、固定のフレーム構造に従います。開始バイト(0x7E)で始まり、バージョンバイト、コマンド長、その他のパラメータを含み、終了バイト(0xEF)で終わります。DFPlayerはこのフレームを使用して音量を設定し、再生に適したオーディオファイルを選択します。
START_BYTE = 0x7E
VERSION_BYTE = 0xFF
COMMAND_LENGTH = 0x06
END_BYTE = 0xEF
ACKNOWLEDGE = 0x00
uart = UART(9, 9600)
uart.init(9600, bits=8, parity=None, stop=1, timeout_char=1000)
USB COMポートの接続
DFPlayerとスピーカはUART接続を使用するため、Nicla Visionの検出結果をWebインターフェイスに表示するには、USB接続を確立する必要があります。これは、Nicla VisionとWebインターフェイス間のUSB通信を確立するための重要な手順です。
usb = pyb.USB_VCP()
近接センサのしきい値を設定する
以下のコードは、VL53L1X ToFセンサが検出できる最大距離(1,000mm)を設定し、センサが動きや存在を検出したときにシステムが作動するように指示します。
PROXIMITY_THRESHOLD_MM = 1000
tof = なし
試す:
tof_i2c = I2C(2)
tof = VL53L1X(tof_i2c)
print("INFO: 近接センサが初期化されました。")
except Exception as e:
print(f"エラー: 近接センサーが見つかりません。エラー: {e}")
近接センサが作動すると、黄色のタワーライトが点灯し(図12 )、Nicla Visionが作業員の存在を検知し始めます。作業員がサインインすると、システムは存在検知を表示します。

図12:近接センサが黄色のタワーライトを点灯させる様子。(出典:マウザー・エレクトロニク)
プッシュボタン入力の初期化
以下のコードはプッシュボタンを初期化し、必要な個人用保護具(PPE)を選択できるようにします。選択された各項目は、Webインターフェースの「雇用主設定」に表示されます。
PPEの選択を終えて「ログアウト」をクリックすると、システムはリストを更新し、Nicla Visionに送信します。Nicla Visionはこのリストを使用して、作業員が必要な装備を遵守しているかどうかを確認します。
while(True):
is_helmet_pressed = (button_helmet.value() == 1)
is_vest_pressed = (button_vest.value() == 1)
is_mask_pressed = (button_mask.value() == 1)
is_gloves_pressed = (button_gloves.value() == 1)
required_items = []
if is_helmet_pressed:
required_items.append("Helmet")
if is_vest_pressed:
required_items.append("Vest")
if is_mask_pressed:
required_items.append("Mask")
if is_gloves_pressed:
required_items.append("Gloves")
current_gear_list = ",".join(required_items)
if current_gear_list != last_gear_list_sent:
print(f"GEAR_LIST:{current_gear_list}")
last_gear_list_sent = current_gear_list
検出結果のための論理ステートメントの作成
すべてのハードウェア接続を初期化した後、検出結果のロジックステートメントを作成します。これらのステートメントは、PPEの有無に対するシステムの応答方法を定義します。Nicla Visionが必要なPPEをすべて検出した場合、緑色のランプが点灯し、Webインターフェイスに「すべてクリア」メッセージが表示され、スピーカーから「すべてクリア」の音声ファイルが再生されます。Nicla VisionがPPEをすべて検出できなかった場合、赤色のランプが点灯し、Webインターフェイスに不足しているアイテムが表示され、スピーカーから「不足している装備」の音声ファイルが再生されます。
if all_gear_found:
final_result_message = "問題なし。サイトへお進みください。"
green_led.high()
send_command(0x03, 0x00, 0x02)
print(f"RESULT:{final_result_message}")
time.sleep_ms(500)
それ以外:
final_result_message = "装備不足: {}。現場に入る前に、必要な安全装備をすべて着用してください。.".format(", ".join(missing_items))
red_led.high()
send_command(0x03, 0x00, 0x01)
print(f"RESULT:{final_result_message}")
Visual Studio Code を使用したWebインターフェイスの開発
このプロジェクトでは、VS Code を使用して Web インターフェイスのフロントエンドとバックエンドの両方を管理しています。フロントエンドのファイルはページの設計を定義し、雇用主と従業員の両方がアクセスできるようにします。これらのファイルはpublicフォルダーにあり、従業員ダッシュボード ページ、雇用主と従業員のログイン ページ、および雇用主の設定ページが含まれています (図 13 )。
これらのファイルにアクセスするには、VS CodeでSGC-WEBプロジェクトを開きます。開くと、左側のパネル(エクスプローラ)に、 publicフォルダーを含むSGC-WEB内のすべてのフォルダーが表示されます。
server_appフォルダにはserver.jsファイルが含まれており、このファイルにはNicla VisionからWebインターフェイスへのシリアルポート接続に関する情報が含まれています。

図13: Visual Studio Codeのファイルレイアウト(出典:マウザー・エレクトロニクス)
以下のコードは、Webインターフェイスとシリアルポート接続を確立し、サーバーを作成およびセットアップします。
const express = require('express');
const http = require('http');
const { Server } = require("socket.io");
const { SerialPort } = require('serialport');
const { ReadlineParser } = require('@serialport/parser-readline');
const app = express();
const server = http.createServer(app);
const io = new Server(server);
以下のコードは、プッシュボタンインターフェイス、Nicla Vision、およびWebアプリケーション間のデータ交換を管理します。parser.on('data', ...) 関数は、Nicla VisionからNode.jsバックエンドに送信されるシリアルメッセージをリッスンします。選択された安全装備を表す入力データが受信されると、サーバーはWebインターフェイスにギアリスト更新イベントを発行します。処理後、Nicla Visionは選択された安全装備が識別されたかどうかを示す検出結果を送信し、これは検出イベントとして発行されます。これらの結果は、Webインターフェイス上の対応する視覚的インジケータとスピーカーからの音声を制御します。
parser.on('data', (data) => {
console.log('Niclaからのデータ:', data);
if (data.startsWith('GEAR_LIST:')) {
const listString = data.substring(10).trim();
io.emit('gear-list-update', listString);
}
parser.on('data', (data) => {
console.log('Data from Nicla Vision:', data);
if (data.startsWith('RESULT:')) {
const userMessage = data.substring(7);
io.emit('detection', userMessage);
} else if (data.startsWith('ERROR:')) {
io.emit('detection', data);
}
server.js ファイルの残りの部分は、Express を使用してサーバーのルートを定義します。これらのルートは、どのフロントエンド ファイル (ログイン ページや雇用主ダッシュボードなど) がブラウザに提供されるか、また、ユーザーが Web インターフェイスを操作したとき (たとえば、ユーザー名の送信、ログイン、ページ間の移動など) にどのようなアクションが発生するかを指定します。このファイルには、node server.js を実行して Web インターフェイスを起動したときにサーバーを初期化するロジックも含まれています。コード全体にコンソール ログ ステートメントが含まれており、ユーザー ログインやギア検出からログアウトまでのすべての機能が正しく実行され、システムが意図どおりに動作していることを確認します。サーバーを実行する前に、コンピューターのデバイス マネージャーで Nicla Vision に割り当てられている COM ポートを確認し、server.js で指定されているポート (たとえば COM5) と一致していることを確認してください。これにより、Nicla Vision と PC 間のシリアル通信が正しく行われることが保証されます。
実行
これで、すべてのハードウェアおよびソフトウェアコンポーネントを統合する準備が整いました(図14 )。
- VS Codeで、server.jsファイルを含むフォルダでターミナルを開き、 npm initを実行してpackage.jsonファイルを作成します。これにより、node.js環境が初期化されます。
- Expressフレームワークをインストールするには、 `npm install express`を実行してください(これにより、node_modulesフォルダが生成され、package-lock.jsonが更新されます)。
- package.jsonに記載されている追加パッケージをインストールするには、 npm installを実行してください。
これらの依存関係により、バックエンドはWebインターフェイスとNicla Visionの両方と通信できるようになります。
- Nicla Vision用のOpenMV IDEコードをOpenMV IDEに保存し、フロントエンドとバックエンドのすべてのファイルをVS Codeに保存します。
- ポートの競合を防ぐため、Nicla Visionの電源プラグを抜き、再度差し込んでください。

図14: SafeGear Checkの最終セットアップ(出典:マウザー・エレクトロニクス)
以下の手順では、server.js ファイルを実行して Web インターフェイスを開き、雇用主としてサインインして設定を構成し、最後に従業員としてサインインして、PPE を着用した状態でシステムの機能をテストします。
- VS Code ターミナルでnode server.js を実行します (図 15 )。
これはクリック可能なリンクを提供します: http://localhost:3000

図15: VS Codeターミナルでserver.jsを実行する(出典:マウザー・エレクトロニクス)
- リンクをクリックすると、SafeGear CheckのWebインターフェイスが開きます (図 16 )。

図16:従業員サインインページは、メインランディングページでもあります。(出典:マウザー・エレクトロニクス)
- ページ右上の「雇用主設定」ボタンをクリックしてください。
- 雇用主サインインページ(図17 )で、雇用主IDとして「Mouser」と入力します。必要に応じて、VS Codeの「employer-login」ファイルでこのフィールドを変更できます。

図17:雇用主のサインインページ(出典:マウザー・エレクトロニクス)
- 雇用主設定ページ(図18 )には、回路上のどのボタンがどの個人用保護具(PPE)に対応しているかが示されています。ブレッドボード上で、必要なPPEに対応するボタンを押してください。

図18:雇用主設定ページ(出典:マウザー・エレクトロニクス)
- ボタンを押すと、対応するPPEの名前が画面に表示され(図19 )、選択したものがNicla Visionがチェックする必須PPEとして確定されます。
- 必要な個人用保護具(PPE)を設定したら、 「サインインページに戻る」をクリックしてログアウトし、従業員サインインページに戻ります。

図19:必要な個人用保護具(PPE)の設定。(出典:マウザー・エレクトロニクス)
- 氏名(姓と名)を使用して、従業員サインインページ(図20 )にサインインしてください。

図20:従業員サインインページ。(出典:マウザー・エレクトロニクス)
- ログインの確認メッセージが表示されたら(図21 )、 [安全チェック開始]をクリックしてください。近接センサがあなたの存在と動きを検知し、黄色のライトが点灯します。

図21:安全点検開始ページ(出典:マウザー・エレクトロニクス)
- Nicla Visionはあなたをスキャンし、従業員設定ページで選択したすべての個人用保護具(PPE)を着用しているかどうかを確認します。
- Nicla VisionがPPEの紛失を検出すると、赤色のライトが点灯し(図22 )、スピーカーから「紛失した装備」という音声メッセージが再生され、Webインターフェイスには紛失したPPEを一覧表示する「紛失した装備」メッセージが表示されます(図23 )。

図22:赤ランプ点灯、画面メッセージ、およびPPE(個人用保護具)の紛失を知らせる音声メッセージ(出典:マウザー・エレクトロニクス)

図23:作業員が個人用保護具(PPE)を紛失した場合に、Webインターフェイスに表示される「装備不足」メッセージ(出典:マウザー・エレクトロニクス)
- Nicla Visionが必要なPPEをすべて検出すると、緑色のライトが点灯し(図24 )、スピーカーから「安全確認完了」の音声メッセージが再生され、Webインターフェイスに「安全確認完了」メッセージが表示されます(図25 )。

図24:必要な装備が検出された際の「安全確認」メッセージ、緑色のランプ、および対応する音声メッセージ(出典:マウザー・エレクトロニクス)

図25:必要な機器が検出された際に、ウェブインターフェイスに表示される「すべて正常」メッセージ(出典:マウザー・エレクトロニクス)
- 「すべて正常」というメッセージが表示されたら、 「ログアウト」をクリックしてください。システムがリセットされ、次の従業員がログインできるようになります。
- 従業員のサインイン情報と検出結果は、 Systems_log.txtファイルに保存されます(図 26 )

図26: system_log.txtファイルに記録された日付、時刻、従業員名、および検出結果(出典:マウザー・エレクトロニクス)
まとめ
SafeGear Checkプロジェクトは、Arduino Nicla Visionが危険な環境で作業する従業員が適切な個人用保護具(PPE)を着用しているかどうかを効果的に検出できることを実証しています。Edge Impulseのトレーニング済みAIモデルを使用することで、Nicla Visionは必要なPPEを効果的に識別できるだけでなく、検出結果に基づいてタワーライトやスピーカーなどの外部要素を制御することもできます。
このシステムのウェブインターフェイスを使用することで、雇用主は必要な個人用保護具(PPE)を設定でき、従業員はログインして検出システムを有効化できます。SafeGear Checkは、雇用主が従業員が危険な環境に入る前に適切な装備と保護を受けていることを確認できるようにすることで、職場での事故件数を減らすのに役立ちます。
出典
[1]https://www.osha.gov/laws-regs/federalregister/1994-04-06
著者について
Venesha Arockiasamy氏は、ラトガース大学でコンピュータ工学を専攻する4年生(来年度卒業予定)です。彼女は、組み込みシステムや人工知能の実用的な応用分野に深い関心を持っています。ハードウェアとソフトウェアの両方の経験を持つヴェネシャは、これらを融合させ、テクノロジーと機械学習を活用して現実世界の問題に対する新たな解決策を模索することを目指しています。