CodeZine(コードジン)

特集ページ一覧

C#でラズパイに接続した温湿度センサーで計測しよう

C#ではじめるラズパイIoTプログラミング 第5回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2020/02/28 11:00

 C#と言えば、Windows環境だけと思われがちですが、.NET CoreをLinux環境にインストールすれば、C#で開発したアプリケーションが動作します。また、Raspberry Pi(ラズベリーパイ)でも、C#を使ってIoT開発を行うことができます。この連載では、C#によるIoTプログラミングを解説します。

目次

対象読者

 IoTに興味があり、C#とRaspberry Pi(Linux環境)の基本的な知識がある方を対象とします。Linuxや電子工作の初歩的な説明は割愛していますので、「Raspberry Piをつかったセンサープログラミング超入門」の記事なども併せて参照してください。

はじめに

 前回は、OLEDディスプレイモジュールに直線や文字を表示しました。最終回となる今回は、温湿度センサーを使って、温度と湿度を計測し、その値を表示してみます。

温湿度センサー

 今回は、SENSIRION社の高精度温湿度センサSHT31-DISを搭載したセンサーモジュールを使いました。環境情報のセンサーといえば、ボッシュ社のBME280を搭載したセンサーモジュールのほうがおなじみかもしれません。ただBME280は、計測値の換算(補正が必要)が複雑で、気温に関しては、SHT31のほうが精度が高いようなので、こちらを選択しました。

センサモジュール
センサーモジュール

センサーモジュールの準備

 今回のセンサーモジュールも、I2C通信で制御できます。ピンヘッダを次のようにハンダ付けしました。なお、ADR端子はアドレス選択用端子で、今回のようにグランドに接続するとI2Cアドレスは、0x44、解放では0x45となります。

ピンヘッダのハンダ付け
ピンヘッダのハンダ付け

接続

 I2C通信のデバイスは、SDA、SCL端子を並列に接続することで、複数のデバイスを制御することが可能です。今回は、次のように配線しています。OLEDディスプレイモジュールと、センサーモジュールのSDA、SCL端子を、Raspberry PiのSDA、SCLに並列に接続します。

配線図
配線図

I2C通信の受信

 前回までは、I2C通信は送信のみでしたが、今回は測定値を受信する必要があります。そのため、WiringPiラッパークラスに、受信メソッドを追加しておきます。送信同様、WiringPiには、I2C通信の受信関数が用意されています。

 ただ今回の温湿度センサーモジュールでは、どうしてもうまく読み出すことができなかったので、より低レベルである標準Cライブラリのread関数を用いました。read関数は、指定のファイルディスクリプタからデータを読み出す関数で、共有ライブラリのlibc.so.6に含まれています。正常に受信できれば読み出したバイト数、受信できなかったときは-1を返します。

[リスト1]Program.csの一部
// Wiring Piラッパークラス
public class WiringPi
{
~中略~
    // I2Cデータ受信
    [DllImport("libc.so.6", EntryPoint = "read")]
    public extern static int Read(int fd, byte[] data, int length);
}

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 高江 賢(タカエ ケン)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:C#ではじめるラズパイIoTプログラミング
All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5