工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Samsung SAMI、Arduino UNO、Raspberry Piで高速・信頼性の高い火災検知システムを構築

このチュートリアルでは、Arduino UNOとRaspberry Piを使用して、炎センサーの読み取り値をWebSockets経由でSamsung SAMIにストリーミングするコンパクトなIoT火災検知システムの作成をガイドします。

シンプルな市販のIR炎センサーを使用し、軽量スケッチをArduinoにアップロードし、Raspberry Pi上でNode.jsスクリプトを実行してデータをSAMIに転送します。

前提条件

このチュートリアルでは、基本的なSAMI APIに精通していることを前提としています。

アーキテクチャ

以下の図はハイレベルなフローを示しています:

ソフトウェアコンポーネント:

ソフトウェアをダウンロードできます。

Raspberry Piがない場合でも手順を追うことができます。Arduinoをインターネット接続されたコンピューターに接続し、Node.jsスクリプトをそのマシンで実行してください。

ステップ1: 新しいデバイスタイプの作成と接続

  1. SAMI開発者ポータルにサインイン。Samsungアカウントがない場合は今すぐ作成。
  2. 「+ 新しいデバイスタイプ」をクリック。
  3. デバイスタイプに「Flame Sensor」と名付け、「com.example.iot.flame」などの一意の識別子を割り当て。
  4. 「デバイスタイプを作成」をクリックし、デバイスタイプページに進む。

「Flame Sensor」デバイスタイプのマニフェストを作成します。

  1. 左カラムで「Flame Sensor」をクリック。
  2. 「マニフェスト」に移動し、「+ 新しいバージョン」をクリック。
  3. フィールド名にonFire、データタイプにBooleanを入力。
  4. 「保存」をクリックし、「次へ: アクション」へ。
  5. このチュートリアルではアクションをスキップし、「新しいマニフェストを保存」をクリック。

シンプルマニフェストは自動承認されます。このデバイスタイプはチュートリアル専用なので公開しないでください。

最後に、ユーザーポータルで新しいFlame Sensorデバイスを接続:

  1. SAMIユーザーポータルにサインイン。
  2. ダッシュボードで新しいデバイスの接続をクリック。
  3. 先ほど作成した「Flame Sensor」デバイスタイプを選択。
  4. 「デバイスを接続…」をクリック。ダッシュボードに戻ります。
  5. 追加されたデバイスの設定アイコンをクリック。ポップアップで「デバイストークンを生成…」を選択。
  6. 表示されるデバイスIDとデバイストークンをコピー—コードで必要になります。

ステップ2: Arduinoをセットアップ

上記の図のようにIR炎センサーをArduinoに配線。その後、Arduino IDEを使用して以下のスケッチ(read_flame_sensor.ino)をアップロード。スケッチは5秒ごと(調整可能)にセンサーを読み取り、デジタル値をシリアルポートに送信。SAMIでは「0」が火災検知、「1」が火災なしを示します。

/* read_flame_sensor.ino */
// 読み取り間隔
const int delayBetweenReads = 5000; // 5秒
// 炎検知センサーピン
const int flameDigitalPinIn = 2;
void setup() {
    // 9600ボーレートでシリアル通信初期化
    Serial.begin(9600);
    pinMode(flameDigitalPinIn, INPUT);
}
void loop() {
    // HIGH(1) = 火災なし, LOW(0) = 火災検知
    int flameDigitalReading = digitalRead(flameDigitalPinIn);
    Serial.println(String(flameDigitalReading));
    delay(delayBetweenReads);
}

ステップ3: Raspberry Piをセットアップ

Raspberry Piをモニター、マウス、キーボードに接続。動作するEthernetまたはWi-Fi接続があり、OSが最新であることを確認:

  1. $ sudo apt-get update
  2. $ sudo apt-get upgrade

Node.jsが未インストールの場合、ARM互換版をインストールし、npmで必要なパッケージを追加:

  1. $ npm install serialport
  2. $ npm install ws

ArduinoのシリアルポートをRaspberry PiのUSBポートに接続。

Node.jsスクリプト(send_data_to_sami.js)をダウンロードし、device_idとdevice_tokenのプレースホルダーを先ほどコピーした認証情報で置き換え。

/* send_data_to_sami.js */
var webSocketUrl = "wss://api.samsungsami.io/v1.1/websocket?ack=true";
var device_id = "YOUR_DEVICE_ID";
var device_token = "YOUR_DEVICE_TOKEN";
var isWebSocketReady = false;
var ws = null;
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var sp = new SerialPort("/dev/ttyACM0", {
    baudrate: 9600,
    parser: serialport.parsers.readline("\n")
});
var WebSocket = require('ws');

/**
 * 現在時刻をミリ秒で取得
 */
function getTimeMillis(){
    return parseInt(Date.now().toString());
}

// WebSocket接続を確立しデバイスを登録
ws = new WebSocket(webSocketUrl, {
    headers: {
        "Authorization": `Bearer ${device_token}`
    }
});
ws.on("open", () => {
    isWebSocketReady = true;
    register();
});

function register() {
    var registerMsg = {
        "topic": "sami/device/register",
        "data": {
            "deviceId": device_id
        }
    };
    ws.send(JSON.stringify(registerMsg));
}

sp.on("data", (data) => {
    if (isWebSocketReady) {
        var message = {
            "topic": "sami/device/telemetry",
            "data": {
                "onFire": data.trim() === "0"
            }
        };
        ws.send(JSON.stringify(message));
    }
});

スクリプトが実行されると、炎センサーの読み取り値がリアルタイムでSAMIにストリーミングされます。

詳細については、完全チュートリアルを参照: Samsung SAMIIO、Arduino UNO、Raspberry Piで数分で火災検知器を作る。

製造プロセス

  1. 予算に優しいRaspberry Pi赤ちゃん泣き声検知器の自作 - DIYガイド
  2. Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
  3. Raspberry Pi と Python でロボットを構築:完全ガイド
  4. Arduino & Raspberry Pi でインターネット制御ビデオストリーミングロボットを構築
  5. Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
  6. ArduinoとAndroidでRoomba Create 2をリモコン操作 ─ Bluetooth経由のステップバイステップガイド
  7. Arduino UNOで1.17インチTFT LCDに画像を表示する方法
  8. Arduino & MPU6050:SG90 & MG996Rサーボの精密制御
  9. u-blox LEA-6H 02 GPSモジュール: Arduino & Python 統合ガイド
  10. Arduino Dueでマスターする音声認識と音声合成
  11. Arduino Unoで8×8 LEDマトリックスを制御:ステップバイステップガイド