ラズパイとC言語で温湿度計をつくる!

ラズパイとC言語で温湿度計をつくる! RaspberryPi
スポンサーリンク

こんにちは。駆け出しエンジニアのまっきーです。

今回は、ラズパイで温湿度計っぽいものを作りたいと思います。とはいってもやることはめちゃくちゃ簡単ですけど(笑)

ラズパイで温湿度計をつくる!

LCDとDHT11温湿度センサーを使用して温湿度計を作成します。

リアルタイムの温度と湿度をLCDに表示する、という設定で行っていきます。

使用する機器

  • ラズパイ3B+
  • DHT11温湿度センサー
  • 1602 LCD
  • ジャンパー線数本

電子回路

ラズパイのピン配置図と実際につないだ様子です。

電子回路というほどのものではなく、以下のようにピン同士を直接つなぐだけです。

DHT11ラズパイ本体LCDラズパイ本体
VDD3.3V   VDD5V
DATAGPIO15SCLSCLのとこ
GNDGND(どこでも)SDASDAのとこ
GNDGND(どこでも)

ソースコード

ソースコードは以下の通りです。次節で詳しく解説します。

解説

今回は、2つのライブラリを使用しています。下記2つの記事にライブラリ作成方法やソースコードの詳細が載っていますので参考にしてください。

ライブラリ関数の仕様はこんな感じです。

・LCD

画像に alt 属性が指定されていません。ファイル名: image-59-1024x332.png

・DHT11温湿度センサー

read_dht11_dat
関数型int read_dht11_dat(int DHTPIN , int *dht11_dat)
引数ピン番号、温湿度データを格納する配列(配列の受け渡しのためにポインタを使用)
戻り値0:データが正しく取得できた場合 -1:データが取得できなかった場合
機能温湿度を計測して配列に格納する

また、sprintf関数という便利な関数も使用しますので紹介しておきます。

sprintf
関数型int sprintf(char *str, const char *format,  ... )
引数変換した出力を格納する文字列,書式指定文字列,可変個引数(この引数を書式指定に従い変換します)
戻り値成功時 : strに格納した文字数(最後の’\0’は除く)
失敗時 : EOF
機能書式formatにしたがって、printf関数と同様の変換を行った出力を、文字列strに格納します。

1~7行目 必要なヘッダーファイルをインクルードしています。

9行目 DHT11で使用するピンのマクロ定義です

11行目 温湿度のデータを取得する配列の宣言・初期化です

14~15行目 LCD表示用の文字列格納変数です。

18~25行目 read_dht11_dat関数の戻り値が0、つまり正しくデータが取得できとき、sprintf()関数を用いてtmp,hmdに文字列を格納しています。そして、write()関数を使用し、LCDに文字を表示してます。

26~28行目 データが正しく取得できなかった場合は2秒待ちます。

結果

気温と湿度を表示することができました!こんな感じで表示されれば、成功です!

いかがでしたでしょうか?以前作成したライブラリを用いているおかげで、ずいぶんソースコードが見やすくなっていると思います。

今回作った温湿度計を用いて、ブザーを鳴らしたり、エアコンをつけたり、様々な応用ができそうですね!近いうちにチャレンジできたらと思っています。

ではまた次回!

コメント

タイトルとURLをコピーしました