ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Arduinoで温湿度を測る(シールド AM2302(DHT22))

(2020-09-20 初稿 - 2021-05-14 転記・修正)

 

はじめに

対応するシールド(センサー)の多さに惹かれて、Arduinoを購入した。

このページでは、AM2302(DHT22)をArduinoにつないで温湿度を計測する方法と、計測した温湿度をPCやRaspberry Pi等のPython3で受信する方法について記述する。

AM2302(DHT22)の接続

DHT22単体で、Analog Inに接続する例はたくさんあるが、筆者の買ったものは既にデジタル変換する基盤がついたもので、意外と情報が少なかった。

筆者の購入したAM2302は、以下のとおり。

f:id:hymd3a:20210514153725j:plain

購入したAM2302

f:id:hymd3a:20210514153805j:plain

端子 左から (ー) DATA  (+)

以下のページを参考に接続した。多謝。

下の写真のとおり、(+)をarduinoの5.5Vの端子に、(ー)をGND端子に、真ん中のDATA端子は、ANALOG INの2番に接続する。

f:id:hymd3a:20210514154410j:plain

Arduinoに接続した様子

 

温湿度の測定

温度と湿度の測定のプログラム(以下、スケッチ)作成のために、上記サイトから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

pythonでデータを取得する

シリアルモニタには、時々刻々と湿度や温度が表示されるが、記録やtwitter等で活用できないので、pythonでデータを取得する簡単なスクリプトを作成する。

まずは、python(ここでは、python3)にserialのパッケージをインストールする。

この操作は、DebianRaspberry 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 DriveTwitterで活用できるようになった。

おわりに

Arduinoを用いて、簡単に温湿度を測る方法について解説した。

また、なにか気がついたことがあれば追記する。

関連ページ