(2020-09-20 初稿 - )
先日、対応するシールド(センサー)の多さに惹かれて、Arduinoを購入しました。
このページでは、AM2302(DHT22)をArduinoにつないで、温湿度を計測する方法と、計測した温湿度をPCやRaspberry Pi等のPython3で受信する方法を記述します。
AM2302単体で、Analog Inに接続する例はたくさんあったのですが、筆者の買ったものは既にデジタル変換する基盤がついたもので、意外と情報が少なかったです。
ちなみに、筆者の購入したAM2302は、以下のものです。
端子は、向かって左から
マイナス(-)、
DATA、
プラス(+)
ネットを検索して、以下のページを参考に接続しました。多謝。
下の写真にあるとおり、+をarduinoの5.5Vの端子に、ーをGND端子に、真ん中のDATA端子は、ANALOG INの2番に接続します。
【注意】
DATA端子(中央)をANALOG INの2番に接続
温度と湿度の測定のプログラム(以下、スケッチ)のためには、上記サイトからAM2302 LibraryとSketch Fileをダウンロードする必要があります。
まずは、ダウンロードしたLibraryを追加します。
Arduinoの「スケッチ」メニューの「ライブラリを使用」、「Add Library」とクリックし、先程ダウンロードしたライブラリを選択します。
選択後、「ライブラリを使用」を選択したときに、追加したライブラリが選べれば成功です。
次に、ダウンロードしたSketch Fileを展開して、sketchbookディレクトリに移動します。
これで、ファイルメニューの「開く」で、AM2302_Sketch.ino ファイルが選択可能になります。
ファイルを開いたら、「レ点」でコンパイルし、右矢印(⇒)の記号でArduinoにスケッチを送ります。
スケッチを送ったら、右上の虫眼鏡のマークの「シリアルモニタ」を開き、スケッチが正常に動いていることを確認してください。
なお、シリアルモニタは、「Ctrl + Shift + M」でも開けます。
AM2302 Humidity - Temperature Sensor
RH Temp (C) Temp (F) Heat Index (C) Heat Index (F)
61.60 % 26.50 *C 79.70 *F 27.57 *C 81.62 *F
62.10 % 26.50 *C 79.70 *F 27.60 *C 81.67 *F
シリアルモニタには、時々刻々と湿度や温度が表示されますが、このままでは記録やtwitter等でお知らせすることもできません。
そこで、pythonでデータを取得する簡単なスクリプトを作成します。
まずは、python(ここでは、python3)にserialのパッケージをインストールします。
この操作は、Debian、Raspberry Piともに同じ操作です。
sudo apt install python3-serial
#!/usr/bin/env python3
#coding: UTF-8
# [2020-09-19] ver0.01 started by H. Yamada
import serial
data = ''
ser = serial.Serial('/dev/ttyACM0', 9600) #ボーレートはArduino側と合わせる
data = ser.readline() # 行単位で読込み
ser.close()
item = data.decode().split() #byte型をstringに変更して、空白で分割
print(item[0], item[1], item[2], item[3])
以上で、それぞれのデータと単位が別々に取得できたので、個々にfloatにする等加工して、Google DriveやTwitterでお知らせすることもできるようになりました。
Arduinoを用いて、簡単に温湿度を測る方法について解説しました。
なにか気がついたことがあれば追記します。