Samsung SAMIIO、Arduino UNO、RaspberryPiで数分で火災探知機を作る
SAMIのWebSocketを使用して火炎センサーデータをSAMIに送信するIoTデバイスを構築しましょう。 IoTデバイスは、既製のセンサー、Arduino UNO、RaspberryPiで構成されています。
この実装では、シンプルマニフェストを使用して新しいデバイスタイプをすばやく作成します。次に、IoTデバイスをSAMIに簡単に接続し、デバイスからSAMIへのセンサーデータの送信を開始できます。
前提条件
” ’このチュートリアルでは、に精通している必要があります。 基本的なSAMIAPI 。 ” ’
アーキテクチャ
下の紫色の図は、高レベルのアーキテクチャを示しています。
次のハードウェアコンポーネントを使用しています。
- ネットワーク接続のあるRaspberryPi
- ブレッドボード付きのArduinoUNO
- IR火炎センサー
- USBケーブルと電源ケーブル、およびブレッドボードの配線
次のソフトウェアを作成します:
- Arduinoで実行されているSketchプログラム
- RaspberryPiで実行されているNode.jsスクリプト
今すぐソフトウェアをダウンロードしてください。
” ’Raspberry Piをお持ちでない場合でも、このチュートリアルを実行できます。 Arduino UNOをインターネットに接続されているコンピューターに接続し、RaspberryPiの代わりにコンピューターでNode.jsスクリプトを実行します。」
開発者ポータルに移動して、プライベートデバイスタイプを作成します。
- まず、SAMI開発者ポータルにサインインします。 Samsungアカウントをお持ちでない場合は、この手順でアカウントを作成できます。
- [+新しいデバイスタイプ]をクリックします。
- このデバイスタイプに「FlameSensor」という名前を付け、「com.example.iot.flame」などの一意の名前を付けます。
- 「デバイスタイプの作成」をクリックします。これにより、デバイスタイプが作成され、デバイスタイプページに移動します。
それでは、「火炎センサー」デバイスタイプのマニフェストを作成しましょう。
- 左の列の[火炎センサー]をクリックします。
- [マニフェスト]、[+新しいバージョン]の順にクリックします。
- フィールド名として「onFire」を入力し、データ型として「ブール値」を入力します。
- [保存]、[次へ:アクション]の順にクリックします。
- このチュートリアルのアクションをバイパスし、[新しいマニフェストを保存]をクリックします。
” ’シンプルマニフェストは自動的に承認されます。このデバイスタイプはチュートリアルのみを目的としているため、公開しないでください。」
最後に、ユーザーポータルに移動して、新しい火炎センサーデバイスを接続します。
- SAMIユーザーポータルにサインインします。
- ダッシュボードで、クリックして新しいデバイスを接続します。
- 作成した「炎センサー」デバイスタイプを選択します。
- 「デバイスの接続…」をクリックします。ダッシュボードに戻ります。
- 追加したデバイスの[設定]アイコンをクリックします。ポップアップで、[デバイストークンを生成...]をクリックします。
- この画面でデバイスIDとデバイストークンをコピーします。これらをコードで使用します。
それでは、センサーをArduinoに配線しましょう。
2つのセンサーは上のFrizting画像のように配線されています。
次に、Sketchプログラム( read_flame_sensor.ino )をアップロードします )ArduinoIDEを使用してArduinoUNOに接続します。このコードは、IR火炎センサーから1つのデジタル値を読み取り、5秒ごとにシリアルポートに送信します(SAMIには1日あたりのメッセージ数にレート制限があるため、このパラメーターは後でコードで変更できます)。デジタル読み取りの場合、「0」は火災が検出されたことを意味し、「1」は火災がないことを意味します。
こちらが read_flame_sensor.ino です 。コードは単純です。
//読み取り間の遅延
const int delayBetweenReads =5000; // 5s
//火炎検出器の場合sensoconst 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);
}
Raspberry Piをモニター、マウス、キーボードに接続します。イーサネットまたはWiFi接続が機能していることを確認し、OSが最新であることを確認します。
- $ sudo apt-get update
- $ sudoapt-アップグレードを取得
まだインストールされていない場合は、ARM用のNode.jsをインストールしてから、パッケージを追加します serialport および ws npm経由:
- $ npm install serialport
- $ npm install ws
次に、シリアルポートをArduinoからRaspberryPiのUSBに接続します。
最後に、Node.jsコードをダウンロードします( send_data_to_sami.js )ラズベリーパイに。コード内のプレースホルダーを、ユーザーポータルから収集したデバイストークンとデバイスIDに置き換えます。
Node.jsコードも以下に示されています。 RaspberryPiとSAMIの間に双方向のWebSocket接続を確立します。 WebSocket接続が開いたら、 register() メソッドはデバイスをWebSocketに登録します。毎回、コードはシリアルポートから1つのデータポイントを読み取り、それをメッセージでラップして、WebSocket経由でSAMIにメッセージを送信します。
var webSocketUrl =“ wss://api.samsungsami.io/v1.1/websocket?ack =true”;
var device_id =“”; var device_token =“”;
var isWebSocketReady =false; var ws =null;
var serialport =require(“ serialport”)
var SerialPort =serialport.SerialPort;
var sp =new SerialPort(“ / dev / ttyACM0”、{
ボーレート:9600、
パーサー:serialport.parsers.readline(“ \ n”)
});
var WebSocket =require( ‘ws’);
/ **
*現在の時刻をミリ秒で取得します
* /
関数getTimeMillis(){
return parseInt(Date.now()。toString());
}
詳細:Samsung SAMIIO、Arduino UNO、RaspberryPiを使用して数分で火災検知器を作成
製造プロセス
- RaspberryPiを使用した簡単なDIY赤ちゃん泣き検出器
- ラズベリーパイと湿度センサーを備えたエアロポニックス
- RaspberryPiとPythonを使用したロボットの構築
- ArduinoとRaspberryPiを使用してインターネット制御のビデオストリーミングロボットを構築する
- イスラムの祈りの時間とArduino時計
- ArduinoとAndroidデバイスでルンバロボットを制御する
- Arduino UNOを使用してLCDTFTスクリーンに画像を表示する!
- ArduinoとMPU6050によるサーボモーターの制御
- u-blox LEA-6H 02GPSモジュールとArduinoおよびPython
- Arduinoによる音声認識と合成
- ArduinoUnoでLEDマトリックスを制御する