OpenSensorsで空気の質を測定する方法
ArduinoとShinyeiPPD-42を使用してオープンデータ研究所の大気質を測定する方法。
そこで、Opensensorsプラットフォームの優れたデモンストレーションを考えながら、センサーを接続してOpensensorsメッセージングブローカーに継続的なデータストリームを公開することで、職場がどれほど汚染されているかを見てみませんか。このために、私たちは簡単に拾い上げて使用できるセンサーが必要であり、私たちはShinyeiPPD-42に落ち着きました。これを使用して、Linux PC(またはRaspberry PI)に接続されたarduinoを使用して、空気中の潜在的に危険な小さな粒子の数を測定します。
このミニプロジェクトを実行するには、次のものが必要です。
- Shinyei PPD-42
- Arduino UNO
- Linuxがインストールされているコンピューター(Raspberry PIを使用できます)
このランスルーは、arduinoとwifiモジュールを備えたShinyeiPPD-42センサーを使用するDustDuinoと呼ばれるプロジェクトに基づいています。こちらで確認してください。センサーをセットアップしてArduinoコードを作成する際のリファレンスとして、このプロジェクトを使用しました。
まず、センサーをArduinoに接続するための手順のステップ2に従います。次に、コードDustDuinoSerial.inoのリンクを開いて、rawを選択し、そのページを保存して、プロジェクトのgithubリポジトリからコードをダウンロードします。
これをarduinoIDEで開き、Arduinoに接続してアップロードを押すことでArduinoUNOにアップロードします。
ArduinoIDEのシリアルモニターを使用してデータが入ってくることを確認できます。
次に、着信シリアルメッセージをOpensensorsメッセージブローカーに送信する方法を理解する必要があります。
これを行うために、Pythonスクリプトを作成することにしました。 MosquittoPythonモジュールを使用しました。 Linuxのほとんどのバージョンにあらかじめパッケージ化されているため、Pythonがすでにインストールされていると仮定します。まだお持ちでない場合は、pipをインストールして、Mosquittopythonモジュールをダウンロードしてセットアップする必要があります。 UbuntuまたはDebianでは、これは次のコマンドで実行できます:
sudo apt-get install python-pip
pipをインストールしたら、次のコマンドを使用してMosquittopythonクライアントモジュールをインストールできます。
sudo pip install paho-mqtt
上記のリンク先のウェブサイトを読むと、Pythonモジュールの使用方法を知ることができます。Pythonの作成とコンパイルは非常に簡単です。
お気に入りのプレーンテキストエディタを開きます。次の行を入力します:
print“ Hello World”
hi.pyとして保存します。次に、ターミナルでドキュメントに移動し、コマンドを入力します:
python hi.py
「HelloWorld」の応答が表示されるはずです。とても簡単です。
MosquittoクライアントのPythonモジュールを使用するには、次のコードを実行して公開をテストします。ユーザー名「Louis」(スピーチマークを保持)とパスワードを詳細に置き換える必要があります:
Opensensorsメッセージブローカーと通信するために必要なモスキートライブラリ:
import paho.mqtt.client as mqtt
デバイスのクライアントIDを使用してクライアントオプションを初期化します:
mqttc =mqtt.Client(client_id ="939")
ユーザー名とパスワードを設定します:
mqttc.username_pw_set( "Louis"、password ="AbcDEFgH")
Opensensorsサーバーに接続します:
mqttc.connect( "mqtt.opensensors.io")
こんにちはと言うメッセージを公開します:
mqttc.publish( "/ users / Louis / test2"、payload ="Hello opensensors!"、qos =0、retain =False)
切断:
mqttc.disconnect();
成功すると、センサーが機能するようになります🙂
次に、シリアルを機能させる必要があります。 arduinoシリアルポートがどのように見えるかを確認するには、ターミナルに次のコマンドを実行しました:
dmesg | grep tty
出力は次のようになりました…
[0.000000]コンソール[tty0]有効[3522.192687] cdc_acm 7-1:1.0:ttyACM0:USBACMデバイス
2行目には、Ardiunoの詳細があります。 ttyACM0はデバイス名であり、「/ dev / ttyACM0」はシリアルポートです。
シリアルポートPythonを開いて読み取ると、非常に簡単になります。次のコードを使用して、少しテストを実行して、機能しているかどうかを確認できます。
Arduinoとの通信には、シリアルライブラリを使用する必要があります:
import serialser =serial.Serial( '/ dev / ttyACM0')#最初のシリアルポートを開き、True:print ser.readline()#シリアルから読み取った各行を出力します
最後に、2つの部分を一緒にハックする必要があります。使用したコードは次のとおりです。
import serialimport paho.mqtt.client as mqttimport timemqttc =mqtt.Client(client_id ="939")mqttc.username_pw_set( "Louis"、password ="AbcDEFgH") mqttc.connect( "mqtt.opensensors.io")ser =serial.Serial( '/ dev / ttyACM0')#最初のシリアルポートを開くwhile True:message =ser.readline()print messagemqttc.publish( "/ users / Louis / ODI / airquality "、payload =message、qos =0、retain =False)time.sleep(1);
これを実行して、センサーデータをOpensensorsに公開していました!
データをJSON形式で出力するようにArduinoコードを調整することをお勧めします。これにより、読みやすく、機能を追加しやすくなります。
ここで作成したオープンデータの作成に関するトピックを確認できます!
コード
import serialimport paho.mqtt.client as mqttimport timemqttc =mqtt.Client(client_id ="939")mqttc.username_pw_set( "Louis"、password ="AbcDEFgH")mqttc.connect ( "opensensors.io")ser =serial.Serial( '/ dev / ttyACM0')#最初のシリアルポートを開くwhile True:message =ser.readline()print messagemqttc.publish( "/ users / Louis / ODI / airquality"、ペイロード=メッセージ、qos =0、retain =False)time.sleep(1);
出典:OpenSensorsで空気の質を測定する方法
製造プロセス