- RaspberryPiへのPython用AWSIOTデバイスSDKのインストール:
- 回路図:
- Raspberry Piのプログラミング:
- シェルウィンドウを介したPythonプログラムのテスト:
- ワーキング:
Raspberry Piは、ある程度の計算が必要な場合、IoTベースのアプリケーションを開発するための最初の選択肢でした。Pythonの柔軟性と強力な開発者コミュニティにより、Piを使用して一連のデータを収集、ログ記録、分析、またはレポートすることが非常に簡単になります。このチュートリアルでは、RaspberryPiのパワーとAmazonAWSサービスを組み合わせて、データをインターネットにオンラインで公開する方法を学習します。
このチュートリアルでは、DHT11センサーを使用して温度と湿度の値を読み取り、AWS IOTサービスに接続し、AWS IOTSDKを使用してセンサー値を更新します。次に、このデータをAmazon IOTコンソールで視覚化して、データがインターネットに公開されていることを確認できます。
また、使用することができAWS弾性検索サービスをこれらのセンサーバレスを取得し、それをデータベースに格納し、使用するKibanaダッシュボードきちんとプロットされたグラフとしてセンサデータを視覚化するサービスを。十分に興味深いですか?!!! それでは、始めましょう…
前提条件:
このチュートリアルは、無料のAWSアカウントを既に作成しており、モノ、証明書、ポリシーの作成、それを使用した値の公開など、AWSIoTサービスの基本を理解していることを前提としています。それ以外の場合は、以下のチュートリアルをお読みください。
- MQTT.fxを使用したAmazonAWSIOTの使用を開始する
また、LCDおよびDHT11センサーをRaspberry Piに接続する方法を知っており、同じことを行うためのライブラリがすでにPiにインストールされていることを前提としています。そうでない場合は、以下のチュートリアルに進んでください。
- DHT11とRaspberryPiのインターフェース
上記のチュートリアルの最後に、AWS-IOTでThingを作成し、Thingにアクセスするために必要な証明書とともにThingのブローカーアドレスも用意する必要があります。また、Raspberry piはすでにOSでセットアップされており、インターネットに接続されていることを前提としています。これらを配置したら、チュートリアルを進めましょう。Raspberry Piを初めて使用する場合は、最初にRaspberrypiの使用を開始してください。
RaspberryPiへのPython用AWSIOTデバイスSDKのインストール:
PiでAWSサービスを使用するには、2つのSDKのいずれかをインストールできます。1つはJavaScriptをプログラミング言語として使用するJavaScriptSDKであり、もう1つは明らかにPythonをプログラミング言語として使用するPythonSDKです。ここでは、JavaScriptよりもPythonに少し慣れているため、SDKとしてPythonを選択しています。
AWS IOT SDKの完全な情報は、GitHubページで入手できます。
ステップ1: SDKをPiにインストールするには、ターミナルを開いて次のコマンドを入力します
git clone
ステップ2:これでPiに aws ディレクトリがインストールされているはずです。次に、次のコマンドを使用してそのディレクトリに移動します。
CDのAWS - IOT -device- SDK -python
ステップ3:ディレクトリ内に、以下の行を使用してセットアップファイルをインストールします
python setup.py install
回路図:
ハードウェア側では、DHT11センサーとLCD画面に接続されたRaspberryPiがあります。DHT11は、温度と湿度の値を取得するために使用され、LCDは、値とデバッグ情報を表示するために使用されます。その回路図を以下に示します。
LCDセンサーとDHT11センサーはどちらも+ 5V電源で動作するため、RaspberryPiの5Vピンを使用して両方に電力を供給します。DHT11センサーの出力ピンには値1kのプルアップ抵抗が使用されています。モジュールを使用している場合は、この抵抗を回避できます。
10Kのトリマーポットは、 LCDのコントラストレベルを制御するために、LCDのV字形ピンに追加されます。それ以外のすべての接続は非常に簡単です。ただし、プログラムで必要になるため、ピンの接続に使用しているGPIOピンをメモしてください。以下のチャートは、GPIOピン番号を理解するのに役立つはずです。
チャートを使用して、回路図に従って接続してください。ブレッドボードとジャンパー線を使用して接続しました。モジュールを使用したので、RaspberryPiに直接配線しました。私のハードウェアは以下のようになりました
Raspberry Piのプログラミング:
Pythonプログラムでは、温度と湿度の値を読み取り、LCD画面に表示し、前のチュートリアルで作成したAmazonIOTに両方の値を公開する必要があります。したがって、Thingを作成し、3つのキーファイルすべてと、作成したThingのブローカーアドレスを持っていることを確認してください。
当社ではPythonプログラム我々はラズベリーパイは私たちのものに値を公開するためのアクセスを得ることができるように3つの主要なファイルをリンクする必要があります。したがって、3つの主要なファイルをすべてコピーして、Raspberry piのデスクトップに貼り付けます。これは、プログラムでパスアドレスが必要になるためです。
完全なPythonプログラムは、あなたが作成したものによると、ブローカーのアドレスとパスディレクトリを編集した後、プログラムを使用することができ、このページの下部に見つけることができます。さらに以下では、コードを小さなスニペットで説明しました。
プロジェクトに必要なライブラリをインポートすることから始めます。3つの主要なライブラリはAWSSDK、LCDライブラリ、DHTライブラリです。3つすべてのPiがインストールされていることを確認してください。 時間 と 日時 ライブラリがデフォルトでインストールされます。
AWSIoTPythonSDK.MQTTLibからインポートAWSIoTMQTTClientから インポート#AWS-IoTライブラリからインポートインポート時間#日時から遅延 を作成するにはインポート日付、日時#日付と時刻を取得するにはLCDとしてAdafruit_CharLCDをインポート#LCDライブラリをインポートインポートAdafruit_DHT#センサー用のDHTライブラリをインポート
次の行では、ブローカーアドレス、クライアント名、証明書とキーファイルへのパスなどの詳細を提供する必要があります。ここでは、クライアント名を new_Client として使用しました。同じ名前、または任意の名前を使用できます。ブローカーアドレスは作成したもののアドレスに変更する必要があり、パスディレクトリも自分のものに応じて変更する必要があります。これら2つのこと以外は、次の行で何も変更する必要はありません。
myMQTTClient = AWSIoTMQTTClient( "new_Client") myMQTTClient.configureEndpoint( "qwert1234567yuio89.iot.us-east-2.amazonaws.com"、8883) myMQTTClient.configureCredentials( "/ home / pi / Desktop / ESP32_Thingcertificates / CA.pem"、 " /home/pi/Desktop/ESP32_Thingcertificates/private.pem.key","/home/pi/Desktop/ESP32_Thingcertificates/certificate.pem.crt")myMQTTClient.configureOfflinePublishQueueing(-1)#無限オフライン公開キュー myMQTTClient。 configureDrainingFrequency(2)# ドレイン :2 Hz myMQTTClient.configureConnectDisconnectTimeout(10)#10秒myMQTTClient.configureMQTTOperationTimeout(5)#5秒
次に、接続のピンの詳細を指定する必要があります。各ピンのGPIOピン番号はそれぞれの名前に割り当てられます。ここでは、ピン17のDHTセンサーと4ビットモードのLCDを使用しました。同じためのコードを以下に示します
sensor_name = Adafruit_DHT.DHT11#DHT11センサーを使用しているsensor_pin = 17#センサーはPi lcd_rs = 7でGPIO17に接続されています #LCDのRSは PIでGPIO7に接続されていますlcd_en = 8 #LCDのENはGPIO8に接続されていますPIのlcd_d4 = 25 LCDの#D4は PIのGPIO25に接続されていますlcd_d5 = 24 LCDの#D5はPIの GPIO24に 接続されていますlcd_d6 = 23 LCDの#D6はPIのGPIO23に 接続されていますlcd_d7 = 18#D7のLCDはPIでGPIO18に接続されていますlcd_backlight = 0 #LEDは接続されていないため、0に割り当てます
次に、LCDを初期化し、LCD画面に小さな紹介メッセージを表示します。その後、上記で入力したブローカーアドレスとキーファイルを使用してAWSのものに接続しようとします。接続が成功すると、LCDに「 Connectedto AWSthing 」と表示されるか、10秒間試行され、失敗するとエラーメッセージが表示されます。エラーメッセージが表示された場合は、Thingが正常に作成され、コードと適切にリンクされていることを確認してください。いつでも前のチュートリアルに戻って、AWSでThingを適切に作成したかどうかを確認できます。
if time.time()<connecting_time:#AWSへの接続を10秒間 試してくださいmyMQTTClient.connect() myMQTTClient.publish( "DHT11 / info"、 "connected"、0) print "MQTT Client connection success!" lcd.message( 'Connected to \ n AWS things')#if connect else: print "Error:Check your AWS details in the program" lcd.message( 'Error:\ nInvalid details')#if notconnected
接続が正常に確立されると、無限の while ループに入り、時間、温度、湿度の値をペイロードとして公開します。ここでのペイロードは、常にJSON形式の文字列である必要があります。したがって、最初に現在の日付と時刻を読み取り、以下の行を使用して変数に保存します
now = datetime.utcnow()#日付と時刻を 取得current_time = now.strftime( '%Y-%m-%dT%H:%M:%SZ')#現在の時刻を文字列形式で取得
次に、DHT11センサーから湿度と温度の値を読み取り、 LCD画面に表示します。可変湿度と温度は、それぞれ湿度と温度の値を保持します
湿度、温度= Adafruit_DHT.read_retry(sensor_name、sensor_pin)#センサーから読み取る
それぞれの値を温度と湿度の変数に保存します
lcd.clear()#LCD画面を クリアし ますlcd.message( 'Temp =%。1f C'%温度)#温度の値を表示しますlcd.message( '\ nHum =%。1f %%'%湿度)湿度 time.sleep(2)の値#2秒間待ってから、値を更新します
前に述べたように、ペイロードは、その周りに中括弧が付いた文字列の形式である必要があります。次に示すように、変数を文字列に変換した後、日付、時刻、温度、湿度の値を追加します。
#文字列形式で ペイロードを準備するpayload = '{"timestamp": "' + current_time + '"、 "temperature":' + str(temperature)+ '、 "humidity":' + str(humidity)+ '}'
最後に、ペイロードの準備ができたら、MQTTクライアントに公開する必要があります。これは、 myMQTTclient.publish コマンドを使用して 実行 できます。公開するときに名前も付ける必要があります。ここではDHT11 / dataという名前を付けましたが、好きな名前を付けることができます。ただし、データを表示するには、私たちのものからサブスクライブする必要があるため、名前を覚えておいてください。
シェルウィンドウを介したPythonプログラムのテスト:
プログラムの準備ができたら、選択したプログラムを使用して起動します。Python IDEを使用して、シェルウィンドウでプログラムを起動しました。すべて問題がなければ、メッセージ接続が成功し、すべてのペイロードがウィンドウに表示されます。温度と湿度の値が正しく読み取られているかどうかを確認できます。ペイロードは5秒ごとに更新されます。シェルウィンドウは次のようになります
問題がある場合は、正しいキーの詳細とブローカーアドレスを指定していることを確認し、MQTT.fxソフトウェアを使用して接続できるかどうかも確認してください。シェルがMQTTクライアント接続の成功を表示し、そこでハングする場合は、DHT11センサーが応答していないことを意味します。正しいピンに接続していて、センサーが機能しているかどうかを確認してください。
ワーキング:
プログラムを起動し、シェルウィンドウで上記の詳細を取得すると、プログラムが適切に応答し、値がAmazonAWSサーバーにアップロードされていることを意味します。以下に示すように、LCDディスプレイに5秒ごと にAWS-IoTに公開と 表示されているかどうかを確認することもできます。
MQTT.fxアプリケーションにアクセスして、トピック DHT11 / data をサブスクライブでき ます 。そうすれば、RaspberryPiによって公開されているすべてのデータを取得できるはずです。このデータも5秒ごとに更新されます。MQTT画面は次のようになります
ご覧のとおり、青色で強調表示されているように、ペイロードはMQTTソフトウェアで受信されています。以下のビデオを見て、プロジェクトがどのように機能するかを知ることもできます。インターネット上にデータがあるので、Elastic searchやLambdaなどのAmazonが提供する他のツールでデータを使用して、データをデータベースに保存したり、グラフで視覚化したりできます。データの恩恵を受ける方法に基づいて、はるかに多くのアプリケーションがあります。
チュートリアルを理解し、同様のビルドを楽しんだことを願っています。これを行うのに問題がある場合は、以下のコメントセクションに投稿するか、フォーラムを使用して技術的なヘルプを参照してください。